Sunteți pe pagina 1din 49

Lect. dr.

Cristina FLAUT

GRAFURI
SI
COMBINATORICA

SEMINAR

Specializarea MATEMATICA-INFORMATICA, anul III

2010
1

Laborator nr. 1
1) Principil includerii si al excluderii. Fie Ai ( i I = {1, 2, ..., q} ) submultimi ale
q

multimii X. Are loc relatia |

| =

i 1

| A |
i

i 1

| Ai Aj| + + (-1)

q+1

1 i j q

| Ai |.
i 1

2) Fie A si B doua multimi finite de cardinal m, respectiv n. Sa se determine numarul


functiilor ce pot fi definite de la multimea A la multimea B.
3) Fie A si B doua multimi finite de cardinal n, respectiv m. Sa se determine numarul
functiilor injective ce pot fi definite de la multimea A la multimea B.
Indicatie. Numarul functiilor injective f : A B , [m]n = m(m-1)(m-n+1)
4) Fie A si B doua multimi finite de cardinal m, respectiv n. Sa se determine numarul
functiilor bijective ce pot fi definite de la multimea A la multimea B.
5) Fie X si Y doua multimi finite de cardinal n, respectiv m. Sa se determine numarul
functiilor surjective Sn, m ce pot fi definite de la multimea X la multimea Y. f : X Y ,
unde
X = {x1 , x2 , , xn} si Y = {y1 , y2 , , ym} , cu n m.
Demonstratie. Pentru fiecare i {1, 2, , m} sa notam prin Ai multimea functiilor de la X la Y
pentru care yi nu este imaginea nici unui element din X , adica:
Ai = { f : X Y / yi f(x) }
Multimea functiilor surjective f : X Y coincide cu multimea functiilor definite pe X cu
valori in Y care nu apartin nici uneia dintre multimile Ai .
Deci Sn, m = mn - A1 A2 Am , deoarece numarul total de functii
de la X in Y este egal cu mn . Deci:
m

Sn, m = m -

i 1

Ai+

1i j m

Ai Aj-

1 i j k m

Ai Aj Ak+

++ (-1)m Ai
i 1

Dar Ai este de fapt multimea functiilor definite pe X si cu valori in Y { yi } , deci


Ai= (m-1)n, Ai Aj este multimea functiilor definite pe X cu valori in Y \ {yi , yj } si deci
Ai= (m-2)n si in general:
Ai Aj Al= (m-l)n , unde 1 i1 < i2 < il m
m

Se observa ca

= , deoarece f(x) contine cel putin un element din Y , pentru orice functie

i 1

f : X Y . Dar cum putem elimina l elemente din Y in Cmk moduri, fiecare suma

| A | contine C
i

l
m

termeni egali cu (m-l)k .

K {1,2 ,...m} i K
|K | l

In concluzie, avem
Sn, m = mn - Cm1 (m 1) n Cm2 (m 2) n ... ( 1) m1 Cmm1
In cazul in care m = n , Sn, m reprezinta numarul functiilor bijective f : X Y cu |X| = |Y| = n ,
deci Sn, m = n! si vom obtine identitatea:
n! = nn - Cn1 (n 1) n Cn2 (n 2) n ... ( 1) n1 Cnn1
6) Numarul tuturor numerelor prime cu un numar natural n si mai mici decat acesta se
numeste indicatorul lui Euler si se noteaza (n). Daca descompunerea in factori
1
1
a
primi a numarului n este p1a1 ... p q q , atunci (n) n(1 )...(1 ).
p1
pq
Demonstratie. Notam cu Ai multimea numerelor naturale mai mici sau egale cu n
n
n
care sunt multiplii de pi. Obtinem Ai
, Ai A j
, i j, etc. Numerele
pi
pi p j
natural mai mici ca n si prime cu n sunt numerele din multimea X={1,2,,n}si care
nu apartin nici uneia dintre multimile Ai, i{1,2,q}. Deci (n)=naplicam principiul includerii si excluderii.

i{1, 2 ,..., q}

Ai . Apoi

Probleme facultative

7) Un elev are n lei. In fiecare zi el cumpara exact unul din urmatoarele produse: un
covrig care costa 1 leu, o inghetata care costa 2 lei sau o prajitura care costa 2 lei,
pana la epuizarea intregii sume. In cate moduri poate sa cheltuiasca astfel cei n lei?

Demonstratie.

Fie a n numarul de posibilitati cert de problema. In prima zi avem trei

posibilitati: elevul cumpara un covrig, deci exista a n1 posibilitati de a cheltui cei n-1 lei
ramasi. El cumpara o inghetata si deci poate cheltui restul de bani in a n2 moduri si mai
raman de asemenea a n2 moduri de a cheltui restul de bani daca el cumpara o prajitura.
Rezulta ca

a n an1 2a n2 cu valorile initiale a1 1, a2 3 .(Doi covrigi in 2 zile

consecutive, o inghetata
2

x x 2 0,

cu

sau o prajitura in prima zi). Formam ecuatia caracteristica:


solutiile

r1 2, r2 1 .

Solutia

generala

are

forma

2c c 1
a n c1 2 n c2 (1) n , unde c1 si c2 sunt solutiile sistemului: 1 2
. Solutiile
4
c

3
1
2
2
1
1 n1
acestui sistem sunt: c1 , c2 . Deci avem: a n ( 2
(1) n ) .
3
3
3
8) In tara Anciuria, condusa de presedintele Miraflores, s-a apropiat timpul noilor alegeri
prezidentiale. In tara sunt 20 de milioane de alegatori dintre care numai un procent (armata
regulata a Anciuriei) il sustine pe Miraflores. Miraflores, natural, doreste sa fie ales, dar pe
de alta parte el vrea ca alegerile sa para democratice. Iata ce numeste Miraflores ''votare
democratica'': toti alegatorii sunt impartiti in grupe egale, apoi fiecare dintre aceste grupe
se imparte intr-un numar oarecare de grupe egale, apoi acestea se impart din nou in grupe
egale s.a.m.d. ; in cele mai mici grupe se alege reprezentantul grupei - electorul apoi
electorii aleg reprezentantii lor pentru votare in grupele mai mari
s.a.m.d.; in sfarsit, reprezentantii celor mai mari grupe aleg presedintele. Miraflores a impartit
alegatorii asa cum a vrut el si si-a instruit simpartizantii cum sa voteze. Poate el organiza
''alegerile democratice'' astfel incat sa fie ales presedinte? (La egalitate de voturi castiga
opozitia.)

Raspuns. Da, poate.

Inainte de toate sa vedem cum se poate ca in alegerile acestea ''cu mai multe trepte'' sa castige
candidatul pentru care voteaza minoritatea. (In multe tari se voteaza dupa acest sistem.) Cel mai
simplu exemplu care ilustreaza astfel de situatie este reprezentat in figura de mai jos. Aici sunt
noua alegatori - patru din grupa A (in desen, cerculet negru) si cinci din gruparea B (cerculet alb)
- care sunt impartiti in trei grupe de cate trei alegatori, asfel incat in doua grupe castiga cei din A
si deci ca rezultat al acestor alegeri

''in doua trepte'' vafi ales candidatul


sustinut de cei din A, desi numarul
sustinatorilor sai este numai 4/9 din
numarul total al alegatorilor. (Nu e greu
sa se stabileasca faptul ca, la alegerile in
doua trepte cu un numar mai mare de
alegatori, procentul voturilor necesare
pentru alegere poate fi chiar si mai mic,
dar sa fie mai mare de 25%). Este clar ca
la o alegere in trei trepte acest procent
poate fi facut si mai mic. De exemplu,
daca inlocuim in figura de mai sus pe
fiecare alegator printr-o grupa de 100 de
cetateni, astfel incat in grupa de tip B toti sunt din B iar intr-una de tip A, 51 sunt din A si 49 din
B, obtinem un exemplu de situatie in care cei din A reprezinta numai

4 51 17

din numarul
9 100 75

total de alegatori si totusi ei inving.

Sa trecem la rezolvarea problemei. Impartim toti alegatorii in 5 grupe de cate 4 milioane, astfel
incat doua dintre grupe sa fie formate in intregime din adversari ai lui Miraflores
(vom numi aceste grupe de tip B, iar celelalte trei de tip A). Fiecare dintre aceste grupe de
''rangul intai'' le impartim din nou in cinci grupe de rangul al doilea, astfel incat din cele cinci
grupe care formeaza o grupa de tip A de rangul intai trei sa fie din A s.a.m.d. asa cum se vede in
tabelul de mai jos:

Rangul grupei r

Numarul total al 5
grupelor de rang r

52

53

54

55

56

57

24x57

28x57

Cate sunt din A

32

33

34

35

36

37

39

311

Cati oamen sunt 4x106


intr-o grupa de rang
r

8x105 16x104 32x103 64x102 1280

256

16

In cate grupe de 5
rang r+1 se imparte
fiecare grupa de
rang r

16

16

Cate subgrupe de 3
tip A de rang r+1
are o grupa de tip A
de rang r

Este clar ca, in aceasta impartire, pentru victoria lui Miraflores e suficient ca pentru el sa voteze

311
177.147
1

din totalul alegatorilor. Cum armata reprezinta 1% din totalul


2857 20.000.000 100
alegatorilor si ea il sustine pe Miaflores, el poate invinge.

Generalizare.
Se poate incerca sa se rezolve urmatoarea problema mai generala: care este numarul minim de
partizani ai lui Miraflores, astfel ca acesta sa castige ''alegerile democratice'', daca numarul total
de alegatori este N? Desigur ca raspunsul nu depinde numai de marimea numarului N ci si de
modul in care se descompune in factori. Daca N este prim, atunci alegatorii nu pot fi impartiti in
grupe egale (in afara de cazul banal: N grupe de cate un singur om) si pentru victorie este
necesara majoritatea simpla. Sa incercam sa raspundem la aceasta problema pentru un N
oarecare.
Sa consideram o astfel de descompunere a lui N in grupe (de rangul intai, al doilea
s.a.m.d.) astfel incat sa castige Miraflores si numarul partizanilor sai sa fie cel mai mic posibil.
Evident ca se poate considera ca in grupele care voteaza contra lui nu este nici un partizan de al
sau si ca toate grupele de tip A de acelasi rang sunt impartite la fel. Vom folosi notatia [...] 6

''partea intreaga'' ([x] este cel mai mare intreg care nu-l depaseste pe x). Evident ca daca o
anumita grupa de tip A este formata din k grupe de rangul urmator, atunci printre acestea trebuie

sa fie cel putin 1 de tip A. Sa presupunem ca fiecare grupa de rang r(r=1,2,...,m-1) se


2
descompune in k, grupe de rangul urmator, iar grupele de ultimul rang, al m-lea, sunt formate
dintr-un singur om. Atunci pentru victoria grupei A, este necesar sa fie cel putin

k k k
R 1 1 2 1... m 1
2 2 2

voturi pentru A. Problema noastra s-a redus la urmatoarea: sa se descompuna numarul dat N
intr-un produs de factori

k1 , k 2 ,..., k m ,

astfel incat produsul R sa fie minim.

Fie N k1k 2 ...k m aceasta descompunere. Asa cum va rezulta din lema urmatoare, se
poate presupune ca in aceasta descompunere nu sunt factori k de forma k=pq, unde p si q sunt
mai mari decat 2 (daca exista astfel de factori, se poate continua descompunerea fara a mari pe R
).

Lema. Avem pentru orice numere intregi p si q mai mari decat 2.

Demonstratie. Daca p si q sunt ambele pare, inegalitatea se poate scrie


astfel:

p q pq
1,
1 1
2
2 2
p 2q 2 2 pq 4,
pq 2q 2 p 4 4,
p 2q 2 4,
ceea ce este evident, daca p>2 si q>2.

In cazul in care unul dintre numere, de exemplu p este par si celalalt q este impar, avem:
7

p q pq
1,
1 1
2
2 2
p 2q 1 2 pq 4,
pq 2q 2 p 2 0,
p 2q 1 0,

Cazul in care p si q sunt ambele impare se demonstreaza analog. De aici rezulta ca numerele
impare N trebuie descompuse in factori primi ''pana la capat''. Ramane sa analizam situatia
factorilor 2. Putem considera ca in descompunere nu sunt factori de forma 2q, unde q este impar,
intrucat

q 2q
2 1 1.
2 2
Din lema rezulta ca dintre factorii pari este suficient sa ne marginim numai la 2, 4 si 8. Mai
departe, este evident ca 2x2
este mai nefavorabil decat 4, intrucat
2

2
4
1 4 1 3. Este convenabil ca 2x 4 sa-l inlocuim cu 8, intrucat 2x
2
2
3=6>5; 4x 4 este mai bun decat 2x 8 intrucat 3x3=9 si 2x5=10; in sfarsit 4x 4x 4 este mai
putin convenabil decat 8x 8, intrucat 3x 3x 3=27 si 5x 5=25, astfel incat mai mult de doi de 4
nu se pot pastra.
d

Astfel, raspunsul definitiv este: fie N 2 p1 p 2 ... p m , unde m 0, d 0 sunt numere


naturale, p1 , p 2 ,..., p m sunt numere prime impare. Notam
numarul minim de partizani ai lui Miraflores, suficient pentru
victorie este

p1 1 p m 1
...
. Atunci,
2
2

R 2 P, daca d 1, adica N 2 p1 p 2 ... p m ,


R 5 n P, daca d 3n, adica N 8 n p1 p2 ... pm ,
R 3 5 n P, daca d 3n 2, adica N 4 8 n p1 p 2 ... pm ,
R 9 5 n P, daca d 3n 4, adica N 4 2 8 n p1 p 2 ... p m , n numar natural.
In particular, pentru N=20.000.000=28x57=4x82x57 , obtinem R=3x52 x37=164.052.

i)
ii)

9) Fie X o colectie de n obiecte, n 1 , nu neaparat distincte. Daca n a 1, cu


a numar intreg nenegativ, aratati ca are loc cel putin unul din urmatoaeele cazuri:
Cel putin a+1 obiecte sunt identice;
Cel putin a+1 obiecte sunt distincte doua cate doua.

Demonstratie. Daca presupunem ca nu are loc nici i) nici ii), atunci X contine cel mult a
obiecte distincte distincte doua cate doua si fiecare dintre acestea sunt orezente in cel mult a
2

copii, deci X are cel mult a n 1 obiecte, fals.

10) In cate moduri se pot aseza k turnuri pe o tabla de sah cu m linii si n coloane,
astfel incat ele sa nu se poata ataca reciproc.
k

Demonstratie. Cele k linii si k coloane, pe care se gasesc turele, se pot alege in Cn C m


moduri distincte. La intersectia celor k linii si k coloane se formeaza o tabla cu k2 patrate, pe
care cele k ture se pot aseza in k! moduri in pozitii in care nu se pot ataca reciproc.
Intr-adevar, cele k turnuri se gasesc in k coloane diferite, iar turnul din prima coloana
poate fi aranjat in k moduri diferite pe cele k linii, turnul din cea de-a doua coloana poate fi
aranjat in k-1 moduri diferite pe cele k-1 linii diferite de linia pe care se gaseste turnul din
coloana intai, s.a.m.d. Deci numarul total de posibilitati este

k! Cn C m .

11) Fie A o multime formata din 19 numere intregi, distincte doua cate doua, care
apartin progresiei aritmetice 1, 4, 7,....,100. Sa se arate ca exista doi intregi
distincti in A a caror suma este egala cu 104.

Demonstratie. Fiecare din cele 19 numere din A apartin uneia din urmatoarele 18 multimi
disjuncte doua cate doua:
{1}, {52}, {4, 100}, {7, 97}, {10, 94}, ...,{49, 55}.
Deci exista doi intregi distincti din A care apartin uneia din perechile {4, 100}, ...,{49, 55} si
care au suma egala cu 104.

10

Laborator nr. 2.
Nota. Pentru acest laborator, va recomand recapitularea urmatoarelor notiuni: graf
orientat si neorientat, gradul unui varf, drumuri, lanturi, componente tare-conexe si
conexe, matrice de adiacenta. Aceste notiuni le puteti gasi in cursul de Algoritmica
grafurilor, paginile 5-10 si 13-14.

1) Folosind Programele 1, 2 si 3(paginile 6, 7 si 14 din cursul de Algoritmica


grafurilor), determinati, pentru grafurile de mai jos. matricea de adiacenta si
vecinii fiecarui varf:

11

2) Exista un graf cu 10 varfuri pentru care sirul gradelor varfurilor este respectiv:
1, 1, 1, 3, 3, 3, 4, 6, 9?
Demonstratie. Varful de grad 9 trebuie sa fie adiacent cu toate celelalta varfuri ale grafului,
deci si cu varfurile de grad 1. Rezulta ca varful de grad 7 poate fi adiacent cu numai 9-3 = 6
varfuri, contradictie.

3) Sa se arate ca intr.-un graf neorientat, numarul varfurilor de grad impar este par.

4) Sa se arate ca intr-un graf fara circuite nu pot exista drumuri neelementare.

5) Fie d1 d 2 ... d n gradele varfurilor unui graf G si sa presupunem ca

d k k , pentru orice k n d n 1 . Sa se arate ca G este conex.

Demonstratie. Presupunem, prin reducere la absurd ca G nu este conex si fie C1 o


componenta care nu contine varful x n . Daca C1 k , fie xi1 ,..., xik varfurile pe care le
contine, astfel incat 1 i1 ... i k n. Componenta care il contine pe x n contine toate
varfurile adiacente cu x n , deci contine cel putin d n 1 varfuri. Obtinem:

k C1 n (d n 1).
Deoarece k ik , obtinem d k d ik k 1, deoarece toate varfurile adiacente cu xik se
gasesc in in componenta C1 . Contradictie, deoarece din ipoteza avem k n d n 1.
Rezulta ca d k k , ceea ce trebuia demonstrat.

6) Pentru orice graf G cu n varfuri, m muchii


adevarata inegalitatea: p m n .

si p componente conexe este

Demonstratie. Presupunem ca in componenta conexa Ci avem mi muchii si ni varfuri cu

i {1,2,..., p}. Fiecare componenta conexa este un graf conex, deci avem ca mi ni 1 .

12

Adunam aceste inegalitati si obtinem ca m n p, deoarece orice doua componente


conexe nu au varfuri comune.

Probleme facultative
7) Se considera o tabla de sah cu n linii si n coloane, n impar. Poate un cal de pe
tabla de sah, sarind in L, sa treaca odata si numai odata prin toate cele n2 patrate
ale tablei, intorcandu-se in punctul de plecare? (Euler)
Demonstratie. Fie G graful cu n2 varfuri care corespund patratelor tablei de sah, doua
varfuri fiind adiacente daca exista o saritura in L a calului de pe un patrat pe altul. Deoarece
calul sare de pe un patrat de o culoare pe un patrat de alta culoare, rezulta ca acest graf este
bipartit. Deci acest graf nu contine cicluri elementare cu un numar impar de varfuri, deci nu
exista ciclu elementar cu n2 varfuri. Deci, problema nu are solutie.

8) Daca se coloreaza punctele planului cu 3 culori, sa se demonstreze ca vor exista


intotdeauna doua puncte de aceeasi culoare situate la distanta 1.
Demonstratie. Consideram graful de mai jos pentru care toate muchiile au lungimea egala
cu unitatea. Daca presupunem ca
proprietatea nu are loc, sa presupunem
ca A este colorat cu culoarea a, B cu
culoarea b, D cu culoarea c, deci F are
culoarea a. Analog deducem ca G are
culoarea a, deci am obtinut doua puncte
F si G situate la distanta 1 care sunt
colorate cu o aceeasi culoare,
contradictie.

9) Sa se arate ca oricum am colora cu 2 culori punctele planului, va exista


intotdeauna un triunghi echilateral cu toate varfurile de aceeasi culoare, dar
exista colorari cu 2 culori ale punctelor planului pentru care nici un triunghi
echilateral de latura 1 nu are varfurile de aceesi culoare.
13

Demonstratie. Presupunem ca cele doua culori sunt rosu si albastru. Pentru orice colorare
vor exista doua puncte M si N de aceeasi culoare, sa presupunem rosu. Daca mijlocul P al
segmentului MN este rosu, am gasit trei puncte coliniare echidistante de aceeasi culoare. In
caz contrar, sa presupunem ca P este albastru. Daca simetricul N1 al lui N fata de M este
rosu, punctele N1, M, N sunt rosii. Daca N1 este albastru, vom considera simetricul M1 al lui
M fata de N. Daca M1 este rosu, punctele cautate sunt M, N, M1. In caz contrar M1 este
albastru si deci N1, P, M1 sunt trei puncte coliniare si echidistante albastre.
Deci oricum am colora punctele
planului cu rosu si cu albastru, vor exista
trei puncte coliniare si echidistante de
aceeasi culoare, sa presupunem rosu. Sa
notam punctele cu A, B, C. Construim
triunghiul echilateral AFC astfel incat B,
E, D sa fie mijloacele latuilor. Daca F
este rosu, AFC este triunghiul cautat. In
caz contrar F este albastru. Daca D si E
sunt albastre, triunghiul echilateral DEF
are varfurile albastre, deci el este cel
cautat. In caz contrar, cel putin unul din
punctele D si E este rosu. Sa presupunem
ca D este rosu, deci triunghiul ABD are proprietatile cerute. Pentru a arata ca exista colorari
cu 2 culori ale punctelor planului pentru care nici un triunghi echilateral de latura 1 nu are
varfurile de aceeasi culoare, om considera planul raportat la un sistem ortogonal de axe xOy.

3
k cu k intreg partitioneaza planul intr-o retea de benzi paralele. Vom
2
3
3
considera ca banda marginita de dreptele
k si
(k 1) contine toate punctele
2
2
3
3
dreptei
k sin u contine nici un punct al dreptei
(k 1) . Vom colora acum punctele
2
2
Dreptele y

planului cu rosu si albastru, astfel incat toate punctele unei benzi sa aiba aceeasi culoare, iar
oricare doua benzi vecine sa fie de culori diferite. Deoarece fiecare banda are latimea de

3
, egala cu inaltimea unui triunghi echilateral de latura 1, rezulta ca orice triunghi
2
echilateral de latura 1 are varfurile in doua benzi vecine, deci nu are varfurile de aceeasi
culoare.

14

10) Sa se arate ca oricum am colora cu 2 culori punctele planului, va exista


intotdeauna un triunghi echilateral de latura 1 sau
de aceeasi culoare.

3 care are toate varfurile

Demonstratie. Daca toate punctele planului au aceeasi culoare, proprietatea este evidenta.
In caz contrar, vor exista doua puncte A, B la distanta 2, colorate diferit. Intr-adevar, oricare
doua puncte ale planului care au culori diferite pot fi unite printr-o linie poligonala cu toate
laturile de lungime 2 si una
din aceste laturi trebuie sa
aiba extremitatile de culori
diferite. In figura alaturata,
presupunem
ca

AC=CB=AD=DC=AE=EC=1, DE=BD=BE= 3 . Fie A de culoare rosie, B de culoare


albastra. Putem presupune ca C este rosu, in caz contrar facand rationamentul pentru
simetricele punctelor D si E fata de mediatoarea segmentului AB. Daca D sau E este rosu,
obtinem un triunghi echilateral monocromatic de latura 1. Daca D si E sunt albastre,
triunghiul echilateral BED are toate varfurile albastre si latura egala cu

3.

11) Oricum am alege trei numere intregi distincte doua cate doua, exista cel putin
3

doua dintre acestea, fie a, b, cu a b , astfel incat a b ab sa fie multiplu de


10.
Demonstratie. Sa notam cu E(a, b)=ab(a-b)(a+b)=a3b-ab3. Daca unul din numerele a sau b
este nul obtinem ca E(a, b)=0, care este multiplu de 10. Deoarece E(-a, b)=E(a, -b)=-E(a, b)
si E(-a, -b)=E(a, b), putem deci considera numai cazul cand cele trei numere sunt intregi si
pozitive. Pentru orice a si b se deduce imediat ca E(a, b) este un numar par, deoarece daca a
si b sunt ambele impare, atat suma cat si diferenta lor sunt pare. Mai trebuie aratat ca din
orice 3 numere pozitive diferite intre ele, exista doua distincte a si b, astfel incat E(a, b) sa fie
15

multiplu de 5. Daca unul din cele trei numere este multiplu de 5, problema este rezo-lvata. Sa
presupunem contrariul, deci ultima cifra a celor trei numere apartine multi-mii {1, 2, 3, 4, 6,
7, 8, 9}. Vom arata ca oricum am alege trei numere distincte din aceasta multime, exista doua
cu suma sau diferenta multiplu de 5.
Sa consideram gra-ful cu 8 varfuri, din figura alaturata, pentru care doua varfuri i si j
sunt adiacente daca si numai daca i+j sau i-j este multiplu de 5. Acest graf consta din doua
subgrafuri complete C1={1, 4,
6, 9} si C2 ={2,3,7,8}. Deci
oricum am alege trei varfuri
distincte ale acestui graf, exista
cel putin doua care fac perte
dintr-o aceeasi componenta
conexa a lui G, care au deci
suma sau diferenta multiplu de
5, ceea ce demonstreaza
proprietatea.
(I. Tomescu, baraj II, O. I. M.,
1980)

16

Laborator nr. 3.

Nota. Pentru acest seminar, va recomand recapitularea urmatoarelor notiuni:


componente tare-conexe si conexe, matricea drumurilor unui graf, algoritmul RoyWarshall si algoritmul Malgrange. Aceste notiuni le puteti gasi in cursul de
Algoritmica grafurilor, paginile 20-34.

1) Folosind algoritmul Roy-Warshall, determinati:


a) Matricea drumurilor;
b) Componentele tare-conexe pentru grafurile cu matricele de adiacenta date
in tabelele de mai jos:
i)

ii)
17

Solutie. i) {2,3,6}, {1,4}, {5,7}. ii) {1,3,4}, {2}, {5,6,8}, {7}.

2) Folosind algoritmul lui Malgrange, determinati componentele tare conexe pentru grafurile:

18

i)
0

ii)

19

Solutie. i) {1}, {2,3}, {5,6,8,9}, {7}. ii) {0,1,4}, {2,3},{5,6,8,9},{7}.


3) Verificati rezultatele obtinute cu ajutorul calculatorului, folosind algoritmii implementati in
C++( cursul de Algoritmica grafurilor- Program 4, la pagina 22 si Program 5, la pagina 26).

Proiect 1. Implementati in C++/Java algoritmul Malgrange. Termen de


predare a proiectului: saptamana 12/13 din semestrul 1.

20

Laborator nr. 4.

Nota. Pentru acest laborator, va recomand recapitularea urmatoarelor notiuni:


matricea distantelor directe intr-un graf, algoritmul Roy-Floyd. Aceste notiuni le
puteti gasi in cursul de Algoritmica grafurilor, paginile 35-44.

1) Sa se determine distanta si drumurile minime intre varfurile 0 si 5, folosind algoritmul RoyFloyd.

Solutie. Se foloseste algoritmul Roy-Floyd. Distanta minima este 10. Un drum minim este
{0,1,2,3,4,5}.
2) Sa se determine distanta si drumurile minime dintre varful 0 si varful 6 pentru graful de mai
jos, folosind algoritmul Roy-Floyd .

21

Solutie. Se foloseste algoritmul Roy-Floyd. Distanta minima este 6 si se atinge pentru drumul
A={0,1,4,6}.

3)
Sa se determine distanta si drumurile minime dintre varful 0 si varful 5 pentru graful de
mai jos, folosind algoritmul Roy-Floyd.

4) Verificati rezultatele obtinute si cu ajutorul calculatorului, folosind algoritmul implementat in


C++( cursul de Algoritmica grafurilor-Program 6, pag37).

Proiect 2. Implementati in C++/Java algoritmul Roy-Floyd, varianta


maxima. Termen de predare a proiectului: saptamana 12/13 din semestrul 1.

22

Laborator nr. 5.

Nota. Pentru acest laborator, va recomand recapitularea urmatoarelor notiuni:


matricea distantelor directe intr-un graf, algoritmii Dantzing 1 si Dantzing 2. Aceste
notiuni le puteti gasi in cursul de Algoritmica grafurilor, paginile 45-47.

1) Sa se determine distanta minima intre varfurile 0 si 5, folosind algoritmul Dantzing 1.

Solutie. Distanta minima este 10.

2) Sa se determine distanta minima intre varfurile 0 si 5, folosind algoritmul Dantzing 2, pentru


graful de la exercitiul 1.

3) Sa se determine distanta minimea dintre varful 0 si varful 7, pentru graful de mai jos, folosind
algoritmul Dantzing 2.

23

Solutie. Distanta minima este 11.


4) Verificati rezultatele obtinute si cu ajutorul calculatorului, folosind algoritmul implementat in
C++( cursul de Algoritmica grafurilor-Program 6, pag37).

Proiect 3. Implementati in C++/Java algoritmii Dantzing 1 si 2. Termen de


predare a proiectului: saptamana 12/13 din semestrul 1.

24

Laborator nr. 6.
Nota. Pentru acest laborator, va recomand recapitularea urmatoarelor notiuni:
matricea distantelor directe intr-un graf, algoritmul lui Yen. Aceste notiuni le puteti
gasi in cursul de Algoritmica grafurilor, paginile 47-51.
1) Dintr-o harta a unui judet, o firma de constructii drumuri si poduri si-a extras o
configuratie cuprinznd 9 localitati si soselele intermediare dintre aceste localitati. Pentru
a se construe un drum asfaltat intre localitatile 0 si 8, s-a facut un studiu, in functie de
distanta dintre localitati, numarul podurilor ce vor fi construite, cheltuielile cu materialele
de constructii, etc., on urma caruia s-a stabilit un prt mediu pentru fiecare sosea
intermediara., prt ce este trecut pe fiecare arc (i, j). Se cere sa se intocmeasca un proiect
pentru asfaltarea unei sosele intre localitatile 0 si 8, astfel incat cheltuielile necesare sa fie
minime, iar drumul sa treaca prin localitatea 5. In cazul in care exista mai multe rute
pentru care costul total este acelasi, exista vreo ruta pentru care se manifesta un interes
mai mare?

Solutie. Folosim algorimul lui Yen. Valoarea minima este 19, iar drumurile minime sunt:
A={0,1,5,6,7,8}, B={0,1,6,7,8}, C={0,1,5,7,8}. A si C trec prin localitatea 5. Este de preferat A,
pentru ca trece prin mai multe localitati.
2) Sa se determine distanta si drumurile minime dintre varful 1 si varful 9, pentru graful de mai
jos, folosind algoritmul lui Yen.

25

Solutie. Distanta minima este 7 si un drum minim este {1, 5, 7, 9}.


3) Sa se determine distanta si drumurile minime dintre varful 0 si varful 7, pentru graful de mai
jos, folosind algoritmul lui Yen.

Solutie. Distanta minima este 8 si se atinge pentru drumurile A={0,2,5,3,7} si B={0, 2, 3, 7}.
4)Verificati rezultatele obtinute si cu ajutorul calculatorului, folosind algoritmul implementat in
C++( cursul de Algoritmica grafurilor-Program 6, pag37).

Proiect 4. Implementati in C++/Java algoritmul Yen. Termen de predare a


proiectului: saptamana 12/13 din semestrul 1.
26

Laborator nr. 7.
Nota. Pentru acest laborator, va recomand recapitularea urmatoarelor notiuni:
matricea distantelor directe intr-un graf, algoritmul Bellman-Kalaba( varianta minima
si maxima). Aceste notiuni le puteti gasi in cursul de Algoritmica grafurilor,
paginile 51-54.

1) Sa se determine distanta si drumurile minime dintre varful 0 si varful 7, pentru graful de mai
jos, folosind algoritmul Bellman-Kalaba, varianta minima.

Solutie. Distanta minima este 17 si se atinge pentru drumul A={0,2,3,4,6,7}.

2) Un jucator de tennis, care participa la castigarea unui premiu, trebuie sa participle la un


numar de turnee de tennis de diferite categorii cotate fiecare cu cate un numar diferit de puncte.
Posibilitatea de a participa dupa un turneu din localitatea k la un alt turneu din localitatea j este
indicate in graful de mai jos. Un turneu castigat in localitatea j adauga la punctajul general un
numar de puncte indicat printr-un numar atasat varfului j. Sa se afle numarul si ordinea turneelor
care trebuie castigate de un jucator, pentru a obtine punctaj general maxim. Participarea
jucatorilor la turneul organizat in localitatea 8 este obligatoriu.

27

Solutie. Folosim algoritmul Bellman-Kalaba, varianta maxima. Valoarea maxima este 25 si se


atinge pentru drumul A={0,1,2,4,7,6,8}.
3)Sa se determine distanta si drumurile maxime dintre varful 1 si varful 8, pentru graful de mai
jos, folosind algoritmul Bellman-Kalaba, varianta maxima.

Solutie. Valoarea maxima este 30 si se atinge pentru drumul A={1,2,3,7,5,6,8}.

5)
Sa se determine distanta si drumurile maxime dintre varful 1 si varful 8, pentru graful de
mai jos, folosind algoritmul Bellman-Kalaba, variant maxima.

28

Solutie. Valoarea maxima este 20 si se atinge pentru drumul A={1,2,3,4,5,8}.

6)
Sa se determine distanta si drumurile maxime dintre varful 0 si varful 8, pentru graful de
mai jos, folosind algoritmul Bellman-Kalaba, varianta maxima.

Solutie. Valoarea maxima este 59 si se atinge pentru drumul A={0,3,2,4,5,6,7,8}.

7)Verificati rezultatele obtinute si cu ajutorul calculatorului, folosind algoritmul implementat in


C++( cursul de Algoritmica grafurilor-Program 6, pag37).

Proiect 5. Implementati in C++/Java algoritmul Bellman-Kalaba, varianta


minima si maxima. Termen de predare a proiectului: saptamana 12/13 din
semestrul 1.
29

Laborator nr. 8.
Nota. Pentru acest laborator, va recomand recapitularea urmatoarelor notiuni: Grafuri
Euleriene si Hamiltoniene, determinarea unui drum Hamiltonian intr-un graf orientat,
algoritmul lui Fleury pentru trasarea unui ciclu Eulerian, determinarea numarului
minim de lanturi cu care poate fi acoperita o figura. Aceste notiuni le puteti gasi in
cursul de Algoritmica grafurilor, paginile 60-65 si 69-71.

1) Fie 5 produse Pi (i 1, ,5) , care vor trebui prelucrate corespunztor unei relaii de ordine
stabilite datorit necesitilor produciei. Relaiile de ordine sunt urmtoarele:
- produsul P2 precede produsele P1 , P4 i P5 ;
- produsul P3 precede produsele P2 i P4 ;
- produsul P4 precede produsele P1 i P5 ;
- produsul P5 precede produsele P1 .
Se cere s se cerceteze dac e posibil prelucrarea produselor innd cont de relaiile de
ordine stabilite; dac acest lucru este posibil, se cere s se determine succesiunea n care s
poate face prelucrarea.

Figura 1.

Rezolvare.

Vom defini un graf G, ca n Figura 1, care are 5 vrfuri corespunztoare produselor date.
Problema va reveni la a determina un drum hamiltonian n acest graf care nu are circuite.
Matricea terminal corespunztoare este:

30

P1 P2 P3 P4 P5
0
1
T 1
1
1

0
0
1
0
0

0
0
0
0
0

0
1
1
0
0

0
1
1
1
0

P1
P2
P3
P4
P5

N N 1
, graful G are un
2
drum hamiltonian; succesiunea vrfurilor grafului, dat de ordinea descresctoare a puterilor de
atingere, determin drumul hamiltonian d H P3 , P2 , P4 , P5 , P1 , care ne d i ordinea de

Deoarece elementelor diferite de zero din matricea T este 10

prelucrare a produselor.

Exercitiul 2. Prelucrarea unui produs oarecare impune s treac prin 6 secii folosind benzile
de transport existente ntre aceste secii benzi ce sunt reprezentate prin arcele grafului G din
Figura 2

Figura 2.

Presupunnd c nu exist o ordine preferenial n prelucrarea produsului n cele 6 secii, s se


cerceteze dac sistemul de benzi existente poate asigura transportul produsului prin cele 6 secii
existente; dac acest lucru nu se poate realiza, care este numrul minim de benzi ce vor trebuie
construite, astfel nct problema transportului n cele 6 secii s fie posibil.

31

Rezolvare.
i aceast problem va reveni la cercetarea drumurilor hamiltoniene pentru graful considerat.
Din matricea drumurilor
1 2 3 4 5 6

0
1
1
T
1
1
0

0
0
0
0
0
0

0
1
0
1
0
0

0
0
0
0
0
0

0
0
0
1
0
0

0
1
0
1
1
0

1
2
3
4
5
6

se observ c condiia din problema 2. nu este ndeplinit, deci asigurarea transportului cu


numrul existent de benzi nu se poate face .
Dac n triangularizarea matricei T vom alege o asemenea ordine nct numrul
zerourilor care se aeaz imediat deasupra diagonalei principale s fie ct mai mic (alegnd
dintre liniile cu aceeai putere de atingere cele corespunztoare coloanelor cu mai puine
zerouri), vom obine matricea T ' :
4 5

0
0
0
T'
0
0
0

1
0
0
0
0
0

2 6 3 1

0
0
0
0
0
0

1
1
1
0
0
0

1
0
1
0
0
0

1
1
1
0
1
0

4
5
2
6
3
1

Adugarea acelor 5,2 i 6,3 , ceea ce corespunde la instalarea benzilor ntre seciile

5,2 i 6,3 , asigu transportul produsului ntre cele 6 secii, care va trebui organizat n ordinea:
4,5,2,6,3,1 .

32

3) Fie graful G reprezentat n Figura 3.

Figura 3.

Folosind descompunerea grafului G n componente tare conexe, s se determine drumurile


hamiltoniene existente n graful dat G.
Rezolvare.
Graful G admite componentele tare conexe: C 1 1,3,4, C 2 2, C 5 5,6,8 i

C 7 7 a cror ordine a fost stabilit de succesiunea vrfurilor din drumul hamiltonian al


grafului condensat, determinat de matricea:
C 1 C 2 C 5 C 7

B*

0
0
0
0

1
0
0
0

1
1
0
0

1
1
1
0

C 1
C 2
C 5
C 7

Scriind drumurile hamiltoniene pentru fiecare component tare conex, se obin


urmtoarele drumuri hamiltoniene pentru graful G:
1 3 4 2 5 6 8 7 ,

3
3
33

4 1 2 5 6 8 7 ,

1 3 2 5 6 8 7 ,

4 1 2 6 8 5 7 , 4 1 3 2 6 8 5 7 .

3 4 2 6 8 5 7 ,

Problemele referitoare la figurile de desenat dintr-o singura trasatura de condei fara a


ridica de pe hartie creionul si fara a reveni pe traseul unei linii desenate anterior, pot fi
asimilate problemei podurilor de la Knigsberg. Intr-adevar, orice figura desenata in plan
poate fi asemanata cu un numar de regiuni legate intre ele prin poduri, ca la Knigsberg.
Nodurile, adica punctele, in care concura mai multe linii, simbolizeaza regiunile, iar
liniile simbolizeaza podurile.
Din cele de mai sus, putem spune dinainte solutia, fara a mai face incercari, doar
examinand desenul:
-

7)

Daca traseul se poate face dintr-o singura trasatura de condei;


Daca se poate, de unde se incepe;
Daca traseul nu se poate face dintr-o singura trasatura de condei, din cate se poate
face.

Din cate trasaturi de condei se poate realiza figura alturata?

Raspuns. Avem 5 noduri, unul par si 4 impare. Deci desnul se poate realiza numai din

4
2 trasaturi de condei.
2
8)

Tabla de sah se poate desena dintr-o singura trasatura de condei? Se face abstractie de
faptul ca are doua culori.

Raspuns. In interior tabla de sah are 7x7=49 noduri pare, care nu excul posibilitatea unei solutii,
oricat de mare ar fi numarul lor. Colturile sunt noduri pare, sau nici nu sunt noduri, deoarece in
fiecare colt se intalnesc numai cate doua linii, sau, mai bine zis, prin fiecare colt trece cate o
singura linie franta. Nodurile periferice, in afara de colturi, in numar de 4x7=28, sunt toate
impare. Deci desenul se poate realiza numai din

34

28
14 trasaturi.
2

9) Din cate trasaturi de condei pot fi desenate figurile de mai jos?

Proiect 6. Implementati in C++/Java algoritmul Fleury si algoritmul de


determinare a unui drum Hamiltonian intr-un graf orientat. Termen de predare a
proiectului: saptamana 12/13 din semestrul 1.

35

Laborator nr. 9.
Nota. Pentru acest laborator, va recomand recapitularea urmatoarelor notiuni: retea de
transport, flux complet, flux maxim, algoritmul Ford-Fulkerson( varianta maximaprimul procedeu de etichetare). Aceste notiuni le puteti gasi in cursul de Algoritmica
grafurilor, paginile 72-76.

1) Determinati un flux nenul compatibil cu reteaua de transport de mai jos in care fluxul initial
este nul.

2) In portul 0 se gasesc 35 vapoare ce trebuie sa se deplaseze in portul 9. Deplasarea celor


35 de vapoare, dintr-un port in altul, se face in etape, astfel incat in prima etapa trebuie sa
ajunga cat mai multe dintre ele in portul 9. In drumul lor, vapoarele trebuie sa mai faca
cate o escala in alte porturi intermediare 2, 3,,8. Conditiile de primire si aprovizionare
fac sa existe o limitare a rutelor folosite. Capacitatile existente sunt trecute pe arcele
retelei. Sa se determine un plan optim de transport, astfel incat, in prima etapa sa plece
cat mai multe vapoare in portul 9.
Solutie. Se aplica algoritmul Ford-Fulkerson, varianta maxima. Vom aplica primul
procedeu de etichetare. Obtinem fluxul maxim 28.

36

3) Sa se determine fluxul maxim care traverseaza reteaua de mai jos, folosind algoritmul
Ford-Fulkerson, varianta maxima-primul procedeu de etichetare.

Solutie. Fluxul maxim este 19.

4) Verificati rezultatele obtinute si cu ajutorul calculatorului, folosind algoritmul


implementat in C++( cursul de Algoritmica grafurilor- Program 7, pag. 80).

Proiect 7. Implementati in C++/Java algoritmul Ford-Fulkerson varianta


maxima-al doilea procedeu de etichetare. Termen de predare a proiectului:
saptamana 12/13 din semestrul 1.

37

Laborator nr. 10.


Nota. Pentru acest laborator, va recomand recapitularea urmatoarelor notiuni: retea de
transport, flux complet, flux maxim, flux minim, algoritmul Ford-Fulkerson( varianta
maxima- al doilea procedeu de etichetare si varianta minima). Aceste notiuni le
puteti gasi in cursul de Algoritmica grafurilor, paginile 76-80 si 85-86.

1) Folosind algoritmul Ford-Fulkerson(varianta maxima- al doilea procedeu de etichetare),


sa se determine valoarea fluxului maxim care traverseaza reteau de transport de mai jos.

2) Intre sapte puncte ale unei ferme agricole, exista o retea de canale reprezentata in graful
de mai jos, unde pe fiecare arc este trecut debitul maxim ce poate strabate canalul
corespunzator. Stiind ca apa porneste din punctual zero si in punctual 6 exista un lot care
are cea mai mere nevoie de apa, se cere sa se determine modul in care trebuie folosita
reteaua de canale, astfel incat, in punctul 6 sa ajunga un debit maxim.

38

Indicatie. Se foloseste algoritmul Ford-Fulkerson(varianta maxima- al doilea procedeu de


etichetare).
3) Folosind algoritmul Ford-Fulkerson(varianta minima), sa se determine valoarea fluxului
maxim care traverseaza reteau de transport de mai jos.

4) Verificati rezultatele obtinute si cu ajutorul calculatorului, folosind algoritmul


implementat in C++( cursul de Algoritmica grafurilor -Program 7, pag. 80).

Proiect 8. Implementati in C++/Java algoritmul Ford-Fulkerson varianta


minima. Termen de predare a proiectului: saptamana 12/13 din semestrul 1.

39

Laborator nr. 11.


Nota. Pentru acest laborator, va recomand recapitularea urmatoarelor notiuni: arbori,
arbore partial de cost minim, algoritmii Kruskal si Prim. Aceste notiuni le puteti gasi
in cursul de Algoritmica grafurilor, paginile 87-93.

1) Intr-o zona muntoasa, in localitatea 1 exista un emitator care trebuie legat prin
radio-relee de localitatile 2, 3,,9. Din anumite motive, legaturile directe intre
toate perechile de localitati nu sunt posible. Costurile tuturor legaturilor posibile
sunt date in tabelul de mai jos. Sa se determine numarul minim de legaturi directe
astfel incat sa avem legatura intre toate localitatile.
1

1 0

2 8

3 1

4 2

5 5

6 1

8 7

Indicatie. Se ataseaza un graf neorientat tabelului de mai sus si se foloseste algoritmul Prim
sau Kruskal.
2) Folositi ambii algoritmi, Prim si Kruskal, pentru exercitiul 1 si apoi verificati
rezultatul cu ajutorul calculatorului, folosind Programul 8 din cursul de
Algoritmica grafurilor, pagina 91.

40

Proiect 9. Implementati in C++/Java algoritmul Kruskal. Termen de


predare a proiectului: saptamana 12/13 din semestrul 1.

41

Laborator nr. 12.

Nota. Pentru acest laborator, va recomand recapitularea urmatoarelor notiuni:


parcurgerea arborilor, organizarea unei multimi sub forma unei gramezi, evaluarea
expresiilor algebrice, formele infix, prefix, postfix. Aceste notiuni le puteti gasi in
cursul de Algoritmica grafurilor, paginile 93-102.
1) Sa da arborele binar asociat unei expresii algebrice:

a) Sa se scrie expresia algebrica din care provine;


b) Forma infix;
c) Forma postfix;
d) Forma prefix;
2) Pentru fiecare dintre expresiile:
a) ((x-y)*z+(y-w))*x;
b) (x+y)*(x+z);
c) ((((a*x+b)*x+c)*x+d)*x+e)*x+f,
sa se determine: arborele asociat, forma prefix, forma infix, forma prefix.
3) Convertiti expresia *-/+ab**ccc*de/+fgh din prefix in infix si postfix.
Determinati si arborele asociat acestei expresii algebrice.
4) Organizati ca o gramada urmatoarea multime:
{21,14,9,8,3,6,6,5,21,18,18,16,5,4,3}. Introduceti elemental 13 in gramada
42

formata, dupa care scoateti primul element din noua gramada, organizand, din
nou, multimea ramasa sub forma de gramada.
5) Pentru verificarea rezultatului de la exercitiul 4, folositi calculatorul, utilizand
Programul 9 de la pagina 96 din cursul de Algoritmica grafurilor.

Proiect 9. Implementati in C++/Java algoritmii de determinare a


minimului/maximului intr-o multime si de introducere/scoatere a unui element
dintr-o multime. Termen de predare a proiectului: saptamana 13 din semestrul
1.

43

Laborator nr. 13.


Nota. Pentru acest laborator, va recomand recapitularea urmatoarelor notiuni:
numarul cromatic al unui graf, algoritmul lui Zykov de determinare a numarului
cromatic al unui graf. Aceste notiuni le puteti gasi in cursul de Algoritmica
grafurilor, paginile 103-109.

1) Un graf se numeste bipartit daca exista o partitie a multimii varfurilor X A B


astfel incat orice muchie a grafului sa aiba o extremitate in A si alta in B. Sa se arate
ca un graf G este bipartit daca si numai daca orice ciclu elementar al lui G are un
numar par de varfuri.
Demonstratie.

Orice

ciclu

elementar

din

este

de

forma

{a1 , b1 , a 2 , b2 ,..., a k , bk , a1}, cu a i A, bi B, i {1,2,..., k }. Lungimea acestui


ciclu este un numar par.
Presupunem ca orice ciclu elementar al grafului are un numar par de varfuri. Vom
colora cu doua culori varfurile lui G astfel incat oricare doua varfuri unite printr-o muchie sa
aiba culori diferite astfel: coloram pe x1 cu culoarea a, varfurile adiacente cu x1 le coloram
cu culoarea r, varfurile adiacente cu varfurile colorate cu r vor fi colorate cu a, etc. In acest
mod nici un varf din componenta conexa care-l contine pe x1 nu va fi colorat odata cu a si
odata cu r, ceea ce este contradictoriu.
Intr-adevar, presupunem ca varful y este colorat de-a lungul unui lant L1 { x1 , v1 ,..., v k , y}
de lungime para cu culoarea a si de-a lungul altu i lant

L2 {x1 , w1 ,..., wk , y} de

lungime impara cu culoarea r. Daca L1 si L2 nu au in comun decat extremitatile, reuniunea


muchiilor lui

L1 si L2 formeaza un ciclu elementar cu un numar impar de muchii,

contradictie. Presupunem ca L1 si L2 au varfuri comune. Rezulta ca reuniunea muchiilor


lui L1 si L2 genereaza un subgraf partial al lui G format din lanturi si cicluri. Demonstram
prin inductie dupa numarul de muchii ale lui L1 ca din conditia ca G sa nu contina cicluri
elementare impare se deduce ca lungimile lui L1 si L2 trebuie sa aiba aceeasi paritate. Fie
44

l1 lungimea lantului L1 si l 2 lungimea lantului L2 . Daca l1 =1 si l2 este un numar par,


rezulta ca ciclul elementar format din muchia lui

L1 si muchiile lui

L2 este impar,

contradictie. Rezulta l2 impar. Presupunem ca proprietatea este adevarata pentru oricare


doua lanturi L1 si L2 de forma indicata astfel incat l1 t si fie L1 si L2 doua lanturi cu
aceleasi extremtati astfel incat l1 t 1.
Am presupus ca L1 si L2 mai au varful z in comun, diferit de x1 si y . Fie L '1 si L ' 2
sublanturile lui L1 si L2 cuprinse intre x1 si z , cu l '1 , l ' 2 lungimile lor si cu L ' '1 si L ' ' 2
sublanturile lui L1 si L2 cuprinse intre z si y, cu l ' '1 , l ' ' 2 lungimile lor. Deoarece l '1 t
rezulta, din ipoteza de inductie, ca l '1 , l ' 2 au aceeasi paritate. Schimband rolul lui x1 cu z ,
deoarece l ' '1 t rezulta ca

l ' '1 , l ' ' 2 au aceesi paritate. Deoarece

l1 l '1 l ' '1 si

l 2 l ' 2 l ' ' 2 , rezulta ca l1 si l2 au aceeasi paritate. Deci varfurile din componenta conexa
care-l contine pe x1 pot fi colorate in acest mod cu doua culori. Continuam procedeul
pentru toate componentele conexe ale grafului si obtinem o colorare cu doua culori a si r a
vatfurilor lui G astfel incat oricare doua varfuri adiacente sa aiba culori diferite. Rezulta ca
G este bipartit.

2) Folosind algoritmul lui Zykov, sa se determine numarul minim de culori cu care poate
fi colorata figura de mai jos, astfel incat doua zone vecine sa fie colorate diferit.

45

3) Determinati numarul cromatic al grafului de mai jos, folosind algoritmul lui Zykov.

46

Laborator nr. 14.


Nota. In acest ultim laborator, vom face recapitulare finala, sub forma unui test.
Acest test poate fi considerat ca model de test pentru examen.
TEST
I) Sa se determine fluxul maxim in reteaua de mai jos. Pe arce sunt trecute capacitatile.

II) La acest subiect, se va face doar una dintre problemele de mai jos.
1) Sa se determine distanta si drumurile minime dintre varful 0 si varful 7, pentru graful de mai
jos, folosind unul dintre algoritmii cunoscuti. Descrieti, in prealabil, algoritmul ales.

Solutie. Distanta minima este 11 si se atinge pentru drumurile A={0,4,3,5,6,7}, B={1, 4, 5, 7},
C={1, 3, 7}, D={1, 2, 7}.
2)Sa se determine distanta si drumurile maxime dintre varful 0 si varful 5, pentru graful de mai
jos.

47

Solutie. Valoarea maxima este 35 si se atinge pentru drumul A={0,1,2,4,3,5}.

III) 1) Se considera un graf conex, G=(X,U) care are atasat pentru fiecare muchie existenta o
valoare pozitiva, X={x1,,xn}. Se determina recursiv un subgraf G=(X,U) al grafului G
astfel:
Pasul 1: Subgraful G=(X1, U1), X1={x1}, U1=vida;
Pasul i: Subgrafului G=(Xi-1, Ui-1), construit la pasul anterior, i se va adauga la multimea de
varfuri cel mai apropiat varf de multimea de varfuri Xi-1, varf care nu a mai fost selectat inca, si
la multimea de muchii, muchia formata de varful nou introdus cu varful din Xi-1 fata de care am
obtinut valoarea minima.
Algoritmul se termina atunci cand am selectat toate varfurile.
i) Algoritmul descris mai sus este: a) algoritmul Roy-Floyd; b) algoritmul Dantzing 2; c)
algoritmul Yen; d) algoritmul Prim; e) nicio varianta nu este corecta.
ii) Ce se obtine in urma aplicarii acestui algoritm?
2)In urma aplicarii algoritmului Roy-Floyd, obtinem urmatorul rezultat:
Prima linie a matricei distantelor:
1

10

10

20

Prima linie a matricei drumurilor:


1

10

{1}

{1}

{1,2}

{3}

{3}

{4,5}

{5,6}

{6,7}

{4,5}

{8,9}

Scrieti toate drumurile de la varful 1 la varful 10 si determinate distant minima. Ce observati?


Justificati!

48

IV) a) Se da expresia algebrica: ((a+b)*c-(a+d)*e)/(f-g). Scrieti arborele binar asociat, forma


prefix, forma infix si forma postfix.
b)Sa se organizeze ca o gramada multimea:{19,12,5,6,12,19,1, 6,5,1,3,4}.

49

S-ar putea să vă placă și