Sunteți pe pagina 1din 4

Spaiul soluiilor

Fie mulimile finite , fiecare avnd respectiv fiecare dintre ele exist o relaie de ordine. Mulimea soluiilor. O funcie Mulimea Funcia relaia ( ) * * * ( )

elemente, cu proprietatea c pe + se numete spaiul

+ se numete funcie de validare. ( ) + se numete mulimea soluiilor rezultat. astfel nct e adevrat

( ) reprezint legtura dintre elementele .

Funcia de validare poate fi extins la funcii aplicabile asupra soluiilor pariale * ( ) i , obinnd funciile numite funcii de validare parial (unde funcia este de fapt funcia ).

Rolul funciilor de validare parial este urmtorul: dac se accept soluia parial (secvena) n procesul de cutare a unei soluii rezultat ( ), atunci acestei secvene i se poate aduga un element cu .

Metoda Greedy (metoda optimului local)

Metoda optimului local este o metod rapid (cu consum mic de resurse) folosit n multe probleme de optimizare pentru obinerea unei soluii bune (acceptabile), posibil chiar soluia optim. Obinerea soluiei este rapid deoarece este o metod simpl, n pai (complexitatea metodei este n principiu de ordinul ( ) dar poate fi mai mare n unele probleme). Soluia obinut poate fi optim (cea mai bun) sau nu. n unele probleme este considerat acceptabil o soluie care nu e optim dar poate fi obinut rapid (cu consum mic de resurse), n condiiile n care gsirea soluiei optime necesit consum exagerat de mare de resurse. Pentru unele probleme metoda Greedy poate chiar s nu gseasc o soluie, dei aceasta exist. Numele metodei provine de la faptul c la fiecare pas se face cea mai bun alegere n contextul local (optimul local), dei aceasta nu garanteaz o soluie optim la nivel global i nici mcar gsirea unei soluii (greedy lacomul, care se repede la ce are mai bun n fa, ignornd contextul mai larg). O soluie acceptabil gsit prin aceast metod poate fi folosit ca baz de pornire pentru aplicare unui alt algoritm, n vederea gsirii soluiei optime. Motivul pentru care soluia obinut nu este ntotdeauna optim este urmtorul: metoda optimului local presupune luarea unei decizii la fiecare pas, n funcie de contextul local disponibil.

Aceast decizie nu mai poate fi schimbat, dei ea poate fi greit n contextul global. Este posibil ca soluia obinut s fie nu numai non-optim, ci chiar cea mai proast posibil. Problemele pentru care se poate aplica metoda optimului local se prezint astfel: Problema poate fi imaginat ca o mulime cu elemente ( ); O soluie posibil este o submulime ( ) care ndeplinete o condiie dat ( este acceptabil); Pot exista mai multe submulimi diferite acceptabile (soluii posibile), dintre care una este considerat soluie optim, pe baza unui criteriu care trebuie maximizat (minimizat). este o soluie

Soluiile acceptabile au urmtoarea proprietate: dac submulimea acceptabil, atunci orice submulime este tot o soluie acceptabil.

Metoda optimului local implic utilizarea urmtoarelor operaii (care nu ntotdeauna snt evidente n rezolvare): Alegerea unui element candidat din mulimea ( ) Verificarea acceptabilitii elementului ales: adugarea elementului la soluia parial construit o menine acceptabil sau o face inacceptabil? Adugarea elementului ales la soluia parial, dac ea rmne acceptabil.

Considernd aceste operaii, algoritmul poate fi descris astfel: se primete mulimea cu elemente se iniializeaz soluia ca mulime vid repet de ori o alege un element candidat din mulimea * + este soluie acceptabil o verific dac * + o dac da, adaug la mulimea : se trimite mulimea ca soluie

Algoritmul anterior este prezentat n forma cea mai general, fr a preciza exact cum s e alege un element sau cum se verific dac elementul ales este acceptabil. Aceste aspecte depind de problema concret care se rezolv i se implementeaz ca atare. De obicei se poate asocia o valoare numeric fiecrui element al mulimii i, n funcie de criteriul de optimizare, se alege cel cu valoarea cea mai mare sau cea mai mic. O variant a algoritmului rezolv problema alegerii n felul urmtor: elementele mulimii snt aranjate de la nceput n ordinea n care vor fi analizate n vederea con struirii soluiei. n acest caz elementul candidat este ntotdeauna urmtorul element al mulimii . Adesea prelucrarea mulimii este o sortare cresctoare sau descresctoare, n funcie de direcia criteriului de optimizare. Existena acestei prelucrri schimb ordinul de complexitate al algoritmului, n sens nefavorabil (acelai efect l poate avea i alegerea elementului candidat).

Exemple de probleme rezolvate prin algoritmi de tip Greedy: 1. Determinarea arborelui parial de cost minim (soluia este ntotdeauna optim)

2.

3. 4. 5. 6. 7. 8.

a. Algoritmul lui Kruskal b. Algoritmul lui Prim Problema rucsacului a. ntreag (nu a fost gsit nici un algoritm rapid care s ofere soluia optim, se crede c nu exist un astfel de algoritm) b. continu Interclasarea optim a n vectori Suma maxim dintr-o mulime de numere Plata unei sume (cu bancnot unitate) Problema paznicului Determinarea unui produs de transpoziii Algoritmul Dijkstra

Exemplele de mai sus snt probleme tipice, enunurile lor pot fi ntlnite ca atare sau cu diverse variaiuni.

1. Arborele parial de cost minim (maxim). Ambii algoritmi au fost studiai anterior, n cadrul discuiei despre grafuri de tip arbore.

2. Problema rucsacului. Se consider un mijloc de transport cu o capacitate dat ( ). Cu acesta trebuie transportate * +. Fiecare obiect ocup o capacitate specific i aduce un obiecte dintr-o mulime ctig specific . Se cere s se determine o modalitate de ncrcare care s maximizeze ctigul obinut. Dac obiectele transportate pot fi fracionate, problema este numit continu. n acest caz se va utiliza ntotdeauna ntreaga capacitate de transport. Dac obiectele nu pot fi fracionate, problema este numit ntreag. n acest caz e posibil ca soluia obinut s nu utilizeze ntreaga capacitate de transport. De asemenea, soluia obinut poate s nu fie optim. n plus, e posibil s existe o soluie de utilizare a ntregii capaciti de transport, dar aceasta s nu fie gsit prin algoritm de tip greedy.

3. Interclasarea optim a vectorilor. Se d un numr de vectori, fiecare fiind sortat cresctor. Vectorii trebuie interclasai astfel nct s se efectueze ct mai puine micri de elemente.

4. Suma maxim. * Se d o mulime de elemente reale submulime astfel nct suma elementelor submulimii +. Se cere s se determine o s fie cea mai mare posibil.

5. Plata unei sume (cu bancnot unitate). Se cere s se plteasc o sum folosind ct mai puine bancnote din tipurile (valorile) , tiind c printre acestea se afl i bancnota cu valoare unitate. Snt disponibile cantiti nelimitate din fiecare tip de bancnot. Dac bancnota cu valoare unitate nu ar fi disponibil, nu e sigur obinerea unei soluii prin utilizarea metodei optimului local. Alt algoritm poate conduce la o soluie.

6. Problema paznicului. Se d o livad n care pomii snt plasai pe linii, cte pe fiecare linie. Distanele ntre pomii adiaceni snt egale att pe linie ct i ntre linii. n una din cele poziii se afl un paznic, care poate vedea pomii pe orice direcie, dar dac mai muli pomi se afl pe exact aceeai direcie l vede doar pe cel mai apropiat. Se cere s se determine ); a) numrul de pomi pe care poate s i vad paznicul din poziia ( b) care este poziia din care paznicul poate s vad cel mai mare numr de pomi.

7. Produs de transpoziii. Se d o permutare un produs de transpoziii: a) oarecare; b) de forma ( ). ( ). Se cere s se descompun aceast permutare ntr-

8. Algoritmul Dijkstra. Algoritmul Dijkstra pentru gsirea celor mai scurte drumuri ntr-un graf, pornind de la un vrf dat a fost studiat n cadrul discuiei despre grafuri.

S-ar putea să vă placă și