Differences

This shows you the differences between two versions of the page.

Link to this comparison view

sda-ab:laboratoare:12 [2021/03/10 14:58]
david.broscoteanu [3 Probleme rezolvate prin tehnica backtracking]
sda-ab:laboratoare:12 [2021/03/11 12:48] (current)
david.broscoteanu
Line 8: Line 8:
 ====2.1 Definiție==== ====2.1 Definiție====
 Noțiunea de backtracking se referă la utilizarea unui algoritm recursiv pentru soluționarea unei probleme ce admite soluții parțiale. Se începe cu una din bucățile de soluție disponibile și se avansează până la construirea soluției complete. Dacă una din rutele de construcție disponibile nu duce nicăieri, se merge înapoi (backtrack) și se încearcă altă cale. Dacă niciuna din rute nu dă o soluție, atunci problema nu este rezolvabilă.\\ ​ Noțiunea de backtracking se referă la utilizarea unui algoritm recursiv pentru soluționarea unei probleme ce admite soluții parțiale. Se începe cu una din bucățile de soluție disponibile și se avansează până la construirea soluției complete. Dacă una din rutele de construcție disponibile nu duce nicăieri, se merge înapoi (backtrack) și se încearcă altă cale. Dacă niciuna din rute nu dă o soluție, atunci problema nu este rezolvabilă.\\ ​
-{{ :​laboratoare:​backtracking.png |}}+{{ :sda-ab:​laboratoare:​backtracking.png |}}
 \\  \\ 
  
Line 15: Line 15:
 Algoritmul generat este următorul: Algoritmul generat este următorul:
 <note importante>​ <note importante>​
-*Se alege un punct de start +  ​* Se alege un punct de start 
-*Cât timp problema nu este rezolvată:​ +  * Cât timp problema nu este rezolvată:​ 
-   ​*Pentru fiecare cale(parte din soluție disponibilă) de la punctul de start: +    * Pentru fiecare cale(parte din soluție disponibilă) de la punctul de start: 
-      *Se verifică dacă ruta aleasă este bună (nu invalidează condiția de rezolvare) +      * Se verifică dacă ruta aleasă este bună (nu invalidează condiția de rezolvare) 
-      *Daca da, se adaugă la soluția în construcție și se apelează recursiv algoritmul pentru restul problemei +      * Daca da, se adaugă la soluția în construcție și se apelează recursiv algoritmul pentru restul problemei 
-      *Dacă apelul recursiv reușește să găsească o soluție completă,​algoritmul se încheie. Dacă nu, ruta aleasă se elimină din soluție și se alege alta. +      * Dacă apelul recursiv reușește să găsească o soluție completă,​algoritmul se încheie. Dacă nu, ruta aleasă se elimină din soluție și se alege alta. 
-*Daca niciuna din căile disponibile nu este bună, nu există soluție (pentru punctul de start ales).+  * Daca niciuna din căile disponibile nu este bună, nu există soluție (pentru punctul de start ales).
  
 </​note>​ </​note>​
Line 29: Line 29:
 Dată fiind o matrice 2D de caractere, să se verifice dacă există un cuvânt în matrice. Dacă da,să i se afișeze calea. Se permite mișcarea în toate cele 8 direcții. Dată fiind o matrice 2D de caractere, să se verifice dacă există un cuvânt în matrice. Dacă da,să i se afișeze calea. Se permite mișcarea în toate cele 8 direcții.
 \\  \\ 
-{{ :​laboratoare:​horizon.png?​300 |}}+{{ :sda-ab:​laboratoare:​horizon.png?​300 |}}
 \\  \\ 
 Procedeu:​\\ ​ Procedeu:​\\ ​
Line 46: Line 46:
 Se notează cu 0 celulele neutilizate.\\ ​ Se notează cu 0 celulele neutilizate.\\ ​
  
-{{ :​laboratoare:​matrice0.png?​300 |}}+{{ :sda-ab:​laboratoare:​matrice0.png?​300 |}}
  
 ===3.2 Problema spargerii cuvintelor=== ===3.2 Problema spargerii cuvintelor===
Line 67: Line 67:
   * Mai jos este un exemplu cu ce s-ar întâmpla fără programarea dinamică   * Mai jos este un exemplu cu ce s-ar întâmpla fără programarea dinamică
  
-{{ :​laboratoare:​word2.png |}}+{{ :sda-ab:​laboratoare:​word2.png |}}
  
 ====4 Exerciţii==== ====4 Exerciţii====
Line 79: Line 79:
   -* Găsirea unui ciclu Hamiltonian într-un graf;   -* Găsirea unui ciclu Hamiltonian într-un graf;
   -** Problema comisului-voiajor;​   -** Problema comisului-voiajor;​
- 
-==== 5. Exerciţii de laborator (Linux) ==== 
-Pentru acest laborator puteți descărca scheletul de cod de [[http://​elf.cs.pub.ro/​sda-ab/​wiki/​_media/​laboratoare/​lab12_backtracking-skel.zip|aici]]. Descărcați arhiva și dezarhivați-o. ​ 
- 
-=== Linux=== 
-Puteti folosi utilitarul ''​%%wget%%''​ pentru descarcare si utilitarul ''​%%unzip%%''​ pentru dezarhivare. 
- 
-  * ''​%%wget http://​elf.cs.pub.ro/​sda-ab/​wiki/​_media/​laboratoare/​lab12_backtracking-skel.zip%%''​ 
-  * ''​%%unzip lab12_backtracking-skel.zip%%''​ 
- 
-Pentru compilare folositi comanda ''​%%make%%''​. 
  
  
sda-ab/laboratoare/12.1615381112.txt.gz · Last modified: 2021/03/10 14:58 by david.broscoteanu
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0