Sunteți pe pagina 1din 30

Divide et Impera Probleme de tip Divide et Impera Concluzii

Curs Algoritmi Fundamentali


Divide et Impera

Universitatea Transilvania din Braşov


Facultatea de Matematică şi Informatică

2018
Divide et Impera Probleme de tip Divide et Impera Concluzii

Contents

1 Divide et Impera

2 Probleme de tip Divide et Impera

3 Concluzii
Divide et Impera Probleme de tip Divide et Impera Concluzii

Metoda Divide et Impera - Condiţii

Metoda se poate aplica în rezolvarea unei probleme care


îndeplineşte următoarele condiţii:
se poate descompune în (doua sau mai multe)
subprobleme;
Divide et Impera Probleme de tip Divide et Impera Concluzii

Metoda Divide et Impera - Condiţii

Metoda se poate aplica în rezolvarea unei probleme care


îndeplineşte următoarele condiţii:
se poate descompune în (doua sau mai multe)
subprobleme;
aceste subprobleme sunt independente una faţă de alta
(subproblema nu se rezolvă pe baza alteia şi nu se
foloseşte rezultatul celeilalte);
Divide et Impera Probleme de tip Divide et Impera Concluzii

Metoda Divide et Impera - Condiţii

Metoda se poate aplica în rezolvarea unei probleme care


îndeplineşte următoarele condiţii:
se poate descompune în (doua sau mai multe)
subprobleme;
aceste subprobleme sunt independente una faţă de alta
(subproblema nu se rezolvă pe baza alteia şi nu se
foloseşte rezultatul celeilalte);
aceste subprobleme sunt similare cu problema iniţială;
Divide et Impera Probleme de tip Divide et Impera Concluzii

Metoda Divide et Impera - Condiţii

Metoda se poate aplica în rezolvarea unei probleme care


îndeplineşte următoarele condiţii:
se poate descompune în (doua sau mai multe)
subprobleme;
aceste subprobleme sunt independente una faţă de alta
(subproblema nu se rezolvă pe baza alteia şi nu se
foloseşte rezultatul celeilalte);
aceste subprobleme sunt similare cu problema iniţială;
la rândul lor subproblemele se pot descompune (dacă este
necesar) în alte subprobleme mai simple;
Divide et Impera Probleme de tip Divide et Impera Concluzii

Metoda Divide et Impera - Condiţii

Metoda se poate aplica în rezolvarea unei probleme care


îndeplineşte următoarele condiţii:
se poate descompune în (doua sau mai multe)
subprobleme;
aceste subprobleme sunt independente una faţă de alta
(subproblema nu se rezolvă pe baza alteia şi nu se
foloseşte rezultatul celeilalte);
aceste subprobleme sunt similare cu problema iniţială;
la rândul lor subproblemele se pot descompune (dacă este
necesar) în alte subprobleme mai simple;
aceste subprobleme simple au soluţii rapide.
Divide et Impera Probleme de tip Divide et Impera Concluzii

Metoda Divide et Impera - Etape

Etapele rezolvării unei probleme iniţiale cu Divide et Impera


sunt:
(Împarte) descompunerea problemei iniţiale în
subprobleme independente, similare problemei de bază,
dar de dimensiuni mai mici;
Divide et Impera Probleme de tip Divide et Impera Concluzii

Metoda Divide et Impera - Etape

Etapele rezolvării unei probleme iniţiale cu Divide et Impera


sunt:
(Împarte) descompunerea problemei iniţiale în
subprobleme independente, similare problemei de bază,
dar de dimensiuni mai mici;
descompunerea treptată a subproblemelor în alte
subprobleme din ce in ce mai simple, până când se pot
rezolva imediat, prin algoritmul simplificat;
Divide et Impera Probleme de tip Divide et Impera Concluzii

Metoda Divide et Impera - Etape

Etapele rezolvării unei probleme iniţiale cu Divide et Impera


sunt:
(Împarte) descompunerea problemei iniţiale în
subprobleme independente, similare problemei de bază,
dar de dimensiuni mai mici;
descompunerea treptată a subproblemelor în alte
subprobleme din ce in ce mai simple, până când se pot
rezolva imediat, prin algoritmul simplificat;
(Stăpâneşte) rezolvarea subproblemelor mici/simple;
Divide et Impera Probleme de tip Divide et Impera Concluzii

Metoda Divide et Impera - Etape

Etapele rezolvării unei probleme iniţiale cu Divide et Impera


sunt:
(Împarte) descompunerea problemei iniţiale în
subprobleme independente, similare problemei de bază,
dar de dimensiuni mai mici;
descompunerea treptată a subproblemelor în alte
subprobleme din ce in ce mai simple, până când se pot
rezolva imediat, prin algoritmul simplificat;
(Stăpâneşte) rezolvarea subproblemelor mici/simple;
(Combină) combinarea soluţiilor găsite pentru construirea
soluţiilor subproblemelor;
Divide et Impera Probleme de tip Divide et Impera Concluzii

Metoda Divide et Impera - Etape

Etapele rezolvării unei probleme iniţiale cu Divide et Impera


sunt:
(Împarte) descompunerea problemei iniţiale în
subprobleme independente, similare problemei de bază,
dar de dimensiuni mai mici;
descompunerea treptată a subproblemelor în alte
subprobleme din ce in ce mai simple, până când se pot
rezolva imediat, prin algoritmul simplificat;
(Stăpâneşte) rezolvarea subproblemelor mici/simple;
(Combină) combinarea soluţiilor găsite pentru construirea
soluţiilor subproblemelor;
combinarea ultimelor soluţii determină obţinerea soluţiei
problemei iniţiale.
Divide et Impera Probleme de tip Divide et Impera Concluzii

Metoda Divide et Impera - Complexitate

Complexitatea algoritmilor de tipul Divide et Impera se


calculează după formula:

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: împarte (divide), stăpâneşte (impera) şi
respectiv combină.
Divide et Impera Probleme de tip Divide et Impera Concluzii

Probleme clasice de Divide et Impera

Căutare binară - O(log2 n)


Divide et Impera Probleme de tip Divide et Impera Concluzii

Probleme clasice de Divide et Impera

Căutare binară - O(log2 n)


Sortarea rapidă (QuickSort) - O(n ∗ log2 n)
Divide et Impera Probleme de tip Divide et Impera Concluzii

Probleme clasice de Divide et Impera

Căutare binară - O(log2 n)


Sortarea rapidă (QuickSort) - O(n ∗ log2 n)
Sortarea prin interclasare (MergeSort) - Θ(n ∗ log2 n)
Divide et Impera Probleme de tip Divide et Impera Concluzii

Probleme clasice de Divide et Impera

Căutare binară - O(log2 n)


Sortarea rapidă (QuickSort) - O(n ∗ log2 n)
Sortarea prin interclasare (MergeSort) - Θ(n ∗ log2 n)
Turnurile din Hanoi - O(2n )
Divide et Impera Probleme de tip Divide et Impera Concluzii

Alte probleme cu Divide et Impera (I)

(I) Calculul puterii unui număr, X n : algoritm clasic (O(n))


vs algoritm Divide et Impera.
Discuţie după n:

Complexitate: T (n) = T (n/2) + Θ(1). Total O(log n)


(refolosind calcul pe ramuri de recursivitate)
Divide et Impera Probleme de tip Divide et Impera Concluzii

Alte probleme cu Divide et Impera (I)

(I) Calculul puterii unui număr, X n : algoritm clasic (O(n))


vs algoritm Divide et Impera.
Discuţie după n:
n par: x n/2 ∗ x n/2 ;

Complexitate: T (n) = T (n/2) + Θ(1). Total O(log n)


(refolosind calcul pe ramuri de recursivitate)
Divide et Impera Probleme de tip Divide et Impera Concluzii

Alte probleme cu Divide et Impera (I)

(I) Calculul puterii unui număr, X n : algoritm clasic (O(n))


vs algoritm Divide et Impera.
Discuţie după n:
n par: x n/2 ∗ x n/2 ;
n impar: x ∗ x n/2 ∗ x n/2 ;

Complexitate: T (n) = T (n/2) + Θ(1). Total O(log n)


(refolosind calcul pe ramuri de recursivitate)
Divide et Impera Probleme de tip Divide et Impera Concluzii

Alte probleme cu Divide et Impera (I)

(I) Calculul puterii unui număr, X n : algoritm clasic (O(n))


vs algoritm Divide et Impera.
Discuţie după n:
n par: x n/2 ∗ x n/2 ;
n impar: x ∗ x n/2 ∗ x n/2 ;
(caz particular) n este 0: 1.
Complexitate: T (n) = T (n/2) + Θ(1). Total O(log n)
(refolosind calcul pe ramuri de recursivitate)
Divide et Impera Probleme de tip Divide et Impera Concluzii

Alte probleme cu Divide et Impera (I)

(I) Calculul puterii unui număr, X n : algoritm clasic (O(n))


vs algoritm Divide et Impera.
Discuţie după n:
n par: x n/2 ∗ x n/2 ;
n impar: x ∗ x n/2 ∗ x n/2 ;
(caz particular) n este 0: 1.
Complexitate: T (n) = T (n/2) + Θ(1). Total O(log n)
(refolosind calcul pe ramuri de recursivitate)
(II) Algoritm Karatsuba de înmulţire a două numere mari
(algoritm clasic (O(n2 ))): https:
//en.wikipedia.org/wiki/Karatsuba_algorithm
Complexitate (algoritm Divide et Impera):
T (n) = 3 ∗ T (n/2) + c ∗ n + d, unde c şi d sunt constante. Total
3
Θ(nlog2 )
Divide et Impera Probleme de tip Divide et Impera Concluzii

Alte probleme cu Divide et Impera (II)

(III) Numerele lui Fibonacci


Divide et Impera Probleme de tip Divide et Impera Concluzii

Alte probleme cu Divide et Impera (II)

(III) Numerele lui Fibonacci


variantă recursivă, T (n) = T (n − 1) + T (n − 2),
complexitate exponenţială - multe operaţii repetate
Divide et Impera Probleme de tip Divide et Impera Concluzii

Alte probleme cu Divide et Impera (II)

(III) Numerele lui Fibonacci


variantă recursivă, T (n) = T (n − 1) + T (n − 2),
complexitate exponenţială - multe operaţii repetate
Altă rezolvare? (O(n))
Divide et Impera Probleme de tip Divide et Impera Concluzii

Alte probleme cu Divide et Impera (II)

(III) Numerele lui Fibonacci


variantă recursivă, T (n) = T (n − 1) + T (n − 2),
complexitate exponenţială - multe operaţii repetate
Altă rezolvare? (O(n))  
1 1
variantă utilizând matricea , complexitate O(log n).
1 0
Discuţii.
Divide et Impera Probleme de tip Divide et Impera Concluzii

Alte probleme cu Divide et Impera (III)

(IV) Înmulţirea matricilor: algoritm clasic (O(n3 )) sau cu


algoritmul lui Strassen. Discuţii şi complexitate:
T (n) = 7 ∗ T (n/2) + O(n2 )
Divide et Impera Probleme de tip Divide et Impera Concluzii

Divide et Impera - Avantaje şi dezavantaje

Avantaje:
produce algorimi eficienţi

Dezavantaje:
Divide et Impera Probleme de tip Divide et Impera Concluzii

Divide et Impera - Avantaje şi dezavantaje

Avantaje:
produce algorimi eficienţi
descompunerea problemei în subprobleme favorizează
paralelizarea algoritmului în vederea implementării lui pe
mai multe procesoare
Dezavantaje:
Divide et Impera Probleme de tip Divide et Impera Concluzii

Divide et Impera - Avantaje şi dezavantaje

Avantaje:
produce algorimi eficienţi
descompunerea problemei în subprobleme favorizează
paralelizarea algoritmului în vederea implementării lui pe
mai multe procesoare
Dezavantaje:
se adaugă un overhead datorat recursivităţii (reţinere pe
stivă a apelurilor funcţiilor)

S-ar putea să vă placă și