27.12.2014 Views

Lecţii complementare de teoria grafurilor

Lecţii complementare de teoria grafurilor

Lecţii complementare de teoria grafurilor

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

2. Algoritmul ungar<br />

Cu pregătirile anterioare putem trece la rezolvarea problemei <strong>de</strong>scrise în <strong>de</strong>butul<br />

capitolului. Pentru aceasta vom nota mulţimea lucrătorilor cu = , … , şi mulţimea<br />

locurilor <strong>de</strong> muncă cu = , … , . Construim, cu ajutorul acestora, graful bipartit<br />

= ⨃, , un<strong>de</strong> = ∈ dacă şi numai dacă lucrătorul este calificat pentru<br />

locul <strong>de</strong> muncă . Problema se reduce astfel la <strong>de</strong>terminarea unui cuplaj perfect al grafului .<br />

În condiţiile acestei probleme teorema lui Hall asigură existenţa unui astfel <strong>de</strong> cuplaj. Pentru<br />

<strong>de</strong>terminarea lui vom folosi un algoritm <strong>de</strong> rezolvare numit algoritmul ungar. Acesta <strong>de</strong>ci<strong>de</strong><br />

dacă, în general un graf bipartit admite un cuplaj perfect sau nu. În caz afirmativ, metoda<br />

<strong>de</strong>termină un astfel <strong>de</strong> cuplaj iar în caz contrar aceasta returnează (conform teoremei lui Hall)<br />

o submulţime ⊆ cu proprietatea că | | ||.<br />

Algoritmul porneşte cu un cuplaj arbitrar (<strong>de</strong> exemplu, prima muchie în ordinea<br />

lexicografică a etichetelor nodurilor). Dacă acesta saturează toate nodurile mulţimii , atunci<br />

algoritmul se opreşte, pentru că a fost <strong>de</strong>terminat un cuplaj perfect. Altfel, se alege, în ordinea<br />

etichetelor, un nod ∈ , − nesaturat şi se încearcă construirea unui lanţ − alternant<br />

<strong>de</strong>schis cu extremitatea iniţială în nodul ales. Mai întâi se alege un (primul) “vecin” (nod<br />

adiacent) al lui . Dacă acesta este − nesaturat, am aflat <strong>de</strong>ja un lanţ − alternant<br />

<strong>de</strong>schis <strong>de</strong> lungime unu, cu extremitatea iniţială în nodul ales şi extremitatea finală în .<br />

Altfel, adăugăm lanţului muchia din − , muchia din cuplajul şi continuăm<br />

proce<strong>de</strong>ul cu noul pe post <strong>de</strong> , ocolind nodurile din mulţimea care aparţin <strong>de</strong>ja lanţului<br />

. Dacă lanţul construit astfel 6 pas cu pas este − alternant <strong>de</strong>schis, atunci este <strong>de</strong>terminat<br />

(similar meto<strong>de</strong>i folosite în <strong>de</strong>monstraţia teoremei lui Berge) cuplajul = ∆ care<br />

saturează din mulţimea un nod în plus faţă <strong>de</strong> cuplajul anterior, după care se reia proce<strong>de</strong>ul,<br />

cu noul cuplaj în locul lui . În cazul în care lanţul nu este − alternant <strong>de</strong>schis<br />

(extremitatea finală este nod al cuplajului ) înseamnă ca mulţimea = ∩ verifică<br />

inegalitatea | | ||, <strong>de</strong>ci, conform teoremei lui Hall, graful nu admite un cuplaj<br />

perfect.<br />

Pentru o mai bună înţelegere a algoritmului contruim schema logică a acestuia şi dăm<br />

un exemplu <strong>de</strong> rulare.<br />

6 Construirea lanţului luând nodurile în ordinea lor lexicografică poate fi îmbunătăţită cu ajutorul arborilor<br />

arborilor M-alternanţi. Cititorul poate studia această variantă în lucrarea [1], pag. 81-84<br />

23

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!