Documente Academic
Documente Profesional
Documente Cultură
Problema 1
a) Stim ca doua triplete (starti , stationi , endi ) si (startj , stationj , endj ) sunt
adiacente ⇔ stationi = stationj si (starti , endi )∩(startj , endj ) = ϕ ⇒ fac parte
din aceiasi componenta conexa. Stim de asemenea din enuntul problemei ca prin
fiecare cele k statii trece cel putin un tramvai ⇒ pentru fiecare statie X avem
2 cazuri: I. Statia face parte dintr-o singura componenta conexa deoarece pentru
toate perechile de forma (starti1 , X, endi1 ), (starti2 , X, endi2 ). . . (startit , X, endit )
pentru t ≥ 1 avem (starti1 , X, endi1 )∩(starti2 , X, endi2 )∩. . . ∩ (startit , X, endit )
̸= ϕ II. Statia face parte din cel putin 2 componente conexe deoarece re-
gasim cel putin doua triplete de forma (starti , X, endi ) si (startj , X, endj ) a.i.
(starti , X, endi )∩(startj , X, endj ) = ϕ ⇒Pentru fiecare statie numarul de comp.
conexe ≥ 1 ⇒Pentru toate cele K stat, ii, numărul de comp. conexe ≥ K
1
T α + 1 adiacent cu toate tripletele din Kα => T 1. . . T α + 1formează Kα+1 =>
Presupunerea este corectă.
=> Pentru a regăsi numărul maxim de tramvaie ce se pot găsi ı̂ntr-o stat, ie
trebuie să calculăm ω(G)
d)
Pentru a implementa operat, ia visitedN eighbors[v] = maxu∈V −S (visitedN eighbors[u])(∗)
ı̂n O(1) este necesar să utilizăm un max heap, astfel pentru a utiliza elementul
maxim, complexitatea va fi mereu constantă: O(1)
De asemenea pentru a implementa ı̂ntregul algoritm ı̂n O(n + m)(n = |V |, m =
|E|) este necesar să utilizăm max heap-ul pentru operat, ia (*) s, i reprezentarea
prin liste de adiacent, ă pentru graf astfel ı̂ncat BFS-ul să aibă complexitatea
O(n + m), dacă ar fi folosită reprezentarea prin matrici de adiacent, ă atunci
BFS-ul ar fi fost ı̂n O(n2 ).
e)
∀i, 1 ≤ i ≤ n, vecinătatea lui xi ı̂n Gi , NGi (xi ) = Kj unde 1 ≤ j ≤ n
vom init, ializa π(xi ) = i
La fiecare iterat, ie a lui i vom verifica dacă nodul v este egal cu xi , ı̂n momentul
ı̂n care găsim două astfel de noduri iar gradul clicii din care face parte nodul v
este mai mare decât ω(G) actualiăam ω(G) = n − i + 1.
...
π(v) = i;
if (v == xi )
ω(G) = M ax(ω(G), n − i + 1);
...
Problema 2
a) graf complet → graf turneu. ∀uv, vw ∈ E(V ), cum e graf complet, trebuie sa
∃uv sau wu ∈ E(V ), dar wu ∈ / E(V ), deoarece nu mai respecta proprietatea de
aciclitate, deci ∃uw ∈ E(V ) ⇔ graful este tranzitiv. Cum avem un graf turneu,
fara cicluri ⇔ avem o sortare topologica unica, in care avem uv ∈ E(V ), pentru
d− −
g (v) < dg (u), ∀u, v ∈ V (G). Avem n! permutari pentru n noduri. Fiind un
turneu tranzitiv, avem un unic mod de a ordona muchiile, astfel ca putem doar
schimba ordinea nodurilor in graf, dar toate aceste grafuri vor fi izomorfe cu gra-
2
ful initial(automorfism). PP prin RA ca ∀ 2 noduri neconsecutive, u, v ∈ V (G)
a.i. d− −
g (u) + 1 < dg (v), reverse(G’,uv) este o orientare aciclica a lui G. Asta
inseamna ca ∃ cel putin un nod w, d− − −
g (u) < dg (w) < dg (v). Dar cum graful
e tranzitiv si complet, avem uw,wv∈E(V), dar cum am facut reverse si avem
si vu∈E(V) ⇔ avem un ciclu u-w-v-u ⇔ contradictie. Putem observa astfel ca
pentru a putea pastra proprietatea de aciclitate, avem voie sa inversam doar
o muchie pentru 2 noduri vecine in ordinea topologica. Daca avem 2 orientari
aciclice distincte(2 permutari diferite), inseamna ca difera pozitia a cel putin 2
noduri in ordinea sortarilor topologice, deci vor exista cel putin 2 vecini u,v din
ordonarea topologica a primei orientari aciclice, care vor fi in ordine inversa in
cea de a doua.
d)Pentru orice graf, avand orientari aciclice si graful fiind orientat, vom face
sortare topologica. De data asta, nodurile interioare nu vor mai fi neaparat
consecutive si se pot repeta. In acest caz nu mai avem prop. de tranzitivitate,
deci vom putea avea 2 noduri random u,v din ordinea sortarii topologice, Intai
verificam daca exista uv. Dupa care, e important ca in ordinea sort. topologice
sa nu existe noduri intre u si v prin care sa existe drum d(u, multime noduri
intre u si v,v), deoarece reverse-ul lui uv ar cauza ciclu.
Problema 3
Vom presupune că ideea de rezolvare a studentului este una corectă. Luăm un
exemplu:
3
=> Aplicând teoria studentului, vom aduna 10 la valoarea costurilor tuturor
muchiilor din graful G1 s, i va rezulta graful G2 :
∗
Comparând cele două grafuri observăm că ı̂n G1 : Psc = 2 (fiind ales conform
algoritmului lui Dijkstra traseul s− > d− > e− > c)
∗
În timp ce ı̂n G2 : Psc = 23 (fiind ales alt traseu, mai exact: s− > b− > c prin
utilizarea aceluias, i algoritm)
4
=> Cum cele două trasee sunt diferite=> presupunerea facută este FALSĂ
deoarece algoritmul propus de student ar trebui să funct, ioneze pe orice instant, ă
a problemei care respecta condit, iile.
Matematic:
Pentru G1 : −10 + 13 > −10 + 6 + 6/+(număr de muchii)∗10
=> G22 : 2 ∗ 10 − 10 + 13 < 3 ∗ 10 − 10 + 6 + 6 = 23 < 32
=> După cum observăm, ı̂n funct, ie de numărul de muchii alese pentru calcu-
larea costului drumului de la s la c prin aplicarea algoritmului Dijkstra, cu cât
avem mai multe muchii cu atât costul drumului va cres, te mai tare, acesta fiind
ı̂ncă un motiv pentru demonstrarea nefunct, ionalităt, ii algoritmului propus de
student.
Problema 4
Fie d(U1 ), d(U2 ), ..., d(Uk ) drumurile minime din nodul s catre nodurile U1 , U2 , ..Uk ,
a.i. Ui ∈ V (G), i ∈ [1, k]. Trivial, putem observa ca orice drum minim din S
catre nodurile U1 , U2 , ..Uk va trece prin su ∈ E(V) cu proprietatea ca u ∈ Ng (s).
(trebuie sa trecem neaparat prin una din muchiile cu cost negativ care pleaca
nodul initial s). Fie C o constanta, cu proprietatea ca C=max(cost(sv))+1, v∈
Ng(s). Astfel, putem adauga K la costul muchiilor ce pleaca din s,pentru a le
face pe toate pozitive. Una dintre aceste muchii poate fi parcursa o singura
data, pentru ∀d(Ui ), i ∈ [1, k], deci nu vom avea cazul, ca la exercitiul anterior,
de parcurgere de 2 sau mai multe ori a unei muchii negative, respectiv a adau-
garii lui K de 2 sau mai multe ori. In final, pentru a afla lungimea reala pentru
∀d(Ui ), i ∈ [1, k], vom scadea K.
BONUS:
v = xi <=> π(v) = i
Gi = [xi , xi+1 ...xn ]
∀1 ≤ i ≤ nNGi (xi ) este o clică