branch and bound

Upload: ioan-nicolae-ureche

Post on 29-Oct-2015

123 views

Category:

Documents


3 download

DESCRIPTION

1

TRANSCRIPT

  • 6. Metoda Branch and Bound -----------------------------------------------------------------------------------------------------------------------

    --------------------------------------------------------------------------------------------------------------------

    Tehnici avansate de programare 1

    Unitatea de nvare nr. 6 METODA BRANCH AND BOUND

    Cuprins 6.1. Prezentare general ..................................................................................................... 2 6.2. Algoritmul Branch & Bound pentru probleme de optim ................................................. 6 6.3. Comentarii i rspunsuri la testele de autoevaluare ................................................... 10 6.4. Lucrare de verificare pentru studeni .......................................................................... 11 6.5. Bibliografie .................................................................................................................. 12

    Obiectivele unitii de nvare nr. 6

    Indicaii metodice pentru unitatea de nvare nr. 6

    Materialul trebuie parcurs n ordinea sa fireasc, prezentat n continuare. Se recomand conspectarea i notarea ideilor principale, repcum i consultarea bibliografiei pentru detalii i informaii suplimentare.

    Timpul minim pe care trebuie s-l acordai acestei uniti de nvare este de 8 ore.

    Dup ce vei parcurge aceast unitate de nvare, vei reui s: stpnii o metod complex de programare, ce mbin

    parcurgerea n adncime a unui arbore cu parcurgerea sa pe lime;

    aplicai metoda Branch and Bound problemelor de optim.

  • 9. Metoda Branch and Bound ----------------------------------------------------------------------------------------------------------------------

    --------------------------------------------------------------------------------------------------------------------

    2 Tehnici avansate de programare

    6.1. Prezentare general

    Metoda Branch and Bound se aplic problemelor care care pot fi reprezentate pe un arbore: se ncepe prin a lua una dintre mai multe decizii posibile, dup care suntem pui n situaia de a alege din nou ntre mai multe decizii; vom alege una dintre ele etc. Vrfurile arborelui corespund strilor posibile n dezvoltarea soluiei.

    Deosebim dou tipuri de probleme: 1) Se caut un anumit vrf, numit vrf rezultat, care evident este

    final (nu are descendeni).

    2) Exist mai multe vrfuri finale, care reprezint soluii posibile, dintre care cutm de exemplu pe cel care optimizeaz o anumit funcie.

    Exemplul 1:

    Jocul 15 (Perspico).

    Un numr de 15 plcue ptrate sunt incorporate ntr-un cadru 44, o poziie fiind liber. Fiecare plcu este etichetat cu unul dintre numerele 1,2,...,15. Prin configuraie nelegem o plasare oarecare a plcuelor n cadru. Orice plcu adiacent cu locul liber poate fi mutat pe acest loc liber. Dndu-se o configuraie iniial i una final, se cere o succesiune de mutri prin care s ajungem din configuraia iniial n cea final. Configuraiile iniial i final pot fi de exemplu:

    1 2 3 4 1 2 3 4 5 7 8 5 6 7 8 9 6 10 11 9 10 11 12 13 14 15 12 13 14 15

    unde locul liber mai poate fi considerat drept coninnd plcua imaginar cu eticheta 16.

    Prezentm nti o condiie de existen a unei succesiuni de mutri prin care se poate trece de la configuraia iniial n cea final.

    Cele 16 locauri sunt considerate ca fiind ordonate de la stnga la dreapta i de jos n sus. Pentru plcua etichetat cu i definim valoarea n(i) ca fiind numrul locaurilor care urmeaz celei pe care se afl plcua i care conin o plcu a crei etichet este mai mic dect i. De exemplu pentru configuraia iniial de mai sus avem: n(8)=1; n(4)=0; n(16)=10; n(15)=1 etc.

    Fie l i c linia i coloana pe care apare locul liber. Fie x{0,1} definit astfel: x=0 dac i numai dac l+c este par. Se poate demonstra urmtorul rezultat:

  • 6. Metoda Branch and Bound -----------------------------------------------------------------------------------------------------------------------

    --------------------------------------------------------------------------------------------------------------------

    Tehnici avansate de programare 3

    Propoziie: Fiind dat o configuraie iniial, putem trece din ea la configuraia final de mai sus n(1)+n(2)+...+n(16)+x este par.

    n continuare vom presupune c putem trece de la configuraia iniial la cea final.

    Cum locul liber poate fi mutat spre N, S, E, V (fr a iei din cadru),

    rezult c fiecare configuraie (stare) are cel mult 4 descendeni. Se observ c arborele astfel construit este infinit. Strile finale sunt stri rezultat i corespund configuraiei finale.

    Exemplul 2:

    Circuitul hamiltonian de cost minim Se consider un graf orientat cu arcele etichetate cu costuri

    pozitive. Inexistena unui arc ntre dou vrfuri este identificat prin "prezena" sa cu costul +. Presupunem c graful este dat prin matricea C a costurilor sale. Se cere s se determine, dac exist, un circuit hamiltonian de cost minim.

    S considerm de exemplu graful dat de matricea de costuri:

    Arborele spaiului de stri, n care vrfurile corespund vrfurilor din graf, iar muchiile reprezint arce din graf, este urmtorul:

    =

    626

    384

    915

    273

    C

    (3,2) (2,3) (4,2)

    (4,3)

    (2,4) (4,5) (3,4)

    (4,2) (3,4) (3,2) (2,4) (2,3)

    (1,4) (1,3) (1,2)

    1

    2 3 4

    5 6 7 8 9 10

    11 12 13 14 15 16

  • 9. Metoda Branch and Bound ----------------------------------------------------------------------------------------------------------------------

    --------------------------------------------------------------------------------------------------------------------

    4 Tehnici avansate de programare

    subnelegndu-se c se pleac din vrful 1 i c din frunze se revine la acest vrf. Revenim la descrierea metodei Branch and Bound.

    tim c i metoda backtracking este aplicabil problemelor reprezentabile pe arbori. Exist ns multe deosebiri, dintre care menionm urmtoarele: - ordinea de parcurgere a arborelui; - modul n care sunt eliminai subarborii care nu pot conduce la o

    soluie; - faptul c arborele poate fi infinit (prin natura sa sau prin faptul c mai

    multe vrfuri pot corespunde la o aceeai stare).

    n general arborele de stri este construit dinamic. Este folosit o list L de vrfuri active, adic de stri care sunt

    susceptibile de a fi dezvoltate pentru a ajunge la soluie (soluii). Iniial, lista L conine rdcina arborelui, care este vrful curent. La fiecare pas, din L alegem un vrf (care nu este neaprat un fiu al vrfului curent!), care devine noul vrf curent.

    Cnd un vrf activ devine vrf curent, sunt generai toi fiii si, care devin vrfuri active (sunt inclui n L). Apoi din nou este selectat un vrf curent.

    Legat de modul prin care alegem un vrf activ drept vrf curent, deci implicit legat de modul de parcurgere a arborelui, facem urmtoarele remarci: parcurgerea DF nu este adecvat, deoarece pe de o parte arborele poate fi infinit, iar pe de alt parte soluia cutat poate fi de exemplu un fiu al rdcinii diferit de primul fiu i parcurgerea n adncime ar fi ineficient: se parcurg inutil stri, n loc de a avansa direct spre soluie; parcurgerea pe lime conduce totdeauna la soluie (dac aceasta exist), dar poate fi ineficient dac vrfurile au muli fii.

    Metoda Branch and Bound ncearc un "compromis" ntre cele dou parcurgeri menionate mai sus, atand vrfurilor active cte un cost pozitiv, ce intenioneaz s fie o msur a gradului de "apropiere" a vrfului de o soluie. Alegerea acestui cost este decisiv pentru a obine un timp de executare ct mai bun i depinde att de problem, dar mai ales de abilitatea programatorului.

    Observaie: Totdeauna costul unui vrf va fi mai mic dect cel al descendenilor (fiilor).

    De fiecare dat drept vrf curent este ales cel de cost minim (cel considerat ca fiind cel mai "aproape" de soluie). De aceea L va fi n general un min-ansamblu: costul fiecrui vrf este mai mic dect costul descendenilor.

    Din analiza teoretic a problemei deducem o valoare lim care este o aproximaie prin adaos a minimului cutat: atunci cnd costul unui vrf

  • 6. Metoda Branch and Bound -----------------------------------------------------------------------------------------------------------------------

    --------------------------------------------------------------------------------------------------------------------

    Tehnici avansate de programare 5

    depete lim, atunci vrful curent este ignorat: nu este luat n considerare i deci este eliminat ntregul subarbore pentru care este rdcin. Dac nu cunoatem o astfel de valoare lim, o iniializm cu +.

    Se poate defini o funcie de cost ideal, pentru care c(x) este dat de:

    nivelul pe care se afl vrful x dac x este vrf rezultat; + dac x este vrf final, diferit de

    vrf rezultat; min {c(y) | y fiu al lui x } dac x nu este vrf final.

    Aceast funcie este ideal din dou puncte de vedere: - nu poate fi calculat dac arborele este infinit; n plus, chiar dac

    arborele este finit, el trebuie parcurs n ntregime, ceea ce este exact ce dorim s evitm; - dac totui am cunoate aceast funcie, soluia poate fi determinat

    imediat: plecm din rdcin i coborm mereu spre un vrf cu acelai cost, pn ajungem n vrful rezultat.

    Neputnd lucra cu funcia ideal de mai sus, vom alege o aproximaie a lui c, care trebuie s satisfac condiiile: 1) n continuare, dac y este fiu al lui x avem (x)lim, atunci i

    c(x)>lim, deci x nu va mai fi dezvoltat.

    O prim modalitate de a asigura compromisul ntre parcurgerile n adncime i pe lime este de a alege funcia astfel nct, pentru o valoare natural k, s fie ndeplinit condiia: pentru orice vrf x situat pe un nivel nx i orice vrf situat pe un nivel nynx+k, s avem (x)> (y), indiferent dac y este sau nu descendent al lui x.

    Condiia de mai sus spune c niciodat nu poate deveni activ un

    vrf aflat pe un nivel nynx+k dac n L apare un vrf situat pe nivelul nx, adic nu putem merge "prea mult" n adncime. Dac aceast condiie este ndeplinit, este valabil urmtoarea propoziie:

    Propoziie: Dac exist soluie, ea va fi atins ntr-un timp finit, chiar dac arborele este infinit. Putem aplica cele de mai sus pentru jocul Perspico, alegnd:

    (x) = suma dintre lungimea drumului de la rdcin la x i numrul de plcue care nu sunt la locul lor (aici k=15).

  • 9. Metoda Branch and Bound ----------------------------------------------------------------------------------------------------------------------

    --------------------------------------------------------------------------------------------------------------------

    6 Tehnici avansate de programare

    6.2. Algoritmul Branch & Bound pentru probleme de optim

    S presupunem c dorim s determinm vrful final de cost minim i drumul de la rdcin la el. Fie lim aproximarea prin adaos considerat mai sus. Algoritmul este urmtorul (rad este rdcina arborelui, iar ifinal este vrful rezultat):

    i rad; L {i}; min lim;

    calculez (rad); tata(i) 0 while L

    i L {este scos vrful i cu (i) minim din min-ansamblul L} for toi j fii ai lui i calculez (j); calcule locale asupra lui j; tata(j) i if j este vrf final then if (j)

  • 6. Metoda Branch and Bound -----------------------------------------------------------------------------------------------------------------------

    --------------------------------------------------------------------------------------------------------------------

    Tehnici avansate de programare 7

    Pentru rdcina rad=1 plecm de la matricea de costuri C. Matricea ataat va fi matricea redus obinut din C, iar (1) = cantitatea cu care s-a redus C. n general, pentru un vrf y oarecare al crui tat este x i muchia (x,y) este etichetat cu (i,j):

    dac y este vrf terminal, (x) va fi chiar c(y), adic costul real al circuitului; n caz contrar, plecnd de la Mx i (x) procedm astfel:

    - elementele liniei i devin , deoarece mergem sigur ctre vrful j din graf; - elementele coloanei j devin , deoarece am ajuns sigur n vrful j din graf; - Mx(j,1) , pentru a nu reveni prematur n rdcina 1; - reducem noua matrice Mx i obinem My; fie r cantitatea cu care s-a redus Mx. Vom lua (y) (x)+r+Mx(i,j).

    Concret, pentru exemplul dat, calculele se desfoar astfel:

    Pentru rdcin: - reduc liniile n ordine cu 2, 1, 3, 2; - reduc prima coloan cu 1; - n acest mod obin (1)=9, iar matricea M1 este:

    Acum min9; L={1}. Este extras vrful 1 i sunt considerai fiii si.

    Pentru vrful 2: - plec de la M1 i pun pe linia 1 i coloana 2; - reduc linia 3 cu 3; - n acest mod obin (2)=3+9+1=13, iar matricea M2 este: Pentru vrful 3: - plec de la M1 i pun pe linia 1 i coloana 3; - reduc linia 2 cu 3; - n acest mod obin (3)=3+9+5=17, iar matricea M3 este:

    =

    403

    050

    803

    051

    M1

    =

    10

    00

    80M2

  • 9. Metoda Branch and Bound ----------------------------------------------------------------------------------------------------------------------

    --------------------------------------------------------------------------------------------------------------------

    8 Tehnici avansate de programare

    Pentru vrful 4: - plec de la M1 i pun pe linia 1 i coloana 4; - nu este necesar vreo reducere; - n acest mod obin (4)=0+9+0=9, iar matricea M4 este Acum L={2,3,4} cu (2)=13, (3)=17,(4)=9. Devine activ vrful 4.

    Pentru vrful 9: - plec de la M4 i pun pe linia 4 i coloana 2; - nu este necesar vreo reducere; - n acest mod obin (9)=0+9+0=9, iar matricea M9 este: Pentru vrful 10: - plec de la M4 i pun pe linia 4 i coloana 3; - reduc linia 2 cu 3, iar linia 3 cu 5; - n acest mod obin (10)=8+9+4=21, iar matricea M10 este: Acum L={2,3,9,10} cu (2)=13, (3)=17, (9)=9, (10)=21.

    Devine activ vrful 9. Singurul su descendent este 15, care este frunz. (15)=c(15)=9 (costul real al circuitului). Sunt eliminate din L vrfurile cu costurile mai mari dect 9, deci L devine vid. min rmne egal cu 9, va fi produs la ieire circuitul cutat (1,4,2,3,1) i algoritmul se oprete.

    =

    03

    05

    50M3

    =

    40

    50

    03M4

    =0

    0M9

    =0

    0M10

  • 6. Metoda Branch and Bound -----------------------------------------------------------------------------------------------------------------------

    --------------------------------------------------------------------------------------------------------------------

    Tehnici avansate de programare 9

    Rspunsurile la test se vor da n spaiul liber din chenar, n continuarea enunurilor

    Testul de autoevaluare nr. 1 1. Care este clasa de probleme pentru care se poate aplica metoda

    Branch and Bound?

    2. Cum se alege funcia de cost i care rolul ei? 3. Care este criteriul prin care din mulimea vrfurilor active este

    ales vrful curent ? 4. Care este relaia ntre o funcie de cost oarecare i funcia de

    cost ideal?

    Rspunsurile la acest test se gsesc pe pagina urmtoare.

  • 9. Metoda Branch and Bound ----------------------------------------------------------------------------------------------------------------------

    --------------------------------------------------------------------------------------------------------------------

    10 Tehnici avansate de programare

    6.3. Comentarii i rspunsuri la testele de autoevaluare

    Testul 1.

    1. Metoda Branch and Bound este aplicabil problemelor care se pot reprezenta pe un arbore (finit sa infinit) de cutare.

    2. Orice funcie de cost c trebuie s ndeplineasc condiiile:

    - dac y este fiu al lui x avem c(x)

  • 6. Metoda Branch and Bound -----------------------------------------------------------------------------------------------------------------------

    --------------------------------------------------------------------------------------------------------------------

    Tehnici avansate de programare 11

    6.4. Lucrare de verificare pentru studeni

    6.5. Bibliografie

    [1] Georgescu Horia, Tehnici de programare, Editura Universitii

    Bucureti, 2005 [2] Cormen T. H. et al. Introducere n algoritmi, Computer Libris Agora,

    2000 [3] Parberry Ian, Gasarch William, Problems on Algorithms (2nd

    Edition), 2002 [4] Cormen T. H. et al. Introducere n algoritmi, Computer Libris Agora,

    2000 [5] Skiena Steven, The Algoritm Design Manual, Springer 1998

    Scriei cte un program ce folosete metoda Branch and Bound pentru rezolvarea celor dou probleme de mai jos: 1. Jocul Perspico. Enunul este prezentat mai sus. 2. Jocul Quad. QUAD se joac pe o tabl avnd nou cmpuri:

    patru coluri, patru mijloace, i un centru, fiecare cmp putnd fi alb sau negru. Un exemplu de configuraie este urmtoarea:

    col mijloc col mijloc centru mijloc

    col mijloc col

    n care cmpurile negre apar ntrite. Regulile de joc sunt urmtoarele: acionarea unui cmp negru are efect nul; acionarea unui col alb schimb culorile lui, ale mijloacelor vecine i a centrului; acionarea unui mijloc alb schimb culorile lui i ale colurilor vecine; acionarea centrului alb schimb culorile lui i ale mijloacelor vecine. Scopul jocului este de a trece dintr-o configuraie iniial ntr-o configuraie final, ambele date.

    Rezolvrile, dar i dificultile ntmpinate, vor fi expediate prin mail tutorelui.