Differences

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

Link to this comparison view

pa:laboratoare:laborator-03 [2021/03/26 01:38]
radu.nichita [RUCSAC]
pa:laboratoare:laborator-03 [2023/03/15 16:54] (current)
radu.nichita
Line 1: Line 1:
-====== Laborator 3: Programare Dinamică ====== +====== Laborator 03: Programare Dinamică ​(1/2) ======
-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: +
-  * [[neatudarius@gmail.com|Darius-Florentin Neațu (2018)]] +
-  * [[visanr95@gmail.com|Radu Vișan (2018)]] +
-  * [[cristb@gmail.com|Cristian Banu (2018)]] +
-  * [[razvan.ch95@gmail.com|Răzvan Chițu (2018)]]+
  
 ===== Obiective laborator ===== ===== Obiective laborator =====
Line 321: Line 308:
       * presupune inductiv că avem rezolvate toate subproblemele mai mici       * presupune inductiv că avem rezolvate toate subproblemele mai mici
       * în cazul SCMAX, presupunem că avem calculate $ dp[1], dp[2], ..., dp[i-1] $ și dorim să calculăm $ dp[i] $ (cunoaștem cea mai bună soluție folosind primele j elemente și vedem dacă elementul de pe poziția i o poate îmbunătăți - $j = 1:i-1$)       * în cazul SCMAX, presupunem că avem calculate $ dp[1], dp[2], ..., dp[i-1] $ și dorim să calculăm $ dp[i] $ (cunoaștem cea mai bună soluție folosind primele j elemente și vedem dacă elementul de pe poziția i o poate îmbunătăți - $j = 1:i-1$)
-      * deoarece nu știm unde e cel mai bine să îl pune pe $v[i]$ (după care v[j]?), încercăm pentru toate valorile posibile ale lui j (unde $j = 1 : - 1$)+      * deoarece nu știm unde e cel mai bine să îl pune pe $v[i]$ (după care v[j]?), încercăm pentru toate valorile posibile ale lui j (unde $j = 1 : - 1$)
         * **dacă $v[j] < v[i] $**, atunci subșirul crescător care se termină pe poziția j, poate fi extins la dreapta cu elementul v[i], generând lungimea ** dp[j] + 1 **         * **dacă $v[j] < v[i] $**, atunci subșirul crescător care se termină pe poziția j, poate fi extins la dreapta cu elementul v[i], generând lungimea ** dp[j] + 1 **
            * deci dp[i] = max(dp[j] + 1), $j = 1 : i - 1$ (dacă nu există un astfel de j, valoarea lui max(...) este 0)            * deci dp[i] = max(dp[j] + 1), $j = 1 : i - 1$ (dacă nu există un astfel de j, valoarea lui max(...) este 0)
-        * Ce se întamplă totuși dacă nu există un j care să îndeplinească condiția de mai sus? Atunci $v[i]$ va forma singur un subșir crescător de lungime 1 (care poate fi la un pas ulterior) ​+        * Ce se întamplă totuși dacă nu există un j care să îndeplinească condiția de mai sus? Atunci $v[i]$ va forma singur un subșir crescător de lungime 1 (care poate fi folosit ​la un pas ulterior) ​
    
   Reunind cele spuse mai sus:   Reunind cele spuse mai sus:
   * $dp[1] = 1$   * $dp[1] = 1$
-  * $dp[i] = 1 + max(dp[j])$,​ unde $j = 1 : i-1$ **și** $v[j] < v[i]$+  * $dp[i] = 1 + max(dp[j])$,​ unde $j = 1 : i-1$ **și** $v[j] < v[i]$; $i=2:n$
  
 == Implementare recurență == == Implementare recurență ==
Line 490: Line 477:
    ​Reunind cele spuse mai sus, obținem:    ​Reunind cele spuse mai sus, obținem:
    * $dp[0][cap] = 0$, pentru $cap = 0 : W$    * $dp[0][cap] = 0$, pentru $cap = 0 : W$
-   * $dp[i][cap] = max(dp[i - 1]cap], dp[i - 1][cap - w_i] + p_i)$+   * $dp[i][cap] = max(dp[i - 1][cap], dp[i - 1][cap - w_i] + p_i)$
      * pentru $i = 1: n$, $cap = 0:W$       * pentru $i = 1: n$, $cap = 0:W$ 
  
pa/laboratoare/laborator-03.1616715537.txt.gz · Last modified: 2021/03/26 01:38 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