Documente Academic
Documente Profesional
Documente Cultură
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
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
u3
x4
u1
u5
x2
x7
u4
x3
u6
u8
x6
x5
u7
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
u1
x4
x7
u4
x3
u3
u5
u6
x2
x5
x6
NOTE DE CURS
pag.5
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
2
3
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
Victor Beliu, Indicaii metodice la disciplina Matematica discret n inginerie Chiinu, 1999
Ora 15:11 09/02/159
pag.8
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
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.
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.
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.
Victor Beliu, Indicaii metodice la disciplina Matematica discret n inginerie Chiinu, 1999
Ora 15:11 09/02/159
pag.13
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.
pag.15
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.
2.
Victor Beliu, Indicaii metodice la disciplina Matematica discret n inginerie Chiinu, 1999
Ora 15:11 09/02/159
pag.18