You are on page 1of 33

Abori minimi de acoperire

Ana Ozorchevici
ana.ozorchevici@gmail.com
Utilizare

Organizare de retele (telefonie,


drumuri, electric)

Aproximare pentru probleme NPhard

!"P# error correction

$%P

#lu&tering
A'A
Algoritmul lui Prim
(nitial) V
ne*
+ ,x-, x un nod arbitrar (nod de
&tart) din V, E
ne*
+ ,-
.epeta pana cand V
ne*
+ V)
Alege o muchie (u, v) cu co&tul minim a&tfel
incat u e&te in V
ne*
&i v nu e&te

$e adauga v la V
ne*
&i (u, v) la E
ne*
/eap 0ibonacci operatii

Aflarea cheii minime

(n&erare

1xtragerarea cheii minime

'odificarea valorii cheii


/eap 0ibonacci
.adacinile arborilor &unt retinute printr
o li&ta circulara dublu inlantuita
#opiii fiecarui nod &unt retinuti tot intr
o a&tfel de li&ta
$e retine un pointer &pre radacina
arborelui care contine nodul cu cheia
minima
Algoritmul lui 2ru&3al

$e creeaza o padure de arbori F cu fiecare nod


din graf reprezentand un arbore

$e creeaza un &et S continand toate muchiile


grafului

#at timp S e&te nevid &i 0 nu e&te un &ingur


arbore

$e elimina muchia (u,v) de co&t minim din S

"aca cele doua noduri ale muchiei fac parte din


arbori diferiti cei doi arbori &e unifica

Altfel &e elimina muchia


"i&4oint&et

Find) "eterminarea &ub&etului din


care face parte un element

Union) Unirea a doua &ub&eturi intr


un &ingur &ub&et.
Union
function Union(x, 5)
x.oot )+ 0ind(x)
5.oot )+ 0ind(5)
if x.oot ++ 5.oot
return
// x and y are not already in same set. Merge them.
if x.oot.ran3 6 5.oot.ran3
x.oot.parent )+ 5.oot
else if x.oot.ran3 7 5.oot.ran3
5.oot.parent )+ x.oot
else
5.oot.parent )+ x.oot
x.oot.ran3 )+ x.oot.ran3 8 9
0ind
function 0ind(x)
if x.parent :+ x
x.parent )+ 0ind(x.parent)
return x.parent
Algoritmul lui ;oruv3a
;egin *ith an empt5 &et of edge& T
<hile the vertice& of G connected b5 T are
di&4oint)
;egin *ith an empt5 &et of edge& E
0or each component of T)
;egin *ith an empt5 &et of edge& S
0or each vertex v in the component)
Add the cheape&t edge from v to a vertex
in a different component of T to S
Add the cheape&t edge in S to E
Add the re&ulting &et of edge& E to T.
A'A diferiti
$e pot obtine A'A diferiti folo&ind
algoritmii lui 2ru&3al &i Prim=
Argumentati.
#and A'A e&te unic=
A'A diferiti
Un algoritm determina A'A (arborele A)
Pre&upunem ca A nu e&te unic +7 1xi&ta un alt A'A
(;).

0ie e1 o muchie ce apartine lui A dar nu lui B.

#um B e&te A'A, ,e1- U B contine un ciclu C => B


contine cel putin o muchie e2 ce nu apartine lui A dar
apartine lui C.
Pre&upunem co&tul lui e1 mai mic decat co&tul lui e2.
(nlocuim e2 cu e1 in B +7 A'A ,e1-U B ,e2- care
are un co&t mai mic decat B.
#ontradiction (am pre&upu& ca B e&te A'A).
!abirint

#reati un labirint.

(nitial exi&ta un grid format din celule incon4urate


de > pereti.
!abirint rezolvare

O li&ta cu pereti &i un &et pentru celule fiecare


celula intrun &ub&et

Pentru fiecare perete (random))

"aca celulele de&partite de perete fac parte


din &ub&eturi di&tincte)

$e inlatura peretele.

$e une&c cele doua &ub&eturi.


"e&en
'iruna de&eneaza in plan N puncte. 1a define&te notiunea de
arbore partial pentru un &et de S puncte ca fiind o
&ubmultime de exact S-1 &egmente avand capetele printre
punctele date, a&tfel incat &a &e poata a4unge dintrun punct
in oricare altul mergand pe &egmentele ale&e.
'iruna define&te &i notiunea de arbore partial de co&t minim
ca fiind acel arbore partial pentru care &uma lungimilor
&egmentelor din &ubmultimea alea&a &a fie minima.
"e&en
"upa ce de&eneaza un punct nou in plan, 'iruna dore&te &a
afle care e&te &uma lungimilor &egmentelor ce alcatuie&c
arborele partial de co&t minim pentru toate punctele
de&enate pana in acel moment.
http)??infoarena.ro?problema?de&en
"ate de intrare "ate de ie&ire
@ A.AAAAAA
A A B.AAAAAA
A B >.AAAAAA
B A C.AAAAAA
B B @.C@CD@>
9 9
"e&en rezolvare
Pentru fiecare nou punct adaugat &e aplica
2ru&3al &au Prim pe graful obtinut din A'A
intial 8 muchiile rezultate din adaugarea
noului nod
Online
(ntro tara imaginara trebuie con&truita o retea de drumuri
intre N ora&e.
'ini&trul %ran&porturilor a apelat la M firme de con&tructii &i
lea cerut &a e&timeze co&tul unor drumuri care la randul lor
&a lege doua ora&e, fara &a treaca prin altele.
"in cele M oferte care &e refereau la M drumuri diferite ,
'ini&trul a ale& un numar minim de perechi de ora&e intre
care &e va con&trui un drum direct, a&tfel incat din orice ora&
&a &e poata calatori in orice ora& direct &au prin intermediul
unor drumuri care trec prin alte ora&e cu co&t minim.
Online
#on&tructia urma &a inceapa pe&te &aptamani.
(n acea&ta perioada 'ini&trul %ran&porturilor a primit &aptamanal
cate o oferta noua, referitoare la alte po&ibile drumuri care vor
lega in mod direct alte doua ora&e dar &i la unele ofertate de4a,
dar cu alte co&turi.
'ini&trul %ran&porturilor trebuie &a actualizeze proiectul &i &a
&tabilea&ca &aptamanal care dintre drumuri &a le con&truia&ca
pe&te cele &aptamani.
"eterminati proiectul initial. Apoi, pe baza ofertelor nou &o&ite pe
parcur&ul celor &aptamani, determinati cate un proiect nou
a&tfel incat co&tul total al productiei &a fie minim.
http)??infoarena.ro?problema?online
Online
"ate de intrare)
@ E
9 B 9
B F E
9 @ @
F > F
> @ >
9 F B
B > C
B
F @ B
9 > F
"ate de ie&ire
(co&turile
proiectelor) a celui
initial, apoi ale celor
actualizari )
9A
D
D
Online rezolvare
(nitial &e determina A'A
Pentru urmatorii 3 pa&i)
muchia curenta e&te intre doua noduri din A'A.
#omparam co&tul actual al muchiei cu cel din arbore)
co&t mai mic +7 co&tul arborelui &e imbunatate&te cu
diferenta co&turilor
altfel +7 co&t ne&chimbat
muchia nu face parte din arbore. $e &terge muchia de
co&t maxim din arbore &i &e adauga muchia curenta
2arb
Se d un graf neorientat simplu conex cu N noduri i M muchii. Muchiile au
costul 0 sau 1. Se cere s se determine un arbore de acoperire de cost exact K.
http)??infoarena.ro?problema?3arb
"ate de intrare)"ate de ie&ire)
C D F 9 F
9 F 9 F >
9 B A @ C
B F 9 @ B
F > 9 > B
B > A
B @ A
> C 9
@ C 9
2arb rezolvare
1. cu muchiile de cost 0 descompune graful n componente conexe;
B. caut muchiile de cost 1 care unesc aceste componente, astfel
nct s nu se forme!e un ciclu ntre acestea;
F. consider doar muchiile de cost 1 de la pasul anterior la care
adaug altele de acelai cost pn ce "or fi n numr de K;
>. adaug muchii de cost 0 pn ce se formea! un arbore de
acoperire;
.adiatie
Gaharel e&te cercatator de fizica nucleara &i lucreaza
la un complex de cercetare &ecret format din N
laboratoate, numerotate convenabil cu numere de la
1 la N.
"e a&emenea, ace&te laboratoare &unt conectate prin
M tunele bidirectionale, de diver&e lungimi.
"e&i laboratoarele &unt concepute a&tfel incat
cercetatorii &a nu fie expu&i la radiatii, tunelele nu
prote4eaza complet, a&tfel incat daca un cercetator
folo&e&te un anumit tunel de legatura va fi expu& la
un nivel de radiatii direct proportional cu lungimea
tunelului.
.adiatie
Gaharel are de efectuat drumuri intre diver&e
perechi de laboratoare. $tiind ca expunerea pentru un
timp indelungat la radiatii are efecte daunatoare, el va
alege mereu un drum in care lungimea maxima a unui
tunel parcur& e&te minima.
"eterminati care vor fi drumurile pe care le va alege
Gaharel.
http)??infoarena.ro?problema?radiatie
.adiatie
"ate de intrare)
C C D
9 B @
B F >
F > F
9 > D
B @ E
> C B
9 B
9 F
9 >
B F
B >
@ 9
C B
C 9
"ate de ie&ire (lungimea
maxima minima)
@
@
@
>
>
E
>
@
.adiatierezolvare
Primul pa& in rezolvarea problemei e&te con&truirea
arborelui partial de co&t minim
Pentru a determina cea mai mare valoare a unei muchii
pe drumul unic din arbore intre nodurile i &i ! folo&im
arborele care rezulta in urma algoritmului lui 2ru&3al,
renuntand la euri&tica de compre&ie a drumului, &i
folo&ind doar euri&tica dupa rang
#um ace&t arbore are inaltimea "#logN$, &e poate folo&i o
parcurgere triviala pentru a ra&punde la orice Huer5.
1uclidean minimum
&panning tree
1uclidean minimum &panning tree &au
1'$% e&te un A'A ce contine n puncte din
plan unde co&tul muchiei dintre B puncte
reprezinta di&tanta dintre ace&tea.
1uclidean minimum
&panning tree
$e calculeaza triangularea "elauna5 in
O(n log n) time. "atorita faptului ca
triangularea "elauna5 determina un graf
planar &e vor genera doar O(n) muchii.
$e aplica unul din algoritmi de
determinare a A'A pe noul graf.
%riangularea "elauna5
%riangularea
"elauna5 pentru un
&et de puncte P
aflate in plan "%(P)
e&te o triangulare in
care niciun punct din
P nu &e afla in
interiorul cercului
circum&cri& oricarui
triunghi din "%(P).
%riangularea "elauna5
'etoda de a determina daca un punct " &e afla in
cercul circum&cri& triunghiul A;# e&te evaluarea
determinatului)
.e&ur&e

http)??infoarena.ro?

http)??infoarena.ro?problema?apm

http)??en.*i3ipedia.org?