2. Introducere
O problem de optimizare (PO) este:
unde:
(func釘ia obiectiv); pe B exist o rela釘ie total
de ordine; opt este criteriul de optimizare (max sau min);
constr este mul釘imea de constr但ngeri.
Exemplu
echiv:
)
,
,
,
,
( constr
opt
B
A
f
B
A
f
:
R
x
x
x
x
constr
x
x
x
x
f
R
R
f
constr
R
R
f
}
131
)
ln(
,
17
7
{
4
5
2
)
(
:
)
max,
,
,
,
(
3
10
4
7
131
)
ln(
17
7
)
4
5
2
(
max
3
10
4
7
x
x
x
x
x
x
R
x
3. Introducere
Solu釘iile fezabile ale unei probleme de optimizare:
Solu釘iile (valorile optime ale) unei probleme de optimizare:
)}
),
(
(
)
(
|
{ F
S
y
y
f
opt
x
f
A
x
}
|
{ constr
valideaza
y
A
y
S
F
4. Introducere
O problem de optimizare combinatorie (POC) este o
problem de optimizare unde A este produsul cartezian
al unor mul釘imi (solu釘ia problemei se exprim prin
combina釘ii).
Obs. De obicei, A este puterea unei mul釘imi.
Exemplu
N
x
x
x
x
x
x
x
x
x
x
x
constr
x
x
x
x
x
x
x
f
R
N
f
constr
R
N
f
3
2
1
3
1
2
1
3
3
2
1
3
2
2
1
3
2
1
3
3
,
,
}
28
5
2
4
,
17
{
4
5
2
)
,
,
(
:
)
max,
,
,
,
(
5. Introducere
Solu釘iile fezabile ale unei POC:
Solu釘iile (valorile optime ale) unei POC:
Solu釘iile par釘iale ale unei POC:
Obs. 1.
Obs. 2. Unii algoritmi genereaz spa釘ii mai largi de solu釘ii, pe
care apoi le triaz (slides 16 i 19).
P
F S
S
)}
),
(
(
)
(
|
)
,
,
(
{ 2
1 F
n S
y
y
f
opt
x
f
A
x
x
x
x
}
|
)
,
,
,
(
{ 2
1 constr
valideaza
y
A
y
y
y
y
S n
F
}
1
|
)
,
,
,
(
{ 2
1 n
k
y
y
y
y
S k
P
6. Probleme de optimizare
combinatorie
Problemele de optimizare combinatorie sunt prezente 樽n
via釘a de zi cu zi i sunt studiate intens de cercettori.
Domenii de interes: Matematic, Cercetare opera釘ional,
Algoritmic, Inteligen釘a Artificial, Complexitatea
calculului.
Exemple de POC
Probleme de alocare (Problema alocrii liniare, Problema
alocrii ptratice);
Probleme de fluxuri 樽n grafuri (Problema arborelui minim
de acoperire, Problema fluxului maxim);
Probleme de transport (Problema comis-voiajorului,
Problema rutrii vehiculelor).
7. Probleme de optimizare
combinatorie
Caracteristicile POC:
uor de formalizat
spa釘iu uria de cutare
dificile (cu c但teva excep釘ii - cele mai cunoscute excep釘ii:
Problema arborelui minim de acoperire; Problema
alocrii liniare).
8. Probleme de optimizare
combinatorie
Formalizare simpl
Problema alocrii liniare:
Dat o matrice C(nxn) de valori pozitive,
s se aleag n valori aflate pe linii i
coloane diferite i care au suma minim.
Problema comis-voiajorului:
Dat un graf cu ponderi pozitive G(V,E,d),
s se gseasc un circuit hamiltonian
de cost minim.
n
j
i
x
n
j
x
n
i
x
x
c
ij
n
i
ij
n
j
ij
n
i
n
j
ij
ij
,
1
}
1
,
0
{
1
1
1
1
min
1
1
1 1
V
j
i
x
V
S
x
V
j
x
V
i
x
x
d
ij
S
i S
V
j
ij
E
ij
ij
E
ij
ij
E
ij
ij
ij
,
}
1
,
0
{
1
1
1
min
)
(
)
(
)
(
9. Probleme de optimizare
combinatorie
Spa釘iu uria de cutare
Dac n = 100, atunci spa釘iul de solu釘ii
fezabile pentru Problema alocrii liniare
are __________ elemente.
n
j
i
x
n
j
x
n
i
x
x
c
ij
n
i
ij
n
j
ij
n
i
n
j
ij
ij
,
1
}
1
,
0
{
1
1
1
1
min
1
1
1 1
10. Probleme de optimizare
combinatorie
Spa釘iu uria de cutare
Dac n = 100, atunci spa釘iul de solu釘ii
fezabile pentru Problema alocrii liniare
are 100! (aprox. 9x10167) elemente.
Atomii din Univers: 1080
n
j
i
x
n
j
x
n
i
x
x
c
ij
n
i
ij
n
j
ij
n
i
n
j
ij
ij
,
1
}
1
,
0
{
1
1
1
1
min
1
1
1 1
11. Probleme de optimizare
combinatorie
Dificile (cu c但teva excep釘ii)
Nu s-au gsit algoritmi de complexitate polinomial care s
le rezolve.
Clasa problemelor pentru care exist algoritmi polinomiali de
rezolvare se numete P (Probleme Polinomiale).
Hungarian Method este un algoritm polinomial pentru
Problema alocrii liniare; deci Problema alocrii liniare este
樽n P .
Exist algoritmi care nu au complexitate polinomial:
for釘a brut pentru Problema alocrii liniare este O(n!).
Aceti algoritmi se numesc exponen釘iali.
k
n n
n
k
!
lim
1
12. Probleme de optimizare
combinatorie
Dificile (cu c但teva excep釘ii)(cont.)
To釘i algoritmii cunoscu釘i pentru Problema comis-voiajorului
sunt exponen釘iali.
Dar nu s-a demonstrat c nu exist algoritmi polinomiali
care s-o rezolve.
Problema comis-voiajorului este 樽n clasa NP (probleme
Nedeterminist Polinomiale).
13. Metode de rezolvare
pentru POC
1. For釘a brut (metod exact):
Inspectarea tuturor solu釘ilor fezabile (din );
2. Metode prin eliminare (cutting) (metode exacte):
Se elimin din zonele pentru care se demonstreaz c nu
con釘in solu釘ii;
3. Metode aproximative:
Se gsete o solu釘ie fezabil pentru care se demonstreaz c
func釘ia obiectiv este apropiat de valoarea optim
(calitatea solu釘iei este garantat);
4. Metode euristice:
Se caut o solu釘ie fezabil ob釘inut rapid (nici gsirea solu釘iei
i nici calitatea sa nu sunt garantate).
5. Calcul concurent (creterea vitezei de calcul).
F
S
F
S
14. 1. For釘a brut
(Cutare exhaustiv)
Este recomandat dac nu este foarte mare.
Exemplu
Se d un graf planar complet cu n noduri (puncte de interes +
distan釘e 樽ntre ele).
S se determine distan釘a maxim parcurs de un turist care
are 3 bilete de transport (樽ntre orice 2 puncte se
valideaz un bilet).
F
S
15. 2. Metode prin eliminare
(Cutting methods)
Se construiete un arbore. Nodurile corespund unor
submul釘imi ale lui . Rdcina corespunde lui . Fiii
fiecrui nod se ob釘in printr-o metod de parti釘ionare
(branch) a mul釘imii corespunztoare nodului respectiv.
C但nd submul釘imea corespunztoare devine vid,
ramura se 樽nchide.
Exemple: Backtracking; Branch and bound.
F
S F
S
16. 2. Metode prin eliminare
Problema alocrii liniare
9 2 7
C = 6 4 3
5 8 1
S con釘ine toate combina釘iile posibile;
Back la slide 5
3
}
3
,
2
,
1
{
)}
333
(
),
332
(
),
331
(
),
113
(
),
112
(
),
111
{(
S
16
8
6
2
))
212
((
f
17. 2.1. Backtracking
Parcurgere 樽n ad但ncime. Pentru nivelul 1 se parti釘ioneaz
Pe nivelul 2 se 樽nchid 3 ramuri (care? de ce?), etc
)}
333
(
,
),
311
{(
)},
233
(
,
),
211
{(
)},
133
(
,
),
111
{( 3
2
1
S
S
S
18. 2.2. Branch and bound
n plus, fiecare nod are asociat o limit (bound) a func釘iei
obiectiv pe submul釘imea corespunztoare nodului.
C但nd limita arat c pe ramura respectiv nu se poate
gsi o solu釘ie, ramura se 樽nchide i deci submul釘imea
corespunztoare este eliminat.
Backtracking / Branch and bound:
Limita (bound) este de ateptat s 樽nchid mai cur但nd
ramuri, deci Branch and bound s fie mai rapid.
Nu exist re釘et pentru gsirea limitei. Dac limita este
slab aleas, atunci 樽nchiderea este 樽nt但rziat.
19. 2.2. Branch and bound
Problema este de minimizare. Se caut o limit inferioar
(lower bound). Se alege:
lower_bound(nod) = suma elementelor minime de pe fiecare
r但nd nealocat.
Nu trebuie s fie realizabil! Back la slide 5
16
5
4
7
)
(
_
6
1
3
2
)
(
_
13
1
3
9
)
(
_
)}
333
(
,
),
311
{(
)},
233
(
,
),
211
{(
)},
133
(
,
),
111
{(
6
1
3
2
)
(
_
)}
333
(
),
332
(
),
331
(
,
),
113
(
),
112
(
),
111
{(
3
2
1
3
2
1
S
bound
lower
S
bound
lower
S
bound
lower
S
S
S
S
bound
lower
S
20. 2.2. Branch and bound
Parcurgere pe l釘ime. Pentru nivelul 1 se parti釘ioneaz la fel
Se continu cu nodul cel mai promi釘tor de pe nivel (al doilea).
)}
333
(
,
),
311
{(
)},
233
(
,
),
211
{(
)},
133
(
,
),
111
{( 3
2
1
S
S
S
)}
233
(
),
232
(
),
231
{(
)},
223
(
),
222
(
),
221
{(
)},
213
(
),
212
(
),
211
{( 23
22
21
S
S
S
21. se 樽nchide
Cel mai promi釘tor nod (primul) se expandeaz. Se 樽nchid primii doi fii.
f((213))=9. Se compar aceast valoare cu toate limitele nodurilor
ne樽nchise. Toate valorile rmase sunt mai mari, deci toate se 樽nchid.
2.2. Branch and bound
10
5
3
2
)
(
_
9
1
6
2
)
(
_
23
22
21
S
bound
lower
S
S
bound
lower
22. 2. Metode prin eliminare
Backtracking:
a necesitat 10 expandri;
nu optimizeaz, ci genereaz toate solu釘iile fezabile.
Branch and bound:
a necesitat 3 expandri;
optimizeaz, deci genereaz doar solu釘iile.
Ambele sunt metode exacte.