Sunteți pe pagina 1din 5

Tema 3

Maxim Andrei
Butnaru Vasile-Cristi
Grupa A3, Anul 2
Ianuarie 9, 2018

Problema 1

Pentru a rezolva problema gasirii unei multimi inchise de pondere maxima in


timp polinomial cu ajutorul unui algoritm de flux maxim vom construi reteaua
R = (G0, s, t, c) astfel:

* ∀ v ∈ V (unde G0 = (V, E)), cu wv ≥ 0 avem sv si csv = wv ;

* ∀ v ∈ V, cu wv <0 avem muchia vt si cv t = -wv ;

* restul muchiilor e1 e2 le luam din graful initial G si vor avea ce1 e2 = +∞.

Astfel, varfurile cu pondere pozitiva sunt unite cu s, iar cele cu pondere neg-
ativa sunt unite cu t.Costurile pe muchii vor fi pozitive.Vom cauta o sectiune de
capacitate minima.Observam ca arcele de cost infinit nu pot apartine sectiunii
deoarece valoarea fluxului maxim este finita.Deci multimea respectiva va fi in-
chisa si folosind teorema fluxului maxim, sectiune minima exista o sectiune de
capacitate finita din care daca se scoate varful s se obtine o multima inchisa.
Asadar orice multime inchisa A determina o sectiune de capacitate:
X X X
C= wv − wv = wv − w(A)
v∈/ A, v ∈ A, v ∈ V,
wv ≥0 wv <0 wv ≥0
X
(Am adaugat wv la ambii termeni)
w ∈ A,
wv ≥0
Observarm ca C este minim cand w(A) este maxim deoarece celalalt termen
ramane constant.

1
In concluzie problema gasirii unei multimi inchise s-a redus la gasirea unei
sectiuni minime.(care se rezolva in timp polinomial)

Problema 2

a) ”⇐” 
dj -1 , daca dj se afla printre primele dk cele mai mari componente
Fie di 0 =
dj , altf el

i , daca i < k
pentru un k ales arbitrar din [1,n], i ∈ [1, n − 1] si j =
i + 1, daca i ≥ k
(eliminam pozitia k si siftam la stanga elementele din dreapta)
Presupun ca d0 este secventa grafica, deci exista un graf G0 care corespunde
vectorului d0.Fie multimea V = (v1 ,v2 .....vdk ) cu d0vi = dvi -1.
Pornind de la G0 putem crea un nou graf G, prin adaugarea unui nou nod p
si unindu-l cu varfurile din multimea V.
Astfel dG0 p = dk si d0vi = dvi , deci d = (d1 ...dn ) corespunde lui G si rezulta
ca d este secventa grafica .
”⇒”
Presupunem ca d = (d1 ...dn ) este secventa grafica, deci exista un graf G care
satisface d. Daca vecinii nodului k (cel ales pentru eliminare) sunt V=(v1 ,v2 ...vk )
atunci stergem pe k si muchiile incidente si obtinem vectorul d0, deci d0 este
secventa grafica .
Daca nodul k are vecini care nu apartin lui V putem modifica graful luand
fiecare nod p, cu p nu este inclus in V si exista muchia kp, (V contine primele
dk cele mai mari componente) si verifica urmatoarele:
-Daca ∃ vi ⊆ V si nu exista muchia kvi si dvi = dG p atunci le putem schimba
numele rezultand ca nodul k are inca un vecin inclus in V .
-Daca ∃ vi ⊆ V si nu exista muchia kvi si dvi 6= dG p (intotdeauna va fi dvi
> dG p) alegem un vecin q a lui vi , dar nu si a lui p, cu q 6= k. Astfel eliminam
muchia qvi si kp si adaugam kvi si pq.Operatia nu modifica gradele nodurilor,
ci adauga la vecinii lui k un nod din multimea V .
-Repetam pasul pana cand toti vecinii lui k sunt din V.
k p

vi q

2

k p

vi q

Observam ca din noul graf daca eliminam varful k obtinem graful care sat-
isface d0, deci d0 este secventa grafica .
Din ”⇐” si ”⇒” rezulta ca daca d este secventa grafica si d0 va fi secventa
grafica .

b) Ne vom folosi de algoritmul Havel-Hakimi bazat pe urmatoarea teorema:


Fie d = (d1 ,d2 ,...,dn ) o secventa de n numere intregi in ordine descrescatoare
: d1 ≥ d2 ≥...≥ dn . Atunci d este o secventa grafica daca si numai daca secventa
d0 = ( d2 -1,d3 -1,...,dk -1,dk+1 -1,dk+2 ,...,dn ) este secventa grafica (k = d1 ) .
Se vor aplica maxim n-1 pasi, la fiecare pas se sterge d1 din d si din urma-
toarele d1 elemente se scade o unitate. Se sifteaza la stanga cu o pozitie si pasul
se repeta pana cand toate elementele sunt 0 sau stim sigur ca noua secventa
este secventa grafica, caz in care d (de la inceput) este secventa grafica.Daca se
obtine un numar negativ atunci d nu este secventa grafica .
Observam ca la fiecare pas (chiar si la inceputul algoritmului) este posibil sa
fie nevoie de o sortare descrescatoare, deci complexitatea finala poate fi O(n2
log n); depinde de implementare (rezultand timp polinomial).

Problema 3

a) R = (G, s, t , c), G = (V, E) P


Fie f = valoarea fluxului in R. Atunci: f ≤ cvs ≤ n (v ∈ V, sv ∈ E). Daca
trimitem o unitate pe fiecare muchie care pleaca din s si mergem pe orizontala
spre t, obtinem fluxul maxim egal cu n (deoarece din ipoteza stim ca capacitatea
oricarei muchii este 1).
Astfel, vom avea n drumuri distincte de la s la t, fiecare transportand un
flux egal cu 1.Rezultand ca in t va intra fluxul 1+1+...+1(de n ori), deci fluxul
maxim este n.

3
Observam faptul ca nu exista drumuri de crestere a fluxului n in retea, deci
fluxul n este de valoare maxima.(teorema drumului de crestere)

b) Daca avem un flux de valoare maxima se poate deduce ca s-a trimis flux
pe drumuri distincte de la s la t. Observam ca daca nu alegem bine drumurile
ne vom bloca inainte sa atingem fluxulul maxim.
Astfel, trebuie sa facem cresteri pe anumite drumuri de crestere pentru a
obtine in final fluxul 1. Pentru a bloca toate drumurile de la s la t, mai putin
cel care ofera fluxul 1 vom incerca sa parcurgem nodurile pe diagonala astfel:
Daca numerotam nodurile grafului ca intr-o matrice nxn, cu arc numai
sus-jos si stanga-dreapta formam drumul s-(1,1)-(2,1)-(2,2)-(3,2)-(3,3)-(4,3)-...-
(n,n).
Acesta blocheaza restul drumurilor iar fluxul maxim final ramane 1.

Problema 4

Pentru a demostra ca problema satisfiabilitatii se reduce in timp polinomial


la problema ASTRAT este necesar ca plecand de la formula data, sa construim
un digraf unde daca Alina castiga jocul atunci formula este satifiabila iar daca
Barbu castiga, formula nu este satifiabila.
Formula data se afla in FNC, contine literali, clauze si este de forma:
(u1 ∨ū2 ∨ū3 )∧(ū1 ∨ū2 ).(exemplu)
Digraful in vom construi astfel. Alina pleaca din nodul v0 si poate merge in
u1 sau ū1 .Din u1 si ū1 avem muchii spre un nod special v1 . Din v1 avem muchii
in u2 sau ū2 ... din un si ūn avem arce spre vn , iar din vn avem arc spre nodul
B. B are arce spre c1 ,c2 ,...,ck (semnificand clauzele), iar din acestea spre literalii
pe care ii contin. Alegand aceasta constructie, Alina aflandu-se in nodul vi se
poate duce in cei 2 literali complementari dar Barbu va fi obligat sa mearga
in nodul vi+1 . In final Barbu ajunge in nodul B si va trebui sa mearga intr-o
clauza. Daca din ea avem arc spre un literal nefolosit, o parcurgem si Barbu va
fi blocat deci va pierde (deoarece Barbu este fortat sa aleaga un singur nod, din
multimea v1 ,...., vn , care a fost deja vizitata). Astfel, Barbu castiga, doar daca
Alina aflandu-se intr-un nod clauza nu poate alege un nod literal nevizitat, caz
in care formula este nesatisfiabila.
Observam ca solutia ne garanteaza faptul ca daca Alina castiga formula este
satisfiabila, in caz contrar (daca Barbu castiga) nu este satisfiabila.
Alina isi poate alege strategia ideala inainte sa inceapa jocul si stie daca
poate castiga sau nu. Ea isi va alege drumul astfel incat din fiecare nod clauza
sa existe un arc pe care sa il parcurga, blocandu-l pe Barbu.
Rezolvarea acestei probleme are complexitatea polinomiala, deci problema
SAT se poate reduce la problema ASTRAT.
Exemplu pentru formula (u1 ∨ū2 )∧(ū1 ∨u2 ) care este satisf iabila.

4
v1

A
B v0 u2

u1 A ū2
A
B

c2 v2

ū1

c1

Observam ca oriunde am merge din varful B, Barbu tot va pierde de unde


rezulta ca Alina castiga.