0tehnica greedy

26
Tehnica Greedy Tehnica Greedy Este o optiune ce tine de specificul problemei cu implicatii asupra complexitatii. Se bazeaza pe statistica datelor de la intrare din care se extrag caracteristici ale datelor=>alegerea strategiei. Strategia Greedy =strategia in care optimul local se considera optim general. Este o strategie constructiva prin adaugarea treptata de solutii locale care construiesc solutia finala.Problema=problemele locale care dau solutii ce se asambleaza in solutia finala. Obs: cand strategia nu duce la o solutie(in cazul neliniaritatilor) Se da o multime A si se cere (B inclus in A) care are criteriile obligatorii si se cer si criteriile de optimalitate

Upload: vulpe-maria

Post on 02-Jul-2015

572 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: 0tehnica Greedy

Tehnica GreedyTehnica GreedyEste o optiune ce tine de specificul problemei cu implicatii asupra complexitatii. Se bazeaza pe statistica datelor de la intrare din care se extrag caracteristici ale datelor=>alegerea strategiei.Strategia Greedy=strategia in care optimul local se considera optim general. Este o strategie constructiva prin adaugarea treptata de solutii locale care construiesc solutia finala.Problema=problemele locale care dau solutii ce se asambleaza in solutia finala. Obs: cand strategia nu duce la o solutie(in cazul neliniaritatilor)Se da o multime A si se cere (B inclus in A) care are criteriile obligatorii si se cer si criteriile de optimalitate neobligatorii.Solutia este de a alege un elem. din A succesiv care maximalizeaza optimalitatea in momentul alegerii lui=>se construieste B prin respectarea criteriilor obligatorii.Solutiile cu ajutorul alg. Dextra.

Page 2: 0tehnica Greedy

Informatica (clasa 11-a)Informatica (clasa 11-a)

Tema Tema : : Tehnica GreedyTehnica Greedy Scopul Scopul :: -extindere a metodelor de elaborare a algoritmilor -extindere a metodelor de elaborare a algoritmilor

GreedyGreedy;;

-formarea deprinderilor de a -formarea deprinderilor de a utiliza tehnica Greedy la utiliza tehnica Greedy la rezolvarea problemelorrezolvarea problemelor; ;

Page 3: 0tehnica Greedy

Elevul:Elevul:

O1. sa defineasca si sa clasifice pe baza O1. sa defineasca si sa clasifice pe baza explicatiilor date de profesor un algoritm explicatiilor date de profesor un algoritm GreedyGreedy

O2. Sa identifice avantajele si dezavantajele O2. Sa identifice avantajele si dezavantajele utilizarii acestei tehnici de programare. utilizarii acestei tehnici de programare.

O3. Sa scrie O3. Sa scrie pprograme Pascal pentru rograme Pascal pentru algoritmi Greedyalgoritmi Greedy

Din curriculum ->

Page 4: 0tehnica Greedy

Conversatia euristicaConversatia euristica Observatia participativaObservatia participativa ExpunereaExpunerea Invatarea prin descoperire Invatarea prin descoperire

dirijatadirijata Metoda orientata pe exemple si Metoda orientata pe exemple si

pe rezolvarea de exercitii in pe rezolvarea de exercitii in laboratorlaborator

Modelarea matematicaModelarea matematica Instruirea asistata de calculatorInstruirea asistata de calculator

Page 5: 0tehnica Greedy

Problemele au urmatoarea structura:

- Se da o multime A={a1 a2, …, an}

- Se cere sa determinam o submultime B a multimii A, care indeplineste anumite conditii pentru a fi acceptata in calitate de solutie.

Page 6: 0tehnica Greedy

Analiza Analiza aalgoritmilorlgoritmilor

Pentru a putea decide care dintre Pentru a putea decide care dintre algoritmii ce rezolvalgoritmii ce rezolvăă aceea aceeaşşi i problemproblemăă este mai bun, este nevoie este mai bun, este nevoie ssăă definim un criteriu de apreciere a definim un criteriu de apreciere a valorii unui algoritm. In general, valorii unui algoritm. In general, acest criteriu se referacest criteriu se referăă la timpul de la timpul de calcul calcul şşi la memoria necesari la memoria necesarăă unui unui algoritm. algoritm.

Page 7: 0tehnica Greedy

- tehnica Greedy conduce mai repede la o solutie.

- problemele de tip Greedy pot fi rezolvate prin metoda trierii , generînd consecutiv cele 2n submulîimi ale mulţimii A;

- Dezavantajul metodei trierii constă în faptul că timpul cerut pentru executarea algoritmului respectiv este foarte mare.

Greedy – Metoda trierii

Page 8: 0tehnica Greedy

De remarcat:

• Cel care elaborează un algoritm Greedy, procedînd în modul ales de el, ajunge la rezultatul dorit.

• Pentru fiecare problemă în parte, după ce se identifică un algoritm, este obligatoriu să se demonstreze că aceata conduce la soluţia optimă.

• Demonstraţia faptul că se ajunge la soluţia optimă este specifică fiecărei probleme în parte.

• Tehnica Greedy conduce la timp de calcul polinomial.

Page 9: 0tehnica Greedy

·        Pentru a rezolva o problemă cu Greedy, soluţia se construieşte, după regula:

Pentru fiecare element care urmeză să fie adăugat soluţiei finale, se efectuează o alegere a sa din elementele mulţimii A (după un mecanism specific fiecărei probleme în parte), iar dacă este posibil, aceasta este adăugat. Algoritmul se termină fie cînd a fost găsită soluţia cerută, fie cînd s-a constatat inexistenţa acesteia.

Pentru a evita trierea tuturor submultimilor multimii A în metoda Greedy se utilizează un criteriu (o regulă) care asigură alegerea directă a elementelor necesare.

De obicei regulile de selecţie nu sunt indicate în mod explicit în condiţia problemei si totul depinde de ingeniozitatea programatorului.

Page 10: 0tehnica Greedy

Schema generală a unui algoritm bazat pe metoda Greedy:

While ExistaElemente do begin

AlegeUnElement(x); IncludeElementul(x)

end;

Page 11: 0tehnica Greedy

NU întotdeauna există un algoritm de tip Greedy care găseşte soluţia optimă.

Există probleme pentru care nu se cunosc astfel de algoritmi. Mai mult, pentru cele mai multe probleme, nu se cunosc algoritmi Greedy.

Page 12: 0tehnica Greedy

Nu tuturor problemelor li se pot aplica algoritmi de tip Greedy. Pentru problemele pentru care nu se cunosc algoritmi care necesită timp polinomial, se caută soliţii, chiar dacă nu optime, atunci apropiate de acestea, dar care au fost obţinute în timp util.

Multe din aceste soliţii sunt obţinute cu Greedy.

Astfel de agoritmi se numesc algoritmi euristici.

Page 13: 0tehnica Greedy

Probleme pentru care Greedy obţine soluţia optimă

Page 14: 0tehnica Greedy

1. Suma componentelor prime : Fie a o variabilă indexată, ale cărei componente A(1) , A(2),…, A(n)sunt numere naturale nenule. Să se determine suma componentelor care sunt numere prime. Atunci când un număr prim se repetă, el va fi luat în consideraţie o singură dată. Solutie2. Problema spectacolelor:Într-o sală într-o zi trebuie planificate n spectacole. Pentru fiecare spectacol se cunoaşte intervalul în care se desfăşoară: (st, sf). Se cere să se planifice un număr maxim de spectacole astfel încît să nu se suprapună. Solutie3. Memorarea optimala a fisierelor pe benzi

Se cere o aranjare optima a n fisiere cu lungimile L1, L2, ... ,Ln pe o banda magnetica in ipoteza ca timpul de citire al unui fisier este proportional cu lungimea sa, iar pe banda citirea fisierului k implica si citirea celor k‑1 fisiere precedente. Presupunem ca frecventa de citire a unui fisier este aceeasi pentru toate fisierele. Aranjarea optima a fisierelor pe o banda magnetica înseamna gasirea acelei dispuneri a fisierelor care sa permita obtinerea unui timp mediu de citire minim.

Solutie

nume_1 date fis_1 EOF nume_2 Date fis_2 EOF

...... EOF

Vom identifica fisierele printr-un numar natural cuprins оntre [1, n], iar lungimea fisierului i prin valoarea Lpi.

1 2 nLp1 Lp2............................... Lpn

Page 15: 0tehnica Greedy

Metoda Greedy are două componente: - stabilirea soluţiei de început; - optimizarea acesteia. Să luăm un exemplu concret , pe baza căruia vom ilustra cum se

‘’construieşte’’ soluţia. Fie secvenţa : 8, 7, 8, 4, 9, 7, 5, 5, 4, 8, 7, 5, 9. Deoarece A (1) este 8, nefiind număr prim se porneşte cu soluţia

iniţială S:=0 (dacă A (1) ar fi fost număr prim, am fi pornit cu soluţia s:=A(1)).

Apoi valorile lui S vor fi: S:=0 S:=0+7=7 S:=7+5=12De remarcat caracterul constructiv al soluţiei. Un termen curent (fie

acesta A( i )) contribuie la valoarea lui S dacă îndeplineşte două condiţii :

- este un număr prim; - n-a mai fost utilizat.

Dacă in prealabil ordonăm crescător secvenţa considerată obţinem:

4, 4, 5, 5, 5, 7, 7, 7, 8, 8, 8, 9, 9şi astfel se “vede’’ mult mai uşor repetabilitatea unui numar

prim( faţă de situaţia iniţială când pentru a constata dacă un număr prim a fost sau nu utilizat trebuie să parcurgem întreaga secvenţă de fiecare dată ).

Page 16: 0tehnica Greedy

Pe baza afirmaţiilor anterioare rezultă un model de rezolvare pentru problema propusă, model care dă structura generală a metodei Greedy : Citire ( n , A); Ordonare ( n , A ); If A [1] = NumarPrim Then S := A[1] Else S:=0; I := 2; While I n do begin If (A[ I] <> A(I-1) )and (A [I] =Numarprim ) Then S := S +A [I] I := I+1; End;

Page 17: 0tehnica Greedy

Fie o planificare optimă a spectacolelor (un număr maxim k de spectacole i1, i2,...,ik unde i1, i2,...,ik{1,2,…N} şi spectacolul ij are loc înaintea spectacolului i j+1). O astfel de planificare îndeplineşte condiţia: spectacolul ij+1 începe după terminarea spectacolului ij.o consecinţă imediată a condiţiei de mai sus este: spectacolul ij ia sfîrşit înaintea terminării spectacolului ij+1(consecinţa nu implică un efort de gîndire deosebit).Vom construi o soluţie după următorul algoritm:

P1. Sortăm spectacolele după ora terminării lor;P2 . Primul spectacol programat este cel care se termină cel mai devreme;P3. Alegem primul spectacol dintre cele care urmează în şir după ultimului spectacol programat care îndeplineşte condiţia că începe după ce s-a terminat ultimul spectacol programat;P4. Dacă tentativa de mai sus a eşuat (nu am găsit un astfel de spectacol) algoritmul se termină, astfel se programează spectacolul găsit şi algoritmul se reia de la pasul 3.

Page 18: 0tehnica Greedy

Lemă. Algoritmul de mai sus conduce la soluţie optimă (număr maxim de spectacole programate). Demonstraţie:Fie s1, s2,...,sl spectacole ordonate ca mai sus şi o soluţie optimă i1, i2,...,ik.Dacă l=k rezultă că soliţia găsită este optimă;Dacă l>k rezultă că soluţia i1, i2,...,ik nu este optimă (se contrazice ipoteza);Dacă l<k procedăm ca mai jos.Presupunem că i1s1. În acest caz putem înlocui i1 (în cadrul soluţiei opime) cu s1 (s1 este primul spectasol care se termină şi dacă ar figura pe altă poziţie în cadrul soluţiei optime, se contrazice ipoteza). În concluzie, soluţia s1, i2,...,ik rămîne optimă.Fie lt primul indice pentru care stit. Soluţia s1, s2,...,st-1 it... este optimă. Înlocuim it cu st. Înlocuirea este posibilă pentru că:St nu figurează în cadrul soluţiei optime între primele t-1 componente;St nu figurează între ultimile poziţii ale soluţiei optime (începînd cu poziţia t+1) pentru că în acest caz înseamnă că st începe după terminarea lei it, caz în care se contrazic modul în care a fost obţinut de algoritm alegerea lui st.Procedînd astfel, la un mment dat soluţia optimă aete de forma: s1, s2,...,sl...ik.Aceasta înseamnă că după sl a mai fost posibil să adăugăm alte spectacole. Se contrazicemodul de obţinere al soluţiei de către algoritm. De aici rezultă k=i şi că algoritmul obţine soluţia optimă.

Page 19: 0tehnica Greedy

Program SPECT;Type spectacol=array[1..2, 1..10] of integer; ordine=array[1..10] of integer;var s:spectacol; o:ordine; n,i,h1,m1,h2,m2:integer;procedure sortare; var gata:boolean; m,i:integer;beginrepeat gata:=true; for I:=1 to n-1 do if s[2,o[i]]>s[2,[I+1]] then begin m:=o[i]; o[i]:=o[I+1]; o[I+1]:=m; gata:=false end until gata; end;beginwrite(‘n’); readln(n);for I:=1 to n doBegin o[i]:=i; write(‘ora de ]nceput pentru spestacolul’,I,’(hhmm)=’);readln(h1,m1); s[1,i]:=h1*60+m1; write(‘ora de sfrsit pentru spestacolul’,I,’(hhmm)=’); readln(h2,m2); s[2,i]:=h1*60+m2;end;sortare; writeln(‘ordinea spectacolelor este ’); writeln(o[1]);for I:=2 to n doif s[1,o[i]]>=s[2,o[I-1]]then writeln(o[i]); end.

Page 20: 0tehnica Greedy

Tehnica Greedy conduce la timp de calcul polinomial.

Motivul care conduce la acest timp de calcul, tine de mecanismul tehnicii.

Să presupunem că mulţimea din care se face alegerea are n elemente si că soluţia are tot n elemente (caz maxim). Se fac n alegeri, la fiecare alegere se fac n teste, rezulta un algoritm cu timp O(n2).

De multe ori este necesar ca elementele mulţimii A să fie sortate, pentru ca apoi să alegem din acestea, iar sortarea necesita un timp minim O(n * log2n). Insă sortarea se efectuează la început. Prin urmare, acest timp se adună, deci nu influenţează rezultatul.

Page 21: 0tehnica Greedy
Page 22: 0tehnica Greedy
Page 23: 0tehnica Greedy
Page 24: 0tehnica Greedy
Page 25: 0tehnica Greedy
Page 26: 0tehnica Greedy