curs 12 n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
Curs 12 PowerPoint Presentation
Download Presentation
Curs 12

Loading in 2 Seconds...

play fullscreen
1 / 20

Curs 12 - PowerPoint PPT Presentation


  • 238 Views
  • Uploaded on

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.

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'Curs 12' - hana


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.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
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
"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
backtracking ingrediente
"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)
backtracking pentru probleme de optim
"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
spatiul solutiilor produs cartezian exemplu
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

enumerarea elementelor din 0 m 1 n
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

backtracking produs cartezian algoritm
"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

spatiul solutiilor submultimi
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
spatiul solutiilor permutari
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

spatiul solutiilor drumuri in graf cu sursa precizata
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
spatiul solutiilor drumuri in graf cu sursa si destintatia precizate
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)
spatiul solutiilor labirint
Spatiul solutiilor = labirint

(0,0)

(5,3)

lista de adiacenta = parcurgerea in sensul arcelor de ceasornic incepind cu vecinul din dreapta

backtracking problema celor n regine
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
problema celor n regine algoritm backtracking
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|
problema celor n regine arborele taiat
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

backtracking colorarea grafurilor
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]
backtracking submultimi de suma data
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

branch and bound
"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
branch and bound rucsac 0 1
"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)
branch and bound rucsac 0 1 exemplu
"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