| 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 ai
care
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 , k![]()
vom
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 x
varful
pentru care : v
.
Drumul de lungime minima trece prin x
si
v
reprezinta valoarea minima a drumului care uneste x
cu
xn. Mai departe, fie:
v
Rezulta 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: 5519
Importanta: ![]()
Termeni si conditii de utilizare | Contact
© SCRIGROUP 2025 . All rights reserved