Sunteți pe pagina 1din 4

LABORATOR 4

ALGORITMUL LUI BELLMAN-FORD

Exemplu:

Algoritmul Bellman Ford funcționează supraestimând lungimea căii de


la vârful de pornire la toate celelalte vârfuri. Apoi relaxează iterativ
acele estimări găsind noi căi care sunt mai scurte decât căile
supraevaluate anterior. Procedând în mod repetat pentru toate
vârfurile, putem garanta că rezultatul este optimizat.

Fie că avem următorul graf ponerat:

Această problemă a fost explicată la lecția de teorie, prin urmare acum


vom prezenta o metodă simplă de implementare a algoritmului lui
Bellman-Ford:

#include <iostream>
using namespace std;
void BellmanFord(int graph[][3], int V, int E, int src){
// Inițializăm distanța tuturor vârfurilor cu valoarea infinit.
int dis[V];
for (int i = 0; i < V; i++)
dis[i] = INT_MAX;
// Inițializam distanța sursei cu valoarea 0
dis[src] = 0;
// Relaxam toate marginile de (|V|-1) ori.
// O cale simplă cea mai scurtă de la src la orice alt vârf
poate avea cel mult |V|-1 margini.
for (int i = 0; i < V - 1; i++) {
for (int j = 0; j < E; j++) {
if (dis[graph[j][0]] + graph[j][2] < dis[graph[j][1]])

1 din 4 Profesor A.D.


dis[graph[j][1]] = dis[graph[j][0]] + graph[j][2];
}
}
// Verificam dacă există cicluri de greutate negativă.
// Pasul de mai sus garantează cea mai scurta distanțează dacă
graful nu conține ciclu de greutate negativ.
//Dacă primim o cale mai scurtă, atunci există un ciclu.
for (int i = 0; i < E; i++) {
int x = graph[i][0]; int y = graph[i][1];
int weight = graph[i][2];
if (dis[x] != INT_MAX &&
dis[x] + weight < dis[y])
cout << "Graphul contine un ciclu de greutate
negativ!"<<endl;
}
cout << "Distanta de la virful sursa: " << endl;
for (int i = 0; i < V; i++)
cout << i << "\t\t" << dis[i] << endl;
}
// Programul principal
int main(){
int V = 5; // Numărul de vârfuri în graph
int E = 9; // Numărul muchiilor în graph
// Fiecare muchie are trei valori (u, v, w), unde marginea este
de la vârful u la v. Și greutatea marginii este w.
int graph[][3] = { { 0, 1, 4 },
{ 0, 2, 2 },
{ 1, 2, 3 },
{ 1, 3, 2 },
{ 1, 4, 3 },
{ 2, 1, 1 },
{ 2, 3, 4 },
{ 2, 4, 5 },
{ 4, 3, -5 } };
BellmanFord(graph, V, E, 0); return 0;
}

Soluția obținută în urma execuției codului C++ este:

Distanta de la virful sursa:


0 0
1 3
2 2
3 1
4 6

2 din 4 Profesor A.D.


SARCINA PENTRU LECȚIA DE LABORATOR

Subgrupa 1
Determinați lungimea minimă de la nodul sursă conform următoarelor date
în dependență de numărul de vârfuri și numărul de muchii ale unui graf
ponderat:

V=5; M=7; V=5; M=7; V=5; M=8; V=5; M=8;


Muchiile: Muchiile: Muchiile: Muchiile:

0 3 3 0 3 1 0 1 -1 0 1 2
0 4 12 0 4 8 0 2 4 0 3 1
1 2 2 1 2 2 1 2 3 1 2 3
2 3 -2 2 3 -4 1 3 2 1 3 4
3 2 3 3 2 3 1 4 2 2 4 1
3 1 5 3 1 4 3 1 1 3 1 -2
4 2 7 4 2 7 3 1 5 3 4 1
4 3 -3 4 1 -3

Subgrupa 2
Determinați lungimea minimă de la nodul sursă conform următoarelor date
în dependență de numărul de vârfuri și numărul de muchii ale unui graf
ponderat:

V=5; M=7; V=5; M=7; V=5; M=7; V=5; M=8;


Muchiile: Muchiile: Muchiile: Muchiile:

0 3 5 0 3 1 0 1 -2 0 1 -5
0 4 6 0 4 -8 0 3 1 0 2 4
1 2 3 1 2 2 1 2 3 1 2 3
2 3 -4 2 3 -4 1 3 4 1 3 6
3 2 6 3 2 3 2 4 2 1 4 3
3 1 -5 3 1 7 3 1 2 3 1 2
4 2 3 4 2 4 3 4 -3 3 1 5
4 1 5 4 3 -4

3 din 4 Profesor A.D.


SARCINA PENTRU TEMA PENTRU ACASĂ

Analizați exemplele 1-2 de la următoarea pagină web și verificați modul


de implementare al algoritmului Bellman-Ford:

https://www-m9.ma.tum.de/graph-algorithms/spp-bellman-ford/index_en.html

 Scrieți un program în limbajul C++ pentru graful ponderat din


exemplul 1;
 Scrieți un program în limbajul C++ pentru graful ponderat din
exemplul 2;

***SARCINI SUPLIMENTARE***

Utilizați resursele disponibile la următoarea pagină web:

https://graphonline.ru/en/

 Creați un graf corespunzător pentru a aplica algoritmul Floyd-


Warshall pentru a determina drumul minim.
 Efectuați o analiză comparativă a acestor doi algoritmi de
determinare a drumului minim.

4 din 4 Profesor A.D.

S-ar putea să vă placă și

  • eduturile - копия
    eduturile - копия
    Document19 pagini
    eduturile - копия
    Данилов Алина
    Încă nu există evaluări
  • Agentii de Publicitate
    Agentii de Publicitate
    Document12 pagini
    Agentii de Publicitate
    Данилов Алина
    Încă nu există evaluări
  • TI Cap
    TI Cap
    Document471 pagini
    TI Cap
    Данилов Алина
    Încă nu există evaluări
  • Power Point
    Power Point
    Document13 pagini
    Power Point
    Данилов Алина
    Încă nu există evaluări
  • 10 - Tipuri de Clase
    10 - Tipuri de Clase
    Document6 pagini
    10 - Tipuri de Clase
    Данилов Алина
    Încă nu există evaluări
  • Articol
    Articol
    Document5 pagini
    Articol
    Данилов Алина
    Încă nu există evaluări
  • Laborator 2
    Laborator 2
    Document3 pagini
    Laborator 2
    Данилов Алина
    Încă nu există evaluări
  • Etica Lecția 1 2 3 Teme Pe Acasă
    Etica Lecția 1 2 3 Teme Pe Acasă
    Document4 pagini
    Etica Lecția 1 2 3 Teme Pe Acasă
    Данилов Алина
    Încă nu există evaluări
  • Laborator 3
    Laborator 3
    Document3 pagini
    Laborator 3
    Данилов Алина
    Încă nu există evaluări
  • Laborator 1
    Laborator 1
    Document9 pagini
    Laborator 1
    Данилов Алина
    Încă nu există evaluări
  • Bazele Compoziției
    Bazele Compoziției
    Document8 pagini
    Bazele Compoziției
    Данилов Алина
    Încă nu există evaluări
  • 1 Lectie Generalitati BC 2021
    1 Lectie Generalitati BC 2021
    Document44 pagini
    1 Lectie Generalitati BC 2021
    Данилов Алина
    Încă nu există evaluări
  • Etica În Politică
    Etica În Politică
    Document3 pagini
    Etica În Politică
    Данилов Алина
    Încă nu există evaluări
  • 5 Mostenirea
    5 Mostenirea
    Document3 pagini
    5 Mostenirea
    Данилов Алина
    Încă nu există evaluări
  • 9 Clase Abstracte
    9 Clase Abstracte
    Document3 pagini
    9 Clase Abstracte
    Данилов Алина
    Încă nu există evaluări
  • Constructori
    Constructori
    Document4 pagini
    Constructori
    Ciobanu Stanislav
    Încă nu există evaluări
  • 6 IerarhiiClase
    6 IerarhiiClase
    Document3 pagini
    6 IerarhiiClase
    Данилов Алина
    Încă nu există evaluări
  • De Exemplu:: În Ce Constă Supradefinirea Metodelor?
    De Exemplu:: În Ce Constă Supradefinirea Metodelor?
    Document4 pagini
    De Exemplu:: În Ce Constă Supradefinirea Metodelor?
    Данилов Алина
    Încă nu există evaluări
  • 9 - Clase Abstracte
    9 - Clase Abstracte
    Document3 pagini
    9 - Clase Abstracte
    Данилов Алина
    Încă nu există evaluări
  • 4 Serializare
    4 Serializare
    Document8 pagini
    4 Serializare
    Данилов Алина
    Încă nu există evaluări
  • Dilema Etică
    Dilema Etică
    Document1 pagină
    Dilema Etică
    Данилов Алина
    Încă nu există evaluări
  • 7 Interfete
    7 Interfete
    Document6 pagini
    7 Interfete
    Данилов Алина
    Încă nu există evaluări
  • S. E. Antropogene
    S. E. Antropogene
    Document3 pagini
    S. E. Antropogene
    Данилов Алина
    Încă nu există evaluări
  • 4 Serializare
    4 Serializare
    Document8 pagini
    4 Serializare
    Данилов Алина
    Încă nu există evaluări
  • Arme de Nimicire În Masă
    Arme de Nimicire În Masă
    Document18 pagini
    Arme de Nimicire În Masă
    Данилов Алина
    Încă nu există evaluări
  • 1 10 20 StiluriProgramare
    1 10 20 StiluriProgramare
    Document7 pagini
    1 10 20 StiluriProgramare
    Данилов Алина
    Încă nu există evaluări
  • Hjufcjn
    Hjufcjn
    Document9 pagini
    Hjufcjn
    Iulia
    Încă nu există evaluări
  • Lucru Individual
    Lucru Individual
    Document2 pagini
    Lucru Individual
    Данилов Алина
    Încă nu există evaluări
  • Laborator NR 3 SGBD
    Laborator NR 3 SGBD
    Document3 pagini
    Laborator NR 3 SGBD
    Данилов Алина
    Încă nu există evaluări