1 / 23

Informatica. Clasa a 11-a

Informatica. Clasa a 11-a. Metoda relu ării. Ne amintim mai întîi tehnica Greedy. Datele iniţiale :. mulţimea. Soluţia problemei :. vectorul. Ideia tehnicii Greedy :. alegem cîte un element din mulţimea A şi îl includem în vectorul X. Sc h ema general ă a algoritmului Greedy.

lilike
Download Presentation

Informatica. Clasa a 11-a

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Informatica. Clasa a 11-a Metoda reluării Anatol Gremalschi, 2004

  2. Ne amintim mai întîi tehnica Greedy Datele iniţiale: mulţimea Soluţia problemei: vectorul Ideia tehnicii Greedy: alegem cîte un element din mulţimea A şi îl includem în vectorul X Anatol Gremalschi, 2004

  3. Schema generală a algoritmuluiGreedy while ExistaElemente do begin AlegeUnElement(x); IncludeElementul(x); end Anatol Gremalschi, 2004

  4. Datele iniţiale în metoda reluării Mulţimile: ... Anatol Gremalschi, 2004

  5. Soluţia în metoda reluării Spaţiul soluţiilor: Soluţia: unde ..., Anatol Gremalschi, 2004

  6. Ideia metodei reluării 1. Presupunem că la pasul k am calculat deja valorile: 2. Selectăm din mulţimea Ak+1 valoarea xk+1: 3. Dacă satisface condiţiile problemei, trecem la pasul k+2. În caz contrar revenim la pasul k şi alegem alt xk. Anatol Gremalschi, 2004

  7. Căutarea soluţiei prin metoda reluării Anatol Gremalschi, 2004

  8. Schema generală a algoritmuluirecursiv bazat pe metoda reluării procedure Reluare(k:integer); begin if k<=n then begin X[k]:=PrimulElement(k); if Continuare(k) then Reluare(k+1); while ExistaSuccesor(k) do begin X[k]:=Succesor(k); if Continuare(k) then Reluare(k+1) end; { while } end { then } else PrelucrareaSolutiei; end; {Reluare} Anatol Gremalschi, 2004

  9. Clasificarea problemelor 1. Mulţimile A1, A2, ..., An sînt cunoscute. 2. Sînt cunoscute elementele din care sînt formate mulţimile A1, A2, ..., An, numărul n fiind necunoscut. 3. Elementele din care sînt formate mulţimileA1, A2, ..., Anşi numărul n sînt necunoscute. Anatol Gremalschi, 2004

  10. Exemplul 1. Problema din manual, pag. 39 Se consideră mulţimile A1, A2, ..., An, fiecare mulţime fiind formată din mk numere naturale. Selectaţi din fiecare mulţime cîte un număr în aşa mod încît suma lor să fie egală cu q. Anatol Gremalschi, 2004

  11. Exemplul 1. Reprezentarea datelor const mmax=50; { numărul maximal de mulţimi } nmax=50; { numărul maximal de elemente } type Natural = 0..MaxInt; Multime = array[1..nmax] of Natural; var A : array[1..nmax] of Multime; n : 1..nmax; {numărul de mulţimi } M : array[1..nmax] of 1..mmax; {cardinalul mulţimii S[k] } X : array[1..nmax] of 1..mmax; {indicii elementelor selectate } q : Natural; k, j : integer; Indicator : boolean; Anatol Gremalschi, 2004

  12. Function PrimulElement function PrimulElement(k : integer) : Natural; begin PrimulElement:=1; end; {PrimulElement } Anatol Gremalschi, 2004

  13. Function Continuare function Continuare(k : integer) : boolean; var j : integer; suma : Natural; begin suma:=0; for j:=1 to k do suma:=suma+A[j, X[j]]; if ((k<n) and (suma<q)) or ((k=n) and (suma=q)) then Continuare:=true else Continuare:=false; end; { Continuare } Anatol Gremalschi, 2004

  14. Function ExistaSuccesor function ExistaSuccesor(k : integer) : boolean; begin ExistaSuccesor:=(X[k]<M[k]); end; { ExistaSuccesor } Anatol Gremalschi, 2004

  15. Procedure Reluare procedure Reluare(k : integer); { Metoda reluarii - varianta recursiva } begin if k<=n then begin X[k]:=PrimulElement(k); if Continuare(k) then Reluare(k+1); while ExistaSuccesor(k) do begin X[k]:=Succesor(k); if Continuare(k) then Reluare(k+1); end { while } end { then } else PrelucrareaSolutiei; end; { Reluare } Anatol Gremalschi, 2004

  16. Exemplul 2. Labirintul (pag. 42) Anatol Gremalschi, 2004

  17. Labirintul. Formularea matematică Mulţimile: ... Soluţia: Anatol Gremalschi, 2004

  18. Exemplul 3. Domino “Tren” format din 3 piese Piesele iniţiale Anatol Gremalschi, 2004

  19. Calculul mulţimilor A1, A2, ..., An Includem (3, 6) în tren. Includem (6, 6) în tren. Anatol Gremalschi, 2004

  20. Exemplul 4. Speologie Anatol Gremalschi, 2004

  21. Exemplul 4. Speologie (planul labirintului este necunoscut) function UndeMaAflu: string – returnează un şir de caractere ce conţine denumirea peşterii în care în prezent se află speologul, două puncte şi denumirile de intrări de galerii, separate prin spaţiu. Exemplu: LILIECI: STALAGMITE IZVOARE LILIECI LILIECI Anatol Gremalschi, 2004

  22. Calculul mulţimilor A1, A2, ..., An A1 – peştera INTRARE: A1 = {STALACTITE, STALAGMITE} A2 – peştera STALACTITE: A2 = {INTRARE, IZVOARE} A3 – peştera IZVOARE: A2 = {STALACTITE, IESIRE, LILIECI} Anatol Gremalschi, 2004

  23. Vă mulţumesc pentru atenţie ! Anatol Gremalschi, 2004

More Related