Documente Academic
Documente Profesional
Documente Cultură
Dorel Lucanu
Faculty of Computer Science
Alexandru Ioan Cuza University, Iasi, Romania
dlucanu@info.uaic.ro
PA 2014/2015
Algoritmi greedy
PA 2014/2015
1 / 42
Outline
Studii de caz
Problema rucsacului I (varianta continua)
Arborele partial de cost minim
Algoritmi greedy
PA 2014/2015
2 / 42
Prezentarea general
a a paradigmei
Plan
Studii de caz
Problema rucsacului I (varianta continua)
Arborele partial de cost minim
Algoritmi greedy
PA 2014/2015
3 / 42
Prezentarea general
a a paradigmei
Modelul matematic
Fie S o multime finita de intrari si C o colectie de submultimi ale lui S.
Spunem ca C este accesibila daca satisface axioma de accesibilitate:
(X C)X 6= = (x X )X \ {x} C
(1)
Algoritmi greedy
PA 2014/2015
4 / 42
Prezentarea general
a a paradigmei
Modelul matematic
Algoritmi greedy
PA 2014/2015
5 / 42
Prezentarea general
a a paradigmei
Modelul matematic
Algoritmi greedy
PA 2014/2015
6 / 42
Prezentarea general
a a paradigmei
Modelul matematic
Algoritmi greedy
PA 2014/2015
(2)
7 / 42
Prezentarea general
a a paradigmei
Modelul matematic
Algoritmi greedy
PA 2014/2015
8 / 42
Prezentarea general
a a paradigmei
Algoritmi greedy
PA 2014/2015
9 / 42
Prezentarea general
a a paradigmei
Modelul matematic
Algoritmi greedy
PA 2014/2015
10 / 42
Prezentarea general
a a paradigmei
Matroizi
Plan
Studii de caz
Problema rucsacului I (varianta continua)
Arborele partial de cost minim
Algoritmi greedy
PA 2014/2015
11 / 42
Prezentarea general
a a paradigmei
Matroizi
Definitie matroizi
Algoritmi greedy
PA 2014/2015
12 / 42
Prezentarea general
a a paradigmei
Matroizi
Exemple
Exercitiu
Fie G = (V , E ) un graf. Sa se arate ca (E , {X E | X este arbore}) nu
este matroid. Care dintre proprietati nu este satisfacuta?
Exercitiu
Fie G = (V , E ) un graf. Sa se arate ca
(E , {X E | (V , X ) este padure })
este matroid.
Algoritmi greedy
PA 2014/2015
13 / 42
Prezentarea general
a a paradigmei
Matroizi
Matroizi ponderati
Algoritmi greedy
PA 2014/2015
14 / 42
Prezentarea general
a a paradigmei
Matroizi
Algoritmi greedy
PA 2014/2015
15 / 42
Prezentarea general
a a paradigmei
Matroizi
Algoritmi greedy
PA 2014/2015
16 / 42
Prezentarea general
a a paradigmei
Matroizi
Algoritmi greedy
PA 2014/2015
17 / 42
Prezentarea general
a a paradigmei
Matroizi
Algoritmi greedy
PA 2014/2015
18 / 42
Studii de caz
Plan
Studii de caz
Problema rucsacului I (varianta continua)
Arborele partial de cost minim
Algoritmi greedy
PA 2014/2015
19 / 42
Studii de caz
Plan
Studii de caz
Problema rucsacului I (varianta continua)
Arborele partial de cost minim
Algoritmi greedy
PA 2014/2015
20 / 42
Studii de caz
Problema
Rucsac I
Input
n obiecte notate cu 0, 1, . . . , n 1 de dimensiuni (greutati)
w0 , w1 , . . . , wn1 , respectiv, si un rucsac de capacitate M.
Daca n rucsac se pune o parte fractionara xi din obiectul i,
0 xi 1, atunci se obtine un profit pi xi (pi > 0).
Umplerea rucsaculuiP
cu fractiunile (cantitatile) x0 , . . . , xn1
n1
aduce profitul total i=0
pi x i .
Output Partile fractionare x0 , . . . xn1 care aduc un profit total maxim.
Algoritmi greedy
PA 2014/2015
21 / 42
Studii de caz
Formulare matematica
Problema ar putea fi formulata si ca o problema de optim, n modul
urmator:
functia obiectiv:
max
n1
X
pi xi
i=0
restrictii:
n1
P
wi xi M
i=0
0 xi 1 pentru i = 0, . . . , n 1
P
Daca n1
inePcand
i=0 wi M atunci profitul maxim se obt
Algoritmi greedy
PA 2014/2015
22 / 42
Studii de caz
Algoritmi greedy
PA 2014/2015
23 / 42
Studii de caz
0
6
3
1
4
4
2
8
6
1
Algoritmul rucsacC va determina solutia x = (0, , 1) care produce
2
P
1
3
profitul
pi xi = 4 + 1 6 = 8. Se observa ca vectorul x 0 = (0, 1, )
2
4
P
17
3
produce un profit mai bun:
pi xi0 = 1 4 + 6 =
> 8.
sfex
4
2
D. Lucanu (FII - UAIC)
Algoritmi greedy
PA 2014/2015
24 / 42
Studii de caz
Algoritmi greedy
PA 2014/2015
25 / 42
Studii de caz
Algoritmul greedy
rucsacC(w, p, x, n) {
S ={0,..., n-1};
for i = 0 to n-1 x[i] = 0;
C = 0;
while ((C < M) and (S 6= )) {
alege i S care maximizeaz
a profitul pe unitatea de greutate peste S
S = S\{i}
if (C + w[i] M) {
C = C + w[i];
x[i] = 1;
} else {
C = M;
MC
x[i] =
w[i]
}
}
}
D. Lucanu (FII - UAIC)
Algoritmi greedy
PA 2014/2015
26 / 42
Studii de caz
Analiza
p0
pn1
. Fie x = (x0 , , xn1 ) solutia generata
w0
wn1
de procedura rucsacC. Daca xi = 1, 0 i < n, atunci evident ca aceasta
solutie este optima.
Presupunem
Algoritmi greedy
PA 2014/2015
27 / 42
Studii de caz
Analiza
Lema
Fie k cel mai mic indice pentru care xk 6= yk . Atunci yk < xk si k j.
Demonstratie. Exista urmatoarele posibilitati:
(i) k < j. Rezulta xk = 1 si de aici yk 6= xk implica yk < xk .
P
(ii) k = j. DeoareceP xi wi = M si xi = yi , 1 i < j, rezulta ca
yk < xk (altfel
yi wi > M care constituie o contradictie).
j
n1
P
P
(iii) k > j. Rezulta
yi wi >
xi wi = M. Contradictie.
i=0
i=0
sfdem
Algoritmi greedy
PA 2014/2015
28 / 42
Studii de caz
Analiza
Lema
Exista o solutie optima z care coincide cu x pe pozitiile 0, . . . , k (z e mai
aproape de x decat y ).
Demonstratie.
Marim yk cu diferenta pana la xk si scoatem aceasta diferenta din
secventa (yk+1 , . . . , yn1 ) astfel ncat capacitatea utilizata sa ramna tot
M. Rezulta o noua solutie z = (z0 , . . . , zn1 ) care satisface:
zi = xi , 0 i k
P
(yi zi ) wi = (xk yk ) wk
k<in1
Algoritmi greedy
PA 2014/2015
29 / 42
Studii de caz
Analiza
Avem:
n1
P
zi pi
i=0
n1
P
P
zi pi + zk pk +
yi pi
zi pi +
i=0
0i<k
k<i<n
P
P
yi pi yk pk
yi pi
0i<k
n
P
k<i<n
wk
pk
wk
wi
wi
i=0
k<i<n
n1
P
P
pk
pk
yi pi + (zk yk ) wk
(yi zi ) wi
wk k<i<n
wk
i=0
n1
P
=
yi pi
=
yi pi + (zk yk )
(yi zi ) pi
i=0
Pn1
Algoritmi greedy
i=0
z i pi =
Pn1
i=0
y i pi .
sfdem
PA 2014/2015
30 / 42
Studii de caz
Analiza
Teorema
Procedura rucsacC determina solutia optima (cu profit maxim).
Demonstratie. Aplicam n mode repetat lema de pe slide-ul 29 pana cand
se obtine o solutie optima care coincide cu x.
sfdem
Algoritmi greedy
PA 2014/2015
31 / 42
Studii de caz
Analiza
Algoritmi greedy
PA 2014/2015
32 / 42
Studii de caz
Plan
Studii de caz
Problema rucsacului I (varianta continua)
Arborele partial de cost minim
Algoritmi greedy
PA 2014/2015
33 / 42
Studii de caz
Problema
Algoritmi greedy
PA 2014/2015
34 / 42
Studii de caz
Modelul matematic
Reamintim ca un arbore partial al lui G este un subgraf conex fara cicluri
ce include toate varfurile lui G . Fie A o multime de muchii. O muchie
{i, j} este sigura pentru A daca A {{i, j}} este o submultime a unui
arbore partial de cost minim. Urmatorul algoritm generic, bazat pe
strategia greedy, determina arborele partial descris ca o multime de arce:
APCM(V,E,c) {
A = ;
E1 = E;
while A nu formeaz
a arbore partial {
determina o muchie {i, j} E1 sigur
aA
E1 = E1 \ {{i, j}}
A = A {{i, j}}
}
}
D. Lucanu (FII - UAIC)
Algoritmi greedy
PA 2014/2015
35 / 42
Studii de caz
Modelul matematic
Teorema
A determinat de algoritmul APCM este arbore partial de cost minim pentru
G = (V , E ).
Demonstratie. Invariantul buclei while: A este o submultime a unui
arbore partial de cost minim.
sfdem
Algoritmi greedy
PA 2014/2015
36 / 42
Studii de caz
Algoritmi greedy
PA 2014/2015
37 / 42
Studii de caz
20
20
50
3
40
30
30
10
Algoritmi greedy
PA 2014/2015
38 / 42
Studii de caz
20
20
50
3
40
30
30
10
Algoritmi greedy
PA 2014/2015
38 / 42
Studii de caz
20
20
50
3
40
10
30
30
10
Algoritmi greedy
PA 2014/2015
38 / 42
Studii de caz
20
20
50
3
40
10
30
30
10
10
Algoritmi greedy
PA 2014/2015
38 / 42
Studii de caz
20
20
50
3
40
10
20
30
30
10
10
Algoritmi greedy
PA 2014/2015
38 / 42
Studii de caz
20
20
50
3
40
10
20
30
30
30
10
10
Algoritmi greedy
PA 2014/2015
38 / 42
Studii de caz
Algoritmi greedy
PA 2014/2015
39 / 42
Studii de caz
Algoritmi greedy
PA 2014/2015
40 / 42
Studii de caz
20
20
50
3
40
30
30
10
Algoritmi greedy
PA 2014/2015
41 / 42
Studii de caz
20
20
50
3
40
30
30
10
Algoritmi greedy
PA 2014/2015
41 / 42
Studii de caz
20
20
50
3
40
10
20
30
50
30
10
Algoritmi greedy
PA 2014/2015
41 / 42
Studii de caz
20
20
50
3
40
10
1
20
30
2
30
50
30
10
Algoritmi greedy
PA 2014/2015
41 / 42
Studii de caz
20
20
50
30
30
10
20
30
4
40
40
10
Algoritmi greedy
PA 2014/2015
41 / 42
Studii de caz
20
20
50
30
30
10
20
30
4
10
40
10
Algoritmi greedy
PA 2014/2015
41 / 42
Studii de caz
20
20
50
30
30
10
20
30
4
10
40
10
Algoritmi greedy
PA 2014/2015
41 / 42
Studii de caz
a
if (j Q and c(i,j) < cheie[j]) {
parinte[j] = i;
cheie[j] = c({i,j});
Q.replace(j);
}
}
}
D. Lucanu (FII - UAIC)
Algoritmi greedy
PA 2014/2015
42 / 42