0metoda reluarii
TRANSCRIPT
![Page 1: 0metoda reluarii](https://reader038.vdocuments.site/reader038/viewer/2022110309/55888d3fd8b42ac7558b4589/html5/thumbnails/1.jpg)
1
Metoda reluăriiAutor: Vovcioc RaisaProfesor: Josu Larisa
![Page 2: 0metoda reluarii](https://reader038.vdocuments.site/reader038/viewer/2022110309/55888d3fd8b42ac7558b4589/html5/thumbnails/2.jpg)
2
Ne amintim mai întîi tehnica Greedy
Datele iniţiale:
},,,{ 21 naaaA Soluţia problemei:
AxxxxX k ),,,,( 21 Ideia tehnicii Greedy:
alegem cîte un element din mulţimea A şi îl includem în vectorul X
mulţimea
vectorul
![Page 3: 0metoda reluarii](https://reader038.vdocuments.site/reader038/viewer/2022110309/55888d3fd8b42ac7558b4589/html5/thumbnails/3.jpg)
3
Schema generală a algoritmului Greedy
while ExistaElemente do begin AlegeUnElement(x); IncludeElementul(x); end
![Page 4: 0metoda reluarii](https://reader038.vdocuments.site/reader038/viewer/2022110309/55888d3fd8b42ac7558b4589/html5/thumbnails/4.jpg)
4
Datele iniţiale în metoda reluării
Mulţimile:
};,,{11,12111 maaaA
};,,{22,22212 maaaA
...
}.,,{ ,21 nnmnnn aaaA
![Page 5: 0metoda reluarii](https://reader038.vdocuments.site/reader038/viewer/2022110309/55888d3fd8b42ac7558b4589/html5/thumbnails/5.jpg)
5
Soluţia în metoda reluării
Spaţiul soluţiilor:
nAAAS 21
Soluţia: ),,,,( 21 nxxxX
unde ;11 Ax ;22 Ax ..., .nn Ax
![Page 6: 0metoda reluarii](https://reader038.vdocuments.site/reader038/viewer/2022110309/55888d3fd8b42ac7558b4589/html5/thumbnails/6.jpg)
6
Ideia metodei reluării
1. Presupunem că la pasul k am calculat deja valorile:
),,,( 21 kxxx
2. Selectăm din mulţimea Ak+1 valoarea xk+1:
),,,,( 121 kk xxxx
3. Dacă ),,,,( 121 kk xxxx satisface condiţiile
problemei, trecem la pasul k+2.
În caz contrar revenim la pasul k şi alegem alt xk.
![Page 7: 0metoda reluarii](https://reader038.vdocuments.site/reader038/viewer/2022110309/55888d3fd8b42ac7558b4589/html5/thumbnails/7.jpg)
7
Căutarea soluţiei prin metoda reluării
01
1
10
k := 1
k k:= + 1
a 1 ,1
a 2 ,1
a 1 2,
a 2 ,2
a 3 ,1a 3 ,2 a 3 ,30
k k:= + 1 k k-:= 1k k:= + 1
1
A 1
A 2
A 3
0 0
![Page 8: 0metoda reluarii](https://reader038.vdocuments.site/reader038/viewer/2022110309/55888d3fd8b42ac7558b4589/html5/thumbnails/8.jpg)
8
Schema generală a algoritmului recursiv 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}
![Page 9: 0metoda reluarii](https://reader038.vdocuments.site/reader038/viewer/2022110309/55888d3fd8b42ac7558b4589/html5/thumbnails/9.jpg)
9
Clasificarea problemelor
1. Mulţimile A1, A2, ..., An sînt cunoscute.
3. Elementele din care sînt formate mulţimile A1, A2, ..., An şi numărul n sînt necunoscute.
2. Sînt cunoscute elementele din care sînt formate mulţimile A1, A2, ..., An, numărul n fiind necunoscut.
![Page 10: 0metoda reluarii](https://reader038.vdocuments.site/reader038/viewer/2022110309/55888d3fd8b42ac7558b4589/html5/thumbnails/10.jpg)
10
Exemplu
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.
![Page 11: 0metoda reluarii](https://reader038.vdocuments.site/reader038/viewer/2022110309/55888d3fd8b42ac7558b4589/html5/thumbnails/11.jpg)
11
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;
![Page 12: 0metoda reluarii](https://reader038.vdocuments.site/reader038/viewer/2022110309/55888d3fd8b42ac7558b4589/html5/thumbnails/12.jpg)
12
Function PrimulElement
function PrimulElement(k : integer) : Natural;begin PrimulElement:=1;end; {PrimulElement }
![Page 13: 0metoda reluarii](https://reader038.vdocuments.site/reader038/viewer/2022110309/55888d3fd8b42ac7558b4589/html5/thumbnails/13.jpg)
13
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 }
Function Continuare
![Page 14: 0metoda reluarii](https://reader038.vdocuments.site/reader038/viewer/2022110309/55888d3fd8b42ac7558b4589/html5/thumbnails/14.jpg)
14
function ExistaSuccesor(k : integer) : boolean;begin ExistaSuccesor:=(X[k]<M[k]);end; { ExistaSuccesor }
Function ExistaSuccesor
![Page 15: 0metoda reluarii](https://reader038.vdocuments.site/reader038/viewer/2022110309/55888d3fd8b42ac7558b4589/html5/thumbnails/15.jpg)
15
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 }
Procedure Reluare
![Page 16: 0metoda reluarii](https://reader038.vdocuments.site/reader038/viewer/2022110309/55888d3fd8b42ac7558b4589/html5/thumbnails/16.jpg)
16
123
j
iC
12
......
3B
n
1 2 31 2 ... m...
Exemplul 2. Labirintul
![Page 17: 0metoda reluarii](https://reader038.vdocuments.site/reader038/viewer/2022110309/55888d3fd8b42ac7558b4589/html5/thumbnails/17.jpg)
17
Labirintul. Formularea matematică
Mulţimile:},,,{1 StîngaJosDreaptaSusA },,,{2 StîngaJosDreaptaSusA
...Soluţia:
},,,,,
,,,,,{
JosJosJosJosDreaptaDreapta
DreaptaJosDreaptaDreaptaDreaptaX
},,,{3 StîngaJosDreaptaSusA
![Page 18: 0metoda reluarii](https://reader038.vdocuments.site/reader038/viewer/2022110309/55888d3fd8b42ac7558b4589/html5/thumbnails/18.jpg)
18
Exemplul 3. Domino
Piesele iniţiale “Tren” format din 3 piese
![Page 19: 0metoda reluarii](https://reader038.vdocuments.site/reader038/viewer/2022110309/55888d3fd8b42ac7558b4589/html5/thumbnails/19.jpg)
)}6,6(),0,3(),5,3(),6,3{(1 A
19
Calculul mulţimilor A1, A2, ..., An
)}6,6(),0,3(),5,3{(2 A
Includem (3, 6) în tren.
Includem (6, 6) în tren.
)}0,3(),5,3{(3 A
![Page 20: 0metoda reluarii](https://reader038.vdocuments.site/reader038/viewer/2022110309/55888d3fd8b42ac7558b4589/html5/thumbnails/20.jpg)
20
Calculul mulţimilor A1, A2, ..., An
A1 – peştera INTRARE:
A1 = {STALACTITE, STALAGMITE}
A3 – peştera IZVOARE:
A2 = {STALACTITE, IESIRE, LILIECI}
A2 – peştera STALACTITE:
A2 = {INTRARE, IZVOARE}