際際滷

際際滷Share a Scribd company logo
Optimizare combinatorie
TAP
INFO II
TI II
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
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
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,
,
,
,
(
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
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).
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).
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

)
(
)
(
)
(
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
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
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
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).
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
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
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
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
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
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.
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
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
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
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.
Bibliografie
http://citeseerx.ist.psu.edu/viewdoc/download;jsessionid=8F21042F327
F09D82513A121EF269861?doi=10.1.1.5.7475&rep=rep1&type=p
df
http://www.youtube.com/watch?v=BUGIhEecipE
http://www.cs.princeton.edu/courses/archive/spr05/cos423/lectures/07a
ssignment.pdf
http://www.mutah.edu.jo/userhomepages/CS252/branchandbound.html
http://mat.gsia.cmu.edu/orclass/integer/node13.html#SECTION000420
00000000000000
http://intelligence.worldofcomputing.net/ai-search/brute-force-
search.html
https://www.youtube.com/watch?v=0PM10vOtd6o

More Related Content

5 optimizare combinatorie logica critical

  • 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.