Differences

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

Link to this comparison view

pa:laboratoare:laborator-01 [2018/03/02 14:15]
traian.rebedea [Turnurile din Hanoi]
pa:laboratoare:laborator-01 [2020/03/03 21:52] (current)
darius.neatu [Bonus]
Line 1: Line 1:
 ====== Laborator 01: Divide et Impera ====== ====== Laborator 01: Divide et Impera ======
 Responsabili:​ Responsabili:​
-  * [[visanr95@gmail.com|Radu Vișan]] 
-  * [[cristb@gmail.com|Cristian Banu]] 
   * [[neatudarius@gmail.com|Darius Neațu]]   * [[neatudarius@gmail.com|Darius Neațu]]
 +  * [[stefanpopa2209@gmail.com | Ștefan Popa]]
  
 +Autori: 
 +  * [[visanr95@gmail.com|Radu Vișan (2018)]] 
 +  * [[cristb@gmail.com|Cristian Banu (2018)]] 
 +  * [[neatudarius@gmail.com|Darius Neațu (2018)]] 
 +  ​
 ===== Obiective laborator ===== ===== Obiective laborator =====
  
-  * Înțelegerea conceptului teoretic din spatele descompunerii+  * Înțelegerea conceptului teoretic din spatele descompunerii ​unei probleme
   * Rezolvarea de probleme abordabile folosind conceptul ​ de Divide et Impera   * Rezolvarea de probleme abordabile folosind conceptul ​ de Divide et Impera
  
Line 16: Line 19:
 Toate exemplele de cod se gasesc in {{pa:​new_pa:​demo-lab01.zip}}. Toate exemplele de cod se gasesc in {{pa:​new_pa:​demo-lab01.zip}}.
  
-Acestea ​apar incorporate si in textul laboratorului pentru a facilita parcurgerea cursiva a laboratorului.+Exemplele de cod apar incorporate si in textul laboratorului pentru a facilita parcurgerea cursiva a acestuia.
 </​note>​ </​note>​
  
Line 37: Line 40:
 O descriere a tehnicii D&I: “Divide and Conquer algorithms break the problem into several sub-problems that are similar to the original problem but smaller in size, solve the sub-problems recursively,​ and then combine these solutions to create a solution to the original problem.” [7] O descriere a tehnicii D&I: “Divide and Conquer algorithms break the problem into several sub-problems that are similar to the original problem but smaller in size, solve the sub-problems recursively,​ and then combine these solutions to create a solution to the original problem.” [7]
  
-Deci un algoritm D&I **împarte problema** în mai multe subprobleme similare cu problema inițială şi de dimensiuni mai mici, **rezolva ​sub-problemele** recursiv şi apoi **combina soluțiile** obţinute pentru a obține soluția problemei inițiale.+Deci un algoritm D&I **împarte problema** în mai multe subprobleme similare cu problema inițială şi de dimensiuni mai mici, **rezolva ​subproblemele** recursiv şi apoi **combina soluțiile** obţinute pentru a obține soluția problemei inițiale.
  
 Sunt trei pași pentru aplicarea algoritmului D&I: Sunt trei pași pentru aplicarea algoritmului D&I:
Line 43: Line 46:
   * **Divide**: împarte problema în una sau mai multe //probleme similare de dimensiuni mai mici//.   * **Divide**: împarte problema în una sau mai multe //probleme similare de dimensiuni mai mici//.
   * **Impera** (stăpânește):​ rezolva subprobleme recursiv; dacă dimensiunea sub-problemelor este mica se rezolva iterativ.   * **Impera** (stăpânește):​ rezolva subprobleme recursiv; dacă dimensiunea sub-problemelor este mica se rezolva iterativ.
-  * **Combină**:​ combină soluțiile ​sub-problemelor ​pentru a obține soluția problemei inițiale.+  * **Combină**:​ combină soluțiile ​subproblemelor ​pentru a obține soluția problemei inițiale.
  
 Complexitatea algoritmilor D&I se calculează după formula: Complexitatea algoritmilor D&I se calculează după formula:
Line 49: Line 52:
 $T(n) = D(n) + S(n) + C(n)$, $T(n) = D(n) + S(n) + C(n)$,
  
-unde $D(n)$, $S(n)$ şi $C(n)$ reprezintă complexitățile celor 3 pași descriși mai sus: divide, stăpânește respectiv combină.+unde $D(n)$, $S(n)$ şi $C(n)$ reprezintă complexitățile celor 3 pași descriși mai sus: divide, stăpâneșterespectiv combină.
  
 ===== Probleme clasice ===== ===== Probleme clasice =====
Line 301: Line 304:
   * **complexitate temporala** : $T = O(n)$   * **complexitate temporala** : $T = O(n)$
     * $\log_{4} (2^n) = \frac{1}{2} \log _{2} (2^n) =  \frac{1}{2} n $  ​     * $\log_{4} (2^n) = \frac{1}{2} \log _{2} (2^n) =  \frac{1}{2} n $  ​
-  ​* **complexitate spatiala** : $S=O(n)$+  * **complexitate spatiala** : $S=O(n)$
     * stocam parametri pentru recursivitate ​     * stocam parametri pentru recursivitate ​
     * solutia se poate implementa si iterativ, caz in care $S = O(1)$; deoarece dimensinile spatiului de cautare sunt $2^n * 2^n$, n este foarte mic ($n <= 15$), de aceea o solutie iterativa nu aduce nici un castig **efectiv** in aceasta situatie     * solutia se poate implementa si iterativ, caz in care $S = O(1)$; deoarece dimensinile spatiului de cautare sunt $2^n * 2^n$, n este foarte mic ($n <= 15$), de aceea o solutie iterativa nu aduce nici un castig **efectiv** in aceasta situatie
Line 570: Line 573:
 </​spoiler>​ </​spoiler>​
  
 +<spoiler ClassicTask>​
 +Testați soluția voastră de la **Exponentiere logaritmica** pe infoarena, la problema [[https://​infoarena.ro/​problema/​classictask | ClassicTask ]] (trebuie să modificați numele fișierelor).
 +
 +Identificați problema și modificați sursa astfel încât să luați punctaj maxim.
 +</​spoiler> ​
 ==== Extra ==== ==== Extra ====
 <spoiler Statistici de ordine> <spoiler Statistici de ordine>
pa/laboratoare/laborator-01.1519992940.txt.gz · Last modified: 2018/03/02 14:15 by traian.rebedea
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