CATEGORII DOCUMENTE |
DETERMINAREA DRUMULUI DE VALOARE OPTIMA INTR-UN GRAF
Fie graful G = (X,F) =(X,A).
Pentru determinarea drumului de valoare optima (minima sau maxima) dintre doua varfuri xi si xj ale grafului G, asociem fiecarui arc un numar real pozitiv notat v (xi, xj) numit valoarea arcului.
In functie de problema economica transpusa in termenii teoriei grafurilor, valoarea arcului poate reprezenta: costul de fabricatie al unui produs intr-un anumit loc de munca asociat cu arcul (xi, xj); productivitatea muncii intr-un loc de munca, costul sau durata transportului pe ruta (xi, xj) etc.
Fie drumul d = (a1, a2, ., ap), unde ak reprezinta un arc component al drumului. . Marimea v(d) definita prin egalitateaL v(d) = se numeste valoarea drumului d. (Valoarea drumului este egala cu suma valorilor arcelor care-l compun.).
Algoritmul Bellman - Kalaba de determinare a drumului optim intr-un graf fara circuite
Ipoteza: drumul optim este format din arce aicare leaga nodul initial x1 cu nodul final xn.
Algoritmul de determinare a drumului optim difera in functie de tipul problemei: aflarea drumului de valoare minima sau aflarea drumului de valoare maxima.
Algoritm de determinare a drumului de valoare minima
Fie graful G = (X,F) =(X,A).
Asociem grafului G matricea C = (cij), i,j = unde:
Cij =
Fiecarui varf xi i se asociaza o variabila vi care reprezinta valoarea drumului care uneste varful xi cu xn.
Elementele matricei C se trec intr-un tabel care contine pentru inceput xn linii si xn coloane. ( tabelul se va completa ulterior cu alte linii pe masura parcurgerii algoritmului.
Valoarea minima a drumului care uneste pe x1 cu xn se obtine rezolvand sistemul de ecuatii:
Daca cu i = este solutie a sistemului de mai sus, atunci reprezinta valoarea minima a drumului care uneste pe x1 cu xn.
Pentru rezolvarea sistemului, se procedeaza iterativ.
Pasul care initiaza procesul iterativ este definit de:
v, i =
si v
La iteratia (pasul) k , kvom rezolva sistemul:
Procesul se incheie cand se obtine v, i=. In acest caz, valoarea minima a drumului care uneste x1 cu xn este .
Determinarea arcelor (sau varfurilor) care compun drumul de valoare minima:
Fie xvarful pentru care : v.
Drumul de lungime minima trece prin xsi v reprezinta valoarea minima a drumului care uneste xcu xn. Mai departe, fie:
vRezulta ca drumul minim trece prin x. Repetam procedeul pornind de la v pana ajungem la o valoare v.
Drumul de valoare minima este d = (x, x, x, , x, x)
Pentru determinarea drumului de valoare maxima intre varfurile x1 si xn ale grafului G folosind algoritmul Bellman - kalaba se fac urmatoarele modificari:
in matricea C, consideram cij = -, daca (xi, xj), pentru i;
in toate sistemele de ecuatii, operatorul de minim se inlocuieste cu cel de maxim.
Exemple
Pasul 1
Se alcatuieste un tabel care contine pe prima linie si pe prima coloana nodurile (varfurile) grafului si in interior arcele care se formeaza la intersectia elementelor de pe linia 1 cu cele de pe coloana 1.
Tabelul se completeaza dupa urmatoarele reguli :
Daca exista arc (xi, xj) se trece valoarea arcului (lungimea)
Daca nu exista arc (xi, xj) se completeaza cu - ( numai la problemele de maxim)
Pentru i = j adica arce de forma (xi, xi) se completeaza cu 0.
Vom obtine:
x1 |
x2 |
x3 |
x4 |
x5 |
x6 |
x7 |
|
x1 |
- |
- |
- |
- |
|||
x2 |
- |
- |
- |
||||
x3 |
- |
- |
- |
- |
|||
x4 |
- |
- |
- |
- |
- | ||
x5 |
- |
- |
- |
- | |||
x6 |
- |
- |
- |
- | |||
x7 |
- |
- |
- |
- |
- |
- |
Pasul 2
Fiecarui varf xi i se asociaza o variabila vi care reprezinta valoarea drumului care uneste xi cu xn.
Variabilele vi se calculeaza in mai multi pasi, numarul pasului trecandu-se in partea dreapta sus, in paranteza, si pentru fiecare v se completeaza o linie in completarea tabelului initial.
Prima variabila este v si se obtine din transpunerea ultimei coloane corespunzatoare ultimului varf. In cazul nostru, vom transpune (adica scrie ca linie, coloana lui x7)
x1 |
x2 |
x3 |
x4 |
x5 |
x6 |
x7 |
|
x1 |
- |
- |
- |
- |
|||
x2 |
- |
- |
- |
||||
x3 |
- |
- |
- |
- |
|||
x4 |
- |
- |
- |
- |
- | ||
x5 |
- |
- |
- |
- | |||
x6 |
- |
- |
- |
- | |||
x7 |
- |
- |
- |
- |
- |
- | |
v |
- |
- |
- |
Pasul 3
Se calculeaza valorile v respectiv v care se trec pe urmatoarea linie a tabelului.
Formula de calcul a valorilor v este
Calcularea lui v: se aduna linia v cu linia corespunzatoare lui x1 (prima linie), element cu element, mai putin v cu c11, si se alege valoarea maxima dintre sumele rezultate.
v
v
v
v
v si aceasta valoare se trece in tabel .
Calcularea lui v: se aduna linia v cu linia corespunzatoare lui x2 (a doua linie), element cu element, mai putin v cu c22, si se alege valoarea maxima dintre sumele rezultate
v
v
v
v
v si se trece rezultatul in tabel.
Analog se calculeaza si celelalte valori ale lui v si se obtine:
v 5
v 4
v 5
v 6
Iar v prin conventie.
OBS: Algoritmul se incheie daca se obtin doua linii corespunzatoare valorilor lui vi egale ( la 2 pasi consecutivi)
Deoarece v vom continua algoritmul prin calcularea lui v
Pasul 4
Se calculeaza v dupa formula:
v
Vom obtine:
v
v
v
v
v
v
v 0 prin conventie.
Cu aceste valori obtinute se completeaza tabelul cu inca o linie, respectiv linia lui v
Deoarece v algoritmul se continua prin calcularea valorilor lui v
Pasul 5
Se calculeaza v
Si se obtine:
v
v
v 11
v 4
v 5
v 6
v 0
Deoarece v algoritmul se continua prin calcularea lui v
Pasul 6
Calculam v
Obtinem:
v 15
v 13
v 11
v 4
v 5
v 6
v 0
Deoarece v algoritmul se continua prin calcularea lui v
Pasul 7
Calculam v
Si obtinem:
v 15
v= 13
v 11
v 4
v 5
v 6
v 0
Algoritmul se incheie deoarece v.
Forma finala a tabelului este
x1 |
x2 |
x3 |
x4 |
x5 |
x6 |
x7 |
|
x1 |
- |
- |
- |
- |
|||
x2 |
- |
- |
- |
||||
x3 |
- |
- |
- |
- |
|||
x4 |
- |
- |
- |
- |
- | ||
x5 |
- |
- |
- |
- | |||
x6 |
- |
- |
- |
|
- | ||
x7 |
- |
- |
- |
- |
- |
- | |
v |
- |
- |
- | ||||
v |
- | ||||||
v | |||||||
v | |||||||
v | |||||||
v |
Interpretarea rezultatelor:
Din tabelul intocmit obtinem 2 informatii:
1. Care este valoarea drumului maxim de la x1 la x7
Care sunt varfurile care compun drumul maxim.
Valoarea drumului maxim este 15 ( valoarea lui v de la ultimul pas)
Drumul de valoare maxima este:
dmax = (x1, x2, x3, x6, x4, x7)
Sa se determine drumul de valoare minima de la xl la x5 al grafului:
G = (X,A), X = A = avand urmatoarele lungimi de arce v(x1, x2) = 3, v(x1, x3) = 1, v(x1, x5) = 9, v(x2, x4) = 1, v(x2, x5) = 4, v(x3, x2) = 2, v(x3, x4) = 4, v(x3, x5) = 6, v(x4, x5) = 2.
R:
x1 |
x2 |
x3 |
x4 |
x5 |
|
x1 |
| ||||
x2 |
|
| |||
x3 |
| ||||
x4 |
|
|
| ||
x5 |
|
|
|
| |
V | |||||
v | |||||
v | |||||
v |
Lungimea drumului minim este 6 si exista doua drumuri minime:
d1min = (x1, x2, x4, x5)
d2min = (x1, x3, x2, x4, x5)
PROBLEME :
Sa se arata ca G nu are circuite si sa se afle drumul de valoare maxima de la x1 la x5.
F(x4) = , F(x5) =
a) folosind matricea drumurilor sa se arate ca G nu are circuite si are drum hamiltonian ;
b) stiind ca v(x1, x3) = 3, v(x1, x4) = 2, v(x2, x4) = 3, v(x3, x2) = 4, v(x3, x4) = 1, v(x3, x5) = 4, v(x4, x5) = 2 sa se arate ca dH este drumul de valoare maxima de la x1 la x5.
b) Sa se arate ca dH este drumul de valoare maxima de la x1 la x5.
Politica de confidentialitate | Termeni si conditii de utilizare |
Vizualizari: 5022
Importanta:
Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved