290 likes | 601 Views
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.
E N D
Informatica. Clasa a 11-a Metoda reluării Anatol Gremalschi, 2004
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
Schema generală a algoritmuluiGreedy while ExistaElemente do begin AlegeUnElement(x); IncludeElementul(x); end Anatol Gremalschi, 2004
Datele iniţiale în metoda reluării Mulţimile: ... Anatol Gremalschi, 2004
Soluţia în metoda reluării Spaţiul soluţiilor: Soluţia: unde ..., Anatol Gremalschi, 2004
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
Căutarea soluţiei prin metoda reluării Anatol Gremalschi, 2004
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
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
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
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
Function PrimulElement function PrimulElement(k : integer) : Natural; begin PrimulElement:=1; end; {PrimulElement } Anatol Gremalschi, 2004
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
Function ExistaSuccesor function ExistaSuccesor(k : integer) : boolean; begin ExistaSuccesor:=(X[k]<M[k]); end; { ExistaSuccesor } Anatol Gremalschi, 2004
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
Exemplul 2. Labirintul (pag. 42) Anatol Gremalschi, 2004
Labirintul. Formularea matematică Mulţimile: ... Soluţia: Anatol Gremalschi, 2004
Exemplul 3. Domino “Tren” format din 3 piese Piesele iniţiale Anatol Gremalschi, 2004
Calculul mulţimilor A1, A2, ..., An Includem (3, 6) în tren. Includem (6, 6) în tren. Anatol Gremalschi, 2004
Exemplul 4. Speologie Anatol Gremalschi, 2004
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
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
Vă mulţumesc pentru atenţie ! Anatol Gremalschi, 2004