Sunteți pe pagina 1din 23

Anatol Gremalschi, 2004 1

Informatica. Clasa a 11-a


Metoda relurii
Anatol Gremalschi, 2004 2
Ne amintim mai nti tehnica Greedy
Datele iniiale:
} , , , {
2 1 n
a a a A
Soluia problemei:
A x x x x X
k
), , , , (
2 1

Ideia tehnicii Greedy:
alegem cte un element din mulimea A i l
includem n vectorul X
mulimea
vectorul
Anatol Gremalschi, 2004 3
Schema general a algoritmului Greedy
while ExistaElemente do
begin
AlegeUnElement(x);
IncludeElementul(x);
end
Anatol Gremalschi, 2004 4
Datele iniiale n metoda relurii
Mulimile:
}; , , {
1
1 , 12 11 1 m
a a a A
}; , , {
2
2 , 22 21 2 m
a a a A
...
}. , , {
, 2 1
n
nm n n n
a a a A
Anatol Gremalschi, 2004 5
Soluia n metoda relurii
Spaiul soluiilor:
n
A A A S
2 1
Soluia:
), , , , (
2 1 n
x x x X
unde
;
1 1
A x ;
2 2
A x
...,
.
n n
A x
Anatol Gremalschi, 2004 6
Ideia metodei relurii
1. Presupunem c la pasul k am calculat deja valorile:
) , , , (
2 1 k
x x x
2. Selectm din mulimea A
k+1
valoarea x
k+1
:
) , , , , (
1 2 1 k k
x x x x
3. Dac
) , , , , (
1 2 1 k k
x x x x
satisface condiiile
problemei, trecem la pasul k+2.
n caz contrar revenim la pasul k i alegem alt x
k
.
Anatol Gremalschi, 2004 7
Cutarea soluiei prin metoda relurii
0
1
1
1
0
k:=1
k k := +1
a
1,1
a
2,1
a
1 2 ,
a
2,2
a
3,1
a
3,2
a
3,3
0
k k := +1
k k- := 1
k k := +1
1
A
1
A
2
A
3
0
0
Anatol Gremalschi, 2004 8
Schema general a algoritmului recursiv
bazat pe metoda relurii
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. Mulimile A
1
, A
2
, ..., A
n
snt cunoscute.
3. Elementele din care snt formate mulimile A
1
,
A
2
, ..., A
n
i numrul n snt necunoscute.
2. Snt cunoscute elementele din care snt formate
mulimile A
1
, A
2
, ..., A
n
, numrul n fiind
necunoscut.
Anatol Gremalschi, 2004 10
Exemplul 1. Problema din manual, pag. 39
Se consider mulimile A
1
, A
2
, ..., A
n
, fiecare mulime
fiind format din m
k
numere naturale. Selectai din
fiecare mulime cte un numr n aa mod nct suma lor
s fie egal cu q.
Anatol Gremalschi, 2004 11
Exemplul 1. Reprezentarea datelor
const mmax=50; { numrul maximal de mulimi }
nmax=50; { numrul maximal de elemente }

type Natural = 0..MaxInt;
Multime = array[1..nmax] of Natural;

var A : array[1..nmax] of Multime;
n : 1..nmax; { numrul de mulimi }
M : array[1..nmax] of 1..mmax; { cardinalul mulimii 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(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
Anatol Gremalschi, 2004 14
function ExistaSuccesor(k : integer) : boolean;
begin
ExistaSuccesor:=(X[k]<M[k]);
end; { ExistaSuccesor }
Function ExistaSuccesor
Anatol Gremalschi, 2004 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
Anatol Gremalschi, 2004 16
1
2
3
j
i
C
1
2
.
.
.
.
.
.
3
B
n
1 2 3 1 2
...
m ...
Exemplul 2. Labirintul (pag. 42)
Anatol Gremalschi, 2004 17
Labirintul. Formularea matematic
Mulimile:
} , , , {
1
Stnga Jos Dreapta Sus A
} , , , {
2
Stnga Jos Dreapta Sus A
...
Soluia:
} , , , , ,
, , , , , {
Jos Jos Jos Jos Dreapta Dreapta
Dreapta Jos Dreapta Dreapta Dreapta X
} , , , {
3
Stnga Jos Dreapta Sus A
Anatol Gremalschi, 2004 18
Exemplul 3. Domino
Piesele iniiale
Tren format din 3 piese
Anatol Gremalschi, 2004 19
Calculul mulimilor A
1
, A
2
, ..., A
n
)} 6 , 6 ( ), 0 , 3 ( ), 5 , 3 ( ), 6 , 3 {(
1
A
)} 6 , 6 ( ), 0 , 3 ( ), 5 , 3 {(
2
A
Includem (3, 6) n tren.
Includem (6, 6) n tren.
)} 0 , 3 ( ), 5 , 3 {(
3
A
Anatol Gremalschi, 2004 20
Exemplul 4. Speologie
IZVOARE
STALACTITE
LILIECI
IESIRE
STALAGMITE
INTRARE
Anatol Gremalschi, 2004 21
Exemplul 4. Speologie
(planul labirintului este necunoscut)
function UndeMaAflu : string
returneaz un ir de caractere ce conine
denumirea peterii n care n prezent se afl
speologul, dou puncte i denumirile de intrri de
galerii, separate prin spaiu.
LILIECI: STALAGMITE IZVOARE LILIECI LILIECI
Exemplu:
Anatol Gremalschi, 2004 22
Calculul mulimilor A
1
, A
2
, ..., A
n
A
1
petera INTRARE:
A
1
= {STALACTITE, STALAGMITE}
A
3
petera IZVOARE:
A
2
= {STALACTITE, IESIRE, LILIECI}
A
2
petera STALACTITE:
A
2
= {INTRARE, IZVOARE}
Anatol Gremalschi, 2004 23
V mulumesc pentru atenie !

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