40
Divide et Impera Metoda generala de programare Legaturi stranse cu apelurile recursive Recursivitatea: probleme cu evaluarea complexitatii Astazi: Descriere: divide et impera cum se foloseste cum se evalueaza complexitatea o teorema pentru o clasa larga de asemenea probleme exemple

Divide et Impera APaun [Read-Only]old.fmi.unibuc.ro/ro/pdf/2019/admitere/licenta/FMI_Divide_et_Impera_I_2019.pdfDivide et impera Maxima latina Divide si conduce (divide si cucereste)

  • Upload
    others

  • View
    12

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Divide et Impera APaun [Read-Only]old.fmi.unibuc.ro/ro/pdf/2019/admitere/licenta/FMI_Divide_et_Impera_I_2019.pdfDivide et impera Maxima latina Divide si conduce (divide si cucereste)

Divide et Impera

Metoda generala de programare

Legaturi stranse cu apelurile recursive

Recursivitatea: probleme cu evaluarea complexitatii

Astazi:

• Descriere: divide et impera

• cum se foloseste

• cum se evalueaza complexitatea

• o teorema pentru o clasa larga de asemenea probleme

• exemple

Page 3: Divide et Impera APaun [Read-Only]old.fmi.unibuc.ro/ro/pdf/2019/admitere/licenta/FMI_Divide_et_Impera_I_2019.pdfDivide et impera Maxima latina Divide si conduce (divide si cucereste)

Divide et impera

Maxima latina

Divide si conduce (divide si cucereste)

Atribuita lui Cezar folosita inainte de Cezar de Gabinius

Idee: un inamic trebuie divizat in mai multecomponente mici care pot fi cuceritesuccesiv

Inamic: problema de programare

Page 4: Divide et Impera APaun [Read-Only]old.fmi.unibuc.ro/ro/pdf/2019/admitere/licenta/FMI_Divide_et_Impera_I_2019.pdfDivide et impera Maxima latina Divide si conduce (divide si cucereste)

mergesort AlgorithmmergeSort(S, C)

Input sequence S with nelements, comparator C

Output sequence S sorted

according to C

if S.size() > 1

(S1, S2)← partition(S, n/2)

mergeSort(S1, C)

mergeSort(S2, C)

S← merge(S1, S2)

7 2 9 4 →→→→ 2 4 7 9

7 2 →→→→ 2 7 9 4 →→→→ 4 9

7 →→→→ 7 2 →→→→ 2 9 →→→→ 9 4 →→→→ 4

Page 5: Divide et Impera APaun [Read-Only]old.fmi.unibuc.ro/ro/pdf/2019/admitere/licenta/FMI_Divide_et_Impera_I_2019.pdfDivide et impera Maxima latina Divide si conduce (divide si cucereste)
Page 6: Divide et Impera APaun [Read-Only]old.fmi.unibuc.ro/ro/pdf/2019/admitere/licenta/FMI_Divide_et_Impera_I_2019.pdfDivide et impera Maxima latina Divide si conduce (divide si cucereste)

Complexitatea algoritmului

Relatie de recurenta

Din secventa de n numere ajungem la doua secvente de cate n/2 numere pe care trebuie sa le rezolvam, plus timpul pentru “merge”

T(n)=2T(n/2)+cn

Vom vedea cum se rezolva acestea in general: T(n) este O(n log n)

Page 7: Divide et Impera APaun [Read-Only]old.fmi.unibuc.ro/ro/pdf/2019/admitere/licenta/FMI_Divide_et_Impera_I_2019.pdfDivide et impera Maxima latina Divide si conduce (divide si cucereste)

Divide et impera

Se da o instanta x pentru o problema Metoda divide et impera functioneaza in felul

urmator

DeI (x)

begin

Daca x e suficient de mic se rezolva direct, solutia este y

Altfel

se sparge problema x in subproblemele x1, x2, …,xk;

for i=1 to k do yi=DeI(xi);

combinam y1, y2, …, yk intr-o solutie y pentru x;

return (y);

end

Page 8: Divide et Impera APaun [Read-Only]old.fmi.unibuc.ro/ro/pdf/2019/admitere/licenta/FMI_Divide_et_Impera_I_2019.pdfDivide et impera Maxima latina Divide si conduce (divide si cucereste)

Analiza metodei prezentate

Deobicei x1, x2, …,xk sunt de aceeasidimensiune, sa zicem [n/b]

Complexitatea metodei exprimata de o recurenta

cine e c, cine e n0

( )0

0

daca ( )

( ) daca

unde ( ) este timpul necesar pentru spargerea

lui si combinarea -urilori

c n nT n

aT n b f n n n

f n

x y

≤= + >

Page 9: Divide et Impera APaun [Read-Only]old.fmi.unibuc.ro/ro/pdf/2019/admitere/licenta/FMI_Divide_et_Impera_I_2019.pdfDivide et impera Maxima latina Divide si conduce (divide si cucereste)

Demonstratie

Se inlocuiesc T-urile cu variante de dimensiune mai mica pana la T[1]

Se obtine o suma de doua progresii

Page 10: Divide et Impera APaun [Read-Only]old.fmi.unibuc.ro/ro/pdf/2019/admitere/licenta/FMI_Divide_et_Impera_I_2019.pdfDivide et impera Maxima latina Divide si conduce (divide si cucereste)

Teorema Master

log log

log log 1

log

1. if ( ) is ( ), then ( ) is ( )

2. if ( ) is ( log ), then ( ) is ( log )

3. if ( ) is ( ), then ( ) is ( ( )),

provided ( / ) ( ) for some 1.

b b

b b

b

a a

a ak k

a

f n O n T n n

f n n n T n n n

f n n T n f n

af n b f n

ε

ε

δ δ

+

+

Θ

Θ Θ

Ω Θ≤ <

Page 11: Divide et Impera APaun [Read-Only]old.fmi.unibuc.ro/ro/pdf/2019/admitere/licenta/FMI_Divide_et_Impera_I_2019.pdfDivide et impera Maxima latina Divide si conduce (divide si cucereste)

Exemplul 1

Cine e a, b?

a=4, b=2, f(n)=n,

verificam f(n) cu nlogba

nnTnT += )2/(4)(

( )0

0

daca ( )

( ) daca

unde ( ) este timpul necesar pentru spargerea

lui si combinarea -urilori

c n nT n

aT n b f n n n

f n

x y

≤= + >

Page 12: Divide et Impera APaun [Read-Only]old.fmi.unibuc.ro/ro/pdf/2019/admitere/licenta/FMI_Divide_et_Impera_I_2019.pdfDivide et impera Maxima latina Divide si conduce (divide si cucereste)

Deci n este O(n2) cazul 1

Adica

log log

log log 1

log

1. if ( ) is ( ), then ( ) is ( )

2. if ( ) is ( log ), then ( ) is ( log )

3. if ( ) is ( ), then ( ) is ( ( )),

provided ( / ) ( ) for some 1.

b b

b b

b

a a

a ak k

a

f n O n T n n

f n n n T n n n

f n n T n f n

af n b f n

ε

ε

δ δ

+

+

Θ

Θ Θ

Ω Θ≤ <

log logif ( ) is ( ), then ( ) is ( )b ba af n O n T n n

ε− Θ2( ) ( )T n este nΘ

Page 13: Divide et Impera APaun [Read-Only]old.fmi.unibuc.ro/ro/pdf/2019/admitere/licenta/FMI_Divide_et_Impera_I_2019.pdfDivide et impera Maxima latina Divide si conduce (divide si cucereste)

Exemplul 2

a=2, b=2, f=n log n

suntem in cazul 2 deci

T(n) este O(n log2n)

nnnTnT log)2/(2)( +=

≥+<

=dnnfbnaT

dncnT

if)()/(

if )(

.1 somefor )()/( provided

)),((is)(then),(is)(if 3.

)log(is)(then),log(is)(if 2.

)(is)(then),(is)(if 1.

log

1loglog

loglog

<≤ΘΩ

ΘΘ

Θ

+

+

δδ

ε

ε

nfbnaf

nfnTnnf

nnnTnnnf

nnTnOnf

a

kaka

aa

b

bb

bb

Page 14: Divide et Impera APaun [Read-Only]old.fmi.unibuc.ro/ro/pdf/2019/admitere/licenta/FMI_Divide_et_Impera_I_2019.pdfDivide et impera Maxima latina Divide si conduce (divide si cucereste)

Exemplul 3

a=1, b=3, f=n log n

suntem in cazul 3 deci

T(n) este O(n log n)

≥+<

=dnnfbnaT

dncnT

if)()/(

if )(

.1 somefor )()/( provided

)),((is)(then),(is)(if 3.

)log(is)(then),log(is)(if 2.

)(is)(then),(is)(if 1.

log

1loglog

loglog

<≤ΘΩ

ΘΘ

Θ

+

+

δδ

ε

ε

nfbnaf

nfnTnnf

nnnTnnnf

nnTnOnf

a

kaka

aa

b

bb

bb

nnnTnT log)3/()( +=

Page 15: Divide et Impera APaun [Read-Only]old.fmi.unibuc.ro/ro/pdf/2019/admitere/licenta/FMI_Divide_et_Impera_I_2019.pdfDivide et impera Maxima latina Divide si conduce (divide si cucereste)

Exemplul 4

a=8, b=2, f=n2

suntem in cazul 1 deci

T(n) este O(n3)

≥+<

=dnnfbnaT

dncnT

if)()/(

if )(

.1 somefor )()/( provided

)),((is)(then),(is)(if 3.

)log(is)(then),log(is)(if 2.

)(is)(then),(is)(if 1.

log

1loglog

loglog

<≤ΘΩ

ΘΘ

Θ

+

+

δδ

ε

ε

nfbnaf

nfnTnnf

nnnTnnnf

nnTnOnf

a

kaka

aa

b

bb

bb

2)2/(8)( nnTnT +=

Page 16: Divide et Impera APaun [Read-Only]old.fmi.unibuc.ro/ro/pdf/2019/admitere/licenta/FMI_Divide_et_Impera_I_2019.pdfDivide et impera Maxima latina Divide si conduce (divide si cucereste)

Exemplul 5

a=9, b=3, f=n3

suntem in cazul 3 deci

T(n) este O(n3)

≥+<

=dnnfbnaT

dncnT

if)()/(

if )(

.1 somefor )()/( provided

)),((is)(then),(is)(if 3.

)log(is)(then),log(is)(if 2.

)(is)(then),(is)(if 1.

log

1loglog

loglog

<≤ΘΩ

ΘΘ

Θ

+

+

δδ

ε

ε

nfbnaf

nfnTnnf

nnnTnnnf

nnTnOnf

a

kaka

aa

b

bb

bb

3)3/(9)( nnTnT +=

Page 17: Divide et Impera APaun [Read-Only]old.fmi.unibuc.ro/ro/pdf/2019/admitere/licenta/FMI_Divide_et_Impera_I_2019.pdfDivide et impera Maxima latina Divide si conduce (divide si cucereste)

Exemplul 6

a=1, b=2, f=1

suntem in cazul 2 cu k=0 deci

T(n) este O(log n)

≥+<

=dnnfbnaT

dncnT

if)()/(

if )(

.1 somefor )()/( provided

)),((is)(then),(is)(if 3.

)log(is)(then),log(is)(if 2.

)(is)(then),(is)(if 1.

log

1loglog

loglog

<≤ΘΩ

ΘΘ

Θ

+

+

δδ

ε

ε

nfbnaf

nfnTnnf

nnnTnnnf

nnTnOnf

a

kaka

aa

b

bb

bb

1)2/()( += nTnT

Page 18: Divide et Impera APaun [Read-Only]old.fmi.unibuc.ro/ro/pdf/2019/admitere/licenta/FMI_Divide_et_Impera_I_2019.pdfDivide et impera Maxima latina Divide si conduce (divide si cucereste)

Exemplul 7

a=2, b=2, f=log n

suntem in cazul 1deci

T(n) este O(n)

≥+<

=dnnfbnaT

dncnT

if)()/(

if )(

.1 somefor )()/( provided

)),((is)(then),(is)(if 3.

)log(is)(then),log(is)(if 2.

)(is)(then),(is)(if 1.

log

1loglog

loglog

<≤ΘΩ

ΘΘ

Θ

+

+

δδ

ε

ε

nfbnaf

nfnTnnf

nnnTnnnf

nnTnOnf

a

kaka

aa

b

bb

bb

nnTnT log)2/(2)( +=

Page 19: Divide et Impera APaun [Read-Only]old.fmi.unibuc.ro/ro/pdf/2019/admitere/licenta/FMI_Divide_et_Impera_I_2019.pdfDivide et impera Maxima latina Divide si conduce (divide si cucereste)

O schita de demonstratie a teoremei Se substituie iterativ termenii

Si avem trei cazuri acum:

Primul termen este dominant, sau

Amandoi termenii sunt “la fel” de mari, sau

Suma este o serie geometrica

∑−

=

=

+=

+=

=+++=

++=

++=

+=

1)(log

0

log

1)(log

0

log

2233

22

2

)/()1(

)/()1(

. . .

)()/()/()/(

)()/()/(

))/())/((

)()/()(

n

i

iia

n

i

iin

b

b

b

b

bnfaTn

bnfaTa

nfbnafbnfabnTa

nfbnafbnTa

bnbnfbnaTa

nfbnaTnT

Page 20: Divide et Impera APaun [Read-Only]old.fmi.unibuc.ro/ro/pdf/2019/admitere/licenta/FMI_Divide_et_Impera_I_2019.pdfDivide et impera Maxima latina Divide si conduce (divide si cucereste)

exemplu

Traversarile de arbori

Preordine

Inordine

Postordine

T(n)=2T(n/2)+1

Complexitate O(n)

≥+<

=dnnfbnaT

dncnT

if)()/(

if )(

.1 somefor )()/( provided

)),((is)(then),(is)(if 3.

)log(is)(then),log(is)(if 2.

)(is)(then),(is)(if 1.

log

1loglog

loglog

<≤ΘΩ

ΘΘ

Θ

+

+

δδ

ε

ε

nfbnaf

nfnTnnf

nnnTnnnf

nnTnOnf

a

kaka

aa

b

bb

bb

Page 21: Divide et Impera APaun [Read-Only]old.fmi.unibuc.ro/ro/pdf/2019/admitere/licenta/FMI_Divide_et_Impera_I_2019.pdfDivide et impera Maxima latina Divide si conduce (divide si cucereste)

Exemplu: inmultirea a doi intregi

Se dau I si J doi intregi scrisi in baza 2

Vrem sa aflam rezultatul inmultirii

Cum rezolvam?

Page 22: Divide et Impera APaun [Read-Only]old.fmi.unibuc.ro/ro/pdf/2019/admitere/licenta/FMI_Divide_et_Impera_I_2019.pdfDivide et impera Maxima latina Divide si conduce (divide si cucereste)

Inmultirea prin divide et impera

Divide: consideram jumatatea mai semnificativa si jumatatea nesemnificativa pentru cei doi intregi

Asadar inmultirea devine:

Deci ajungem la relatia:

T(n)=4T(n/2)+n

l

n

h

l

n

h

JJJ

III

+=

+=2/

2/

2

2

ll

n

hl

n

lh

n

hh

l

n

hl

n

h

JIJIJIJI

JJIIJI

+++=

++=2/2/

2/2/

222

)2(*)2(*

Page 23: Divide et Impera APaun [Read-Only]old.fmi.unibuc.ro/ro/pdf/2019/admitere/licenta/FMI_Divide_et_Impera_I_2019.pdfDivide et impera Maxima latina Divide si conduce (divide si cucereste)

Pentru T(n)=4T(n/2)+n

a=4, b=2, f=n

Care e complexitatea?

E mai rapid decat inmultirea “de mana”?

≥+<

=dnnfbnaT

dncnT

if)()/(

if )(

.1 somefor )()/( provided

)),((is)(then),(is)(if 3.

)log(is)(then),log(is)(if 2.

)(is)(then),(is)(if 1.

log

1loglog

loglog

<≤ΘΩ

ΘΘ

Θ

+

+

δδ

ε

ε

nfbnaf

nfnTnnf

nnnTnnnf

nnTnOnf

a

kaka

aa

b

bb

bb

Page 24: Divide et Impera APaun [Read-Only]old.fmi.unibuc.ro/ro/pdf/2019/admitere/licenta/FMI_Divide_et_Impera_I_2019.pdfDivide et impera Maxima latina Divide si conduce (divide si cucereste)

Imbunatatire pentru inmultire

Spargem tot in jumatatea mai semnificativa si jumatatea mai nesemnificativa

Deci T(n)=3T(n/2)+n

l

n

h

l

n

h

JJJ

III

+=

+=2/

2/

2

2

ll

n

hllh

n

hh

ll

n

llhhhlhhlllh

n

hh

ll

n

llhhhllh

n

hh

JIJIJIJI

JIJIJIJIJIJIJIJI

JIJIJIJJIIJIJI

+++=

++++−−+=

+++−−+=

2/

2/

2/

2)(2

2])[(2

2]))([(2*

Page 25: Divide et Impera APaun [Read-Only]old.fmi.unibuc.ro/ro/pdf/2019/admitere/licenta/FMI_Divide_et_Impera_I_2019.pdfDivide et impera Maxima latina Divide si conduce (divide si cucereste)

Pentru T(n)=3T(n/2)+n

a=3, b=2, f=n

Care e complexitatea?

T(n) este O(n1.585) (Karatsuba)

Cel mai rapid O(n log n log log n)

≥+<

=dnnfbnaT

dncnT

if)()/(

if )(

.1 somefor )()/( provided

)),((is)(then),(is)(if 3.

)log(is)(then),log(is)(if 2.

)(is)(then),(is)(if 1.

log

1loglog

loglog

<≤ΘΩ

ΘΘ

Θ

+

+

δδ

ε

ε

nfbnaf

nfnTnnf

nnnTnnnf

nnTnOnf

a

kaka

aa

b

bb

bb

Page 26: Divide et Impera APaun [Read-Only]old.fmi.unibuc.ro/ro/pdf/2019/admitere/licenta/FMI_Divide_et_Impera_I_2019.pdfDivide et impera Maxima latina Divide si conduce (divide si cucereste)

Alte probleme

De acum incolo in aceasta lectie

consideram multiplicarea ca operatia

de baza in complexitate

(de complexitate O(1))

Page 27: Divide et Impera APaun [Read-Only]old.fmi.unibuc.ro/ro/pdf/2019/admitere/licenta/FMI_Divide_et_Impera_I_2019.pdfDivide et impera Maxima latina Divide si conduce (divide si cucereste)

Inmultire de polinoame

A(x)=a0+a1x+,+an-1xn-1

B(x)=b0+b1x+,+bn-1xn-1

Vrem sa calculam C(x)=A(x)B(x)

cu ci=a0*bi+a1*bi-1+,+ai*b0

si C(x)=c0+c1x+c2x2,+c2n-2x

2n-2

Page 28: Divide et Impera APaun [Read-Only]old.fmi.unibuc.ro/ro/pdf/2019/admitere/licenta/FMI_Divide_et_Impera_I_2019.pdfDivide et impera Maxima latina Divide si conduce (divide si cucereste)

Inmultirea polinoamelor

Implementarea naiva: O(n2) pentru

fiecare coeficient avem n inmultiri, si

avem 2n-1 coeficienti

Divide et impera!

Spargem polinoamele in polinoame

mai mici

Page 29: Divide et Impera APaun [Read-Only]old.fmi.unibuc.ro/ro/pdf/2019/admitere/licenta/FMI_Divide_et_Impera_I_2019.pdfDivide et impera Maxima latina Divide si conduce (divide si cucereste)

A(x)=a0+a1x+…+an-1xn-1

A(x)=a0+a1x+…+an/2-1xn/2-1

+xn/2(an/2+an/2+1x+… an-1xn/2-1/2)

A(x)=P(x)+xn/2Q(x)

La fel: B(x)= S(x)+xn/2R(x)

C(x)=PS+xn/2 (PR+QS)+xnQR

La fel ca la inmultirea intregilor!!

Page 30: Divide et Impera APaun [Read-Only]old.fmi.unibuc.ro/ro/pdf/2019/admitere/licenta/FMI_Divide_et_Impera_I_2019.pdfDivide et impera Maxima latina Divide si conduce (divide si cucereste)

Inmultirea polinoamelor

Se poate mai bine cu divide et impera ajungem la O(n log n)

Page 31: Divide et Impera APaun [Read-Only]old.fmi.unibuc.ro/ro/pdf/2019/admitere/licenta/FMI_Divide_et_Impera_I_2019.pdfDivide et impera Maxima latina Divide si conduce (divide si cucereste)

Ridicarea la o putere

Consideram ca adunarile si inmultirile

sunt de cost O(1)

Input: numar a si exponent pe n biti b

Vrem ab

Implementarea naiva: O(b) deci O(2n)

Divide et impera!

Ce sa dividem? exponentul

Page 32: Divide et Impera APaun [Read-Only]old.fmi.unibuc.ro/ro/pdf/2019/admitere/licenta/FMI_Divide_et_Impera_I_2019.pdfDivide et impera Maxima latina Divide si conduce (divide si cucereste)

Algoritm:

power (a,b)

Daca b=1 return a

Daca b este par return power(a,b/2)2

Daca b este impar

return a*power (a,(b-1)/2) 2

Deci T(n)=T(n-1)+O(1)

Rezolvam prin Teorema Master: O(n)

Page 33: Divide et Impera APaun [Read-Only]old.fmi.unibuc.ro/ro/pdf/2019/admitere/licenta/FMI_Divide_et_Impera_I_2019.pdfDivide et impera Maxima latina Divide si conduce (divide si cucereste)

Calcularea numerelor Fibonacci

Implementare naiva:

fib(n)

Daca n<=1 return 1

Altfel return fib(n-1)+fib(n-2)

Complexitate: T(n)=T(n-1)+T(n-2)+1

Aproape de valoarea numarului Fib(n)

care este exponentiala in n

Page 34: Divide et Impera APaun [Read-Only]old.fmi.unibuc.ro/ro/pdf/2019/admitere/licenta/FMI_Divide_et_Impera_I_2019.pdfDivide et impera Maxima latina Divide si conduce (divide si cucereste)

Fibonacci

Daca mergem de jos in sus si tinem minte ultimele doua valori putem obtine F(n) in timp polinomial

La fel si cu divide et impera:

Vrem sa reducem problema Fibonacci la o problema de inmultire de matrici

A=

Teorema: F(n)=An

Page 35: Divide et Impera APaun [Read-Only]old.fmi.unibuc.ro/ro/pdf/2019/admitere/licenta/FMI_Divide_et_Impera_I_2019.pdfDivide et impera Maxima latina Divide si conduce (divide si cucereste)

Folosim algoritmul divide et impera de mai sus pentru inmultirea numerelor pe matrici patratice

Unde pentru a avem A si pentru b avem n

Asadar obtinem F(n) in timp O(log n)

Page 36: Divide et Impera APaun [Read-Only]old.fmi.unibuc.ro/ro/pdf/2019/admitere/licenta/FMI_Divide_et_Impera_I_2019.pdfDivide et impera Maxima latina Divide si conduce (divide si cucereste)

Daca nu consideram ca inmultirea de

numere este O(1) algoritmul cu matrici

ramane mai rapid:

Pentru “bottom-up” avem:

n adunari de numere de n digiti: O(n2)

Pentru matrici avem: O(log n) inmultiri de numere de n digiti

Daca inmultirea e implementata “prost” avem

O(n2 log n) care e evident mai prost decat O(n2)

Karatsuba: O(n1.53 log n)

Cel mai bine O(n log2 n log log n)

Page 37: Divide et Impera APaun [Read-Only]old.fmi.unibuc.ro/ro/pdf/2019/admitere/licenta/FMI_Divide_et_Impera_I_2019.pdfDivide et impera Maxima latina Divide si conduce (divide si cucereste)

Inmultire de matrici patratice

2 matrici de nXn de inmultit

Implementare naiva: O(n3)

Divide et impera: spargem matricile de dimensiune n in 4 matrici de dimensiune n/2

Page 38: Divide et Impera APaun [Read-Only]old.fmi.unibuc.ro/ro/pdf/2019/admitere/licenta/FMI_Divide_et_Impera_I_2019.pdfDivide et impera Maxima latina Divide si conduce (divide si cucereste)

r=ae+bg, s=af+bh, t=ce+dg, u=cf+dh

Deci T(n)=8T(n/2)+4 adunari de matrici de dimensiune n/2

T(n)=8T(n/2)+4cn2

Cazul 1 in teorema Master, O(n3)

La fel ca implementarea naiva!!!

Cum imbunatatim? STRASSEN

Page 39: Divide et Impera APaun [Read-Only]old.fmi.unibuc.ro/ro/pdf/2019/admitere/licenta/FMI_Divide_et_Impera_I_2019.pdfDivide et impera Maxima latina Divide si conduce (divide si cucereste)

Inmultire de matrice 2x2 rapida

7 inmultiri si 18 adunari

Page 40: Divide et Impera APaun [Read-Only]old.fmi.unibuc.ro/ro/pdf/2019/admitere/licenta/FMI_Divide_et_Impera_I_2019.pdfDivide et impera Maxima latina Divide si conduce (divide si cucereste)

Deci relatia de recurenta devine

T(n)=7T(n/2)+O(n2)

Tot in cazul 1 in teorema Master

T(n)=O(nlog 7)=O(n2.81)

Algoritm complicat: Coppersmith and Winograd T(n)=O(n2.376)