aleraimondi
25-05-2006, 11:24
Salve, sono alle prese con questo algoritmo da sviluppare in java.
Praticamente devo elaborare un grafo tramite liste di adiacenza (l'ho fatto già) e trovare i cammini minimi a sorgente singola usando questo noto algoritmo. Quello che non capisco è come venga riempita la coda da cui si etrae il vertice con minima stima di cammino minimo.
lo pseudocodice dell'algoritmo è questo:
1 function Dijkstra(G, w, s)
2 for each vertex v in V[G] // Initializations
3 d[v] := infinity
4 previous[v] := undefined
5 d[s] := 0
6 S := empty set
7 Q := V[G]
8 while Q is not an empty set // The algorithm itself
9 u := Extract_Min(Q)
10 S := S union {u}
11 for each edge (u,v) outgoing from u
12 if d[u] + w(u,v) < d[v] // Relax (u,v)
13 d[v] := d[u] + w(u,v)
14 previous[v] := u
1 S := empty sequence
2 u := t
3 while defined previous[u]
4 insert u to the beginning of S
5 u := previous[u]
spero vivamente che qulcuno riesca a darmi una mano. ringrazio tutti.
Praticamente devo elaborare un grafo tramite liste di adiacenza (l'ho fatto già) e trovare i cammini minimi a sorgente singola usando questo noto algoritmo. Quello che non capisco è come venga riempita la coda da cui si etrae il vertice con minima stima di cammino minimo.
lo pseudocodice dell'algoritmo è questo:
1 function Dijkstra(G, w, s)
2 for each vertex v in V[G] // Initializations
3 d[v] := infinity
4 previous[v] := undefined
5 d[s] := 0
6 S := empty set
7 Q := V[G]
8 while Q is not an empty set // The algorithm itself
9 u := Extract_Min(Q)
10 S := S union {u}
11 for each edge (u,v) outgoing from u
12 if d[u] + w(u,v) < d[v] // Relax (u,v)
13 d[v] := d[u] + w(u,v)
14 previous[v] := u
1 S := empty sequence
2 u := t
3 while defined previous[u]
4 insert u to the beginning of S
5 u := previous[u]
spero vivamente che qulcuno riesca a darmi una mano. ringrazio tutti.