Differences

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

Link to this comparison view

sda-aa:laboratoare:12 [2021/05/23 23:52]
cristian.rusu
sda-aa:laboratoare:12 [2021/05/26 11:58] (current)
cristian.rusu [4. Exerciții laborator]
Line 14: Line 14:
  
    * Divide - împarte problema în una/mai multe probleme similare de dimensiuni mai mici.    * Divide - împarte problema în una/mai multe probleme similare de dimensiuni mai mici.
-   * Stăpânește - rezolvă subproblemele recursiv (dacă dimensiunea subproblemelor este mică,se rezolvă iterativ).+   * Stăpânește - rezolvă subproblemele recursiv (dacă dimensiunea subproblemelor este mică, se rezolvă iterativ).
    * Combină - combină soluțiile sub-problemelor pentru a obține soluția problemei inițiale.    * Combină - combină soluțiile sub-problemelor pentru a obține soluția problemei inițiale.
  
Line 39: Line 39:
 Se dă o funcție care are semne contrare în cele doua capete ale intervalului [a,b],f(α) * f(β) < 0. Se dă o funcție care are semne contrare în cele doua capete ale intervalului [a,b],f(α) * f(β) < 0.
 Determinați o rădăcină a lui f din intervalul [a,b] cu o eroare ε. Determinați o rădăcină a lui f din intervalul [a,b] cu o eroare ε.
-Pentru rezolvarea problemei folosim următoarea strategie:​împărțirea repetată a intervalului inițial [α,β] în jumătăți ale acestuia și selectarea intervalului jumătății în care se află soluția (Metoda bisecției)+Pentru rezolvarea problemei folosim următoarea strategie: împărțirea repetată a intervalului inițial [α,β] în jumătăți ale acestuia și selectarea intervalului jumătății în care se află soluția (Metoda bisecției)
  
-   * Fie funcția f:[α,β] → R,​continuă.Determinarea aproximației Δ',a rădăcinii exacte Δ, cu eroarea ε.+   * Fie funcția f:[α,β] → R, continuă. Determinarea aproximației Δ', a rădăcinii exacte Δ, cu eroarea ε.
    * Notăm cu m mijlocul intervalului ( m=(α+β)/2 )    * Notăm cu m mijlocul intervalului ( m=(α+β)/2 )
-   * Verificăm dacă f(m) * f(b) < 0,ceea ce înseamnă că soluția se află în a doua jumătate a intervalului și îi atribuim lui α valoarea lui m. +   * Verificăm dacă f(m) * f(b) < 0, ceea ce înseamnă că soluția se află în a doua jumătate a intervalului și îi atribuim lui α valoarea lui m. 
-   * Altfel daca f(m) * f(b) > 0,soluția se află în prima jumătate a intervalului și ii atribuim lui β valoarea lui m.+   * Altfel daca f(m) * f(b) > 0, soluția se află în prima jumătate a intervalului și ii atribuim lui β valoarea lui m.
    * Acest procedeu se aplică în mod repetat până când lungimea intervalului scade cu 2*ε(β - α < 2*ε)    * Acest procedeu se aplică în mod repetat până când lungimea intervalului scade cu 2*ε(β - α < 2*ε)
  
Line 53: Line 53:
  
 === 3.1 Definiție === === 3.1 Definiție ===
 +
 +Programarea dinamică presupune rezolvarea unei probleme prin descompunea ei în subprobleme și rezolvarea acestora. Spre deosebire de divide et impera, subprogramele nu sunt disjuncte, ci se suprapun.
 +
 +Pentru a evita recalcularea porțiunilor care se suprapun, rezolvarea se face pornind de la cele mai mici subprograme și folosindu-ne de rezultatul acestora calculăm subproblema imediat mai mare. Cele mai mici subprobleme sunt numite subprobleme unitare, acestea putând fi rezolvate într-o complexitate constantă, ex:cea mai mare secvență dintr-o mulțime de un singur element.
  
 === 3.2 Algoritm === === 3.2 Algoritm ===
  
 +<note important>​Pași ce trebuie urmați:
 +   * Identificarea structurii și a matricilor utilizate în caracterizarea soluției optime
 +   * Determinarea unei metode de calcul recursiv pentru a afla valoarea fiecărei subprobleme
 +   * Calcularea „bottom-up“ a acestei valori (de la subprogramele cele mai mici la cele mai mari)
 +   * Reconstrucția soluției optime pornind de la rezultatele obținute anterior
 +</​note>​
  
 ==== 4. Exerciții laborator ==== ==== 4. Exerciții laborator ====
  
-     -  +     ​- ​Aproximaţi,​ printr-o abordare de tip Divide et Impera, cu o eroare (relativă) de maxim 1e-6, funcţia sqrt(n) (extragerea rădăcinii pătrate a unui număr). Nu aveţi voie să folosiţi nicio funcţie din „math.h“. Încercaţi să extindeţi exerciţiul pentru extragerea radicalului de ordin 3. 
 +     - Aproximaţi,​ printr-o abordare de tip Divide et Impera, cu o eroare (relativă) de maxim 1e-3, funcţia lg(n) (extragerea logaritmului în baza 10). Aveţi voie să vă folosiţi de funcţia pow(bază, exp) din „math.h“. 
 +     - Construiți o funcție care calculează f(n), unde f = șirul lui Fibonacci (cu și fără memoizare). Comparați timpii de rulare. n este numar intreg (pozitiv si negativ). 
 +     - Aveți la dispoziție monedele 25, 10, 5 și 1 RON. Calculați cu PD toate posibilitățile de rest (cu și fără memoizare).
sda-aa/laboratoare/12.1621803132.txt.gz · Last modified: 2021/05/23 23:52 by cristian.rusu
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