Documente Academic
Documente Profesional
Documente Cultură
Tema 4 PDF
Tema 4 PDF
Prezentare generală
În loc de casa ta, un joc de fotbal și străzi care fie îți iau banii,
fie îți dau bani, Bellman-Ford se uită la un graf ponderat. Graful este o
colecție de margini care leagă vârfuri diferite în graf, la fel ca
drumurile. Marginile au un cost pentru ei. Fie este un cost pozitiv (cum
ar fi o taxă), fie un cost negativ (cum ar fi un prieten care îți va da
bani).
Deci, în graful de mai sus, o săgeată roșie înseamnă că trebuie să
plătiți bani pentru a utiliza acel drum, iar o săgeată verde înseamnă că
primiți bani plătiți pentru a utiliza acel drum. În graf, vârful sursă este
casa ta, iar vârful țintă este stadionul de fotbal.
Complexitatea algoritmului
Remarcă:
Algoritmul Bellman Ford poate fi folosit si pentru grafuri ce
conțin muchii de cost negativ, dar nu poate fi folosit pentru
grafuri ce conțin cicluri de cost negativ (când căutarea unui
drum minim nu are sens). Cu ajutorul sau putem afla daca un
graf conține cicluri.
Algoritmul folosește același mecanism de relaxare ca si Dijkstra,
dar, spre deosebire de acesta, nu optimizează o soluție folosind
un criteriu de optim local, ci parcurge fiecare muchie de un
număr de ori egal cu numărul de noduri si încearcă sa o relaxeze
de fiecare data, pentru a îmbunătăți distanta până la nodul
destinație al muchiei curente.
Algoritmul Bellman-Ford
function bellmanFord(G, S)
for each vertex V in G
distance[V] <- infinite
previous[V] <- NULL
distance[S] <- 0