Differences

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

Link to this comparison view

pa:laboratoare:laborator-05 [2021/03/08 23:24]
radu.nichita [Generare de siruri]
pa:laboratoare:laborator-05 [2024/04/01 14:12] (current)
radu.nichita
Line 1: Line 1:
-====== Laborator 5: Backtracking ====== +====== Laborator 05: Backtracking ====== 
-Responsabili:​ + 
-  * [[neatudarius@gmail.com|Darius-Florentin Neațu (2017-2021)]] +
-  * [[radunichita99@gmail.com | Radu Nichita (2021)]] +
-  * [[cristianolaru99@gmail.com | Cristian Olaru (2021)]] +
-  * [[mirunaelena.banu@gmail.com ​ | Miruna-Elena Banu (2021)]] +
-  * [[maraioana9967@gmail.com | Mara-Ioana Nicolae (2021)]] +
-  * [[stefanpopa2209@gmail.com | Ștefan Popa (2018-2020)]] +
- +
- +
-Autori: +
-  * [[radu.stochitoiu@gmail.com|Radu Stochitoiu (2018)]] +
-  * [[razvan.m.chitu@gmail.com|Razvan Chitu (2018)]] +
 ===== Obiective laborator ===== ===== Obiective laborator =====
   * Întelegerea noțiunilor de bază despre backtracking;​   * Întelegerea noțiunilor de bază despre backtracking;​
Line 32: Line 20:
 ===== Ce este Backtracking?​ ===== ===== Ce este Backtracking?​ =====
 Backtracking este un algoritm care caută **una sau mai multe soluții** pentru o problema, printr-o căutare exhaustiva, mai eficientă însă în general decât o abordare „generează si testează”,​ de tip „forță brută”, deoarece un candidat parțial care nu duce la o soluție este abandonat. Poate fi folosit pentru orice problemă care presupune o căutare în **spațiul stărilor**. Backtracking este un algoritm care caută **una sau mai multe soluții** pentru o problema, printr-o căutare exhaustiva, mai eficientă însă în general decât o abordare „generează si testează”,​ de tip „forță brută”, deoarece un candidat parțial care nu duce la o soluție este abandonat. Poate fi folosit pentru orice problemă care presupune o căutare în **spațiul stărilor**.
-În general, în timp ce cautăm o soluție e posibil să dăm de o înfundătură ​în urma unei alegeri greșite sau să găsim o soluție, dar să dorim să căutăm în continuare alte soluții. În acel moment trebuie să ne întoarcem pe pașii făcuți (**backtrack**) și la un moment dat să luăm altă decizie.+În general, în timp ce cautăm o soluție e posibil să dăm de un deadend ​în urma unei alegeri greșite sau să găsim o soluție, dar să dorim să căutăm în continuare alte soluții. În acel moment trebuie să ne întoarcem pe pașii făcuți (**backtrack**) și la un moment dat să luăm altă decizie.
 Este relativ simplu din punct de vedere conceptual, dar complexitatea algoritmului este exponentială. Este relativ simplu din punct de vedere conceptual, dar complexitatea algoritmului este exponentială.
  
Line 191: Line 179:
 Soluția va avea următoarele complexitati:​ Soluția va avea următoarele complexitati:​
  
-  * complexitate temporala : $T(n)=O(n * n!)=O(n!)$+  * complexitate temporala : $T(n)=O(n * n!)$
      * explicație : Complexitatea generarii permutarilor,​ $O(n!)$, se înmultește cu complexitatea copierii vectorilor soluție si domeniu si a stergerii elementelor din domeniu, $O(n)$      * explicație : Complexitatea generarii permutarilor,​ $O(n!)$, se înmultește cu complexitatea copierii vectorilor soluție si domeniu si a stergerii elementelor din domeniu, $O(n)$
   * complexitate spatiala : $S(n)=O(n^2)$   * complexitate spatiala : $S(n)=O(n^2)$
Line 945: Line 933:
 </​spoiler>​ </​spoiler>​
  
 +
 +
 +<spoiler Backtracking problems>​
 +Articolul de pe [[https://​leetcode.com/​tag/​backtracking/​| leetcode]] conține o listă cu diverse tipuri de probleme de programare dinamică, din toate categoriile discutate la PA (plus multe altele).
 +</​spoiler>​
  
 ===== Referințe ===== ===== Referințe =====
  
 [0] Chapter **Backtracking**,​ “Introduction to Algorithms”,​ Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest and Clifford Stein [0] Chapter **Backtracking**,​ “Introduction to Algorithms”,​ Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest and Clifford Stein
pa/laboratoare/laborator-05.1615238653.txt.gz · Last modified: 2021/03/08 23:24 by radu.nichita
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