diff --git a/main.py b/main.py index 47503334602429c3781e5f6687ac81cb195108d0..5ffbf90b421c73e294180c7c4a98197f1855de7b 100644 --- a/main.py +++ b/main.py @@ -17,6 +17,7 @@ from resources import logging as init_logging from resources import BasicEdge, BasicGraph, BasicNode from resources import DirectedEdge, DirectedGraph, DirectedNode from resources import DirectedWeightedEdge, DirectedWeightedGraph, DirectedWeightedNode +from resources import NetworkFlowEdge, NetworkFlowGraph, NetworkFlowNode from resources import StateMachineEdge, StateMachineGraph, StateMachineNode from resources import WeightedEdge, WeightedGraph, WeightedNode @@ -33,7 +34,7 @@ def test_graph(): logger.info('Creating and displaying Test Graph...') # Create graph. - graph = DirectedWeightedGraph() + graph = NetworkFlowGraph() # Create some nodes. node_1 = graph.nodes.create('A') @@ -51,6 +52,14 @@ def test_graph(): edge_5 = graph.nodes.connect(node_4, node_6) edge_6 = graph.nodes.connect(node_5, node_6) + # Set unique capacities. + edge_1.set_capacity(9) + edge_2.set_capacity(6) + edge_3.set_capacity(15) + edge_4.set_capacity(15) + edge_5.set_capacity(7) + edge_6.set_capacity(12) + # Set unique weights. edge_2.set_weight(5) edge_3.set_weight(15) @@ -142,6 +151,7 @@ def graph_visual_mapping_examples(): draw_directed_graph() draw_state_machine() draw_directed_weighted_graph() + draw_network_flow_graph() def draw_10_chained_nodes(): @@ -395,8 +405,8 @@ def draw_state_machine(): def draw_directed_weighted_graph(): """ - Draws a state machine graph with 4 nodes. - """ + Draws a directed, weighted graph with 6 nodes. + """ logger.info('') logger.info('Creating and displaying Directed, Weighted Graph...') @@ -433,6 +443,54 @@ def draw_directed_weighted_graph(): logger.info('') +def draw_network_flow_graph(): + """ + Draws a network flow graph with 6 nodes. + """ + logger.info('') + logger.info('Creating and displaying Network Flow Graph...') + + # Create graph. + graph = NetworkFlowGraph() + + # Create some nodes. + node_1 = graph.nodes.create('A') + node_2 = graph.nodes.create('B') + node_3 = graph.nodes.create('C') + node_4 = graph.nodes.create('D') + node_5 = graph.nodes.create('E') + node_6 = graph.nodes.create('F') + + # Connect nodes. + edge_1 = graph.nodes.connect(node_1, node_2) + edge_2 = graph.nodes.connect(node_2, node_3) + edge_3 = graph.nodes.connect(node_3, node_5) + edge_4 = graph.nodes.connect(node_1, node_4) + edge_5 = graph.nodes.connect(node_4, node_6) + edge_6 = graph.nodes.connect(node_5, node_6) + + # Set unique capacities. + edge_1.set_capacity(9) + edge_2.set_capacity(6) + edge_3.set_capacity(15) + edge_4.set_capacity(15) + edge_5.set_capacity(7) + edge_6.set_capacity(12) + + # Set unique weights. + edge_2.set_weight(5) + edge_3.set_weight(15) + edge_5.set_weight(7) + edge_6.set_weight(2) + + # Display graph mapping. + graph_title = 'Custom Graph Library - Graph Visual Mapping<br>Network Flow Graph' + graph.display.draw_graph_map(graph_title) + + logger.info('Finished displaying "Network Flow Graph".') + logger.info('') + + def await_user_input(): """ Function pause output so user can read text. diff --git a/resources/graphs/network_flow_graph/graph.py b/resources/graphs/network_flow_graph/graph.py index 9fded8a3a549f7efc2f9548c11decc93b468dbea..a85cf976286bf159a97a2db2b2b16e4e3d50680f 100644 --- a/resources/graphs/network_flow_graph/graph.py +++ b/resources/graphs/network_flow_graph/graph.py @@ -72,7 +72,7 @@ class NetworkFlowGraphDisplay(DirectedWeightedGraphDisplay): :param edge: Edge to create display text for. :return: List of text values. """ - return ['{0}/{1}'.format(edge.get_weight(), edge.get_capacity())] + return ['{0} / {1}'.format(edge.get_weight(), edge.get_capacity())] class NetworkFlowGraphEdges(DirectedWeightedGraphEdges):