drumuri minime dag-uri - algoritmgrafalgoritmgraf.wikispaces.com/file/view/curs7.ppt+(2).pdf ·...
TRANSCRIPT
![Page 1: Drumuri minime DAG-uri - algoritmgrafalgoritmgraf.wikispaces.com/file/view/Curs7.ppt+(2).pdf · Drumuri minime de sursa unica in DAG-uri Dat la intrare un DAG - cu ponderi pe arce](https://reader034.vdocuments.mx/reader034/viewer/2022042506/5a78a41e7f8b9aa2448eeb31/html5/thumbnails/1.jpg)
Drumuri minime DAG-uri
![Page 2: Drumuri minime DAG-uri - algoritmgrafalgoritmgraf.wikispaces.com/file/view/Curs7.ppt+(2).pdf · Drumuri minime de sursa unica in DAG-uri Dat la intrare un DAG - cu ponderi pe arce](https://reader034.vdocuments.mx/reader034/viewer/2022042506/5a78a41e7f8b9aa2448eeb31/html5/thumbnails/2.jpg)
Problema
● Se dau n activitati numerotate de la 1 la n.
● Aceste activitati nu se pot desfasura in mod independent unele de altele.
● Se dau perechi de forma (x,y) cu semnificatia ca activitatea x trebuie sa se fi desfasurat pentru ca activitatea y sa poata sa inceapa.
![Page 3: Drumuri minime DAG-uri - algoritmgrafalgoritmgraf.wikispaces.com/file/view/Curs7.ppt+(2).pdf · Drumuri minime de sursa unica in DAG-uri Dat la intrare un DAG - cu ponderi pe arce](https://reader034.vdocuments.mx/reader034/viewer/2022042506/5a78a41e7f8b9aa2448eeb31/html5/thumbnails/3.jpg)
Problema
● Se dau n activitati numerotate de la 1 la n.
● Aceste activitati nu se pot desfasura in mod independent unele de altele.
● Sa se determine (daca este posibil) o ordine de desfasurare a acestor activitati care sa respecte regulile de dependenta.
![Page 4: Drumuri minime DAG-uri - algoritmgrafalgoritmgraf.wikispaces.com/file/view/Curs7.ppt+(2).pdf · Drumuri minime de sursa unica in DAG-uri Dat la intrare un DAG - cu ponderi pe arce](https://reader034.vdocuments.mx/reader034/viewer/2022042506/5a78a41e7f8b9aa2448eeb31/html5/thumbnails/4.jpg)
Modelare
● Q: Cum modelam aceasta problema?● A: Grafuri orientate
![Page 5: Drumuri minime DAG-uri - algoritmgrafalgoritmgraf.wikispaces.com/file/view/Curs7.ppt+(2).pdf · Drumuri minime de sursa unica in DAG-uri Dat la intrare un DAG - cu ponderi pe arce](https://reader034.vdocuments.mx/reader034/viewer/2022042506/5a78a41e7f8b9aa2448eeb31/html5/thumbnails/5.jpg)
Modelare
● Q: Cum modelam aceasta problema?● A: Grafuri orientate
![Page 6: Drumuri minime DAG-uri - algoritmgrafalgoritmgraf.wikispaces.com/file/view/Curs7.ppt+(2).pdf · Drumuri minime de sursa unica in DAG-uri Dat la intrare un DAG - cu ponderi pe arce](https://reader034.vdocuments.mx/reader034/viewer/2022042506/5a78a41e7f8b9aa2448eeb31/html5/thumbnails/6.jpg)
Modelare
● Q: Mai exact?● A: Daca doua evenimente, x si y, sunt
direct dependente: x trebuie sa se desfasoare inaintea lui y, atunci
![Page 7: Drumuri minime DAG-uri - algoritmgrafalgoritmgraf.wikispaces.com/file/view/Curs7.ppt+(2).pdf · Drumuri minime de sursa unica in DAG-uri Dat la intrare un DAG - cu ponderi pe arce](https://reader034.vdocuments.mx/reader034/viewer/2022042506/5a78a41e7f8b9aa2448eeb31/html5/thumbnails/7.jpg)
Modelare
● A: Grafuri orientate;● A: Daca doua evenimente, x si y, sunt
direct dependente: x trebuie sa se desfasoare inaintea lui y, atunci
X Y
![Page 8: Drumuri minime DAG-uri - algoritmgrafalgoritmgraf.wikispaces.com/file/view/Curs7.ppt+(2).pdf · Drumuri minime de sursa unica in DAG-uri Dat la intrare un DAG - cu ponderi pe arce](https://reader034.vdocuments.mx/reader034/viewer/2022042506/5a78a41e7f8b9aa2448eeb31/html5/thumbnails/8.jpg)
Modelare
● Q: In ce conditii exista solutii?● A: Daca trei evenimente: x , y si z cu
proprietatea
Acestea nu pot fi programate!Mai exact, nu trebuie sa existe circuite!DAG = Directed Acyclic Graph
![Page 9: Drumuri minime DAG-uri - algoritmgrafalgoritmgraf.wikispaces.com/file/view/Curs7.ppt+(2).pdf · Drumuri minime de sursa unica in DAG-uri Dat la intrare un DAG - cu ponderi pe arce](https://reader034.vdocuments.mx/reader034/viewer/2022042506/5a78a41e7f8b9aa2448eeb31/html5/thumbnails/9.jpg)
Modelare
● Q: In ce conditii exista solutii?● A: Daca trei evenimente: x , y si z cu
proprietatea
Acestea nu pot fi programate!Mai exact, nu trebuie sa existe circuite!DAG = Directed Acyclic Graph
X Y Z
![Page 10: Drumuri minime DAG-uri - algoritmgrafalgoritmgraf.wikispaces.com/file/view/Curs7.ppt+(2).pdf · Drumuri minime de sursa unica in DAG-uri Dat la intrare un DAG - cu ponderi pe arce](https://reader034.vdocuments.mx/reader034/viewer/2022042506/5a78a41e7f8b9aa2448eeb31/html5/thumbnails/10.jpg)
Modelare
● Q: In ce conditii exista solutii?● A: Daca trei evenimente: x , y si z cu
proprietatea
Acestea nu pot fi programate!Mai exact, nu trebuie sa existe circuite!DAG = Directed Acyclic Graph
X Y Z
![Page 11: Drumuri minime DAG-uri - algoritmgrafalgoritmgraf.wikispaces.com/file/view/Curs7.ppt+(2).pdf · Drumuri minime de sursa unica in DAG-uri Dat la intrare un DAG - cu ponderi pe arce](https://reader034.vdocuments.mx/reader034/viewer/2022042506/5a78a41e7f8b9aa2448eeb31/html5/thumbnails/11.jpg)
Modelare
● Exemplu: Ordinea in care ne imbracam inainte de plecare
![Page 12: Drumuri minime DAG-uri - algoritmgrafalgoritmgraf.wikispaces.com/file/view/Curs7.ppt+(2).pdf · Drumuri minime de sursa unica in DAG-uri Dat la intrare un DAG - cu ponderi pe arce](https://reader034.vdocuments.mx/reader034/viewer/2022042506/5a78a41e7f8b9aa2448eeb31/html5/thumbnails/12.jpg)
Modelare - Exemplu
Ordinea in care ne imbracam inainte de plecare - Solutii?
![Page 13: Drumuri minime DAG-uri - algoritmgrafalgoritmgraf.wikispaces.com/file/view/Curs7.ppt+(2).pdf · Drumuri minime de sursa unica in DAG-uri Dat la intrare un DAG - cu ponderi pe arce](https://reader034.vdocuments.mx/reader034/viewer/2022042506/5a78a41e7f8b9aa2448eeb31/html5/thumbnails/13.jpg)
Sortare Topologica
Ordinea in care ne imbracam inainte de plecare
Rezultatul...
![Page 14: Drumuri minime DAG-uri - algoritmgrafalgoritmgraf.wikispaces.com/file/view/Curs7.ppt+(2).pdf · Drumuri minime de sursa unica in DAG-uri Dat la intrare un DAG - cu ponderi pe arce](https://reader034.vdocuments.mx/reader034/viewer/2022042506/5a78a41e7f8b9aa2448eeb31/html5/thumbnails/14.jpg)
Sortare Topologica
Ordinea in care ne imbracam inainte de plecare
![Page 15: Drumuri minime DAG-uri - algoritmgrafalgoritmgraf.wikispaces.com/file/view/Curs7.ppt+(2).pdf · Drumuri minime de sursa unica in DAG-uri Dat la intrare un DAG - cu ponderi pe arce](https://reader034.vdocuments.mx/reader034/viewer/2022042506/5a78a41e7f8b9aa2448eeb31/html5/thumbnails/15.jpg)
Algoritmul
TOPOLOGICAL-SORT (G=(V,E))
1. Top-Sort=NULL 2. Cat timp am noduri cu gradul incident = 0
a. Fie P - multimea nodurilor cu gradul incident = 0b. Top-Sort.right_append(P) c. V=V\Pd. Reactualizez gradele nodurilor ramase in V
3. Daca V nu este NULLa. Afisez “Sortarea nu se poate face”
4. altfela. Afisez Top-Sort;
![Page 16: Drumuri minime DAG-uri - algoritmgrafalgoritmgraf.wikispaces.com/file/view/Curs7.ppt+(2).pdf · Drumuri minime de sursa unica in DAG-uri Dat la intrare un DAG - cu ponderi pe arce](https://reader034.vdocuments.mx/reader034/viewer/2022042506/5a78a41e7f8b9aa2448eeb31/html5/thumbnails/16.jpg)
Algoritmul
TOPOLOGICAL-SORT (G=(V,E))
1. Top-Sort=NULL 2. Cat timp am noduri cu gradul incident = 0
a. Fie P - multimea nodurilor cu gradul incident = 0b. Top-Sort.right_append(P) c. V=V\Pd. Reactualizez gradele nodurilor ramase in V
3. Daca V nu este NULLa. Afisez “Sortarea nu se poate face”
4. altfela. Afisez Top-Sort;
![Page 17: Drumuri minime DAG-uri - algoritmgrafalgoritmgraf.wikispaces.com/file/view/Curs7.ppt+(2).pdf · Drumuri minime de sursa unica in DAG-uri Dat la intrare un DAG - cu ponderi pe arce](https://reader034.vdocuments.mx/reader034/viewer/2022042506/5a78a41e7f8b9aa2448eeb31/html5/thumbnails/17.jpg)
Algoritmul
TOPOLOGICAL-SORT (G=(V,E))
1. Top-Sort=NULL 2. Cat timp am noduri cu gradul incident = 0
a. Fie P - multimea nodurilor cu gradul incident = 0b. Top-Sort.right_append(P) c. V=V\Pd. Reactualizez gradele nodurilor ramase in V
3. Daca V nu este NULLa. Afisez “Sortarea nu se poate face”
4. altfela. Afisez Top-Sort;
![Page 18: Drumuri minime DAG-uri - algoritmgrafalgoritmgraf.wikispaces.com/file/view/Curs7.ppt+(2).pdf · Drumuri minime de sursa unica in DAG-uri Dat la intrare un DAG - cu ponderi pe arce](https://reader034.vdocuments.mx/reader034/viewer/2022042506/5a78a41e7f8b9aa2448eeb31/html5/thumbnails/18.jpg)
Algoritmul
TOPOLOGICAL-SORT (G=(V,E))
1. Top-Sort=NULL 2. Cat timp am noduri cu gradul incident = 0
a. Identificam P - multimea nodurilor cu gradul incident = 0b. Top-Sort.right_append(P) c. V=V\Pd. Reactualizez gradele nodurilor ramase in V
3. Daca V nu este NULLa. Afisez “Sortarea nu se poate face”
4. altfela. Afisez Top-Sort;
![Page 19: Drumuri minime DAG-uri - algoritmgrafalgoritmgraf.wikispaces.com/file/view/Curs7.ppt+(2).pdf · Drumuri minime de sursa unica in DAG-uri Dat la intrare un DAG - cu ponderi pe arce](https://reader034.vdocuments.mx/reader034/viewer/2022042506/5a78a41e7f8b9aa2448eeb31/html5/thumbnails/19.jpg)
Algoritmul
TOPOLOGICAL-SORT (G=(V,E))
1. Top-Sort=NULL 2. Cat timp am noduri cu gradul incident = 0
a. Identificam P - multimea nodurilor cu gradul incident = 0b. Top-Sort.right_append(P) c. V=V\Pd. Reactualizez gradele nodurilor ramase in V
3. Daca V nu este NULLa. Afisez “Sortarea nu se poate face”
4. altfela. Afisez Top-Sort;
![Page 20: Drumuri minime DAG-uri - algoritmgrafalgoritmgraf.wikispaces.com/file/view/Curs7.ppt+(2).pdf · Drumuri minime de sursa unica in DAG-uri Dat la intrare un DAG - cu ponderi pe arce](https://reader034.vdocuments.mx/reader034/viewer/2022042506/5a78a41e7f8b9aa2448eeb31/html5/thumbnails/20.jpg)
Algoritmul
TOPOLOGICAL-SORT (G=(V,E))
1. Top-Sort=NULL 2. Cat timp am noduri cu gradul incident = 0
a. Identificam P - multimea nodurilor cu gradul incident = 0b. Top-Sort.right_append(P) c. V=V\Pd. Reactualizez gradele nodurilor ramase in V
3. Daca V nu este NULLa. Afisez “Sortarea nu se poate face”
4. altfela. Afisez Top-Sort;
![Page 21: Drumuri minime DAG-uri - algoritmgrafalgoritmgraf.wikispaces.com/file/view/Curs7.ppt+(2).pdf · Drumuri minime de sursa unica in DAG-uri Dat la intrare un DAG - cu ponderi pe arce](https://reader034.vdocuments.mx/reader034/viewer/2022042506/5a78a41e7f8b9aa2448eeb31/html5/thumbnails/21.jpg)
Algoritmul
TOPOLOGICAL-SORT (G=(V,E))
1. Top-Sort=NULL 2. Cat timp am noduri cu gradul incident = 0
a. Identificam P - multimea nodurilor cu gradul incident = 0b. Top-Sort.right_append(P) c. V=V\Pd. Reactualizez gradele nodurilor ramase in V
3. Daca V nu este NULLa. Afisez “Sortarea nu se poate face”
4. altfela. Afisez Top-Sort;
![Page 22: Drumuri minime DAG-uri - algoritmgrafalgoritmgraf.wikispaces.com/file/view/Curs7.ppt+(2).pdf · Drumuri minime de sursa unica in DAG-uri Dat la intrare un DAG - cu ponderi pe arce](https://reader034.vdocuments.mx/reader034/viewer/2022042506/5a78a41e7f8b9aa2448eeb31/html5/thumbnails/22.jpg)
Algoritmul
TOPOLOGICAL-SORT (G=(V,E))
1. Top-Sort=NULL 2. Cat timp am noduri cu gradul incident = 0
a. Identificam P - multimea nodurilor cu gradul incident = 0b. Top-Sort.right_append(P) c. V=V\Pd. Reactualizez gradele nodurilor ramase in V
3. Daca V nu este NULLa. Afisez “Sortarea nu se poate face”
4. altfela. Afisez Top-Sort;
COMPLEXITATE?
![Page 23: Drumuri minime DAG-uri - algoritmgrafalgoritmgraf.wikispaces.com/file/view/Curs7.ppt+(2).pdf · Drumuri minime de sursa unica in DAG-uri Dat la intrare un DAG - cu ponderi pe arce](https://reader034.vdocuments.mx/reader034/viewer/2022042506/5a78a41e7f8b9aa2448eeb31/html5/thumbnails/23.jpg)
Algoritmul
TOPOLOGICAL-SORT (G=(V,E))
1. Top-Sort=NULL 2. Cat timp am noduri cu gradul incident = 0
a. Identificam P - multimea nodurilor cu gradul incident = 0b. Top-Sort.right_append(P) c. V=V\Pd. Reactualizez gradele nodurilor ramase in V
3. Daca V nu este NULLa. Afisez “Sortarea nu se poate face”
4. altfela. Afisez Top-Sort;
O(|V|+|E|)
![Page 24: Drumuri minime DAG-uri - algoritmgrafalgoritmgraf.wikispaces.com/file/view/Curs7.ppt+(2).pdf · Drumuri minime de sursa unica in DAG-uri Dat la intrare un DAG - cu ponderi pe arce](https://reader034.vdocuments.mx/reader034/viewer/2022042506/5a78a41e7f8b9aa2448eeb31/html5/thumbnails/24.jpg)
Algoritmul - Corectidudine
TOPOLOGICAL-SORT (G=(V,E))1. De ce atunci cand exista solutii, solutia furnizata de algoritm
este corecta?2. De ce atunci cand nu exista solutii (exista un circuit), algoritmul
semnaleaza corect acest lucru?
![Page 25: Drumuri minime DAG-uri - algoritmgrafalgoritmgraf.wikispaces.com/file/view/Curs7.ppt+(2).pdf · Drumuri minime de sursa unica in DAG-uri Dat la intrare un DAG - cu ponderi pe arce](https://reader034.vdocuments.mx/reader034/viewer/2022042506/5a78a41e7f8b9aa2448eeb31/html5/thumbnails/25.jpg)
Drumuri minime de sursa unica in DAG-uri
Dat la intrare un DAG - cu ponderi pe arce - si un nod de start s, sa se determine drumurile de cost minim de la s la toate celelalte noduri.
![Page 26: Drumuri minime DAG-uri - algoritmgrafalgoritmgraf.wikispaces.com/file/view/Curs7.ppt+(2).pdf · Drumuri minime de sursa unica in DAG-uri Dat la intrare un DAG - cu ponderi pe arce](https://reader034.vdocuments.mx/reader034/viewer/2022042506/5a78a41e7f8b9aa2448eeb31/html5/thumbnails/26.jpg)
Drumuri minime de sursa unica in DAG-uri
Dat la intrare un DAG - cu ponderi pe arce - si un nod de start s, sa se determine drumurile de cost minim de la s la toate celelalte noduri.Observatie 1: Arcele pot avea si cost negativ.
![Page 27: Drumuri minime DAG-uri - algoritmgrafalgoritmgraf.wikispaces.com/file/view/Curs7.ppt+(2).pdf · Drumuri minime de sursa unica in DAG-uri Dat la intrare un DAG - cu ponderi pe arce](https://reader034.vdocuments.mx/reader034/viewer/2022042506/5a78a41e7f8b9aa2448eeb31/html5/thumbnails/27.jpg)
Drumuri minime de sursa unica in DAG-uri
Dat la intrare un DAG - cu ponderi pe arce - si un nod de start s, sa se determine drumurile de cost minim de la s la toate celelalte noduri.Observatie 1: Arcele pot avea si cost negativ.Observatie 2: Cand consideram un varf v, pentru a calcula d(s,v) ar fi util sa stim d(s,u) pentru orice u,v - arc;
Idei?
![Page 28: Drumuri minime DAG-uri - algoritmgrafalgoritmgraf.wikispaces.com/file/view/Curs7.ppt+(2).pdf · Drumuri minime de sursa unica in DAG-uri Dat la intrare un DAG - cu ponderi pe arce](https://reader034.vdocuments.mx/reader034/viewer/2022042506/5a78a41e7f8b9aa2448eeb31/html5/thumbnails/28.jpg)
Drumuri minime de sursa unica in DAG-uri
Dat la intrare un DAG - cu ponderi pe arce - si un nod de start s, sa se determine drumurile de cost minim de la s la toate celelalte noduri.Observatie 1: Arcele pot avea si cost negativ.Observatie 2: Cand consideram un varf v, pentru a calcula d(s,v) ar fi util sa stim d(s,u) pentru orice u,v - arc;
Idee: Sortarea Topologica
![Page 29: Drumuri minime DAG-uri - algoritmgrafalgoritmgraf.wikispaces.com/file/view/Curs7.ppt+(2).pdf · Drumuri minime de sursa unica in DAG-uri Dat la intrare un DAG - cu ponderi pe arce](https://reader034.vdocuments.mx/reader034/viewer/2022042506/5a78a41e7f8b9aa2448eeb31/html5/thumbnails/29.jpg)
Pseudocod
● Considerăm vârfurile în ordinea dată de sortarea topologică, începând cu vârful s
● Pentru fiecare vârf u relaxăm arcele uv către vecinii săi (pentru a găsi drumuri noi către aceștia)
![Page 30: Drumuri minime DAG-uri - algoritmgrafalgoritmgraf.wikispaces.com/file/view/Curs7.ppt+(2).pdf · Drumuri minime de sursa unica in DAG-uri Dat la intrare un DAG - cu ponderi pe arce](https://reader034.vdocuments.mx/reader034/viewer/2022042506/5a78a41e7f8b9aa2448eeb31/html5/thumbnails/30.jpg)
Pseudocod
s – vârful de start//initializam distante – ca la Dijkstra
pentru fiecare uÎV executad[u] = ∞; tata[u]=0
d[s] = 0
//determinăm o sortare topologică a vârfurilor//este suficient sa pastrăm vârfurile din sortare începând cu s
SortTop = Topological-Sort(G)pentru fiecare u ∊ SortTop pentru fiecare uv ∊ E executa daca d[u]+w(u,v)<d[v] atunci //relaxam uv d[v] = d[u]+w(u,v) tata[v] = u
![Page 31: Drumuri minime DAG-uri - algoritmgrafalgoritmgraf.wikispaces.com/file/view/Curs7.ppt+(2).pdf · Drumuri minime de sursa unica in DAG-uri Dat la intrare un DAG - cu ponderi pe arce](https://reader034.vdocuments.mx/reader034/viewer/2022042506/5a78a41e7f8b9aa2448eeb31/html5/thumbnails/31.jpg)
Pseudocod
s – vârful de start//initializam distante – ca la Dijkstra
pentru fiecare u ∊ V executad[u] = ∞; tata[u]=0
d[s] = 0
//determinăm o sortare topologică a vârfurilor//este suficient sa pastrăm vârfurile din sortare începând cu s
SortTop = Topological-Sort(G)pentru fiecare u ∊ SortTop pentru fiecare uv ∊ E executa daca d[u]+w(u,v)<d[v] atunci //relaxam uv d[v] = d[u]+w(u,v) tata[v] = u
![Page 32: Drumuri minime DAG-uri - algoritmgrafalgoritmgraf.wikispaces.com/file/view/Curs7.ppt+(2).pdf · Drumuri minime de sursa unica in DAG-uri Dat la intrare un DAG - cu ponderi pe arce](https://reader034.vdocuments.mx/reader034/viewer/2022042506/5a78a41e7f8b9aa2448eeb31/html5/thumbnails/32.jpg)
Pseudocod
s – vârful de start//initializam distante – ca la Dijkstra
pentru fiecare u ∊ V executad[u] = ∞; tata[u]=0
d[s] = 0
//determinăm o sortare topologică a vârfurilor//este suficient sa pastrăm vârfurile din sortare începând cu s
SortTop = Topological-Sort(G)pentru fiecare u ∊ SortTop pentru fiecare uv ∊ E executa daca d[u]+w(u,v)<d[v] atunci //relaxam uv d[v] = d[u]+w(u,v) tata[v] = u
![Page 33: Drumuri minime DAG-uri - algoritmgrafalgoritmgraf.wikispaces.com/file/view/Curs7.ppt+(2).pdf · Drumuri minime de sursa unica in DAG-uri Dat la intrare un DAG - cu ponderi pe arce](https://reader034.vdocuments.mx/reader034/viewer/2022042506/5a78a41e7f8b9aa2448eeb31/html5/thumbnails/33.jpg)
Pseudocod
s – vârful de start//initializam distante – ca la Dijkstra
pentru fiecare u ∊ V executad[u] = ∞; tata[u]=0
d[s] = 0
//determinăm o sortare topologică a vârfurilor//este suficient sa pastrăm vârfurile din sortare începând cu s
SortTop = Topological-Sort(G)pentru fiecare u ∊ SortTop pentru fiecare uv ∊ E executa daca d[u]+w(u,v)<d[v] atunci //relaxam uv d[v] = d[u]+w(u,v) tata[v] = u
![Page 34: Drumuri minime DAG-uri - algoritmgrafalgoritmgraf.wikispaces.com/file/view/Curs7.ppt+(2).pdf · Drumuri minime de sursa unica in DAG-uri Dat la intrare un DAG - cu ponderi pe arce](https://reader034.vdocuments.mx/reader034/viewer/2022042506/5a78a41e7f8b9aa2448eeb31/html5/thumbnails/34.jpg)
Pseudocod
s – vârful de start//initializam distante – ca la Dijkstra
pentru fiecare u ∊ V executad[u] = ∞; tata[u]=0
d[s] = 0
//determinăm o sortare topologică a vârfurilor//este suficient sa pastrăm vârfurile din sortare începând cu s
SortTop = Topological-Sort(G)pentru fiecare u ∊ SortTop pentru fiecare uv ∊ E executa daca d[u]+w(u,v)<d[v] atunci //relaxam uv d[v] = d[u]+w(u,v) tata[v] = u
![Page 35: Drumuri minime DAG-uri - algoritmgrafalgoritmgraf.wikispaces.com/file/view/Curs7.ppt+(2).pdf · Drumuri minime de sursa unica in DAG-uri Dat la intrare un DAG - cu ponderi pe arce](https://reader034.vdocuments.mx/reader034/viewer/2022042506/5a78a41e7f8b9aa2448eeb31/html5/thumbnails/35.jpg)
Pseudocod
s – vârful de start//initializam distante – ca la Dijkstra
pentru fiecare u ∊ V executad[u] = ∞; tata[u]=0
d[s] = 0
//determinăm o sortare topologică a vârfurilor//este suficient sa pastrăm vârfurile din sortare începând cu s
SortTop = Topological-Sort(G)pentru fiecare u ∊ SortTop pentru fiecare uv ∊ E executa daca d[u]+w(u,v)<d[v] atunci //relaxam uv d[v] = d[u]+w(u,v) tata[v] = u
![Page 36: Drumuri minime DAG-uri - algoritmgrafalgoritmgraf.wikispaces.com/file/view/Curs7.ppt+(2).pdf · Drumuri minime de sursa unica in DAG-uri Dat la intrare un DAG - cu ponderi pe arce](https://reader034.vdocuments.mx/reader034/viewer/2022042506/5a78a41e7f8b9aa2448eeb31/html5/thumbnails/36.jpg)
EXEMPLU
![Page 37: Drumuri minime DAG-uri - algoritmgrafalgoritmgraf.wikispaces.com/file/view/Curs7.ppt+(2).pdf · Drumuri minime de sursa unica in DAG-uri Dat la intrare un DAG - cu ponderi pe arce](https://reader034.vdocuments.mx/reader034/viewer/2022042506/5a78a41e7f8b9aa2448eeb31/html5/thumbnails/37.jpg)
Exemplu
![Page 38: Drumuri minime DAG-uri - algoritmgrafalgoritmgraf.wikispaces.com/file/view/Curs7.ppt+(2).pdf · Drumuri minime de sursa unica in DAG-uri Dat la intrare un DAG - cu ponderi pe arce](https://reader034.vdocuments.mx/reader034/viewer/2022042506/5a78a41e7f8b9aa2448eeb31/html5/thumbnails/38.jpg)
Exemplu
![Page 39: Drumuri minime DAG-uri - algoritmgrafalgoritmgraf.wikispaces.com/file/view/Curs7.ppt+(2).pdf · Drumuri minime de sursa unica in DAG-uri Dat la intrare un DAG - cu ponderi pe arce](https://reader034.vdocuments.mx/reader034/viewer/2022042506/5a78a41e7f8b9aa2448eeb31/html5/thumbnails/39.jpg)
Exemplu
![Page 40: Drumuri minime DAG-uri - algoritmgrafalgoritmgraf.wikispaces.com/file/view/Curs7.ppt+(2).pdf · Drumuri minime de sursa unica in DAG-uri Dat la intrare un DAG - cu ponderi pe arce](https://reader034.vdocuments.mx/reader034/viewer/2022042506/5a78a41e7f8b9aa2448eeb31/html5/thumbnails/40.jpg)
Exemplu
![Page 41: Drumuri minime DAG-uri - algoritmgrafalgoritmgraf.wikispaces.com/file/view/Curs7.ppt+(2).pdf · Drumuri minime de sursa unica in DAG-uri Dat la intrare un DAG - cu ponderi pe arce](https://reader034.vdocuments.mx/reader034/viewer/2022042506/5a78a41e7f8b9aa2448eeb31/html5/thumbnails/41.jpg)
Exemplu
![Page 42: Drumuri minime DAG-uri - algoritmgrafalgoritmgraf.wikispaces.com/file/view/Curs7.ppt+(2).pdf · Drumuri minime de sursa unica in DAG-uri Dat la intrare un DAG - cu ponderi pe arce](https://reader034.vdocuments.mx/reader034/viewer/2022042506/5a78a41e7f8b9aa2448eeb31/html5/thumbnails/42.jpg)
Exemplu
![Page 43: Drumuri minime DAG-uri - algoritmgrafalgoritmgraf.wikispaces.com/file/view/Curs7.ppt+(2).pdf · Drumuri minime de sursa unica in DAG-uri Dat la intrare un DAG - cu ponderi pe arce](https://reader034.vdocuments.mx/reader034/viewer/2022042506/5a78a41e7f8b9aa2448eeb31/html5/thumbnails/43.jpg)
Exemplu
![Page 44: Drumuri minime DAG-uri - algoritmgrafalgoritmgraf.wikispaces.com/file/view/Curs7.ppt+(2).pdf · Drumuri minime de sursa unica in DAG-uri Dat la intrare un DAG - cu ponderi pe arce](https://reader034.vdocuments.mx/reader034/viewer/2022042506/5a78a41e7f8b9aa2448eeb31/html5/thumbnails/44.jpg)
Exemplu
![Page 45: Drumuri minime DAG-uri - algoritmgrafalgoritmgraf.wikispaces.com/file/view/Curs7.ppt+(2).pdf · Drumuri minime de sursa unica in DAG-uri Dat la intrare un DAG - cu ponderi pe arce](https://reader034.vdocuments.mx/reader034/viewer/2022042506/5a78a41e7f8b9aa2448eeb31/html5/thumbnails/45.jpg)
Exemplu
![Page 46: Drumuri minime DAG-uri - algoritmgrafalgoritmgraf.wikispaces.com/file/view/Curs7.ppt+(2).pdf · Drumuri minime de sursa unica in DAG-uri Dat la intrare un DAG - cu ponderi pe arce](https://reader034.vdocuments.mx/reader034/viewer/2022042506/5a78a41e7f8b9aa2448eeb31/html5/thumbnails/46.jpg)
Exemplu
![Page 47: Drumuri minime DAG-uri - algoritmgrafalgoritmgraf.wikispaces.com/file/view/Curs7.ppt+(2).pdf · Drumuri minime de sursa unica in DAG-uri Dat la intrare un DAG - cu ponderi pe arce](https://reader034.vdocuments.mx/reader034/viewer/2022042506/5a78a41e7f8b9aa2448eeb31/html5/thumbnails/47.jpg)
Exemplu
![Page 48: Drumuri minime DAG-uri - algoritmgrafalgoritmgraf.wikispaces.com/file/view/Curs7.ppt+(2).pdf · Drumuri minime de sursa unica in DAG-uri Dat la intrare un DAG - cu ponderi pe arce](https://reader034.vdocuments.mx/reader034/viewer/2022042506/5a78a41e7f8b9aa2448eeb31/html5/thumbnails/48.jpg)
Exemplu
![Page 49: Drumuri minime DAG-uri - algoritmgrafalgoritmgraf.wikispaces.com/file/view/Curs7.ppt+(2).pdf · Drumuri minime de sursa unica in DAG-uri Dat la intrare un DAG - cu ponderi pe arce](https://reader034.vdocuments.mx/reader034/viewer/2022042506/5a78a41e7f8b9aa2448eeb31/html5/thumbnails/49.jpg)
Exemplu
![Page 50: Drumuri minime DAG-uri - algoritmgrafalgoritmgraf.wikispaces.com/file/view/Curs7.ppt+(2).pdf · Drumuri minime de sursa unica in DAG-uri Dat la intrare un DAG - cu ponderi pe arce](https://reader034.vdocuments.mx/reader034/viewer/2022042506/5a78a41e7f8b9aa2448eeb31/html5/thumbnails/50.jpg)
Exemplu
![Page 51: Drumuri minime DAG-uri - algoritmgrafalgoritmgraf.wikispaces.com/file/view/Curs7.ppt+(2).pdf · Drumuri minime de sursa unica in DAG-uri Dat la intrare un DAG - cu ponderi pe arce](https://reader034.vdocuments.mx/reader034/viewer/2022042506/5a78a41e7f8b9aa2448eeb31/html5/thumbnails/51.jpg)
Exemplu
![Page 52: Drumuri minime DAG-uri - algoritmgrafalgoritmgraf.wikispaces.com/file/view/Curs7.ppt+(2).pdf · Drumuri minime de sursa unica in DAG-uri Dat la intrare un DAG - cu ponderi pe arce](https://reader034.vdocuments.mx/reader034/viewer/2022042506/5a78a41e7f8b9aa2448eeb31/html5/thumbnails/52.jpg)
Exemplu
![Page 53: Drumuri minime DAG-uri - algoritmgrafalgoritmgraf.wikispaces.com/file/view/Curs7.ppt+(2).pdf · Drumuri minime de sursa unica in DAG-uri Dat la intrare un DAG - cu ponderi pe arce](https://reader034.vdocuments.mx/reader034/viewer/2022042506/5a78a41e7f8b9aa2448eeb31/html5/thumbnails/53.jpg)
Exemplu
![Page 54: Drumuri minime DAG-uri - algoritmgrafalgoritmgraf.wikispaces.com/file/view/Curs7.ppt+(2).pdf · Drumuri minime de sursa unica in DAG-uri Dat la intrare un DAG - cu ponderi pe arce](https://reader034.vdocuments.mx/reader034/viewer/2022042506/5a78a41e7f8b9aa2448eeb31/html5/thumbnails/54.jpg)
Corectitudine - 2 observatii
Observatie 1:Toate nodurile situate la “stanga” nodului de start in sortarea topologica vor avea distanta catre ele ∞
Observatie 2:Pentru orice alt nod, corectitudinea rezultatului obtinut se bazeaza pe corectitudinea rezultatului obtinut pentru nodurile anterioare in sortarea topologica
![Page 55: Drumuri minime DAG-uri - algoritmgrafalgoritmgraf.wikispaces.com/file/view/Curs7.ppt+(2).pdf · Drumuri minime de sursa unica in DAG-uri Dat la intrare un DAG - cu ponderi pe arce](https://reader034.vdocuments.mx/reader034/viewer/2022042506/5a78a41e7f8b9aa2448eeb31/html5/thumbnails/55.jpg)
Corectitudine
Observatie 1:Toate nodurile situate la “stanga” nodului de start in sortarea topologica vor avea distanta catre ele ∞
Observatie 2:Pentru orice alt nod, corectitudinea rezultatului obtinut se bazeaza pe corectitudinea rezultatului obtinut pentru nodurile anterioare in sortarea topologica
![Page 56: Drumuri minime DAG-uri - algoritmgrafalgoritmgraf.wikispaces.com/file/view/Curs7.ppt+(2).pdf · Drumuri minime de sursa unica in DAG-uri Dat la intrare un DAG - cu ponderi pe arce](https://reader034.vdocuments.mx/reader034/viewer/2022042506/5a78a41e7f8b9aa2448eeb31/html5/thumbnails/56.jpg)
Corectitudine
Observatie 1:Toate nodurile situate la “stanga” nodului de start in sortarea topologica vor avea distanta catre ele ∞
Observatie 2:Pentru orice alt nod, corectitudinea rezultatului obtinut se bazeaza pe corectitudinea rezultatului obtinut pentru nodurile anterioare in sortarea topologica
![Page 57: Drumuri minime DAG-uri - algoritmgrafalgoritmgraf.wikispaces.com/file/view/Curs7.ppt+(2).pdf · Drumuri minime de sursa unica in DAG-uri Dat la intrare un DAG - cu ponderi pe arce](https://reader034.vdocuments.mx/reader034/viewer/2022042506/5a78a41e7f8b9aa2448eeb31/html5/thumbnails/57.jpg)
Aplicatie: Drumuri Critice
![Page 58: Drumuri minime DAG-uri - algoritmgrafalgoritmgraf.wikispaces.com/file/view/Curs7.ppt+(2).pdf · Drumuri minime de sursa unica in DAG-uri Dat la intrare un DAG - cu ponderi pe arce](https://reader034.vdocuments.mx/reader034/viewer/2022042506/5a78a41e7f8b9aa2448eeb31/html5/thumbnails/58.jpg)
Aplicatie: Drumuri Critice
Se cunosc pentru un proiect cu n activități, numerotate 1,…, n:
● durata fiecărei activități● perechi (i, j) = activitatea i trebuie să se încheie
înainte să înceapă j● activitățile se pot desfășura și în paralel
Se cere: timpul minim de finalizare a proiectului (dacă momentul de start este ora 0) + planificarea activităților
![Page 59: Drumuri minime DAG-uri - algoritmgrafalgoritmgraf.wikispaces.com/file/view/Curs7.ppt+(2).pdf · Drumuri minime de sursa unica in DAG-uri Dat la intrare un DAG - cu ponderi pe arce](https://reader034.vdocuments.mx/reader034/viewer/2022042506/5a78a41e7f8b9aa2448eeb31/html5/thumbnails/59.jpg)
Aplicatie: Drumuri Critice
Se cunosc pentru un proiect cu n activități, numerotate 1,…, n:
● durata fiecărei activități● perechi (i, j) = activitatea i trebuie să se încheie
înainte să înceapă j● activitățile se pot desfășura și în paralel
Se cere: timpul minim de finalizare a proiectului (dacă momentul de start este ora 0) + planificarea activităților
![Page 60: Drumuri minime DAG-uri - algoritmgrafalgoritmgraf.wikispaces.com/file/view/Curs7.ppt+(2).pdf · Drumuri minime de sursa unica in DAG-uri Dat la intrare un DAG - cu ponderi pe arce](https://reader034.vdocuments.mx/reader034/viewer/2022042506/5a78a41e7f8b9aa2448eeb31/html5/thumbnails/60.jpg)
Aplicatie: Drumuri Critice
Se cunosc pentru un proiect cu n activități, numerotate 1,…, n:
● durata fiecărei activități● perechi (i, j) = activitatea i trebuie să se încheie
înainte să înceapă j● activitățile se pot desfășura și în paralel
Se cere: timpul minim de finalizare a proiectului (dacă momentul de start este ora 0) + planificarea activităților
![Page 61: Drumuri minime DAG-uri - algoritmgrafalgoritmgraf.wikispaces.com/file/view/Curs7.ppt+(2).pdf · Drumuri minime de sursa unica in DAG-uri Dat la intrare un DAG - cu ponderi pe arce](https://reader034.vdocuments.mx/reader034/viewer/2022042506/5a78a41e7f8b9aa2448eeb31/html5/thumbnails/61.jpg)
Aplicatie: Drumuri Critice
Se cunosc pentru un proiect cu n activități, numerotate 1,…, n:
● durata fiecărei activități● perechi (i, j) = activitatea i trebuie să se încheie
înainte să înceapă j● activitățile se pot desfășura și în paralel
Se cere: timpul minim de finalizare a proiectului (dacă momentul de start este ora 0) + planificarea activităților
![Page 62: Drumuri minime DAG-uri - algoritmgrafalgoritmgraf.wikispaces.com/file/view/Curs7.ppt+(2).pdf · Drumuri minime de sursa unica in DAG-uri Dat la intrare un DAG - cu ponderi pe arce](https://reader034.vdocuments.mx/reader034/viewer/2022042506/5a78a41e7f8b9aa2448eeb31/html5/thumbnails/62.jpg)
Aplicatie: Drumuri Critice
Se cunosc pentru un proiect cu n activități, numerotate 1,…, n:
● durata fiecărei activități● perechi (i, j) = activitatea i trebuie să se încheie
înainte să înceapă j● activitățile se pot desfășura și în paralel
Se cere: timpul minim de finalizare a proiectului (dacă momentul de start este ora 0) + planificarea activităților
![Page 63: Drumuri minime DAG-uri - algoritmgrafalgoritmgraf.wikispaces.com/file/view/Curs7.ppt+(2).pdf · Drumuri minime de sursa unica in DAG-uri Dat la intrare un DAG - cu ponderi pe arce](https://reader034.vdocuments.mx/reader034/viewer/2022042506/5a78a41e7f8b9aa2448eeb31/html5/thumbnails/63.jpg)
Drumuri Critice: Exemplu
n = 6◦Activitatea 1 - durata 7◦Activitatea 2 - durata 4◦Activitatea 3 - durata 30◦Activitatea 4 - durata 12◦Activitatea 5 - durata 2◦Activitatea 6 - durata 5◦(1, 2)◦(2, 3)◦(3, 6)◦(4, 3)◦(2, 6)◦(3, 5)
![Page 64: Drumuri minime DAG-uri - algoritmgrafalgoritmgraf.wikispaces.com/file/view/Curs7.ppt+(2).pdf · Drumuri minime de sursa unica in DAG-uri Dat la intrare un DAG - cu ponderi pe arce](https://reader034.vdocuments.mx/reader034/viewer/2022042506/5a78a41e7f8b9aa2448eeb31/html5/thumbnails/64.jpg)
Drumuri Critice: Exemplu
n = 6◦Activitatea 1 - durata 7◦Activitatea 2 - durata 4◦Activitatea 3 - durata 30◦Activitatea 4 - durata 12◦Activitatea 5 - durata 2◦Activitatea 6 - durata 5◦(1, 2)◦(2, 3)◦(3, 6)◦(4, 3)◦(2, 6)◦(3, 5)
Modelare?
![Page 65: Drumuri minime DAG-uri - algoritmgrafalgoritmgraf.wikispaces.com/file/view/Curs7.ppt+(2).pdf · Drumuri minime de sursa unica in DAG-uri Dat la intrare un DAG - cu ponderi pe arce](https://reader034.vdocuments.mx/reader034/viewer/2022042506/5a78a41e7f8b9aa2448eeb31/html5/thumbnails/65.jpg)
Drumuri Critice: Exemplu
n = 6◦Activitatea 1 - durata 7◦Activitatea 2 - durata 4◦Activitatea 3 - durata 30◦Activitatea 4 - durata 12◦Activitatea 5 - durata 2◦Activitatea 6 - durata 5◦(1, 2)◦(2, 3)◦(3, 6)◦(4, 3)◦(2, 6)◦(3, 5)
![Page 66: Drumuri minime DAG-uri - algoritmgrafalgoritmgraf.wikispaces.com/file/view/Curs7.ppt+(2).pdf · Drumuri minime de sursa unica in DAG-uri Dat la intrare un DAG - cu ponderi pe arce](https://reader034.vdocuments.mx/reader034/viewer/2022042506/5a78a41e7f8b9aa2448eeb31/html5/thumbnails/66.jpg)
Drumuri Critice: Exemplu
n = 6◦Activitatea 1 - durata 7◦Activitatea 2 - durata 4◦Activitatea 3 - durata 30◦Activitatea 4 - durata 12◦Activitatea 5 - durata 2◦Activitatea 6 - durata 5◦(1, 2)◦(2, 3)◦(3, 6)◦(4, 3)◦(2, 6)◦(3, 5)
Ponderile?
![Page 67: Drumuri minime DAG-uri - algoritmgrafalgoritmgraf.wikispaces.com/file/view/Curs7.ppt+(2).pdf · Drumuri minime de sursa unica in DAG-uri Dat la intrare un DAG - cu ponderi pe arce](https://reader034.vdocuments.mx/reader034/viewer/2022042506/5a78a41e7f8b9aa2448eeb31/html5/thumbnails/67.jpg)
Drumuri Critice: Exemplu
![Page 68: Drumuri minime DAG-uri - algoritmgrafalgoritmgraf.wikispaces.com/file/view/Curs7.ppt+(2).pdf · Drumuri minime de sursa unica in DAG-uri Dat la intrare un DAG - cu ponderi pe arce](https://reader034.vdocuments.mx/reader034/viewer/2022042506/5a78a41e7f8b9aa2448eeb31/html5/thumbnails/68.jpg)
Drumuri Critice: Exemplu
![Page 69: Drumuri minime DAG-uri - algoritmgrafalgoritmgraf.wikispaces.com/file/view/Curs7.ppt+(2).pdf · Drumuri minime de sursa unica in DAG-uri Dat la intrare un DAG - cu ponderi pe arce](https://reader034.vdocuments.mx/reader034/viewer/2022042506/5a78a41e7f8b9aa2448eeb31/html5/thumbnails/69.jpg)
Drumuri Critice: Exemplu
W(i,j)=?
![Page 70: Drumuri minime DAG-uri - algoritmgrafalgoritmgraf.wikispaces.com/file/view/Curs7.ppt+(2).pdf · Drumuri minime de sursa unica in DAG-uri Dat la intrare un DAG - cu ponderi pe arce](https://reader034.vdocuments.mx/reader034/viewer/2022042506/5a78a41e7f8b9aa2448eeb31/html5/thumbnails/70.jpg)
Drumuri Critice: Exemplu
W(i,j)= durata activitatii imai exact, timpul scurs de la
inceputul lui i pana la inceputul lui j daca i,j consecutive
![Page 71: Drumuri minime DAG-uri - algoritmgrafalgoritmgraf.wikispaces.com/file/view/Curs7.ppt+(2).pdf · Drumuri minime de sursa unica in DAG-uri Dat la intrare un DAG - cu ponderi pe arce](https://reader034.vdocuments.mx/reader034/viewer/2022042506/5a78a41e7f8b9aa2448eeb31/html5/thumbnails/71.jpg)
Drumuri Critice: Exemplu
W(i,j)= durata activitatii imai exact, timpul scurs de la
inceputul lui i pana la inceputul lui j daca i,j consecutive
![Page 72: Drumuri minime DAG-uri - algoritmgrafalgoritmgraf.wikispaces.com/file/view/Curs7.ppt+(2).pdf · Drumuri minime de sursa unica in DAG-uri Dat la intrare un DAG - cu ponderi pe arce](https://reader034.vdocuments.mx/reader034/viewer/2022042506/5a78a41e7f8b9aa2448eeb31/html5/thumbnails/72.jpg)
Drumuri Critice: Exemplu
Timpul minim de finalizare a proiectului = costul maxim al unui drum de la S la T
![Page 73: Drumuri minime DAG-uri - algoritmgrafalgoritmgraf.wikispaces.com/file/view/Curs7.ppt+(2).pdf · Drumuri minime de sursa unica in DAG-uri Dat la intrare un DAG - cu ponderi pe arce](https://reader034.vdocuments.mx/reader034/viewer/2022042506/5a78a41e7f8b9aa2448eeb31/html5/thumbnails/73.jpg)
Drumuri Critice: Exemplu
Timpul minim de finalizare a proiectului = costul maxim al unui drum de la S la T
![Page 74: Drumuri minime DAG-uri - algoritmgrafalgoritmgraf.wikispaces.com/file/view/Curs7.ppt+(2).pdf · Drumuri minime de sursa unica in DAG-uri Dat la intrare un DAG - cu ponderi pe arce](https://reader034.vdocuments.mx/reader034/viewer/2022042506/5a78a41e7f8b9aa2448eeb31/html5/thumbnails/74.jpg)
Analiza...
Putem modifica algoritmul de determinare de drumuri minime în grafuri aciclice a.î. să determine drumuri maxime (de cost maxim) de la S la celelalte vârfuri?
![Page 75: Drumuri minime DAG-uri - algoritmgrafalgoritmgraf.wikispaces.com/file/view/Curs7.ppt+(2).pdf · Drumuri minime de sursa unica in DAG-uri Dat la intrare un DAG - cu ponderi pe arce](https://reader034.vdocuments.mx/reader034/viewer/2022042506/5a78a41e7f8b9aa2448eeb31/html5/thumbnails/75.jpg)
Analiza...
Putem modifica algoritmul lui Dijkstra de determinare de drumuri minime în grafuri (nu neapărat aciclice) a.î. să determine drumuri maxime de la S la celelalte vârfuri?
![Page 77: Drumuri minime DAG-uri - algoritmgrafalgoritmgraf.wikispaces.com/file/view/Curs7.ppt+(2).pdf · Drumuri minime de sursa unica in DAG-uri Dat la intrare un DAG - cu ponderi pe arce](https://reader034.vdocuments.mx/reader034/viewer/2022042506/5a78a41e7f8b9aa2448eeb31/html5/thumbnails/77.jpg)
Problema
Dandu-se un graf (preferabil fara circuite de cost negativ), se pune problema gasirii in mod eficient a drumurilor de cost minimim de la oricare nod la oricare alt nod
![Page 78: Drumuri minime DAG-uri - algoritmgrafalgoritmgraf.wikispaces.com/file/view/Curs7.ppt+(2).pdf · Drumuri minime de sursa unica in DAG-uri Dat la intrare un DAG - cu ponderi pe arce](https://reader034.vdocuments.mx/reader034/viewer/2022042506/5a78a41e7f8b9aa2448eeb31/html5/thumbnails/78.jpg)
Problema
Dandu-se un graf (preferabil fara circuite de cost negativ), se pune problema gasirii in mod eficient a drumurilor de cost minimim de la oricare nod la oricare alt nod
Q: Cum retin costul drumurilor dintre i si j?A: Matricea D[i][j]= costul drumului minim de la i la j
![Page 79: Drumuri minime DAG-uri - algoritmgrafalgoritmgraf.wikispaces.com/file/view/Curs7.ppt+(2).pdf · Drumuri minime de sursa unica in DAG-uri Dat la intrare un DAG - cu ponderi pe arce](https://reader034.vdocuments.mx/reader034/viewer/2022042506/5a78a41e7f8b9aa2448eeb31/html5/thumbnails/79.jpg)
Problema
Dandu-se un graf (preferabil fara circuite de cost negativ), se pune problema gasirii in mod eficient a drumurilor de cost minimim de la oricare nod la oricare alt nod
Q: Cum retin efectiv drumul dintre i si j?A: Matricea T[i][j]= Predecesorul nodului j in drumul de cost minim de la i la j
![Page 80: Drumuri minime DAG-uri - algoritmgrafalgoritmgraf.wikispaces.com/file/view/Curs7.ppt+(2).pdf · Drumuri minime de sursa unica in DAG-uri Dat la intrare un DAG - cu ponderi pe arce](https://reader034.vdocuments.mx/reader034/viewer/2022042506/5a78a41e7f8b9aa2448eeb31/html5/thumbnails/80.jpg)
Solutia: Algoritmul Floyd-Warshall
n=|V|//initializam distante si predecesori
pentru fiecare i,j ∊ V executaD[i][i] = 0; D[i][j] = w[i][j];T[i][i] = 0; T[i][j] = i - daca ij ∊ E;T[i][j] = NULL - altfel ∊ E;
![Page 81: Drumuri minime DAG-uri - algoritmgrafalgoritmgraf.wikispaces.com/file/view/Curs7.ppt+(2).pdf · Drumuri minime de sursa unica in DAG-uri Dat la intrare un DAG - cu ponderi pe arce](https://reader034.vdocuments.mx/reader034/viewer/2022042506/5a78a41e7f8b9aa2448eeb31/html5/thumbnails/81.jpg)
Solutia: Algoritmul Floyd-Warshall
n=|V|//initializam distante si predecesori
pentru fiecare i,j ∊ V executaD[i][i] = 0; D[i][j] = w[i][j];T[i][i] = 0; T[i][j] = i - daca ij ∊ E;T[i][j] = NULL - altfel ∊ E;
![Page 82: Drumuri minime DAG-uri - algoritmgrafalgoritmgraf.wikispaces.com/file/view/Curs7.ppt+(2).pdf · Drumuri minime de sursa unica in DAG-uri Dat la intrare un DAG - cu ponderi pe arce](https://reader034.vdocuments.mx/reader034/viewer/2022042506/5a78a41e7f8b9aa2448eeb31/html5/thumbnails/82.jpg)
Solutia: Algoritmul Floyd-Warshall
n=|V|//initializam distante si predecesori
pentru fiecare i,j ∊ V executaD[i][i] = 0; D[i][j] = w[i][j];T[i][i] = 0; T[i][j] = i - daca ij ∊ E;T[i][j] = NULL - altfel;
![Page 83: Drumuri minime DAG-uri - algoritmgrafalgoritmgraf.wikispaces.com/file/view/Curs7.ppt+(2).pdf · Drumuri minime de sursa unica in DAG-uri Dat la intrare un DAG - cu ponderi pe arce](https://reader034.vdocuments.mx/reader034/viewer/2022042506/5a78a41e7f8b9aa2448eeb31/html5/thumbnails/83.jpg)
Solutia: Algoritmul Floyd-Warshall
//actualizare distante si predecesori
pentru k de la 1 la npentru i de la 1 la n
pentru i de la 1 la nD’[i][j]=min(D[i][j],D[i][k]+D[k][j])daca D’[i][j]=D[i][j]
T’[i][j]=T[i][j]altfel
T’[i][j]=T[k][j]T=T’; D=D’
![Page 84: Drumuri minime DAG-uri - algoritmgrafalgoritmgraf.wikispaces.com/file/view/Curs7.ppt+(2).pdf · Drumuri minime de sursa unica in DAG-uri Dat la intrare un DAG - cu ponderi pe arce](https://reader034.vdocuments.mx/reader034/viewer/2022042506/5a78a41e7f8b9aa2448eeb31/html5/thumbnails/84.jpg)
Solutia: Algoritmul Floyd-Warshall
//actualizare distante si predecesori
pentru k de la 1 la npentru i de la 1 la n
pentru i de la 1 la nD’[i][j]=min(D[i][j],D[i][k]+D[k][j])daca D’[i][j]=D[i][j]
T’[i][j]=T[i][j]altfel
T’[i][j]=T[k][j]T=T’; D=D’
![Page 85: Drumuri minime DAG-uri - algoritmgrafalgoritmgraf.wikispaces.com/file/view/Curs7.ppt+(2).pdf · Drumuri minime de sursa unica in DAG-uri Dat la intrare un DAG - cu ponderi pe arce](https://reader034.vdocuments.mx/reader034/viewer/2022042506/5a78a41e7f8b9aa2448eeb31/html5/thumbnails/85.jpg)
Solutia: Algoritmul Floyd-Warshall
//actualizare distante si predecesori
pentru k de la 1 la npentru i de la 1 la n
pentru j de la 1 la nD’[i][j]=min(D[i][j],D[i][k]+D[k][j])daca D’[i][j]=D[i][j]
T’[i][j]=T[i][j]altfel
T’[i][j]=T[k][j]T=T’; D=D’
![Page 86: Drumuri minime DAG-uri - algoritmgrafalgoritmgraf.wikispaces.com/file/view/Curs7.ppt+(2).pdf · Drumuri minime de sursa unica in DAG-uri Dat la intrare un DAG - cu ponderi pe arce](https://reader034.vdocuments.mx/reader034/viewer/2022042506/5a78a41e7f8b9aa2448eeb31/html5/thumbnails/86.jpg)
Solutia: Algoritmul Floyd-Warshall
//actualizare distante si predecesori
pentru k de la 1 la npentru i de la 1 la n
pentru j de la 1 la nD’[i][j]= ?min(D[i][j],D[i][k]+D[k][j])daca D’[i][j]=D[i][j]
T’[i][j]=T[i][j]altfel
T’[i][j]=T[k][j]T=T’; D=D’
![Page 87: Drumuri minime DAG-uri - algoritmgrafalgoritmgraf.wikispaces.com/file/view/Curs7.ppt+(2).pdf · Drumuri minime de sursa unica in DAG-uri Dat la intrare un DAG - cu ponderi pe arce](https://reader034.vdocuments.mx/reader034/viewer/2022042506/5a78a41e7f8b9aa2448eeb31/html5/thumbnails/87.jpg)
Solutia: Algoritmul Floyd-Warshall
//actualizare distante si predecesori
pentru k de la 1 la npentru i de la 1 la n
pentru j de la 1 la nD’[i][j]=min(D[i][j],D[i][k]+D[k][j])daca D’[i][j]=D[i][j]
T’[i][j]=T[i][j]altfel
T’[i][j]=T[k][j]T=T’; D=D’
![Page 88: Drumuri minime DAG-uri - algoritmgrafalgoritmgraf.wikispaces.com/file/view/Curs7.ppt+(2).pdf · Drumuri minime de sursa unica in DAG-uri Dat la intrare un DAG - cu ponderi pe arce](https://reader034.vdocuments.mx/reader034/viewer/2022042506/5a78a41e7f8b9aa2448eeb31/html5/thumbnails/88.jpg)
Solutia: Algoritmul Floyd-Warshall
//actualizare distante si predecesori
pentru k de la 1 la npentru i de la 1 la n
pentru j de la 1 la nD’[i][j]=min(D[i][j],D[i][k]+D[k][j])daca D’[i][j]=D[i][j]
T’[i][j]= ?T[i][j]altfel
T’[i][j]=T[k][j]T=T’; D=D’
![Page 89: Drumuri minime DAG-uri - algoritmgrafalgoritmgraf.wikispaces.com/file/view/Curs7.ppt+(2).pdf · Drumuri minime de sursa unica in DAG-uri Dat la intrare un DAG - cu ponderi pe arce](https://reader034.vdocuments.mx/reader034/viewer/2022042506/5a78a41e7f8b9aa2448eeb31/html5/thumbnails/89.jpg)
Solutia: Algoritmul Floyd-Warshall
//actualizare distante si predecesori
pentru k de la 1 la npentru i de la 1 la n
pentru j de la 1 la nD’[i][j]=min(D[i][j],D[i][k]+D[k][j])daca D’[i][j]=D[i][j]
T’[i][j]=T[i][j]altfel
T’[i][j]= ?T[k][j]T=T’; D=D’
![Page 90: Drumuri minime DAG-uri - algoritmgrafalgoritmgraf.wikispaces.com/file/view/Curs7.ppt+(2).pdf · Drumuri minime de sursa unica in DAG-uri Dat la intrare un DAG - cu ponderi pe arce](https://reader034.vdocuments.mx/reader034/viewer/2022042506/5a78a41e7f8b9aa2448eeb31/html5/thumbnails/90.jpg)
Solutia: Algoritmul Floyd-Warshall
//actualizare distante si predecesori
pentru k de la 1 la npentru i de la 1 la n
pentru j de la 1 la nD’[i][j]=min(D[i][j],D[i][k]+D[k][j])daca D’[i][j]=D[i][j]
T’[i][j]=T[i][j]altfel
T’[i][j]=T[k][j]T=T’; D=D’
![Page 91: Drumuri minime DAG-uri - algoritmgrafalgoritmgraf.wikispaces.com/file/view/Curs7.ppt+(2).pdf · Drumuri minime de sursa unica in DAG-uri Dat la intrare un DAG - cu ponderi pe arce](https://reader034.vdocuments.mx/reader034/viewer/2022042506/5a78a41e7f8b9aa2448eeb31/html5/thumbnails/91.jpg)
Solutia: Algoritmul Floyd-Warshall
//actualizare distante si predecesori
pentru k de la 1 la npentru i de la 1 la n
pentru j de la 1 la nD’[i][j]=min(D[i][j],D[i][k]+D[k][j])daca D’[i][j]=D[i][j]
T’[i][j]=T[i][j]altfel
T’[i][j]=T[k][j]T=T’; D=D’
![Page 92: Drumuri minime DAG-uri - algoritmgrafalgoritmgraf.wikispaces.com/file/view/Curs7.ppt+(2).pdf · Drumuri minime de sursa unica in DAG-uri Dat la intrare un DAG - cu ponderi pe arce](https://reader034.vdocuments.mx/reader034/viewer/2022042506/5a78a41e7f8b9aa2448eeb31/html5/thumbnails/92.jpg)
Solutia: Algoritmul Floyd-Warshall
//actualizare distante si predecesori
pentru k de la 1 la npentru i de la 1 la n
pentru j de la 1 la nD’[i][j]=min(D[i][j],D[i][k]+D[k][j])daca D’[i][j]=D[i][j]
T’[i][j]=T[i][j]altfel
T’[i][j]=T[k][j]T=T’; D=D’
Complexitate?
![Page 93: Drumuri minime DAG-uri - algoritmgrafalgoritmgraf.wikispaces.com/file/view/Curs7.ppt+(2).pdf · Drumuri minime de sursa unica in DAG-uri Dat la intrare un DAG - cu ponderi pe arce](https://reader034.vdocuments.mx/reader034/viewer/2022042506/5a78a41e7f8b9aa2448eeb31/html5/thumbnails/93.jpg)
Corectitudine
- Algoritmul incerca sa insereze in drumul minim contruit toate nodurile k; un nod k este folosit in constructia unui drum de cost minim doar daca ajuta la reducerea costului.
- Ordinea in care sunt construite drumurile?- Ce se intampla in cazul circuitelor de cost negativ?
![Page 94: Drumuri minime DAG-uri - algoritmgrafalgoritmgraf.wikispaces.com/file/view/Curs7.ppt+(2).pdf · Drumuri minime de sursa unica in DAG-uri Dat la intrare un DAG - cu ponderi pe arce](https://reader034.vdocuments.mx/reader034/viewer/2022042506/5a78a41e7f8b9aa2448eeb31/html5/thumbnails/94.jpg)
Questions?
![Page 95: Drumuri minime DAG-uri - algoritmgrafalgoritmgraf.wikispaces.com/file/view/Curs7.ppt+(2).pdf · Drumuri minime de sursa unica in DAG-uri Dat la intrare un DAG - cu ponderi pe arce](https://reader034.vdocuments.mx/reader034/viewer/2022042506/5a78a41e7f8b9aa2448eeb31/html5/thumbnails/95.jpg)
The end