1 / 20

Curs 12

Curs 12. Paradigmele "backtracking" si "branch and bound" Modelul matematic Studii de caz problema celor n regine colorarea grafurilor submultimea de suma maxima rucsac 0/1. "Backtracking" si "branch and bound": cadru general.

hana
Download Presentation

Curs 12

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Curs 12 • Paradigmele "backtracking" si "branch and bound" • Modelul matematic • Studii de caz • problema celor n regine • colorarea grafurilor • submultimea de suma maxima • rucsac 0/1

  2. "Backtracking" si "branch and bound": cadru general • metoda de rezolvare: cautare in spatiul solutiilor candidat (finit) • cautare exhaustiva: este cercetat intregul spatiu • cautare sistematica: "backtracking" si "branch and bound" • spatiul solutiilor este organizat ca un arbore • un varf este viabil daca sunt sanse sa se gaseasca o solutie explorand subarborele cu radacina in acel varf • sunt explorati numai subarborii cu radacini viabile • "backtracking" si "branch and bound" difera doar prin modul in care exploreaza lista varfurilor viabile din arbore

  3. "Backtracking": ingrediente • spatiul solutiilor candidat organizat ca arbore • produs cartezian • submultimi • permutari • drumuri in graf • etc • se defineste o functie criteriu prin care se stabileste daca un varf este viabil sau nu • arborele este explorat prin algoritmul DFS • fie x = (x0, ..., xk) secventa care descrie drumul de la radacina la varful curent • daca varful curent este pe frontiera se verifica daca x este solutie • in caz contrar se alege urmatorul succesor viabil (daca exista)

  4. "Backtracking" pentru probleme de optim • pp. ca se doreste calculul lui optimx f(x) • se pleaca cu un optim initial • daca varful curent este pe frontiera se verifica daca f(x) este mai bun decat optimul calculat pana in acel moment • daca da, atunci f(x) devine noul optim • daca varful curent NU este pe frontiera si f() calculat pentru solutia partiala este mai "rau" decat optimul calculat pana in acel moment, atunci varful nu este viabil si este abandonat

  5. Spatiul solutiilor = produs cartezian: exemplu 3 1 2 2 1 2 2 1 1 (3,2) (3,1) (2,2) (2,1) (1,2) (1,1) • S = {1,2,3}  {1,2} • dimensiune spatiu: A0 A1 ...  An-1 are |A0|  |A1|  ...  |An-1| elemente

  6. Enumerarea elementelor din {0,...,m-1}n procedure EnumProdCart(m,n) begin k  0; x[0]  -1 while (k >= 0) do if (x[k] < m-1) then x[k]++ if (k=n-1) then scrie(x) else k++ x[k]  -1 else k-- end

  7. "Backtracking": produs cartezian - algoritm procedure backtracking() begin k  0; x[0]  -1 while (k >= 0) do if (x[k] < m - 1) then repeat x[k]++ until (viabil(x,k) or x[k]=m-1) if (viabil(x,k)) then if (k=n-1 and x este solutie) then scrie(x) else if (k<n-1) then k++ x[k]  -1 else k-- end

  8. Spatiul solutiilor = submultimi 0 1 0 1 0 1 0 0 0 0 1 1 1 1 • S  {0, 1, ..., n-1} • S poate fi reprezentata prin vectorul sau caracteristic x: x[i]  {0,1}, x[i] = 1  i  S • vector caracteristic {0,1}n • enumerare submultimi = enumerare vectori caracteristici • dimensiune spatiu: 2n • Exemplu: n = 3

  9. Spatiul solutiilor = permutari 2 0 1 2 2 1 1 0 0 1 2 2 0 0 1 0 1 2 0 2 1 1 0 2 1 2 0 2 0 1 2 1 0 n = 3: • enumerare permutari prin "bactracking" • x[k] viabil  0  x[k]  n-1 si x[k]  x[i] pentru i = 0, ..., k-1

  10. Spatiul solutiilor = drumuri in graf cu sursa precizata 0 0 1 4 4 1 2 2 3 3 3 2 4 3 2 1 2 1 4 • se parcurge DFS • ori de cate ori se epuizeaza lista de asteptare a lui i ≠ i0 se face p[i] = a[i] (se reia de la capat) • se inlocuieste testul i  S cu i  stiva

  11. Spatiul solutiilor = drumuri in graf cu sursa si destintatia precizate (0,0) (0,0) (0,1) (0,2) (1,0) (0,1) (1,1) (1,1) (1,0) (0,2) (1,2) (1,1) (0,1) (1,2) (1,2) (1,0) (1,2) (0,2) (1,2) • lista de adiacenta = parcurgerea in sensul arcelor de ceasornic incepind cu vecinul din dreapta • se parcurge DFS incepand cu (0, 0) • ori de cate ori se intalneste (1,2) stiva descrie un drum de la (0,0) la (1,2)

  12. Spatiul solutiilor = labirint (0,0) (5,3) lista de adiacenta = parcurgerea in sensul arcelor de ceasornic incepind cu vecinul din dreapta

  13. Backtracking: problema celor n regine 0 1 2 3 0 1 2 3 • Problema • intrare: o tabla de sah n  n, n regine • iesire: toate asezarile posibile ale celor n regine pe tabla fara ca sa se atace

  14. Problema celor n regine: algoritm backtracking • reprezentarea solutiei • o reprezentare care nu-i OK Q[i,j] = true  pe pozitia [i,j] se gaseste o regina nr. sol. candidat = 2nn • o reprezentare mai buna s[i] = j  Q[i,j] = true nr. sol. candidat = nn n = 8  2nn = 264, nn = 224 • criteriul de viabilitate • (i) 0  i  k – 1  s[i]  s[k]  |s[i] – s[k]|  |i-k|

  15. Problema celor n regine: arborele taiat 3 0 2 1 0 3 0 3 2 1 0 3 2 1 1 2 0 1 2 3 0 x x 1 x x 2 x x x x 3

  16. Backtracking: colorarea grafurilor • problema • instanta • un graf G = (V, E), V = {0, ..., n-1}, • m culori 1, 2, ..., m • colorare c : V  {1, 2, ..., m}, {i, j}  E  c[i]  c[j] • iesire: • toate colorarile posibile • modelul matematic • reprezentarea solutiilor • c  {1, 2, ...,m}n • criteriul de viabilitate • (j) 0  j < k and {j, k}  E  c[j]  c[k]

  17. Backtracking: submultimi de suma data • problema • instanta • o multime A cu n elemente • fiecare a  A are o marime s[a]  Z+ • un numar M  Z+ • iesire • submultimile A’ A cu (s[a] a  A’) = M • modelul matematic • reprezentarea solutiei • pp. A = {0, 1, ..., n-1}, s[i] = wi • A' reprezentata prin vectorul caracteristic x • criteriul de viabilitate: i=1,k xiwi  M si i=1,k xiwi + i=k+1,n wi  M

  18. "Branch and bound" • fiecare varf viabil este explorat o singura data • cand un varf viabil este explorat, toti fiii viabili sunt generati si memorati intr-o structura de date de asteptare • urmatorul varf explorat este ales din structura de asteptare • moduri de implementare pentru structura de asteptare: • coada (FIFO) • arborele este explorat BFS • (min, max) - heap • probleme de optim • se asociaza o functie predictor (valoare de cost aproximativa) pentru fiecare varf • cheia in heap = valoarea functiei predictor

  19. "Branch and bound": rucsac 0/1 • problema relaxata • functia obiectiv: max i=0,n-1 yi pi • restrictii: (i) 0  i < k  yi  {0,1} (i) k  i < n  yi  [0,1] i=0,n-1 yi wi  M M  Z, (i)wi , pi  Z • modelul matematic • valoarea cost aproximata = valoarea obtinuta prin rezolvarea problemei relaxate • structura pentru structura de asteptare: max-heap (varful urmator este cel cu valoarea maxima pentru problema relaxata)

  20. "Branch and bound": rucsac 0/1 – exemplu M = 80 1 0 1 0 1 0 0 1 0 0 0 0 W = 75 P = 95 W = 70 P = 90

More Related