Dziel i zwyciężaj

background image

Dziel i zwyciężaj

Beata Laszkiewicz

background image

Metoda dziel i zwyciężaj

podziel problem na podproblemy,

znajdź rozwiązania podproblemów,

połącz rozwiązania podproblemów w
rozwiązanie głównego problemu.

background image

Metoda Dziel i Zwyciężaj

problem jest dzielony ma takie same lub
bardzo podobne podproblemy,

liczba podproblemów wynosi co najmniej 2,

podproblemy są rozwiązywane na podzbiorach
zbioru danych, w których liczba elementów
jest niemal jednakowa i stanowi stałą cześć
(np. połowę) całego zbioru danych
rozwiązywanego problemu.

Aby skonstruowany algorytm był

efektywny

,

należy dodać kilka warunków:

background image

Klasyczne przykłady

jedoczesne wyszukiwanie minimum i
maksimum w zbiorze
nieuporządkowanym,

sortowanie przez scalanie,

przeszukiwanie binarne.

background image

Jednoczesne wyszukiwanie min i
max

1 4 3 2 4 9 5 7 2

1 4 3 2 4

9 5 7 2

1 4 3

2 4

9 5

7 2

1 4

3

1 4

2 4

5 9

2 7

3 3

1 4

1 4

2 9

1 9

min max

background image

Algorytm MinMax

Dane:

n – liczba elementów

T – n elementowy nieuporządkowany ciąg
liczb

Wynik:

min – najmniejszy element ciągu

max – największy element ciągu

background image

MinMax(T,p,k,min,max)
if (k-p=0) then
min:=T[p]
max:=T[k]

else
if (k-p=1) then

if (T[k]<T[p]) then

min:=T[k]
max:=T[p]

else

min:=T[p]
max:=T[k]

else

s:=(p+k) div 2;
MinMax(T,p,s,min1, max1)
MinMax(T,s+1,k,min2,max2)
if (min1<min2) then min:=min1 else min:=min2
if (max1>max2) then max:=max1 else max:=max2

background image

Złożoność algorytmu MinMax

Niech T(n) oznacza złożoność algorytmu MinMax. Wtedy:

2

dla

2

2

/

2

2

dla

1

1

dla

0

)

(

n

n

T

n

n

n

T

Dla n będącego potęgą liczby 2 (n=2

k

) złożoność

MinMax jest równa:

 

n

O

n

n

T

2

2

3

)

(

background image

Sortowanie przez scalanie

1 4 3 2 4 9 5 7 2

1 4 3 2 4

9 5 7 2

1 4 3

2 4

9 5

7 2

1 4

3

1 4

2 4

5 9

2 7

3

1 3 4

1 2 3 4 4

2 5 7 9

1 2 2 3 4 4 5 7 9

1

4

2

4

9

5

2

7

background image

Algorytm MergeSort

Dane:

n – liczba elementów

T – n elementowy nieuporządkowany ciąg
liczb

Wynik:

T – n-elementowy uporządkowany ciąg

liczb

MergeSort(T,p,k)
if (k-p=0) then ;

else
s:=(p+k) div 2
MergeSort(T,p,s)
MergeSort(T,s+1,k)
Merge(T,p,s,k)

background image

Złożoność algorytmu MergeSort

Niech T(n) oznacza złożoność algorytmu MergeSort. Wtedy:

2

dla

1

2

/

2

2

dla

1

1

dla

0

)

(

n

n

n

T

n

n

n

T

Dla n będącego potęgą liczby 2 (n=2

k

) złożoność

MergeSort jest równa:

n

n

O

n

n

n

n

T

2

2

log

1

log

)

(


Document Outline


Wyszukiwarka

Podobne podstrony:
Metody układania algorytmów rekurencja, metoda dziel i zwyciężaj, programowanie dynamiczne, metoda
DZIEL I ZWYCIĘŻAJ, Programowanie
zadania dziel i zwyciężaj, informatyka
3 dziel i zwyciezaj
przeszukiwanie tablicy n elementow dziel i zwyciezaj
3 dziel i zwyciezaj
Metody układania algorytmów rekurencja, metoda dziel i zwyciężaj, programowanie dynamiczne, metoda
DZIEL I ZWYCIĘŻAJ, Programowanie
Agnolo Bronzino – Zwycięstwo czasu nad miłością, Analizy Dzieł Sztuki
Idea koncepcyjnej teorii dziel Nieznany
Kanon dziel id 231084 Nieznany
18 Zwycięstwo
Rubens - podniesienie krzyża, Analizy Dzieł Sztuki
El Greco - Pogrzeb hrabiego Orgaza, Analizy Dzieł Sztuki
Polowanie na dzikie ptactwo z grobu Menny, Analizy Dzieł Sztuki
Wojenne zwycięstwa i porażki Polski w XVII wieku, Prezentacje

więcej podobnych podstron