Scrigroup - Documente si articole

     

HomeDocumenteUploadResurseAlte limbi doc
AccessAdobe photoshopAlgoritmiAutocadBaze de dateC
C sharpCalculatoareCorel drawDot netExcelFox pro
FrontpageHardwareHtmlInternetJavaLinux
MatlabMs dosPascalPhpPower pointRetele calculatoare
SqlTutorialsWebdesignWindowsWordXml

DETERMINAREA DRUMULUI DE VALOARE OPTIMA INTR-UN GRAF

calculatoare



+ Font mai mare | - Font mai mic



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

  1. Sa se determine drumul de valoare maxima al grafului:

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 :

  1. Sa se afle drumul de valoare maxima de la x1 la x5 in graful G = (X,A), X = , A = daca v(x1, x2) = 5, v(x1, x3) = 2, v(x1, x4) = 2, v(x2, x5) = 1, v(x3, x2) = 4, v(x4, x2) = 3, v(x4, x3) = 3, v(x4, x5) = 2.
  1. Sa se afle drumul de valoare minima al grafului G = (X,A) , X = , A = daca valorile arcelor sunt respectiv 8; 4; 6; 9; 1; 6; 1; 8; 2; 5; 7; 3.
  1. Se considera graful valuat G = (X,A), X = , F(x1) = , F(x2) = , F(x3) = , F(x4) = , F(x5) = , cu v(x1, x2) = 5, v(x1, x3) = 3, v(x1, x4) = 4, v(x2, x3) = 3, v(x2, x4) = 1, v(x2, x5) = 5, v(x3, x4) = 3, v(x3, x5) = 4, v(x4, x5) = 4.

Sa se arata ca G nu are circuite si sa se afle drumul de valoare maxima de la x1 la x5.

  1. Fie graful G= (X,A), X = , F(x1) = , F(x2) = , F(x3) = ,

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.

  1. a) Folosind matricea drumurilor sa se arate ca graful valuat G = (X,A), X = , A = avand valorile arcelor egale respectiv cu 3 ; 1 ; 2 ; 11 ; 7 ; 10 ; 9 ; 5 ; 4 ; 8 nu are circuite si are drum hamiltonian.

b) Sa se arate ca dH este drumul de valoare maxima de la x1 la x5.



Politica de confidentialitate | Termeni si conditii de utilizare



DISTRIBUIE DOCUMENTUL

Comentarii


Vizualizari: 5053
Importanta: rank

Comenteaza documentul:

Te rugam sa te autentifici sau sa iti faci cont pentru a putea comenta

Creaza cont nou

Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved