Sld 1Cwicz DrzewoRozp

background image

Sld 18.1. Zaawansowane

techniki

1.Algorytmy typu „dziel-i-

rządź”(“conquer and divide”)

2.Algorytmy „zachłanne“ (“żarłoczne”,

“greedy”)

3.Algorytmy dynamiczne

background image

Sld 18.2. Algorytmy typu „dziel-i-

rządź“

Programowanie typu „dziel-i-rządź" polega na wykorzystaniu

podstawowej cechy rekurencji:

1. dekompozycji

problemu

na

pewną

skończoną

ilość

podproblemów tego samego typu,

2. rozwiązania podproblemów,
3. połączeniu częściowych rozwiązań w celu odnalezienia

rozwiązania globalnego.

 

Jeśli oznaczymy problem do rozwiązania przez Pb, a rozmiar danych

przez N, to zabieg wyżej opisany da się przedstawić za pomocą zapisu:

 

Pb(N) Pb(N

1

) + Pb(N

2

) + ...+ Pb(N

k

) + KOMB(N).

 

Problem „rzędu" N został podzielony na k podproblemów.
Funkcja KOMB(N) nie
jest rekurencyjna.

Technika „dziel-i-rządź" pozwala w wielu przypadkach na zmianę klasy

algorytmu (np. z O(n) do O(log

2

N) ).

Istnieje grupa zadań, dla których zastosowanie metody „dziel-i-rządź"

nie spowoduje przyspieszenia.

 

background image

Sld 18.3. Algorytmy typu „dziel-i-

rządź“ - 2

Pb

0

Pb

1

Pb

i

Pb

n

Pb

1,1

Pb

1,k

Pb

i,1

Pb

i,l,

Pb

n,1

Pb

n,s

Pb

i,1,t


Pb

i,1,1

.

°°°

°°°

°°°

°°°

°°°

°°°

° ° ° ° ° ° ° ° ° ° ° ° ° ° ° ° ° °

° ° ° ° ° ° ° ° °

background image

Sld 18.4. Quicksort

Złożoność O(n

log

2

n)

background image

Sld 18.5. Przeszukiwanie binarne

Złożoność O(n log

2

n)

Binarne przeszukiwanie elementu

27

w liście

2 4 7 8 8 9 10 11 14 15 17 20 21 25 27 37 41 57 69 73 92 94

2 4 7 8 8 9 10 11 14 15 17

20 21 25 27 37 41 57 69 73 92 94

2 4 7 8 8 9 10 11 14 15 17

20 21 25 27 37

41 57 69 73 92 94

2 4 7 8 8 9 10 11 14 15 17 20 21 25

27 37

41 57 69 73 92 94

2 4 7 8 8 9 10 11 14 15 17 20 21 25

27

37 41 57 69 73 92 94

background image

Sld 18.6. Znajdowanie zera

funkcji metodą

połowienia przedziału

a

b

x

3

x

4

x

2

x

1

y

x

1

= a+½(b - a); y >

0;
x

2

= a+½(x

1

- a); y <

0;
x

3

= x

2

+½(x

1

- x

2

); y >

0;
x

4

= x

2

+½(x

3

- x

2

); y >

0;
. . . . . . . . . . . . . . . . . .
. . .

x

Ilość iteracji i = log

2

((b – a)/ Δ;

Δ – dokładność obliczeń

background image

Sld 18.7. Algorytmy „zachłanne“

(“żarłoczne“, ”greedy”)

Cechą szczególną algorytmu „zachlannego" jest to, że w każdym

etapie poszukiwania rozwiązania wybiera on opcję lokalnie

optymalną. W zależności od tego doboru, rozwiązanie globalne

może być również optymalne, ale nie jest to gwarantowane.

y

x

Δ =
1,2,3,4,5,6

x

opt

y

min

y

min,loc

background image

Sld 18.8. Ogólny problem

plecakowy

•Polega on na zapakowaniu do plecaka o ograniczonej pojemności możliwie

najbardziej wartościowych rzeczy. W innych zastosowaniach, może to dotyczyć

pakowania walizek, paczek, samochodu, samolotu itp.

Dane:

   n rzeczy R

1

R

2

, ..., R

n

, każda w nieograniczonej ilości;

  rzecz R

i

waży w

i

i ma wartość p

i

.

   maksymalna pojemność plecaka, wynosząca W

max

.

Wyniki:

Ilości n

i

, n

2

,..., n

n

, poszczególnych rzeczy (mogą być zerowe), których

całkowita waga W

nie przekracza W

max

i których sumaryczna wartość P jest

największa.

W

= ∑ n

i

w

i

= n

1

w

1

+ n

2

w

2

+ ... +

n

n

w

n

W

max

P

= ∑ n

i

p

i

= n

1

p

1

+ n

2

p

2

+ … + n

n

p

i

→ max

 

background image

Sld 18.9. Algorytm zachłanny dla

ogólnego problemu plecakowego

W decyzjach ścierają się ze sobą trzy kryteria

wyboru kolejnych rzeczy do zapakowania:

1.

wybierać najcenniejsze rzeczy, czyli w kolejności

nierosnących wartości p

t

;

2.

wybierać rzeczy zajmujące najmniej miejsca,

czyli w kolejności niemalejących wag w

i

3.

wybierać rzeczy najcenniejsze w stosunku do

swojej wagi, czyli w kolejności nierosnących

wartości ilorazu p

i

/w

i

.

background image

Sld 18.10. Przyklad problemu

plecakowego

R

i

1

2

3

4

5

6

p

i

6

4

5

7

10

2

w

i

6

2

3

2

3

1

p

i

/w

i

6/6

4/2

5/3

7/2

10/3

2/1

Kryteria

n

1

p

1

n

1

w

1

n

2

p

2

n

2

w

2

n

3

p

3

n

3

w

3

n

4

p

4

n

4

w

4

n

5

p

5

n

5

w

5

n

6

p

6

n

6

w

6

? n

i

p

i

? n

i

w

i

1

0

0

0

1×7

1×2

7×10

7×3

0

77

23

2

0

0

0

0

0

23×2

23×1

46
23

3

0

0

0

11×7

11×2

0

1×2

1×1

79

23

W

max

= ∑ n

i

w

i

≤ 23

background image

Sld 18.11. Programowanie

dynamiczne

1. koncepcja:
• dla danego problemu P stwórz rekurencyjny model

jego rozwiązania (wraz z jednoznacznym określeniem

przypadków elementarnych);

• stwórz tablicę, w której będzie można zapamiętywać

rozwiązania przypadków elementarnych i rozwiązania

podproblemów, które zostaną obliczone na ich

podstawie;

2. inicjacja:
• wpisz do tablicy wartości numeryczne, odpowiadające

przypadkom elementarnym;

3. progresja:
• na podstawie wartości numerycznych wpisanych do

tablicy używając formuły rekurencyjnej, oblicz

rozwiązanie problemu wyższego rzędu i wpisz je do

tablicy;

• postępuj w ten sposób do osiągnięcia pożądanej

wartości.

background image

Sld 18.12.

Ciąg Fibonacciego

fib(4)=
5

fib(1)=
1

fib(1)=
1

fib(2) =
2

fib(1)=
1

fib(0)=
1

fib(3)=3

fib(2)=
2

fib(1)=
1

fib(5)=8

fib(1)=
1

fib(0)=1

fib(3)=3

fib(2)=2

fib(1)=
1

fib(0) = 1,

fib(1) = 1,

fib(n) = f(n - I) + fib(n - 2) gdzie n ≥ 2; N

f

= 1, 1, 2, 3, 5, 8, 13, 21, 34,

55, ...

Tablica dla zapamiętywania rozwiązania podproblemów:

background image

Sld 18.13. Dwuwymiarowy wzór

rekurencyjny.

Do obliczenia wartości P(i, j) potrzebna jest znajomość

dwóch sąsiednich komórek: dolnej - P(ij-l) oraz tej

znajdującej się z lewej strony - P(i-l,j). Naturalnym

sposobem obliczania wartości P(i,j) będzie posuwanie się

„zygzakiem" zaznaczonym na rysunku.

background image

Sld 18.14. Znajdowanie

najkrótszej drogi do wyjścia z

labiryntu

1.

Rozpowszechnianie fali od pola S.

2.

Zwinięcie fali od pola wyjścia C1.

background image

Sld 18.23. Literatura

1. P.Wróblewski. Algorytmy.

Struktury danych i techniki

programowania. Helion. 2001.

2. K.A.Lambert, D.W.Nance, T.L.Naps.

Introduction to Computer Science

with C++. Books/Cole, 2000.

3. M.M. Syslo. Algorytmy. Warszawa,

WSP, 1997.


Document Outline


Wyszukiwarka

Podobne podstrony:
Sld 1Cwicz DrzewoRozp
Sld 16 Predykcja
Sld 2Cwicz NajkrotszySciezki
004 relacyjne drzewo katalogów
DrzewoLogiczne
SLD
Drzewo decyzyjne przykład, Zadania
drzewogrzyby, botanika, ćwiczenia
TAROT- magia i wiedza(1), Dla Poszukujących, Magia, Tarot i Drzewo Życia
drzewo-genea-piastlw, szkoła
Drzewo celow, studia
Wyszukiwanie drzewo
Drzewo 3 id 143652 Nieznany

więcej podobnych podstron