-
Notifications
You must be signed in to change notification settings - Fork 55
/
Copy pathtest_EdgeWeightedDirectedCycle.py
61 lines (52 loc) · 1.73 KB
/
test_EdgeWeightedDirectedCycle.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#/usr/bin/env python
# TBD: Finish Python port
#*****************************************************************************
# Compilation: javac EdgeWeightedDirectedCycle.java
# Execution: java EdgeWeightedDirectedCycle V E F
# Dependencies: EdgeWeightedDigraph.java DirectedEdge.java Stack.java
#
# Finds a directed cycle in an edge-weighted digraph.
# Runs in O(E + V) time.
#
#
#*****************************************************************************/
import sys
def main(prt=sys.stdout):
"""Unit tests the EdgeWeightedDirectedCycle data type."""
pass
## create random DAG with V vertices and E edges; then add F random edges
#V = int(sys.argv[1])
#E = int(sys.argv[2])
#F = int(sys.argv[3])
#EdgeWeightedDigraph G = new EdgeWeightedDigraph(V)
#int[] vertices = new int[V]
#for (int i = 0; i < V; i += 1)
# vertices[i] = i
#StdRandom.shuffle(vertices)
#for (int i = 0; i < E; i += 1):
# v, w
# do:
# v = StdRandom.uniform(V)
# w = StdRandom.uniform(V)
# } while (v >= w)
# double weight = StdRandom.uniform()
# G.addEdge(new DirectedEdge(v, w, weight))
## add F extra edges
#for (int i = 0; i < F; i += 1):
# v = StdRandom.uniform(V)
# w = StdRandom.uniform(V)
# double weight = StdRandom.uniform(0.0, 1.0)
# G.addEdge(new DirectedEdge(v, w, weight))
#prt.write(G)
## find a directed cycle
#EdgeWeightedDirectedCycle finder = new EdgeWeightedDirectedCycle(G)
#if finder.hasCycle()):
# StdOut.print("Cycle: ")
# for (DirectedEdge e : finder.cycle()):
# StdOut.print(e + " ")
# prt.write()
## or give topologial sort
#else:
# prt.write("No directed cycle")
if __name__ == '__main__':
main()