Documente Academic
Documente Profesional
Documente Cultură
1
Introducere
3
Introducere
4
Algoritmul Roy-Floyd
Din punct de vedere istoric,
algoritmul a fost publicat în forma
curentă de Robert Floyd în 1962. Trebuie
menționat că în esență este același
algoritm cu cel publicat în 1959 de
Bernard Roy. În literatura de specialitate
se regăsește deci sub diverse nume:
Algoritmul Roy-Floyd, Algoritmul lui Floyd
sau uneori Algoritmul Floyd-Warshall.
5
Algoritmul Roy-Floyd
Din punct de vedere al programării,
algoritmul este unul de programare
dinamică (poate fi descompus în
subprobleme astfel încât fiecare
subproblema este rezolvată o singură
dată iar soluția este stocată pentru a fi
folosită ulterior la rezolvarea problemei
inițiale). Marele avantaj al acestui
algoritm este simplitatea sa!
6
Algoritmul Roy-Floyd
În cele ce urmeză considerăm
cunoscute din cursurile anterioare
noțiunile de
•graf; graf orientat;
•drum intr-un graf;
•matrice de adiacență;
•matricea drumurilor directe, etc.
7
Algoritmul Roy-Floyd
8
Prezentarea algoritmului
Ideea de bază a algoritmului este
următoarea: dacă drumul minim între două
vîrfuri oarecare i și j trece printr-un vârf k,
atunci drumurile de la i la k și de la k la j sunt la
rândul lor minime.
10
Procedura principală a algoritmului
11
Determinarea drumurilor minime
x3 3
x4 0 4
D=
2 4 2 0 5 6
1 3 2 1 0 3 4
x1 x6
5 0 2
4
8 3 0 8
x2 x5
6 0
În slide-ul precedent am scris matricea distanțelor directe asociate grafului dat (fără folosirea de noduri intermediare). Să căutăm acum drumuri
mai scurte între oricare două noduri permițând pe rând utilizarea câte unui alt nod. În paralel vom scrie și matricea ∆ pentru a identifica la final
drumurile minime.
0 4 x1 x1
0 5 6 x2 x2 x2
2 1 0 3 4 x3 x3 x3 x3 x3
D= 0 2 ∆=
x4 x4
3 0 8
x5 x5 x5
0
x6
0 4 x1 x1
0 5 6 x2 x2 x2
2 1 0 3 4 x3 x3 x3 x3 x3
D= 0 2 ∆=
x4 x4
3 0 8
x5 x5 x5
0
x6
0 4 x1 x1
0 5 6 x2 x2 x2
2 1 0 3 4 x3 x3 x3 x3 x3
D1 = 0 2 ∆1 =
x4 x4
3 0 8
x5 x5 x5
0
x6 15
0 4 x1 x1
0 5 6 x2 x2 x2
2 1 0 3 4 x3 x3 x3 x3 x3
D1 = ∆1 =
0 2
x4 x4
3 0 8
x5 x5 x5
0
x6
0 4 9 10 x1 x1 x2 x2
0 5 6 x2 x2 x2
2 1 0 3 4 x3 x3 x3 x3 x3
D2 = 0 2 ∆2 =
x4 x4
3 0 8
x5 x5 x5
0
x6 16
0 4 9 10 x1 x1 x2 x2
0 5 6 x2 x2 x2
2 1 0 3 4 x3 x3 x3 x3 x3
D2 = ∆2 =
0 2
x4 x4
3 0 8
x5 x5 x5
0
x6
0 4 9 10 x1 x1 x2 x2
0 5 6 x2 x2 x2
2 1 0 3 4 x3 x3 x3 x3 x3
D3 = 0 2 ∆3 =
x4 x4
3 0 8
x5 x5 x5
0
x6 17
0 4 9 10 x1 x1 x2 x2
0 5 6 x2 x2 x2
2 1 0 3 4 x3 x3 x3 x3 x3
D3 = ∆3 =
0 2
x4 x4
3 0 8
x5 x5 x5
0
x6
0 4 9 10 11 x1 x1 x2 x2 x4
0 5 6 7 x2 x2 x2 x4
2 1 0 3 4 5 x3 x3 x3 x3 x3 x4
D4 = 0 2 ∆4 =
x4 x4
3 0 5
x5 x5 x4
0
x6 18
0 4 9 10 11 x1 x1 x2 x2 x4
0 5 6 7 x2 x2 x2 x4
2 1 0 3 4 5 x 3 x 3 x 3 x 3 x3 x 4
D4 = ∆4 =
0 2
x4 x4
3 0 5
x5 x5 x5
0
x6
0 4 9 10 11 x1 x1 x2 x2 x4
0 5 6 7 x2 x2 x2 x4
2 1 0 3 4 5 x3 x3 x3 x3 x3 x4
D5 = 0 2 ∆5 =
x4 x4
3 0 5
x5 x5 x5
0
x6 19
0 4 9 10 11 x1 x1 x2 x2 x4
0 5 6 7 x2 x2 x2 x4
2 1 0 3 4 5 x 3 x 3 x 3 x 3 x3 x 4
D5 = ∆5 =
0 2
x4 x4
3 0 5
x5 x5 x5
0
x6
0 4 9 10 11 x1 x1 x2 x2 x4
0 5 6 7 x2 x2 x2 x4
2 1 0 3 4 5 x3 x3 x3 x3 x3 x4
D6 = 0 2 ∆6 =
x4 x4
3 0 5
x5 x5 x5
0
x6 20
Concluzie
21