1 / 13

BACTRACKING-UL in plan si ZBORUL la VEDERE

BACTRACKING-UL in plan si ZBORUL la VEDERE. Se foloseste cand avem mai multe solutii de generat, acestea fiind sub forma de vector Solutiile sunt alese dintr-o multime finita cu elemente intr-o ordine bine stabilita Daca o varianta generata nu convine, nu e afisata

ismet
Download Presentation

BACTRACKING-UL in plan si ZBORUL la VEDERE

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. BACTRACKING-UL in plan si ZBORUL la VEDERE

  2. Se foloseste cand avem mai multe solutii de generat, acestea fiind sub forma de vector Solutiile sunt alese dintr-o multime finita cu elemente intr-o ordine bine stabilita Daca o varianta generata nu convine, nu e afisata Are aplicatii precum problema labirintului, comisului voiajor, bilei, sariturii calului, etc. Cestim acum despre Backtracking? • Ce vreau sa stiu • principiul care sta la baza metodei • o modalitate de implementare a metodei backtracking • o situatie cand pot sa aplic problema in practica

  3. Daca in procesul de generare a unui vector solutie s = x1,x2,…xn, pentru componenta k, constatam ca valoarea xknu e bine aleasa, nu trecem la componenta k+1, ci reluam cautarea pentru alta valoare pentru componenta k, iar daca aceasta nu exista, reluam cautarea pentru k-1. 1. Principiul metodei

  4. Metoda e implementata de un suprogram general ce apeleaza alte suprograme care au in general acelasi nume si aceeasi parametri. void back (int k) { if (solutie(k)==1) tipar( ); else { init(k); while (succesor(k)==1) if (valid(k)) back(k+1); } } 2.Implementarea metodei

  5. Algoritm simplu de permutari INIT introduce prima valoare posibila in prima componenta a solutiei, adica pe prima pozitie din vector SUCCESOR verifica daca o anumita componenta a solutiei mai poate primi valori. In caz ca poate, aceasta primeste urmatoarea valoare posibila. De asemenea, functia returneaza si un rezultat: 0 in cazul in care componenta respectiva a solutiei nu mai poate lua valori si 1 in cazul in care a luat urmatoarea valoare posibila VALID verifica daca noua valoare luata de una din componentele solutiei respecta conditiile interne. SOLUTIE verifica daca au fost generate toate componentele care alcatuiesc solutia. Daca o solutie are n componente si noi ne aflam pe nivelul k, unde k<n, functia SOLUTIE va genera valoarea 0. TIPAR afiseaza pe ecran elementele solutiei void init(int k) { st[k]=0; } int succesor(int k) { if (st[k]<n) { st[k]=st[k]+1; return 1; } else return 0; } int valid(int k) { for(int i=1;1<k; i++) if(st[k]==st[i]) return 0; return 1; } int solutie(int k) {if(k==n) return 1; return 0;} void tipar() { for(int i=1; i<=n;i++) cout<<st[i]<<" "; cout<<endl; }

  6. ☺problema LABIRINTULUI Ce faci cand pilotezi un avion dupa regulile zborului la vedere si cativa nori iti strica vizibilitatea? Ne gandim la nori precum la peretii unui labirint si incercam sa descoperim un drum printre ei. 3.In practica

  7. 0 1 0 0 1 0 0 0 Cand vrem sa vedem daca o anumita casuta are una dintre directii blocate trebuie sa vedem daca bitul de pe pozitia respectiva este 1 sau 0 .

  8. Ca la orice problema de Backtracking, vom gasi mai multe solutii…

  9. In cazul acesta se observa ca nu exista decat o singura solutie insa se verifica toate posibilitatile

  10. 2 1 3 1 2 1 1 1 2 1 1 1 1 2 2 1 1 1 1 2 2 2 2 3 1 3 2 1 1 1 1 2 2 2 2 3 3 3 2 1 1 1 1 2 2 2 2 3 3 3 3 2 2 1 1 1 1 2 2 2 2 3 3 3 3 4 In exemplul nostru casuta unde se afla 11 este pozitia de start.Se cauta toate posibilitatile de a iesi din labirint. ↑Datele de intrare ←Grafica in C++ Codul sursa→

  11. Am invatat sa analizam o problema in amanunt • Am inteles backtrackingul, aplincandu-l intr-o problema practica • Am invatat sa facenanimatii in power point si sa corelam algoritmul de backtracking cu grafica oprea VALENTINA petrescu MADALINA pohontu IOANA

  12. Manualul de informatica clasa aXI-a Vlad Hutanu si Tudor Sorin Internet http://infoscience.3x.ro/c++/Backtracking_%20in_%20plan.htm Bibliografie

More Related