Index
Help
1
2
3
4
5
6
s = PickVertex()
dist[s] = 0
pred[s] = None
count = 0
NEXT.Append(s)
while
count < G.Order()
and
NEXT.IsNotEmpty():
if
NOW.IsEmpty():
while
NEXT.IsNotEmpty():
v = NEXT.Top()
NOW.Append(v)
count += 1
while
NOW.IsNotEmpty():
v = NOW.Top()
for
w
in
Neighborhood(v):
if
dist[w] > dist[v] + length[(v,w)]:
pred[w] = v
dist[w] = dist[v] + length[(v,w)]
if
not
NEXT.Contains(w):
NEXT.Append(w)
if
NEXT.IsNotEmpty():
t = NEXT.Top()
marked[t] = 1
while
not
marked.QDefined(pred[t]):
t = pred[t]
marked[t] = 1
root = t
while
pred[t] != root:
circuit.AddEdge((pred[t],t))
t = pred[t]
circuit.AddEdge((pred[t],t))