Skip to content

Instantly share code, notes, and snippets.

@ramsesoriginal
Last active May 23, 2018 13:34
Show Gist options
  • Save ramsesoriginal/a2f14d281100742df33676accae36da2 to your computer and use it in GitHub Desktop.
Save ramsesoriginal/a2f14d281100742df33676accae36da2 to your computer and use it in GitHub Desktop.
def computeAndPrint(type, start, nodes, edges):
G = type(nodes, edges)
ford(G, nodes[start])
print("Ford von " + nodes[start].name + " mit " + type.__name__)
print([n.name + " y:" + str(n.y) for n in nodes])
print([(n.p.name if n.p is not None else "None") + "->" + n.name for n in nodes])
print('')
def test():
print("")
print(" A --1-> B")
print("")
print(" | |")
print(" | |")
print(" 1 3")
print(" | |")
print(" v v")
print("")
print(" C --1-> D")
print("")
nodes = [Node() for _ in range(4)]
nodes[0].name="A"
nodes[1].name="B"
nodes[2].name="C"
nodes[3].name="D"
e1 = Edge(nodes[0], nodes[1], 1)
e2 = Edge(nodes[0], nodes[2], 1)
e3 = Edge(nodes[1], nodes[3], 3)
e4 = Edge(nodes[2], nodes[3], 1)
e1.name="1, A-B"
e2.name="2, A-C"
e3.name="3, B-D"
e4.name="4, C-D"
computeAndPrint(DirectedGraph, 0, nodes, [e1 ,e2, e3, e4])
computeAndPrint(DirectedGraph, 1, nodes, [e1 ,e2, e3, e4])
computeAndPrint(DAG, 0, nodes, [e1 ,e2, e3, e4])
computeAndPrint(DAG, 1, nodes, [e1 ,e2, e3, e4])
print("Kanten nach DirectedGraph")
print(" (Sollte einfach 3 mal alle Kanten sein)")
G = DirectedGraph(nodes , [e4 ,e3, e2, e1])
current = G.next_edge()
while current is not None:
print (current.name)
current = G.next_edge()
print(current)
print("Kanten nach DAG")
print(" (1 muss vor 3 und 2 vor 4 sein)")
G = DAG(nodes , [e4,e3 ,e2 ,e1])
current = G.next_edge()
while current is not None:
print (current.name)
current = G.next_edge()
print(current)
nodes = [Node() for _ in range(21)]
i = 1
for n in nodes:
n.name = str(i)
i+=1
edges = [Edge(nodes[(10-_)%20], nodes[20],1) for _ in range(19)] + [Edge(nodes[(10-_)%20], nodes[(9-_)%20],1) for _ in range(19)] + [Edge(nodes[11], nodes[20],1)]+ [Edge(nodes[(10-_)%20], nodes[11],1) for _ in range(19)]
i = 1
for e in edges:
e.name = str(i) + '-' + e.start.name + "->" + e.target.name
i+=1
print("\n\nNEUER GRAPH\n\n\Knoten 1-11 und 13-20 Zeigen auf 12. Knoten von 11 bis 1 und dann Weiter von 20 nach 11 Zeigen sequentiell aufeinander. Alle Knoten Zeigen nach 21.")
computeAndPrint(DAG, 0, nodes, edges)
G = DAG(nodes , edges)
current = G.next_edge()
while current is not None:
print (current.name)
current = G.next_edge()
print(current)
#test()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment