Differences

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

Link to this comparison view

pa:laboratoare:laborator-04 [2021/04/01 01:09]
darius.neatu [Exponențiere pe matrice pentru recurențe liniare]
pa:laboratoare:laborator-04 [2024/04/16 17:38] (current)
radu.nichita
Line 1: Line 1:
-====== Laborator 4: Programare Dinamică (continuare) ====== +====== Laborator 04: Programare Dinamică (2/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-Fforentin 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 102: Line 88:
        * explicație:​ $X =(BC)$ generează $3 * 4 * 5 = 60$ înmulțiri,​ $(AX)$ generează $2 * 3 * 5 = 30$ de înmulțiri        * explicație:​ $X =(BC)$ generează $3 * 4 * 5 = 60$ înmulțiri,​ $(AX)$ generează $2 * 3 * 5 = 30$ de înmulțiri
        
-Rezultatul optim se obține pentru ​cea de a treia parantezare:​ $(AB)C$.+Rezultatul optim se obține pentru ​prima parantezare:​ $(AB)C$.
    
 </​spoiler>​ </​spoiler>​
Line 165: Line 151:
 == Numire recurență === == Numire recurență ===
 $dp[i][j]$ = **numărul minim de înmulțiri scalare** cu care se poate obține produsul $M_i * M_{i+1} * ... *{M_j}$ ​ $dp[i][j]$ = **numărul minim de înmulțiri scalare** cu care se poate obține produsul $M_i * M_{i+1} * ... *{M_j}$ ​
 +
 +Răspunsul la problemă este **dp[1][n]** .
  
 == Găsire recurență == == Găsire recurență ==
Line 519: Line 507:
       * o înmulțire de matrice patrătică de dimensiune KMAX are $KMAX^3$ operații       * o înmulțire de matrice patrătică de dimensiune KMAX are $KMAX^3$ operații
     * această metodă este eficientă când $KMAX << n$ (KMAX este mult mai mic decât n)     * această metodă este eficientă când $KMAX << n$ (KMAX este mult mai mic decât n)
-  * ** complexitatea spațială **: $S = O(KMAX^3)$  +  * ** complexitatea spațială **: $S = O(KMAX^2)$  
-    * explicație  +**Observație!** În ultimele calcule nu am șters constanta KMAX, întrucât apare la puterea a 2-a! $KMAX = 1000$ implică $KMAX^= 10^6$, valoare care nu mai poate fi ignorată în practică ($KMAX^2$ poate fi comparabil cu n).
-      * este nevoie să stocăm câteva matrice +
-**Observație!** În ultimele calcule nu am șters constanta KMAX, întrucât apare la puterea a 3-a! $KMAX = 100$ implică $KMAX^= 10^6$, valoare care nu mai poate fi ignorată în practică ($KMAX^3$ poate fi comparabil cu n).+
  
 === Gardurile lui Gigel (optimizare) === === Gardurile lui Gigel (optimizare) ===
Line 531: Line 517:
 == Exponențiere rapidă == == Exponențiere rapidă ==
   * $ k = 4 $   * $ k = 4 $
-  * $S_4 = (dp[1], dp[2], dp[3], dp[4]) = (1, 1, 1, 4)$+  * $S_4 = (dp[1], dp[2], dp[3], dp[4]) = (1, 1, 1, 2)$
   * $S_i = (dp[i-3], dp[i-2], dp[i-1], dp[i])$   * $S_i = (dp[i-3], dp[i-2], dp[i-1], dp[i])$
   * Răspunsul se află efectuând operația $S_n = S_4 * C^{n - 4}$, unde C are următorul conținut:  ​   * Răspunsul se află efectuând operația $S_n = S_4 * C^{n - 4}$, unde C are următorul conținut:  ​
Line 629: Line 615:
  
 <spoiler Comparație solutii (studiu de caz pentru curioși)>​ <spoiler Comparație solutii (studiu de caz pentru curioși)>​
-Pr git găsiți o sursă completă în care se realizează:​+Pe git găsiți o sursă completă în care se realizează:​
   * o verificare a faptului că cele 2 implementări (** gardurile_lui_Gigel** și **garduri_rapide**) produc aceleași rezultate   * o verificare a faptului că cele 2 implementări (** gardurile_lui_Gigel** și **garduri_rapide**) produc aceleași rezultate
   * un benchmark în care cele 2 implementări sunt comparate   * un benchmark în care cele 2 implementări sunt comparate
-    * pe sistem uzual (laptop) s-au obținut următoarele rezulate:+    * pe un sistem uzual (laptop) s-au obținut următoarele rezulate:
 <code bash> <code bash>
 test case: varianta simplă test case: varianta simplă
pa/laboratoare/laborator-04.1617228569.txt.gz · Last modified: 2021/04/01 01:09 by darius.neatu
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