Documente Academic
Documente Profesional
Documente Cultură
FLOYD
l. Dr. Ing. erban Radu
Departamentul de Calculatoare
Facultatea de Automatic i Calculatoare
Observaii
Matricea de adiacen indic costurile
tuturor cilor cu o singur muchie
Se dorete extinderea acestei matrici
pentru a indica costurile tuturor cilor,
indiferent de lungimea lor
De exemplu, se poate ajunge de la B la C
cu un cost de 30 (10 de la B la D i 20 de
la D la C)
Observaii
Similar algoritmului lui Warshall, se modific
matricea de adiacen
Se examineaz fiecare celul de pe fiecare
rnd
Dac exist o pondere pozitiv, de exemplu
30 la intersecia liniei C cu coloana A, atunci
se analizeaz coloana C, deoarece C
reprezint linia unde se afl 30
Observaii
Dac se gsete o celul n coloana C, de
exemplu 40 la linia D, atunci exist o cale
de la C la A cu o pondere de 30 i o cale
de la D la C cu o pondere de 40
Se poate deduce c exist o cale cu dou
muchii de la D la A, cu o pondere de 70
Observaii
Linia A este vid
Pe linia B este 70 n coloana A i 10 n
coloana D, dar coloana B este vid, deci
muchiile care ncep din B nu pot fi
combinate cu nicio muchie care se termin
n B
Observaii
n linia C se afl 30 pe coloana A
n coloana C se afl 20 pe linia D
Muchia de la C la A are o pondere de 30
Muchia de la D la C are o pondere de 20
Se obine calea de la D la A cu ponderea
de 50
Observaii
Linia D arat o situaie interesant se
poate micora un cost existent deja
Pe linia D exist 50 n coloana A
Pe linia B exist 10 n coloana D
Exist o cale de la B la A cu costul 60
Cu toate acestea, exist deja costul 70 pe
linia B, n coloana A
Observaii
Deoarece 60 e mai mic dect 70, se
nlocuiete 70 cu 60
n cazul cilor multiple de la un vrf la altul,
tabelul indic calea de cost minim
Observaii
Implementarea algoritmului lui Floyd este
similar algoritmului lui Warshall
n locul inserrii valorii 1 n tabel, cum se
procedeaz n algoritmul lui Warshall,
cnd se gsete o cale cu dou muchii, se
adaug costul cii cu dou muchii i se
insereaz suma costurilor celor dou
muchii n tabel
Observaii
Algoritmul lui Floyd se bazeaz pe
utilizarea unei matrice A a distanelor
minime, ale crei valori sunt calculate n
mai multe etape
Iniial:
A[i,j] = cost[i,j], pentru orice ij
A[i,j] = 0, pentru i=j
A[i,j] = , dac nu exist arcul (i,j)
Observaii
Calculul distanelor minime se face n n
iteraii
La iteraia k, A[i,j] va avea ca valoare cea
mai mic distan ntre i i j, pe ci care
nu conin vrfuri numerotate peste k
(exceptnd capetele i i j)
Se utilizeaz formula:
Ak[i,j] = min ( Ak-1[i,j], Ak-1[i,k] + Ak-1[k,j] )
Observaii
Deoarece
Ak[i,k] = Ak-1[i,k] i
Ak[k,j] = Ak-1[k,j]
nicio intrare cu unul din indici egal cu k nu
se modific la iteraia k
Se poate realiza calculul cu o singur
copie a matricei A
AlgoritmFloyd()
{
Pseudocod
algoritmul
lui
pentru toate liniile i execut
pentru toate coloanele j execut
A[i,j] cost[i,j]
pentru toate liniile i execut
A[i,i] 0
pentru k de la 1 la n execut
pentru toate liniile i execut
pentru toate coloanele j execut
dac A[i,k] + A[k,j] < A[i,j] atunci
A[i,j] A[i,k] + A[k,j]
}
Floyd
Observaii
Pentru a pstra cile minime, se utilizeaz
un tablou adiional P, unde P[i,j]
reprezint acel vrf k, care a condus la
distana minim A[i,j]
Dac P[i,j] = 0, atunci arcul (i,j) este calea
minim ntre i i j
Observaii
Pentru a afia vrfurile intermediare aflate
pe calea cea mai scurt ntre i i j, se
poate utiliza algoritmul:
Cale(i,j) {
k P[i,j]
dac (k != 0) atunci {
Cale(i,k)
Scrie nodul k
Cale(k,j) }
}
Concluzii
ntr-un graf ponderat, fiecare muchie are
asociat un numr, numit pondere
Ponderile pot reprezenta distane, costuri,
timpi sau alte mrimi
Arborele minim de acoperire, ntr-un graf
ponderat, minimizeaz ponderile muchiilor
necesare pentru a conecta toate vrfurile
Concluzii
Pentru determinarea arborelui minim de
acoperire al unui graf, putem utiliza o
coad cu prioriti
Problema drumului minim ntr-un graf
neponderat presupune determinarea
numrului minim de muchii dintre dou
vrfuri
Concluzii
Rezolvarea problemei drumului minim, n
cazul grafurilor ponderate, se poate face
utiliznd algoritmul lui Dijkstra
Rezolvarea problemei drumului de lungime
minim din orice vrf nseamn gsirea
costurilor totale ale muchiilor ntre toate
perechile de vrfuri ale unui graf; aceast
problem se rezolv folosind algoritmul lui
Floyd