atp - curs 9-10_complet

41
Drumuri in grafuri Conexitate Drumuri de cost minim

Upload: anca-alexandra

Post on 05-Jul-2018

224 views

Category:

Documents


0 download

TRANSCRIPT

8/15/2019 ATP - Curs 9-10_complet

http://slidepdf.com/reader/full/atp-curs-9-10complet 1/41

Drumuri in grafuri

ConexitateDrumuri de cost minim

8/15/2019 ATP - Curs 9-10_complet

http://slidepdf.com/reader/full/atp-curs-9-10complet 2/41

Drumuri in graf

• drum (sau lant pentru graf neorientat)

• drum trivial

• drum deschis• drum inchis

• drum elementar

• subdrum

8/15/2019 ATP - Curs 9-10_complet

http://slidepdf.com/reader/full/atp-curs-9-10complet 3/41

Drumuri in graf

• Fie G=(V ,E ) un graf, u,v ÎV .• Secvenţa de vîrfuri G : u0, u1, ..., un este un u-v drum dacă u0=u, un=v,

uiui+1ÎE , 0 ≤ i ≤ n.

Drum simplu – fiecare muchie apare o singura data

Lungimea drumului, notată l (G ) este egală cu n.

Convenţional se numeşte drum trivial un drum G cu l (G )=0.

Pentru drumul din figura, l (G ) = ?

1

v2

v3

v4 v5

v6 v7

v8

v9

v10

Fig.1 V1-V10 drum

l (G ) = 8

8/15/2019 ATP - Curs 9-10_complet

http://slidepdf.com/reader/full/atp-curs-9-10complet 4/41

Drumuri in graf

• Fie G : u0, u1, ..., un un drum în graful G=(V ,E ). G este un

drum închis dacă u0=un; în caz contrar G se numeşte

drum deschis.

v1

v2

v3

v4 v5

v6 v7

v8

v9

v10

Fig.2 Drum inchis

8/15/2019 ATP - Curs 9-10_complet

http://slidepdf.com/reader/full/atp-curs-9-10complet 5/41

Drumuri in graf

• Drumul G este elementar dacă oricare două vîrfuri din G sînt distincte, cu excepţia, eventual, a extremităţilor.

v1

v2

v3

v4 v5

v6 v7

v8

v9

v10

Fig.3 Exemplu de drum elementar(contine doar varfuri distincte)

Drumul G este proces dacă pentru orice 0 ≤ i ≠ j ≤ n-1 ui ui+1 ≠ u j u j+1.

Orice drum elementar este un proces.

8/15/2019 ATP - Curs 9-10_complet

http://slidepdf.com/reader/full/atp-curs-9-10complet 6/41

Drumuri in graf

• Fie G : u0, u1, ..., un un drum în graful G=(V ,E ). G ’ : v 0, v 1,..,v m este un subdrumal lui G dacă G ’ este un drum şi pentru orice j , 0 ≤ j ≤ m , există i , astfel încît

ui = v j . Orice drum cu lungime cel puţin 1 conţine cel puţin un drum

elementar cu aceleaşi extremităţi.

v1

v2

v3

v4 v5

v6 v7

v8

v9

v10

Fie drumul G : v 1, v 2, v 4, v 5, v 3, v 1, v 2, v 5, v 6, v 7 , v 8, v 9, v 5, v 9, v 8, v 10

Atunci G 1: v 1, v 2, v 5, v 9, v 8, v 10

G 2: v 1, v 2, v 4, v 5, v 9, v 8, v 10

sînt v 1-v 10 subdrumuri elementare.

8/15/2019 ATP - Curs 9-10_complet

http://slidepdf.com/reader/full/atp-curs-9-10complet 7/41

Drumuri in graf

• Exercitiu 1a: fie graful neorientatCare dintre urmatoarele drumuri

sunt elementare si care nu?

Vf initial = 2

Vf. final = 6

2,4,5,1,6

2,3,6

2,1,6,5

2,4,5,7,3,6

Elementar

Elementar

Neelementar

Neelementar

8/15/2019 ATP - Curs 9-10_complet

http://slidepdf.com/reader/full/atp-curs-9-10complet 8/41

Drumuri in graf

• Exercitiu 1b: fie graful neorientat

Care dintre urmatoarele drumuri

sunt elementare si care nu?

Vf initial = 2

Vf. final = 5

2,4,1,4,6,7,5

2,4,1,6,1,7,5

2,4,6,7,5,1,5

2,5,4,7

2,4,3,6,1,5

Neelementar

Neelementar

Neelementar

Nu e drum

Elementar

8/15/2019 ATP - Curs 9-10_complet

http://slidepdf.com/reader/full/atp-curs-9-10complet 9/41

Drumuri in graf

• Ciclu – drum (lant) cu V=v1, v2, .., vn , cu v1=vn si muchiile u1-u2, u2-u3, un-1 –un sunt diferite doua cate doua.

• Ciclu elementar – ciclu in care toate varfurile sunt diferite doua cate douamai putin primul si ultimul. In caz contrar, el este neelementar.

• Observaţie: Într-un graf neorientat noţiunile de circuit şi ciclu

sunt echivalente.

Ciclu elementar/neelementar?

a) 3,4,5,3,7,1,2,3

b) 2,3,7,6,1,2

Raspuns:

a) ciclu neelementar

b) ciclu elementar

Exemplu

8/15/2019 ATP - Curs 9-10_complet

http://slidepdf.com/reader/full/atp-curs-9-10complet 10/41

Drumuri in graf

• Exercitiu: fie graful neorientat

Dati exemple de cicluri elementare si neelemenare care sa respecte conditiile:

- sa se plece din varful 5

- sa se treaca prin varful 3

8/15/2019 ATP - Curs 9-10_complet

http://slidepdf.com/reader/full/atp-curs-9-10complet 11/41

Drumuri in graf

Raspuns (exemple de cicluri care sa respecte

conditiile impuse):

• ciclu elementar: 5,1,4,3,6,7,5• ciclu neelementar: 5,2,7,1,4,3,6,7,5

8/15/2019 ATP - Curs 9-10_complet

http://slidepdf.com/reader/full/atp-curs-9-10complet 12/41

Drumuri in graf

Rezumat:• drum într-un graf: o mulţime ordonată de noduri ale grafului: (x1, x2, ..., xk), cu proprietatea că

există în graf toate arcele de forma (xi,xi+1) i = 1,...,k-1;• lungimea unui drum: este numărul arcelor care îl formează;• drum elementar : un drum în care fiecare nod apare o singură dată;• drum simplu: un drum în care fiecare arc apare o singură dată;• drum hamiltonian: un drum elementar care trece prin toate nodurile grafului;• drum eulerian: un drum simplu care conţine toate arcele grafului;

• lanţ: un drum în care arcele nu au neapărat acelaşi sens de parcurgere;

• circuit: un drum în care nodul iniţial coincide cu cel final;• circuit elementar : un drum în care fiecare nod apare o singură dată, cu excepţia celui final, care

coincide cu cel iniţial;• circuit simplu: un drum în care fiecare arc apare o singură dată;• circuit hamiltonian: un circuit care trece prin toate nodurile grafului;• ciclu: este un circuit în care arcele nu au neapărat acelaşi sens de parcurgere;• ciclu elementar : un ciclu în care fiecare nod apare o singură dată, cu excepţia celui final, care

coincide cu cel iniţial;• ciclu simplu: un ciclu în care fiecare arc apare o singură dată;

Observaţie: Într-un graf neorientat noţiunile de drum şi lanţ sunt echivalente şi de asemenea cele decircuit şi ciclu.

8/15/2019 ATP - Curs 9-10_complet

http://slidepdf.com/reader/full/atp-curs-9-10complet 13/41

Matricea existenței drumurilor

8/15/2019 ATP - Curs 9-10_complet

http://slidepdf.com/reader/full/atp-curs-9-10complet 14/41

Matricea existenței drumurilor

• Fie G=(V ,E ) un graf, A matricea de adiacenţă. Ap indică numărul de drumuri distincte între oricare 2 vîrfuri.

• Fie operaţiile binare de adunare şi înmulţire.Notînd = (), = (),

C = ⨁ = (),D = ⨂ = (),

= max , , = max , min ,

indică existența unui drum de lungime p între oricare 2 vîrfuri.

• = ⨁ ⨁…⨁ - matricea existenței drumurilor în graful G (se fol. algebrabooleana)

• M permite verificarea proprietatii de conexitate a grafului.Toate elementele lui M sunt 1 => Graf conex

8/15/2019 ATP - Curs 9-10_complet

http://slidepdf.com/reader/full/atp-curs-9-10complet 15/41

Matricea existenței drumurilor

• Exemplu 1

1

2

3

4

÷÷÷÷÷

ø

ö

ççççç

è

æ

=

÷÷÷÷÷

ø

ö

ççççç

è

æ

=

÷÷÷÷÷

ø

ö

ççççç

è

æ

=

÷÷÷÷÷

ø

ö

ççççç

è

æ

==

1111

1111

11111111

,

1111

1111

11011111

,

1111

1111

11101101

,

0101

1001

00011110

321 M A A A A

Nr. vf: 4

A = matrice de adiacenta

8/15/2019 ATP - Curs 9-10_complet

http://slidepdf.com/reader/full/atp-curs-9-10complet 16/41

Matricea existenței drumurilor

• Exemplu 2

= =

0 1 1 0 0 0

1 0 1 0 0 0

1 1 0 1 0 0

0 0 1 0 0 0

0 0 0 0 0 1

0 0 0 0 1 0

=

1 1 1 1 0 0

1 1 1 1 0 0

1 1 1 0 0 0

1 1 0 1 0 0

0 0 0 0 1 0

0 0 0 0 0 1

=

1 1 1 1 0 0

1 1 1 1 0 0

1 1 1 1 0 0

1 1 1 0 0 0

0 0 0 0 0 1

0 0 0 0 1 0

=

1 1 1 1 0 0

1 1 1 1 0 0

1 1 1 1 0 0

1 1 1 1 0 0

0 0 0 0 1 0

0 0 0 0 0 1

=

1 1 1 1 0 0

1 1 1 1 0 0

1 1 1 1 0 0

1 1 1 1 0 0

0 0 0 0 0 1

0 0 0 0 1 0

=

1 1 1 1 0 0

1 1 1 1 0 0

1 1 1 1 0 0

1 1 1 1 0 0

0 0 0 0 1 1

0 0 0 0 1 1

=

1 1 1 1 0 0

1 1 1 1 0 0

1 1 1 1 0 0

1 1 1 1 0 0

0 0 0 0 1 1

0 0 0 0 1 1

8/15/2019 ATP - Curs 9-10_complet

http://slidepdf.com/reader/full/atp-curs-9-10complet 17/41

Algoritmul Roy – Warshall(algoritm pentru det. matricei exist. drumurilor)

unsigned char ** Roy_Warshall (unsigned char **a,unsigned n)

int i,j,k;

unsigned char **m;

m = new unsigned char*[n];

for(i=0;i<n;i++)

m[i] = new unsigned char[n];

for( i=0; i<n; i++ )

for( j=0; j<n; j++ )

m[i][j] = a[i][j];

for( j=0; j<n; j++ )

for( i=0; i<n; i++ )

if( m[i][j] )

for( k=0; k<n; k++ )

if( m[i][k] < m[k][j] )

m[i][k] = m[k][j];

return m;

0

1

8/15/2019 ATP - Curs 9-10_complet

http://slidepdf.com/reader/full/atp-curs-9-10complet 18/41

Componente conexe

ale unui graf

8/15/2019 ATP - Curs 9-10_complet

http://slidepdf.com/reader/full/atp-curs-9-10complet 19/41

8/15/2019 ATP - Curs 9-10_complet

http://slidepdf.com/reader/full/atp-curs-9-10complet 20/41

Componente conexe ale unui graf • Algoritm pentru determinarea unei componente conexe

– I: , , – E: = ( ,)

– Se iniţializează componenta vidă = ∅, = ∅ – Se adaugă la mulţimea de vîrfuri vîrful iniţial

=

∪ – Repetă

• Se caută toţi vecinii noi ai vîrfurilor din şi se adaugă la mulţimeade vîrfuri

• Se caută toate muchiile noi dintre vîrfurile din şi se adaugă lamulţimea de muchii

– Pînă cînd nu se mai găsesc vîrfuri noi

• Se determină mulțimea vîrfurilor conectate cu → • Se adaugă la toate muchiile dintre vîrfurile din →

Parcurgere în adîncime / lățime

Din matriceaexistenței drumurilor

8/15/2019 ATP - Curs 9-10_complet

http://slidepdf.com/reader/full/atp-curs-9-10complet 21/41

Drumuri de cost minim

8/15/2019 ATP - Curs 9-10_complet

http://slidepdf.com/reader/full/atp-curs-9-10complet 22/41

Drumuri de cost minim

• Fie G=(V ,E ,w ) un graf ponderat. Costul drumului G : u0, u1, ..., un , notat L(G ), este definitprin:

Γ = (,)

• Pentru orice u şi v vîrfuri conectate în G, u ≠ v , w-distanţa între u şi v , notată D(u,v ),este definită prin

, = Γ , Γ ∈

unde Duv desemnează mulţimea tuturor u-v drumurilor elementare din G.

• Drumul pentru care D(u,v )=L(G ), se numeşte drum de cost minim.

• Algoritmi:

• Dijkstra (de la un vf dat la restul varfurilor)

• Roy-Floyd (de la orice vf la toate celelalte)

• Yen (un vf si restul varfurilor)

8/15/2019 ATP - Curs 9-10_complet

http://slidepdf.com/reader/full/atp-curs-9-10complet 23/41

Algoritmul Dijkstra

Algoritm

• fie = ,, , ∈ , graf conex• etichete pentru fiecare vîrf ∈ : ( , )

• = • = − • pentru fiecare vîrf ∈ , = ∞• = , = −, • pentru ≤ <

– pentru fiecare vîrf ∈ • dacă > +( ,)

– = +( ,) – = – determină un vîrf ∈ a.î. este minimă

– = – = ∪ – = −

8/15/2019 ATP - Curs 9-10_complet

http://slidepdf.com/reader/full/atp-curs-9-10complet 24/41

Algoritmul DijkstraExemplu

1

23

45

15

9

25

16

Fie graful ponderat

• Implementare

• vezi suport de curs

8/15/2019 ATP - Curs 9-10_complet

http://slidepdf.com/reader/full/atp-curs-9-10complet 25/41

Algoritmul Dijkstra – implementare (1)

• #include <stdio.h>• #include <malloc.h>

• typedef struct float l;

• int vf;

• eticheta;

• //subprogram

• //preia datele unui graf in forma tabelara din fisierul nume si obtine

• //matricea ponderilor, unde MAX este valoarea cu semnificatie de infinit

• //ultima linie a fisierului contine virful initial din algoritmul Dijkstra

• //subprogram

• //functia pentru implementarea algoritmului Dijkstra - returneaza

• //vectorul de etichete

• //(de exemplu: 5,1 pentru varful 2, //unde 5 costul minim pentru a ajunge din 1 in 2)

• //subprogram

• //functia principala

8/15/2019 ATP - Curs 9-10_complet

http://slidepdf.com/reader/full/atp-curs-9-10complet 26/41

Algoritmul Dijkstra – implementare (2)

void preia_graf(char *nume, float ***w, int *n, int *v0, float MAX) int i,j,m,u,v; float p;

FILE *f=fopen(nume,"rt");fscanf(f,"%i",n);float **mw=(float **)malloc(*n*sizeof(float*));for(i=0;i<*n;i++)mw[i]=(float *)malloc(*n*sizeof(float));

fscanf(f,"%i",&m);for(i=0;i<*n;i++)for(j=0;j<*n;j++)mw[i][j]=MAX;

for(i=0;i<m;i++) fscanf(f,"%i",&u);fscanf(f,"%i",&v);fscanf(f,"%f",&p);mw[u-1][v-1]=mw[v-1][u-1]=p;

fscanf(f,"%i",v0);fclose(f);*w=mw;

8/15/2019 ATP - Curs 9-10_complet

http://slidepdf.com/reader/full/atp-curs-9-10complet 27/41

Algoritmul Dijkstra – implementare

(3a)• eticheta * Dijkstra (float **w, int n, int v0, float MAX)• int i,*prel,nrit,ui,v,vmin;• float lmin;• eticheta *v_et=(eticheta *)malloc(n*sizeof(eticheta));•• for(i=0;i<n;i++)

• v_et[i].l=MAX;• v_et[v0-1].l=0;•• *prel=(int*)malloc(n*sizeof(int));• //vector cu proprietatea prel[i]=1 daca pentru virful i+1 a• //fost deja determinat un drum de cost minim• //prel[i]=0 in caz contrar

• for(i=0;i<n;i++)• prel[i]=0;• prel[v0-1]=1;

8/15/2019 ATP - Curs 9-10_complet

http://slidepdf.com/reader/full/atp-curs-9-10complet 28/41

Algoritmul Dijkstra – implementare (3b)

• ui=v0;• for(nrit=0;nrit<n-1;nrit++)• lmin=MAX;• //sunt recalculate w-distantele de la virfurile v cu prel[v-1]=0 si este determinat vmin, //urmatorul

virf cu proprietatea ca pentru acesta a fost determinat un drum de cost minim,• // lmin• for(v=1;v<=n;v++)• if((prel[v-1]==0)&&(v_et[v-1].l>v_et[ui-1].l+w[v-1][ui-1]))• v_et[v-1].l=v_et[ui-1].l+w[v-1][ui-1];• v_et[v-1].vf=ui;• • if((prel[v-1]==0)&&v_et[v-1].l<lmin)• lmin=v_et[v-1].l; vmin=v;•

• • ui=vmin; prel[ui-1]=1;• • free(prel); return v_et;•

8/15/2019 ATP - Curs 9-10_complet

http://slidepdf.com/reader/full/atp-curs-9-10complet 29/41

Algoritmul Dijkstra – implementare (4)

• void main()• float **w,MAX=1000000; int n,v0,v,u,i;• preia_graf("graf.txt",&w, &n, &v0, MAX);• eticheta *rez=Dijkstra(w,n,v0,MAX);• for(v=1;v<=n;v++)• if(v!=v0)

• printf("Costul unui cel mai ieftin drum de la %i la %i este %8.3f",v,v0,rez[v-1].l);• printf("\n Un drum de cost minim: %i ",v);• u=v;• while(rez[u-1].vf!=v0)• printf("%i ",rez[u-1].vf);• u=rez[u-1].vf;• • printf("%i \n\n",v0);

• • free(rez);• for(i=0;i<n;i++) free(w[i]);• free(w);•

8/15/2019 ATP - Curs 9-10_complet

http://slidepdf.com/reader/full/atp-curs-9-10complet 30/41

Algoritmul Roy - Floyd

• Istoric – publicat sub forma cunoscută în prezent de către

Robert Floyd în 1962. – asemănător algoritmului publicat de către

Bernard Roy în 1959.

• Aplicabilitate – folosit în domenii diverse

– ex:• stabilirea traseelor feroviare sau aeriene

• jocuri informatice

8/15/2019 ATP - Curs 9-10_complet

http://slidepdf.com/reader/full/atp-curs-9-10complet 31/41

Algoritmul Roy - Floyd

• În unele aplicaţii este necesară exclusiv determinarea w - distanţelor D(v0,v), pentru toţi v din multimea V.

• În acest caz algoritmul Roy-Floyd permite o rezolvare a acestei probleme maisimplu de implementat decît algoritmul Dijkstra.

• Determină costul minim al drumului dintre oricare două vârfuri x, y, precum şi unastfel de drum.

• Iniţial se porneşte de la matricea costurilor C(distantelor) care va fi transformată înmatricea drumurilor de cost minim astfel: – se consideră un vârf k (k=1,n) şi pentru fiecare k se compară costul drumului, din acel moment,

dintre i şi j (i,j=1,n), cu suma costurilor dintre drumul (i,k)şi drumul (k,j),; – în cazul în care costul drumului (i,j) ce trece prin k este mai mic decât drumul existent deja

înseamnă că am găsit un nou drum de cost mai mic între vârfurile i şi j, trecând prin k.

– În cazul acesta costul drumului de la i la j va fi suma costurilor drumului de la i la k cu drumulde la k la j, iar tata[i][j] va fi tata[k][j] (se va reactualiza şi vectorul tata pentru a puteareconstitui drumul minim).

8/15/2019 ATP - Curs 9-10_complet

http://slidepdf.com/reader/full/atp-curs-9-10complet 32/41

Algoritmul Roy - FloydExemplu

• Fie G=(V, E) un graf neorientat (n noduri si m muchii) memorat prinmatricea ponderilor. Se cere ca pentru doua noduri x,y citite sa sedetermine lungimea minima a lantului de la x la y.

0 2 ∞ 10 ∞

2 0 3 ∞ ∞∞ 3 0 1 8

10 ∞ 1 0 ∞

∞ ∞ 8 ∞ 0

Matricea costurilor

-Se incearca pentru oricare pereche de noduri i,j sa se obtina “drumuri” mai scurte prin

noduri intermediare k (k∈1...n).

- Acest lucru se determina comparand “lungimea” lantului a[i,j] cu lungimea lantului care

trece prin k si daca: a[i,j] > a[i,k]+a[k,j] atunci se atribuie:

a[i,j] ←a[i,k]+a[k,j] costuri vor fi modificate sunt urmatoareale intrucat intre

ele exista costuri mai mici.

8/15/2019 ATP - Curs 9-10_complet

http://slidepdf.com/reader/full/atp-curs-9-10complet 33/41

Algoritmul Roy - Floyd

Pe baza matricii obtinute se extrag rutele pentru varfurile date.

Rezultat: pentru un drum de la 1 la 4:

- cost minim: 6

- traseul: 1-2-3-4

8/15/2019 ATP - Curs 9-10_complet

http://slidepdf.com/reader/full/atp-curs-9-10complet 34/41

Algoritmul Roy - Floydvoid Roy_Floyd (float w[10][10], unsigned n,

float d[10][10], float MAX)

int i,j,k;

for (i=0;i<n;i++)

for (j=0;j<n;j++)

d[i][j] = w[i][j];

for (j=0;j<n;j++)

for (i=0;i<n;i++)

if(d[i][j]<MAX)

for (k=0;k<n;k++)

if (d[i][k] > d[i][j] + d[j][k])

d[i][k] = d[i][j] + d[j][k];

- Graf ponderat conex- Calcul dinamic al distantei intre

oricare doua varfuri i si k

- Daca exista un i-k drum care trece

prin j (1<=j<=n), cu costul

<dij+dik)<djk :

=>noul drum de la i la k arecostul mai mic decat vechiul drum

=> distanta i-k trebuie

actualizata la dij+djk

8/15/2019 ATP - Curs 9-10_complet

http://slidepdf.com/reader/full/atp-curs-9-10complet 35/41

Algoritmul YenScop:

• algoritm utilizat:

– pentru determinarea tuturor w-distantelor intr-un graf ponderat; – pentru identificarea distantelor minime de la varful x1 la varfurile x2,xj,...,xn

pentru un graf

• mai eficient decat Roy-Floyd dpdv al volumului de operatii.

Algoritm:

• Pas1: D=W

• Pas2: i=1, λ(k)=0, b(k)=0, λ(j)=1, pentru to 1<=j<=n, j≠k

• Pas3: Calculeaza mind kj , 1<=j<=n, λ(j)=1

Determina j 0 cu λ(j 0 )=1 si d kj 0 = min d kj , 1<=j<=n, λ(j)=1

B(j 0 ) = d kj 0 , λ(j 0 )=0d[k,j]=mind[k,j],d[k,j 0 ]+d[j 0 ,j], pentru toti 1<=j<=n

i=i+1

• Pas4: Daca i<n, reia Pas 3, altfel STOP.

8/15/2019 ATP - Curs 9-10_complet

http://slidepdf.com/reader/full/atp-curs-9-10complet 36/41

Algoritmul Yen

• Exemplu – Vf initial = 1 (vf1)

8/15/2019 ATP - Curs 9-10_complet

http://slidepdf.com/reader/full/atp-curs-9-10complet 37/41

Algoritmul Yen1

2

3

4

5

4

4

5

2

3

7

1

Vk=1

8/15/2019 ATP - Curs 9-10_complet

http://slidepdf.com/reader/full/atp-curs-9-10complet 38/41

Algoritmul Yen

• Pas 3: j0=2, B(2)=3, λ = (0,0,0,1,1);

• nicio modificare in matricea D; i=3

• Pas 4: i<5, reia Pas 3

1

2

34

5

4

4

5

2

3

7

1

Vk=1

8/15/2019 ATP - Curs 9-10_complet

http://slidepdf.com/reader/full/atp-curs-9-10complet 39/41

Algoritmul Yen

Vf initial = 1 (vf1)

Drum vf1->vf2 => cost1 = 3cost2 = 2+5 = 7

cost3 = 7+4+5 = 16

cost4 = 4+1+5 = 10

=> se alege costul cel mai mic (3)

= ( )Rezultat:

8/15/2019 ATP - Curs 9-10_complet

http://slidepdf.com/reader/full/atp-curs-9-10complet 40/41

Spor la invatat !

8/15/2019 ATP - Curs 9-10_complet

http://slidepdf.com/reader/full/atp-curs-9-10complet 41/41

Referinte bibliografice

• ATP – suport de curs si seminar

• http://campion.edu.ro/arhiva/www/arhiva_2009/seds/17/index.htm

• http://software.ucv.ro/~cmihaescu/ro/teaching/ACA/docs/Roy-Floyd.pdf