Sunteți pe pagina 1din 18

MINISTERUL EDUCAIEI I TIINEI AL REPUBLICII MOLDOVA

UNIVERSITATEA TEHNIC A MOLDOVEI


CATEDRA "TEHNOLOGII INFORMAIONALE"

Discutat i aprobat
la edina Consiliului Metodic al Facultii
Calculatoare, Informatic i Microelectronic
Decan F.C.I.M._________V.ontea
"___"_____________1999

INDICAII METODICE
la lucrrile de laborator la disciplina "Matematica discret n inginerie"
pentru studenii anului 1, specialitile "Tehnologii inofrmaionale" i Calculatoare

(Elaborat de Victor Beliu)

Chiinu 1999
Victor Beliu, Indicaii metodice la disciplina Matematica discret n inginerie Chiinu, 1999
Ora 15:11 09/02/159

pag.1

INTRODUCERE
Anul 1736 este considerat pe bun dreptate de nceput pentru teoria grafurilor. n acel an
L.Euler a rezolvat problema despre podurile din Knigsberg, stabilind criteriul de existen n
grafuri a unui circuit special, denumit astzi ciclu Euler. Acestui rezultat i-a fost hrzit s fie
mai bine de un secol unicul n teoria grafurilor. Doar la jumtatea secolului XIX inginerul
G.Kirchof a elaborat teoria arborilor pentru cercetarea circuitelor electrice, iar matematicianul
A.Caly a rezolvat problema enumerrii pentru trei tipuri de arbori. n aceeai perioad apare i
cunoscuta problem despre patru culori.
Avndu-i nceputurile n rezolvarea unor jocuri distractive (problema calului de ah i
reginelor, "cltoriei n jurul Pmntului" despre nuni i haremuri, etc.), astzi teoria
grafurilor s-a transformat ntr-un aparat simplu i accesibil, care permite rezolvarea unui cerc
larg de probleme. Grafuri ntlnim practic peste tot. Sub form de grafuri pot fi reprezentate
sisteme de drumuri i circuite electrice, hri geografice i molecule chimice, relaii dintre
oameni i grupuri de oameni.
Foarte fertile au fost pentru teoria grafurilor ultimile trei decenii, ceea ce a fost cauzat de
creterea spectaculoas a domeniilor de aplicaii. n termeni grafo-teoretici pot fi formulate o
mulime de probleme legate de obiecte discrete. Astfel de probleme apar la proiectarea
circuitelor integrate i sistemelor de comand, la cercetarea automatelor finite, circuitelor
logice, schemelor-bloc ale programelor, n economie i statistic, chimie i biologie, teoria
orarelor i optimizarea discret. Teoria grafurilor a devenit o parte component a aparatului
matematic al ciberneticii, limbajul matematicii discrete.
NOIUNI GENERALE
1. Definiia grafului
Se numete graf, ansamblul format dintr-o mulime finit X i o aplicaie F a lui X n X. Se
noteaz G = (X,F). Numrul elementelor mulimii X determin ordinul grafului finit. Dac
card X = n, graful G = (X,F) se numete graf finit de ordinul n. Elementele mulimii X se
numesc vrfurile grafului. Geometric, vrfurile unui graf le reprezentm prin puncte sau
cerculee. Perechea de vrfuri (x,y) se numete arc; vrful x se numete originea sau
extremitatea iniial a arcului (x,y), iar vrful y se numete extremitatea final sau terminal.
Un arc (x,y) l reprezentm geometric printr-o sgeat orientat de la vrful x la vrful y.
Dac un vrf nu este extremitatea nici unui arc el se numete vrf izolat, iar dac este
extremitatea a mai mult de dou arce - nod. Un arc pentru care extremitatea iniial coincide
cu cea final se numete bucl.
Arcele unui graf le mai notm i cu u1, u2,..., iar mulimea arcelor grafului o notm cu U. Se
observ c mulimea U a tuturor arcelor unui graf determin complet aplicaia F, precum i
reciproc, aplicaia F determin mulimea U a arcelor grafului. Un graf G poate fi dat fie prin
ansamblul (X,F) fie prin ansamblul (X,U).
Dou arce se zic adiacente dac sunt distincte i au o extremitate comun. Dou vrfuri se zic
adiacente dac sunt distincte i sunt unite printr-un arc.
Un arc (x,y) se spune c este incident cu vrful x spre exterior i este incident cu vrful y spre
interior.

Victor Beliu, Indicaii metodice la disciplina Matematica discret n inginerie Chiinu, 1999
Ora 15:11 09/02/159

pag.2

Fie G = (X,F) i x X. Mulimea tuturor arcelor incidente cu x spre exterior (interior) se


numete semigradul exterior (interior) a lui x i se noteaz d+x (d_x). Dac pentru un vrf x,
d+x=0 sau d_x=0 atunci el se numete vrf terminal
u2
x1

u3
x4

u1

u5
x2

x7

u4
x3
u6

u8
x6

x5
u7

Fig. 1. Exemplu de graf


ntr-un graf G = (X,U) se numete drum un ir de arce (u1,...,uk), astfel nct extremitatea
terminal a fiecrui arc uI coincide cu extremitatea iniial a arcului urmtor ui+1. Un drum care
folosete o singur dat fiecare arc al su se numete drum simplu. Un drum care trece o
singur dat prin fiecare vrf al su se numete drum elementar. Lungimea unui drum este
numrul de arce din care este compus drumul.
Un drum elementar ce trece prin toate vrfurile grafului se numete drum hamiltonian. Un
drum simplu ce conine toate arcele grafului se numete drum eulerian. Un drum finit pentru
care vrful iniial coincide cu vrful terminal se numete circuit.
Graful obinut din graful iniial suprimnd cel puin un vrf al acestuia precum i toate arcele
incidente cu el se numete subgraf. Graful obinut suprimnd cel puin un arc se numete graf
parial.
Un graf se numete complet dac oricare ar fi x i y din X exist un arc de la x la y sau de la y
la x.
Un graf G = (X,F) se zice tare conex dac pentru orice x, y X (x diferit de y) exist un drum
de la x la y sau c oricare pereche de vrfuri x, y cu x diferit de y se afl pe un circuit.
Fie G = (X,F) i x X. Mulimea Cx format din toate vrfurile xi X pentru care exist un
circuit ce trece prin x i xi se numete component tare conex a lui G corespunztoare vrfului
x.
Componentele tari conexe ale unui graf G = (X,F) constituie o partiie a lui X.
Noiunile introduse sunt valabile pentru grafurile orientate.
n cazul n care orientarea arcelor nu are nici o importan graful se va numi neorientat. Arcele
se vor numi muchii, drumul - lan, circuitul - ciclu. La fel se introduce noiunea de lan
elementar i simplu, lan Euler i hamiltonian. Graful tare conex se va numi conex.
Cele dou concepte de graf orientat i graf neorientat se pot sprijini n practic unul pe altul.
De la un graf orientat se poate trece la omologul su neorientat cnd se abordeaz o problem
ce nu presupune orientarea i invers, dac se precizeaz orientarea.
Victor Beliu, Indicaii metodice la disciplina Matematica discret n inginerie Chiinu, 1999
Ora 15:11 09/02/159

pag.3

Unui graf orientat simetric i se poate asocia un graf neorientat, legtura dintre dou vrfuri x i
y realizat de cele dou arce (x,y) i (y,x) de sensuri contrarii nlocuindu-se cu muchia [x,y].
De asemenea un graf neorientat poate fi identificat cu mai multe grafuri orientate nlocuind
fiecare muchie cu dou arce orientate n sens opus.
Fie G = (X,U) un graf neorientat i x X. Se numete gradul vrfului x numrul muchiilor
care au o extremitate n vrful x. Se noteaz g(x). Un vrf este izolat dac g(x) = 0.
2. Numr cociclomatic i numr ciclomatic
Fie G = (X,F) un graf neorientat cu n vrfuri, m muchii i p componente conexe. Numim
numr cociclomatic asociat grafului G numrul
r(G) = n - p
iar numrul ciclomatic numrul
s(G) = m - r(G) = m - n + p.
Se numete multigraf un graf neorientat n care exist perechi de vrfuri unite prin mai multe
muchii. Se numete q - graf un multigraf pentru care numrul maxim de muchii ce unesc dou
vrfuri este q.
Teorema. Fie G = (X,U) un multigraf, iar G1 = (X,U1) un multigraf obinut din G adugnd o
muchie. Dac x, y X i [x,y] este muchia care se adaug la mulimea muchiilor grafului G,
atunci:
(1) dac x = y sau x i y sunt unite printr-un lan
r(G1) = r(G), s(G1) = s(G) + 1
(2) n caz contrar
r(G1) = r(G) + 1, s(G1) = s(G).
Demonstraia este evident.
Consecin. Numerele cociclomatic i ciclomatic sunt nenegative.
3. Numr cromatic. Grafuri planare. Arbori
Un graf G = (X,U) se zice ca este graf p-cromatic daca vrfurile lui se pot colora cu p-culori
distincte astfel ca dou vrfuri adiacente s nu fie de aceeai culoare. Cel mai mic numr
ntreg i pozitiv pentru care graful este p-cromatic se numete numr cromatic.
Un graf se zice c este planar dac poate fi reprezentat pe un plan astfel ca dou muchii s nu
aib puncte comune n afar de extremitile lor. Un graf planar determin regiuni numite fee.
O fa este o regiune mrginit de muchii i care nu are n interior nici vrfuri, nici muchii.
Conturul unei fee este format din muchiile care o mrginesc. Dou fee sunt adiacente dac
contururile au o muchie comun. S-a demonstrat c numrul cromatic al unui graf planar este
patru.
Cu privire la numrul cromatic s-a demonstrat urmtoarea
Teorema (Knig). Un graf este bicromatic dac i numai dac nu are cicluri de lungime
impar.

Victor Beliu, Indicaii metodice la disciplina Matematica discret n inginerie Chiinu, 1999
Ora 15:11 09/02/159

pag.4

Se numete arbore oricare graf conex fr bucle i cicluri.


u2
x1

u1

x4

x7

u4

x3

u3

u5
u6

x2

x5

x6

Fig. 2. Exemplu de arbore


Se numete arborescen un graf orientat fr circuite astfel ca s existe un vrf i numai unul
care nu e precedat de nici un alt vrf (rdcina) i orice alt vrf s fie precedat de un singur
vrf.

LUCRAREA DE LABORATOR Nr. 1


TEMA: PSTRAREA GRAFURILOR N MEMORIA CALCULATORULUI
1. SCOPUL LUCRRII:
Studierea metodelor de definire a unui graf: matrice de inciden, matrice de adiacen,
liste;
Elaborarea unor proceduri de introducere, extragere i transformare a diferitor forme de
reprezentare intern a grafurilor cu scoaterea rezultatelor la display i imprimant.
2.

NOTE DE CURS

Metode de reprezentare a grafului


Exist trei metode de baz de definire a unui graf:
1. Matricea de inciden;
2. Matricea de adiacen;
3. Lista de adiacen (inciden).
Vom face cunotin cu fiecare dintre aceste metode.
Matricea de inciden
Este o matrice de tipul mxn, n care m este numrul de muchii sau arce (pentru un graf
orientat), iar n este numrul vrfurilor. La intersecia liniei i cu coloana j se vor considera
valori de 0 sau 1 n conformitate cu urmtoarea regul:
1 - dac muchia i este incident cu vrful j (dac arcul i "intr" n vrful j n cazul unui
graf orientat);
Victor Beliu, Indicaii metodice la disciplina Matematica discret n inginerie Chiinu, 1999
Ora 15:11 09/02/159

pag.5

0 - dac muchia (arcul) i i vrful j nu sunt incidente;


-1 - numai pentru grafuri orientate, dac arcul i "iese" din vrful j.
x1
x2
x3
x4
x5
x6
x7
u1
-1
0
1
0
0
0
0
u2
-1
0
0
1
0
0
0
u3
0
0
0
-1
0
0
1
u4
0
0
-1
0
0
0
1
u5
0
-1
1
0
0
0
0
u6
0
-1
0
0
1
0
0
u7
0
-1
0
0
0
1
0
u8
0
0
-1
0
0
1
0
Fig. 3. Exemplu de matrice de inciden (v.fig.1)
Este uor de observat c aceast metod este de o eficacitate mic n sensul utilizrii memoriei
calculatorului: fiecare linie conine doar dou elemente diferite de zero (o muchie poate fi
incident cu nu mai mult de dou vrfuri).
n limbajul Pascal matricea de inciden poate fi redat printr-un tablou bidimensional mxn:
Matr_Incd: array [1..LinksCount, 1..TopsCount] of integer;

Matricea de adiacen
Este o matrice ptrat nxn, aici n este numrul de vrfuri. Fiecare element poate fi 0, dac
vrfurile respective nu sunt adiacente, sau 1, n caz contrar. Pentru un graf fr bucle putem
observa urmtoarele:
diagonala principal este format numai din zerouri;
pentru grafuri neorientate matricea este simetric fa de diagonala principal.
x1
x2
x3
x4
x5
x6
x7
x1
0
0
1
1
0
0
0
x2
0
0
1
0
1
1
0
x3
0
0
0
0
0
1
1
x4
0
0
0
0
0
0
1
x5
0
0
0
0
0
0
0
x6
0
0
0
0
0
0
0
x7
0
0
0
0
0
0
0
Fig. 4. Exemplu de matrice de adiacen (v.fig.1)
n limbajul Pascal matricea de adiacen poate fi reprezentat n modul urmtor:
Matr_Ad :array [1..TopsCount,1..TopsCount] of byte,

sau
Matr_Ad :array [1..TopsCount,1..TopsCount] of boolean;

Dup cum este lesne de observat i n acest caz memoria calculatorului este utilizat nu prea
eficace din care cauz matricea de adiacen ca i matricea de inciden se vor utiliza de obicei
doar n cazul n care se va rezolva o problem concret pentru care reprezentarea grafului n
aceast form aduce unele faciliti algoritmului respectiv.

Victor Beliu, Indicaii metodice la disciplina Matematica discret n inginerie Chiinu, 1999
Ora 15:11 09/02/159

pag.6

Pentru pstrarea grafurilor n memoria calculatorului (n deosebi, memoria extern) se va


utiliza una din posibilitile de mai jos.
Lista de adiacen i lista de inciden
Lista de adiacen este o list cu n linii (dup numrul de vrfuri n), n linia cu numrul i vor
fi scrise numerele vrfurilor adiacente cu vrful i.
Lista de inciden se definete analogic cu deosebirea c n linia i vor fi scrise numerele
muchiilor (arcelor) incidente cu vrful i.
Reprezentarea grafurilor prin intermediul acestor liste permite utilizarea mai eficace a
memoriei calculatorului, ns aceste forme sunt mai complicate att n realizare, ct i n
timpul procesrii. Pentru a lua n consideraie lungimea variabil a liniilor vor fi utilizate
variabile dinamice i pointeri.
Vom exemplifica pentru un graf cu n vrfuri. Deoarece fiecare element al listei conine numere
de vrfuri este evident s considerm c vom avea un ir de variabile dinamice de tip
INTEGER care se vor afla n relaia respectiv de precedare (succedare). Aceast relaie se va
realiza prin pointeri, unii mpreun cu variabila de tip ntreg n nregistrarea (Pascal: record).
Pentru a pstra indicatorii de intrare n aceste iruri se va folosi un tablou unidimensional de
indicatori de lungime n. n calitate de simbol de terminare a irului se va utiliza un simbol care
nu a fost folosit la numeraia vrfurilor (de exemplu 0), care va fi introdus n calitate de
variabil de tip ntreg al ultimului bloc.
De exemplu, lista de adiacen (fig.1.1):
1 - 3, 4, 0
2 - 3, 5, 6, 0
3 - 6, 7, 0
4 7, 0
5-0
6-0
7-0

va avea urmtoarea reprezentare intern:

2
3

variabile dinamice (pointer i variabil de tip ntreg)

masiv de indicatori
Fig. 5. Reprezentarea intern a listei de adiacen

Victor Beliu, Indicaii metodice la disciplina Matematica discret n inginerie Chiinu, 1999
Ora 15:11 09/02/159

pag.7

Va fi necesar de realizat urmtoarea declaraie:


Type
BlockPtr = ^BlockType;
BlockType = record;
Number : integer;
Point : BlockPtr;
end;
Var In_Ptr :array [1..TopsCount] of BlockPtr;

Lista de adiacen (i realizarea reprezentrii interne) se va implementa cu ajutorul procedurii


New (BlockPtr_Type_Variable), n care BlockPtr_Type_Variable este o variabil de tip BlockPtr.
3. SARCINA DE BAZ
1. Elaborai procedura introducerii unui graf n memoria calculatorului n form de matrice de
inciden, matrice de adiacen i list de adiacen cu posibiliti de analiz a
corectitudinii.
2. Elaborai proceduri de transformare dintr-o form de reprezentare n alta.
3. Folosind procedurile menionate elaborai programul care va permite:
introducerea grafului reprezentat sub oricare din cele trei forme cu posibiliti de
corecie a datelor;
pstrarea grafului n memoria extern n form de list de adiacen;
extragerea informaiei ntr-una din cele trei forme la imprimant i display.
4. NTREBRI DE CONTROL
1. Care sunt metodele de baz de reprezentare a unui graf?
2. Descriei fiecare din aceste metode.
3. Cum se vor realiza aceste metode n limbajul Pascal?
LUCRAREA DE LABORATOR Nr. 2
TEMA: ALGORITMUL DE CUTARE N ADNCIME
1. SCOPUL LUCRRII:
Studierea algoritmilor de cutare n graf i a diferitor forme de pstrare i
prelucrare a datelor.
Elaborarea procedurii de cutare n adncime.
2. NOTE DE CURS
Structuri de date: liste
Fiecare tip de list definete o mulime de iruri finite de elemente de tipul declarat. Numrul
de elemente care se numete lungimea listei poate varia pentru diferite liste de acelai tip.
Lista care nu conine nici un element se va numi vid. Pentru list sunt definite noiunile
nceputul, sfritul listei i respectiv primul i ultimul element, de asemenea elementul curent
ca i predecesorul i succesorul elementului curent. Element curent se numete acel unic
element care este accesibil la momentul dat.

Victor Beliu, Indicaii metodice la disciplina Matematica discret n inginerie Chiinu, 1999
Ora 15:11 09/02/159

pag.8

Structuri de date : fire de ateptare


Firele de ateptare (FA, rnd, coad, ir de ateptare) se vor folosi pentru a realiza algoritmul
de prelucrare a elementelor listei n conformitate cu care elementele vor fi eliminate din list
n ordinea n care au fost incluse n ea (primul sosit - primul servit).
Operaiile de baz cu firele de ateptare:

Formarea unui FA vid;


Verificare dac FA nu este vid;
Alegerea primului element cu eliminarea lui din FA;
Introducerea unei valori noi n calitate de ultim element al FA.

Structuri de date: stive


Stiva se utilizeaz pentru a realiza algoritmul de prelucrare a elementelor dup principiul
"ultimul sosit - primul prelucrat" (LIFO).
Operaiile de baz cu stivele sunt urmtoarele:

Formarea unei stive vide;


Verificare la vid;
Alegerea elementului din topul stivei cu sau fr eliminare;
Introducerea unui element nou n topul stivei.

Structuri de date - arbori


Se va defini o mulime de structuri fiecare din care va consta dintr-un obiect de baz numit
vrf sau rdcina arborelui dat i o list de elemente din mulimea definit, care (elementele)
se vor numi subarbori ai arborelui dat. Arborele pentru care lista subarborilor este vid se va
numi arbore trivial, iar rdcina lui - frunz.
Rdcina arborelui se va numi tatl vrfurilor care servesc drept rdcini pentru subarbori;
aceste vrfuri se vor mai numi copiii rdcinii arborelui: rdcina primului subarbore se va
numi fiul cel mai mare, iar rdcina fiecrui subarbore urmtor n list se va numi frate.
Operaiile de baz pentru arbori vor fi:

Formarea unui arbore trivial;


Alegerea sau nlocuirea rdcinii arborelui;
Alegerea sau nlocuirea listei rdcinilor subarborilor;
Operaiile de baz care sunt valabile pentru liste.

Cutare n adncime
La cutarea n adncime (parcurgerea unui graf n sens direct, n preordine) vrfurile grafului
vor fi vizitate n conformitate cu urmtoarea procedur recursiv:
mai nti va fi vizitat rdcina arborelui q, apoi, dac rdcina arborelui nu este frunz pentru fiecare fiu p al rdcinii q ne vom adresa recursiv procedurii de parcurgere n
adncime pentru a vizita vrfurile tuturor subarborilor cu rdcina p ordonate ca fii ai lui q.
n cazul utilizrii unei stive pentru pstrarea drumului curent pe arbore, drum care ncepe din
rdcina arborelui i se termin cu vrful vizitat n momentul dat, poate fi realizat un algoritm
nerecursiv de forma:
Victor Beliu, Indicaii metodice la disciplina Matematica discret n inginerie Chiinu, 1999
Ora 15:11 09/02/159

pag.9

Viziteaz rdcina arborelui i introdu-o n stiva vid S;


WHILE stiva S nu este vid DO
BEGIN
fie p - vrful din topul stivei S;
IF fiii vrfului p nc nu au fost vizitai
THEN viziteaz fiul mai mare al lui p i introduce-l n S
ELSE BEGIN
elimin vrful p din stiva S
IF p are frai THEN viziteaz pe fratele lui p i introduce-l n stiva S
END
END

Acest algoritm poate fi modificat pentru a putea fi utilizat la parcurgerea tuturor vrfurilor
unui graf arbitrar. n algoritmul de mai jos se va presupune c este stabilit o relaie de
ordine pe mulimea tuturor vrfurilor grafului, iar mulimea vrfurilor adiacente cu un
vrf arbitrar al grafului este de asemenea ordonat:
WHILE va exista cel puin un vrf care nu a fost vizitat DO
BEGIN
fie p - primul din vrfurile nevizitate;
viziteaz vrful p i introduce-l n stiva vid S;
WHILE stiva S nu este vid DO
BEGIN
fie p - vrful din topul stivei S;
IF m vrfuri ale lui p sunt vrfuri adiacente nevizitate
THEN BEGIN
fie z primul vrf nevizitat din vrfurile adiacente cu p;
parcurge muchia (p,z), viziteaz vrful z i introduce-l n stiva S;
END
ELSE elimin vrful p din stiva S
END
END

n cazul n care se va lucra cu un graf conex arbitrar cu relaia de ordine lips, nu va mai avea
importan ordinea de parcurgere a vrfurilor. Propunem un algoritm care utilizeaz mai larg
posibilitile stivei, cea ce face programul mai efectiv n sensul diminurii timpului de calcul
necesar. De exemplu, acest algoritm n varianta recursiv este pe larg utilizat n programele de
selectare global n subdirectori (cazul programelor antivirus).
Introdu n stiv vrful iniial i marcheaz-l;
WHILE stiva nu este vid DO
BEGIN
extrage un vrf din stiv;
IF exist vrfuri nemarcate adiacente cu vrful extras
THEN marcheaz-le i introduce-le n stiv;
END

3. SARCINA DE BAZ
1. Elaborai procedura cutrii n adncime ntr-un graf arbitrar;
2. Elaborai un program cu urmtoarele posibiliti:
introducerea grafului n calculator,
parcurgerea grafului n adncime,
vizualizarea rezultatelor la display i imprimant.

Victor Beliu, Indicaii metodice la disciplina Matematica discret n inginerie Chiinu, 1999
Ora 15:11 09/02/159

pag.10

4. NTREBRI DE CONTROL
1.
2.
3.
4.
5.
6.

Definii structurile principale de date: liste, fire de ateptare, stive, arbori.


Care sunt operaiile definite pentru aceste structuri de date?
Care este principiul de organizare a prelucrrii elementelor n firele de ateptare i n stive?
Definii noiunea de parcurgere a grafului n adncime.
Ce fel de structuri de date se vor utiliza n cutarea n adncime?
Exemplificai utilizarea algoritmului de cutare n adncime.
LUCRAREA DE LABORATOR Nr. 3
TEMA: ALGORITMUL DE CUTARE N LRGIME
1. SCOPUL LUCRRII:
Studierea algoritmului de cutare n lrgime;
Elaborarea programului de cutare n lrgime.
2. NOTE DE CURS

Algoritmul de cutare n lrgime


Parcurgerea grafului n lrgime, ca i parcurgerea n adncime, va garanta vizitarea fiecrui
vrf al grafului exact o singur dat, ns principiul va fi altul. Dup vizitarea vrfului iniial,
de la care va ncepe cutarea n lrgime, vor fi vizitate toate vrfurile adiacente cu vrful dat,
apoi toate vrfurile adiacente cu aceste ultime vrfuri .a.m.d. pn vor fi vizitate toate
vrfurile grafului. Evident, este necesar ca graful s fie conex. Aceast modalitate de
parcurgere a grafului (n lrgime sau postordine), care mai este adesea numit parcurgere n
ordine orizontal, realizeaz parcurgerea vrfurilor de la stnga la dreapta, nivel dup nivel.
Algoritmul de mai jos realizeaz parcurgerea n lrgime cu ajutorul a dou fire de ateptare O1
i O2.
Se vor forma dou fire de ateptare vide O1 i O2;
Introduce rdcina n FA O1;
WHILE cel puin unul din firele de ateptare O1 sau O2 nu va fi vid DO
IF O1 nu este vid THEN
BEGIN
fie p vrful din topul FA O1;
viziteaz vrful p eliminndu-l din O1;
viziteaz pe toi fiii lui p n FA O2, ncepnd cu cel mai mare;
END
ELSE
n calitate de O1 se va lua FA O2, care nu este vid,
iar n calitate de O2 se va lua FA vid O1;

Vom nota c procedura parcurgerii grafului n lrgime permite s realizm arborele de cutare
i n acelai timp s construim acest arbore. Cu alte cuvinte, se va rezolva problema
determinrii unei rezolvri sub forma vectorului (a1, a2,...) de lungime necunoscut, dac este
cunoscut c exist o rezolvare finit a problemei.

Victor Beliu, Indicaii metodice la disciplina Matematica discret n inginerie Chiinu, 1999
Ora 15:11 09/02/159

pag.11

Algoritmul pentru cazul general este analogic cu cel pentru un graf n form de arbore cu o
mic modificare care const n aceea c fiecare vrf vizitat va fi marcat pentru a exclude
ciclarea algoritmului.
Algoritmul parcurgerii grafului n lrgime:
Se vor defini dou FA O1 i O2 vide;
Introdu vrful iniial n FA O1 i marcheaz-l;
WHILE FA O1 nu este vid DO
BEGIN
viziteaz vrful din topul FA O1 i elimin-l din FA;
IF exist vrfuri nemarcate adiacente cu vrful dat THEN introdu-le n FA O2;
END

3. SARCINA DE BAZ
1. Elaborai procedura care va realiza algoritmul de parcurgere a grafului n lrgime;
2. Folosind procedurile din lucrrile precedente, elaborai programul care va permite:
introducerea grafului n calculator;
parcurgerea grafului n lrgime;
extragerea datelor la display i printer.
4. NTREBRI DE CONTROL
1.
2.
3.
4.

n ce const parcurgerea arborelui i a grafului n lrgime?


Care este diferena dintre parcurgerea n lrgime a unui arbore i a unui graf arbitrar?
Ce fel de structuri de date se vor utiliza n algoritmul de cutare n lrgime?
Exemplificai algoritmul cutrii n lrgime.
LUCRAREA DE LABORATOR Nr. 4
TEMA: ALGORITMUL DETERMINRII GRAFULUI DE ACOPERIRE
1. SCOPUL LUCRRII:
Studierea algoritmului de determinare a grafului de acoperire i elaborarea
programelor care vor realiza acest algoritm.
2. NOTE DE CURS

Noiune de graf de acoperire


Fie H un subgraf care conine toate vrfurile unui graf arbitrar G. Dac pentru fiecare
component de conexitate a lui G subgraful H va defini un arbore atunci H se va numi graf de
acoperire (scheletul sau carcas) grafului G. Este evident c graful de acoperire exist pentru
oricare graf: eliminnd ciclurile din fiecare component de conexitate, adic eliminnd
muchiile care sunt n plus, vom ajunge la graful de acoperire.
Se numete graf aciclic orice graf care nu conine cicluri. Pentru un graf arbitrar G cu n vrfuri
i m muchii sunt echivalente urmtoarele afirmaii:
1. G este arbore;
2. G este un graf conex i m = n - 1;
3. G este un graf aciclic i m = n - 1;
Victor Beliu, Indicaii metodice la disciplina Matematica discret n inginerie Chiinu, 1999
Ora 15:11 09/02/159

pag.12

4. oricare dou vrfuri distincte (diferite) ale lui G sunt unite printr-un lan simplu care este
unic;
5. G este un graf aciclic cu proprietatea c, dac o pereche oarecare de vrfuri neadiacente
vor fi unite cu o muchie, atunci graful obinut va conine exact un ciclu.
Consecin: numrul de muchii pentru un graf arbitrar G, care va fi necesar a fi eliminate spre
a obine un graf de acoperire nu depinde de ordinea eliminrii lor i este egal cu
m(G)-n(G)+k(G),
unde m(G), n(G) i k(G) sunt numrul de muchii, vrfuri i componente conexe, respectiv.
Numrul s(G) = m(G)-n(G)+ k(G) se numete rang ciclic sau numr ciclomatic al grafului G.
Numrul r(G) = n(G)-k(G) rang cociclomatic sau numr cociclomatic.
Deci,

s(G)+r(G)=m(G).

Este adevrat urmtoarea afirmaie: orice subgraf a unui graf arbitrar G se conine ntr-un
graf de acoperire a grafului G.
Algoritmul de determinare a grafului de acoperire
Exist mai muli algoritmi de determinare a grafului de acoperire. Algoritmul de mai jos nu
este un algoritm-standard, ci este unul elaborat n baz algoritmului de cutare n lrgime.
Esena algoritmului const n aceea c folosind dou fire de ateptare n unul din care sunt
nscrise (pe rnd) numerele vrfurilor adiacente cu vrfurile din cellalt FA (ca i n cazul
cutrii n lrgime), vor fi eliminate muchiile dintre vrfurile unui FA i toate muchiile n afar
de una dintre fiecare vrf al FA curent i vrfurile din FA precedent. n cazul n care ambele
FA vor deveni vide procedura se va termina.
Pentru a nu admite ciclarea i ca s fim siguri c au fost prelucrate toate componentele conexe
se va utiliza marcarea vrfurilor. Dac dup terminarea unui ciclu ordinar nu au mai rmas
vrfuri nemarcate procedura ia sfrit, n caz contrar n calitate de vrf iniial se va lua oricare
din vrfurile nemarcate.
Descrierea algoritmului:
1.
2.
3.
4.
5.
6.
7.
8.
9.

Se vor declara dou FA (FA1 i FA2) vide.


Se va lua n calitate de vrf iniial un vrf arbitrar al grafului.
Se va introduce vrful iniial n firul de ateptare vid FA1 i se va marca acest vrf.
Se vor introduce n FA2 toate vrfurile adiacente cu vrfurile din FA 1 i se vor marca. Dac FA2 este
vid se va trece la p.7, n caz contrar - la p. 4.
Se vor elimina toate muchiile care leag vrfurile din FA2.
Pentru toate vrfurile din FA2 vor fi eliminate toate muchiile n afar de una care leag vrful dat cu
vrfurile din FA1.
Se vor schimba cu numele FA1 i FA2 (FA1 va deveni FA2 i invers).
Dac exist cel puin un vrf nemarcat se va lua n calitate de vrf iniial oricare din acestea i se
va trece la p.1, altfel
STOP.

Graful obinut este graful de acoperire.


3. SARCINA DE BAZ
1. Elaborai organigrama algoritmului i programul procedurii de determinare a grafului de
acoperire cu posibiliti de pornire a procedurii din oricare vrf al grafului.

Victor Beliu, Indicaii metodice la disciplina Matematica discret n inginerie Chiinu, 1999
Ora 15:11 09/02/159

pag.13

2. Utiliznd procedurile de introducere a grafului n memoria CE din lucrarea Nr. 1, elaborai


un program cu urmtoarele faciliti:
introducerea grafului care este dat sub form de matrice de inciden, adiacen sau
list de adiacen;
determinarea grafului de acoperire, pornind de la un vrf arbitrar;
extragerea informaiei la display sau imprimant n oricare din formele numite.
4. NTREBRI DE CONTROL
1. Ce este un graf aciclic i prin ce se deosebete el de un arbore?
2. Definii noiunile de arbore i graf de acoperire.
3. Care vor fi transformrile ce vor fi efectuate ntr-un graf arbitrar pentru a obine graful de
acoperire?
4. Care este esena algoritmului de determinare a grafului de acoperire?
5. Evideniai etapele de baz ale algoritmului de determinare a grafului de acoperire.
LUCRAREA DE LABORATOR Nr. 5
TEMA: ALGORITMI DE DETERMINARE A DRUMULUI MINIM
1. SCOPUL LUCRRII:
Studierea algoritmilor de determinare a drumurilor minime ntr-un graf.
Elaborarea programelor de determinare a drumului minim ntr-un graf ponderat.
2. NOTE DE CURS
Noiune de drum minim
Pentru un graf orientat G = (X,U) se va numi drum un ir de vrfuri D = (x0, x1,..., xr) cu
proprietatea c (x0, x1), (x1, x2),..., (xr-1, xr) aparin lui U, deci sunt arce ale grafului i
extremitatea final a arcului precedent coincide cu extremitatea iniial a arcului urmtor.
Vrfurile x0 i xr se numesc extremitile drumului D. Lungimea unui drum este dat de
numrul de arce pe care le conine. Dac vrfurile x0, x1,..., xr sunt distincte dou cte dou
drumul D este elementar.
Adeseori, fiecrui arc (muchii) i se pune n coresponden un numr real care se numete
ponderea (lungimea) arcului. Lungimea arcului (xi, xj) se va nota w(i,j), iar n cazul n care un
arc este lips ponderea lui va fi considerat foarte mare (pentru calculator cel mai mare numr
pozitiv posibil). n cazul grafurilor cu arce ponderate (grafuri ponderate) se va considera
lungime a unui drum suma ponderilor arcelor care formeaz acest drum. Drumul care unete
dou vrfuri concrete i are lungimea cea mai mic se va numi drum minim iar lungimea
drumului minim vom numi distan. Vom nota distana dintre x i t prin d(x, t), evident,
d(x,x)=0.
Algoritmul lui Ford pentru detrminarea drumului minim
Permite determinarea drumului minim care ncepe cu un vrf iniial xi pn la oricare vrf al
grafului G. Dac prin Lij se va nota ponderea arcului (xi, xj) atunci algoritmul conine urmtorii
pai:
1. Fiecrui vrf xj al grafului G se va ataa un numr foarte mare Hj(). Vrfului iniial i se
va ataa Ho = 0;
Victor Beliu, Indicaii metodice la disciplina Matematica discret n inginerie Chiinu, 1999
Ora 15:11 09/02/159

pag.14

2. Se vor calcula diferenele Hj - Hi pentru fiecare arc (xi, xj). Sunt posibile trei cazuri:
a) Hj - Hi < Lij,
b) Hj - Hi = Lij,
c) Hj - Hi > Lij.
Cazul "c" permite micorarea distanei dintre vrful iniial i xj din care cauz se va realiza
Hj = Hi + Lij.
Pasul 2 se va repeta atta timp ct vor mai exista arce pentru care are loc inegalitatea c.
La terminare, etichetele Hi vor defini distana de la vrful iniial pn la vrful dat xi.
3.

Acest pas presupune stabilirea secvenei de vrfuri care va forma drumul minim. Se va
pleca de la vrful final xj spre cel iniial. Predecesorul lui xj va fi considerat vrful xi
pentru care va avea loc Hj - Hi = Lij. Dac vor exista cteva arce pentru care are loc
aceast relaie se va alege la opiune.

Algoritmul Bellman - Calaba


Permite determinarea drumului minim dintre oricare vrf al grafului pn la un vrf, numit
vrf final.
Etapa iniial presupune ataarea grafului dat G a unei matrice ponderate de adiacen, care se
va forma n conformitate cu urmtoarele:
1. M(i,j) = Lij, dac exist arcul (xi, xj) de pondere Lij;
2. M(i,j) = , unde este un numr foarte mare (de tip ntreg maximal pentru
calculatorul dat), dac arcul (xi, xj) este lips;
3. M(i,j) = 0, dac i = j.
La etapa a doua se va elabora un vector V0 n felul urmtor:
1. V0(i) = Lin, dac exist arcul (xi, xn), unde xn este vrful final pentru care se caut drumul
minim, Lin este ponderea acestui arc;
2. V0(i) = , dac arcul (xi, xn) este lips;
3. V0(i) = 0, dac i = j.
Algoritmul const n calcularea iterativ a vectorului V n conformitate cu urmtorul procedeu:
1. Vk(i) = min{Vk-1; Lij+Vk-1(j)}, unde i = 1, 2,, n - 1, j = 1, 2,..., n; i<>j;
2. Vk(n) = 0.
Cnd se va ajunge la Vk = Vk-1 - STOP.
Componenta cu numrul i a vectorului Vk cu valoarea diferit de zero ne va da valoarea
minim a drumului care leag vrful i cu vrful n.
3. SARCINA DE BAZ
1. Elaborai procedura introducerii unui graf ponderat;
2. Elaborai procedurile determinrii drumului minim;
3. Realizai un program cu urmtoarele funcii:
introducerea grafului ponderat cu posibiliti de analiz sintactic i semantic i de
corectare a informaiei;
Victor Beliu, Indicaii metodice la disciplina Matematica discret n inginerie Chiinu, 1999
Ora 15:11 09/02/159

pag.15

determinarea drumului minim;


extragerea informaiei la display i printer (valoarea drumului minim i succesiunea
vrfurilor care formeaz acest drum).
4. NTREBRI DE CONTROL
1.
2.
3.
4.
5.
6.

Ce se numete graf ponderat?


Definii noiunea de distan.
Descriei etapele principale ale algoritmului Ford.
Care sunt momentele principale n algoritmul Bellman-Calaba?
Prin ce se deosebete algoritmul Ford de algoritmul Bellman-Calaba?
Cum se va stabili succesiunea vrfurilor care formeaz drumul minim?
LUCRAREA DE LABORATOR Nr. 6

TEMA: DETERMINAREA FLUXULUI MAXIM NTR-O REEA DE TRANSPORT


1. SCOPUL LUCRRII:
Studierea noiunilor de baz leagate de reelele de transport;
Programarea algoritmului Ford-Fulkerson pentru determinarea fluxului maxim ntr-o
reea de transport.
2. NOTE DE CURS
Reele de transport
Un graf orientat G = (X, U) se numete reea de transport dac satisface urmtoarele condiii:
a)
b)
c)
d)

exist un vrf unic a din X n care nu intr nici un arc sau d_(a)=0;
exist un vrf unic b din X din care nu iese nici un arc sau d+(a)=0;
G este conex i exist drumuri de la a la b n G;
s-a definit o funcie c: UR astfel nct c(u) 0 pentru orice arc u din U.

Vrful a se numete intrarea reelei, vrful b se numete ieirea reelei, iar c(u) este capacitatea
arcului u.
O funcie f: UR astfel nct f(u) 0 pentru orice arc u se numete flux n reeaua de transport
G cu funcia de capacitate c, care se noteaz G = (X, U, c), dac sunt ndeplinite urmtoarele
dou condiii:
a) Condiia de conservare a fluxului: Pentru orice vrf x diferit de a i b suma fluxurilor
pe arcele care intr n x este egal cu suma fluxurilor pe arcele care ies din x.
b) Condiia de mrginire a fluxului: Exist inegalitatea f(u) c(u) pentru orice arc u U.
Dac f(u) = c(u) arcul se numete saturat. Un drum se va numi saturat dac va conine cel
puin un arc saturat. Fluxul, toate drumurile cruia sunt saturate se va numi flux complet. Cel
mai mare dintre fluxurile complete se numete flux maxim.
Pentru orice mulime de vrfuri A U vom defini o tietur w_(A) = {(x, y) | x A, y A,
(x,yU}, adic mulimea arcelor care intr n mulimea A de vrfuri.
Prin w+(A) vom nota mulimea arcelor care ies din mulimea A de vrfuri.
Victor Beliu, Indicaii metodice la disciplina Matematica discret n inginerie Chiinu, 1999
Ora 15:11 09/02/159

pag.16

Este just afirmaia: suma f(u) pentru u w+(A) este egal cu suma f(u) pentru arcele uw_(A).
Aceast valoare comun se va nota fb.
Algoritmul Ford-Fulkerson
Are loc urmtoarea teorem (Ford-Fulkerson):
Pentru orice reea de transport G = (X, U, c) cu intrarea a i ieirea b valoarea maxim a
fluxului la ieire este egal cu capacitatea minim a unei tieturi, adic:
max fb = min c(w_(A)).
n baza acestei teoreme a fost elaborat urmtorul algoritm de determinare a fluxului maxim
(Ford-Fulkerson) la ieirea b a unei reele de transport G = (X, U, c), unde capacitatea c ia
numai valori ntregi:
1. Se definete fluxul iniial avnd componente nule pe fiecare arc al reelei, adic f(u) = 0
pentru orice arc u U;
2. Se determin lanurile nesaturate de la a la b pe care fluxul poate fi mrit, prin urmtorul
procedeu de etichetare:
a) Se marcheaz intrarea a cu [+];
b) Un vrf x fiind marcat, se va marca:
cu [+x] oricare vrf y nemarcat cu proprietatea c arcul u = (x, y) este nesaturat, adic
f(u)<c(u);
cu [-x] - orice vrf y nemarcat cu proprietatea c arcul u = (x, y) are un flux nenul, adic
f(u)>0.
Dac prin acest procedeu de marcare se eticheteaz ieirea b, atunci fluxul fb obinut la pasul
curent nu este maxim. Se va considera atunci un lan format din vrfurile etichetate (ale cror
etichete au respectiv semnele + sau -) care unete pe a cu b i care poate fi gsit uor urmrind
etichetele vrfurilor sale n sensul de la b ctre a.
Dac acest lan este v, s notm cu v+ mulimea arcelor (x, y), unde marcajul lui y are semnul
+, deci care sunt orientate n sensul de la a ctre b i cu v_ mulimea arcelor (x, y), unde
marcajul lui y are semnul -, deci care sunt orientate n sensul de la b ctre a.
Determinm cantitatea:
e = min {min(c(u) - f(u)), min f(u)}. u v+, u v_
Din modul de etichetare rezult e > 0.
Vom mri cu e fluxul pe fiecare arc u din v+ i vom micora cu e fluxul pe fiecare arc u v_,
obinnd la ieire un flux egal cu fb+e. Se repet aplicarea pasului 2 cu fluxul nou obinut.
Dac prin acest procedeu de etichetare nu putem marca ieirea b, fluxul fb are o valoare
maxim la ieire, iar mulimea arcelor care unesc vrfurile marcate cu vrfurile care nu au
putut fi marcate constituie o tietur de capacitate minim (demonstrai c se va ajunge n
aceast situaie dup un numr finit de pai).
3. SARCINA DE BAZ
Victor Beliu, Indicaii metodice la disciplina Matematica discret n inginerie Chiinu, 1999
Ora 15:11 09/02/159

pag.17

1. Realizai procedura introducerii unei reele de transport cu posibiliti de verificare a


corectitudinii datelor introduse;
2. n conformitate cu algoritmul Ford-Fulkerson elaborai procedura determinrii fluxului
maxim pentru valori ntregi ale capacitilor arcelor;
3. Elaborai programul care va permite ndeplinirea urmtoarelor deziderate:
introducerea reelei de transport n memorie;
determinarea fluxului maxim pentru reeaua concret;
extragerea datelor obinute (fluxul maxim i fluxul fiecrui arc) la display i printer.
4. NTREBRI DE CONTROL
1.
2.
3.
4.
5.
6.
7.
8.

Ce se numete reea de transport?


Formulai noiunile de flux i capacitate.
Ce este un arc saturat? Dar un drum saturat?
Ce se numete flux complet? Ce este un flux maxim?
Definii noiunea de tietur.
Formulai teorema Ford-Fulkerson.
Descriei algoritmul de determinare a fluxului maxim.
Demonstrai c algoritmul se va opri dup un numr finit de pai.
Bibliografie

1.

T. Bnzaru .a. Matematici speciale. Bucureti, E.D.P., 1981

2.

Gh.Mihoc, N.Micu. Teoria probabilitilor i statistica matematica. Bucureti, E.D.P.,


1980

Victor Beliu, Indicaii metodice la disciplina Matematica discret n inginerie Chiinu, 1999
Ora 15:11 09/02/159

pag.18