Documente Academic
Documente Profesional
Documente Cultură
??
November 2021
1
b) Putem aplica algoritmul lui Tarjan pentru determinarea componentelor
tari conexe. Acesta va face si o ordonare inversa (SP-) topologica a nodurilor
grafului, deoarece are proprietatea ca orice componenta tare conexa va fi identi-
ficata dupa vecinii sai[1]. Algoritmul are complexitatea O(|V |+|E|) deoarece cea
mai costisitoare operatie este parcurgerea DFS a grafului.
function T arjan(G = (V, E))
v.adancime = −1, ∀v ∈ V
v.peStiva = f alse, ∀v ∈ V
componenteConexe = ListaV ida()
index = 0
s = StivaV ida()
for (V ∈ V ) do
if (v.adacime == −1) then
recursie(v)
end if
end for
componenteConexe.reverse()
return componenteConexe
end function
function recursie(v)
v.adancime = index
v.low = index {low reprezinta cel mai de sus stramos (cu adancimea cea
mai mica) accesibil al nodului curent din arborele DFS (folosind muchii de
intoarcere)}
index + +
s.push(v)
v.peStiva = true
for all (w ∈ NG (v)) do
if (w.adancime == −1) then
recursie(w)
v.low = min(v.low, w.low)
else if (w.peStiva == true) then
v.low = min(v.low, w.adancime)
end if
end for
if (v.low == v.adancime) then
c = ListaV ida()
repeat
w = s.pop()
w.peStiva = f alse
c.add(w)
until (w = v)
componenteConexe.add(c)
end if
end function
2
c) Fie vi , vj ∈ V (D) a.i. vi apare inaintea lui vj pe D. Daca vi si vj
apartin unor componente tari conexe diferite, este imposibil ca j < i pentru
oricare sortare SP-topologica (deoarece vi si vj ar trebui sa apartina aceleiasi
componente - contradictie).
Ramane de demonstrat ca nodurile din interiorul fiecare componente pot fi
sortate a.i. i < j. In continuare voi descrie o metoda de a obtine sortarea dorita,
pornind de la o sortare SP-topologica oarecare: pentru fiecare din componentele
tari conexe ale lui G, mai intai eliminam toate muchiile care nu apar in D (pentru
a elimina ciclurile), apoi sortam topolgic nodurile din respectiva componenta.
La final, sortarea ramane SP-topologica (am modificat doar ordinea nodurilor
din interiorul fiecare componente, nu si ordinea componentelor), iar sortarea
fiind topologica raportat la D avem si garantia ca i < j.
∗ ∗
4. a) Uj = δj ⇐⇒ δi + aij = δj ⇐⇒ a(Psi ) + aij = a(Psj ). Presupunem
prin reducere la absurd ca egalitatea nu are loc. Atunci, avem 2 cazuri:
• Daca a(Psi∗ ∗
) + aij < a(Psj ), atunci ar insemna ca exista un drum de la s
∗
la j D = Psi ◦ aij a.i. a(D) < δj , ceea ce este in contradictie cu modul de
alegere al lui δj
• Daca a(Psi ∗
) + aij > a(Psj ∗
), atunci fie i′ penultimul nod de pe Psj ∗
. Re-
latia de demonstrat devine echivalenta cu δi + aij > a(Psi′ ) + ai′ j . Cum
∗
a(Psi′ ) ≥ a(Psi ′ ) = δi′ , relatia este echivalenta cu δi + aij > δi′ + ai′ j , care
References
[1] https://en.wikipedia.org/wiki/Tarjan%27s_strongly_connected_
components_algorithm#cite_note-5 - pseudocod pentru algoritmul lui
Tarjan