1 / 9

Algoritmul lui Bellman-Ford

Algoritmul lui Bellman-Ford. Cuprins :. Mecanismul algoritmului Exemplu Implementare C++. Mecanismul algoritmului. Algoritmul este numit după dezvoltatorii săi Richard Bellman şi Lester Ford .

jeff
Download Presentation

Algoritmul lui Bellman-Ford

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Algoritmullui Bellman-Ford

  2. Cuprins: • Mecanismul algoritmului • Exemplu • Implementare C++

  3. Mecanismul algoritmului Algoritmul este numit după dezvoltatorii săi Richard Bellman şi Lester Ford. • Algoritmul lui Bellman-Ford este bazat pe algoritmul BF,adăugând într-o coadă adiacenții unui nod nemarcați sau accesibili pe noduri de lungime mai mică decât suma dintre costul muchiei dintre adiacentul luat și valoarea deja existentă în nodul curent. • Algoritmului i se poate asocia un vector “p” pentru păstrarea precedenței.

  4. Exemplu: 3 2 3 1 1 1 1 4 4 5 1

  5. Algoritmullui Bellman-Ford aplicatpentrugraful anterior: Iniţial: • viz: 0 ∞ ∞ ∞ ∞ ∞ • c: 1

  6. Se alegemuchia[1,2] viz: 0 1 ∞ ∞ ∞ c:1,2 • Se alege muchia [1,4] viz: 0 1 ∞ 4 ∞ c:1,2,4 • Se alege muchia[2,3] viz: 0 1 4 4 ∞ c:1,2,4,3 • Se alege muchia[2,5] viz: 0 1 4 4 2 c:1,2,4,3,5 • Se alege muchia[4,5] viz: 0 1 4 4 2 c:1,2,4,3,5,

  7. Se alege muchia[3,2] viz: 0 1 4 4 2 c:1,2,4,3,5 • Se alege muchia[3,5] viz: 0 1 4 4 2 c:1,2,4,3,5 • Se alege muchia[5,2] viz: 0 1 4 4 2 c:1,2,4,3,5 • Se alege muchia[5,3] viz: 0 1 3 4 2 c:1,2,4,3,5,3 • Se alege muchia[5,4] viz: 0 1 3 3 2 c:1,2,4,3,5,3,4

  8. Se alege muchia[3,2] viz: 0 1 3 3 2 c:1,2,4,3,5,3,4 • Se alege muchia[3,5] viz: 0 1 3 3 2 c:1,2,4,3,5,3,4 • Se alege muchia[4,5] viz: 0 1 3 3 2 c:1,2,4,3,5,3,4 În final: viz: 0 1 3 3 2 c:1,2,4,3,5,3,4

  9. Implementare C++ void Bellman_Ford() { intprim,ultim; for (i=1;i<=n;i++) { viz[i] = oo; } viz[x] = 0; ultim=1; prim=1; coada[1]=x; while(prim<=ultim) { x=coada[prim++]; for(i=1;i<=n;i++) { ++nr; if(viz[i]>viz[x]+a[x][i] && a[x][i]!=oo) { coada[++ultim]=i; viz[i]=viz[x]+a[x][i]; } } } cout<<"vector BF : "; for(i=1;i<=n;i++) cout<<coada[i]<<" "; }

More Related