AiSD wyklad 2

background image

Krzysztof Pancerz

Algorytmika i struktury danych

Algorytmy

i

struktury danych

WYKŁAD 2

Dr inż. Krzysztof Pancerz

background image

Krzysztof Pancerz

Algorytmika i struktury danych

Notacja O

f , g – funkcje o wartościach nieujemnych określone
w dziedzinie nieujemnych liczb całkowitych.
Piszemy:

i mówimy, że funkcja f(n) jest co najwyżej rzędu

g(n) jeśli istnieją stałe c>0 oraz n

0

takie, że:

Mówimy, że g jest asymptotycznym ograniczeniem

górnym dla f.

f

n=Og n

f

ncg ndla każdego nn

0

background image

Krzysztof Pancerz

Algorytmika i struktury danych

Notacja O (cd.)

Przykład

dla każdego n≥1, możemy przyjąć c=13 oraz n

0

=1. Stąd:

f

n=10 n

2

2 n1

10 n

2

2 n1 10 n

2

2 n

2

n

2

=13 n

2

10 n

2

2 n1 =O n

2

background image

Krzysztof Pancerz

Algorytmika i struktury danych

Notacja Ω

f , g – funkcje o wartościach nieujemnych określone
w dziedzinie nieujemnych liczb całkowitych.
Piszemy:

i mówimy, że funkcja f(n) jest co najmniej rzędu

g(n) jeśli istnieją stałe c>0 oraz n

0

takie, że:

Mówimy, że g jest asymptotycznym ograniczeniem

dolnym dla f.

f

n=g n

f

ncg ndla każdego nn

0

background image

Krzysztof Pancerz

Algorytmika i struktury danych

Notacja Ω (cd.)

Przykład

dla każdego n≥1, możemy przyjąć c=10 oraz n

0

=1. Stąd:

f

n=10 n

2

2 n1

10 n

2

2 n1 10 n

2

10 n

2

2 n1 =n

2

background image

Krzysztof Pancerz

Algorytmika i struktury danych

Notacja θ

f , g – funkcje o wartościach nieujemnych określone
w dziedzinie nieujemnych liczb całkowitych.
Piszemy:

i mówimy, że f(n) jest dokładnie rzędu g(n) jeśli

istnieją stałe c

1

>0, c

2

>0 oraz n

0

takie, że:

Mówimy, że g jest asymptotycznym dokładnym

oszacowaniem dla f.

f

n=g n

c

1

g n f nc

2

g ndla każdego nn

0

background image

Krzysztof Pancerz

Algorytmika i struktury danych

Notacja θ (cd.)

Przykład

Ponieważ:

oraz

więc

f

n=10 n

2

2 n1

10 n

2

2 n1 =On

2

10 n

2

2 n1 =n

2

10 n

2

2 n1 =n

2

background image

Krzysztof Pancerz

Algorytmika i struktury danych

Ograniczenia asymptotyczne

background image

Krzysztof Pancerz

Algorytmika i struktury danych

Ograniczenia asymptotyczne (cd.)

Twierdzenie

Niech

będzie wielomianem stopnia k o wartościach dodatnich (tj.

p(n)>0 dla każdego n) określonym w dziedzinie
nieujemnych liczb całkowitych. Wówczas:

p

n=a

k

n

k

a

k

−1

n

k

−1

...a

1

n

a

0

p

n=n

k

background image

Krzysztof Pancerz

Algorytmika i struktury danych

Ograniczenia asymptotyczne (cd.)

Inne zależności:

log n

n dla każdego n1

1

2...n=n

2

log n!

=n log n

i

=1

n

1

i

=log n

background image

Krzysztof Pancerz

Algorytmika i struktury danych

Złożoność obliczeniowa algorytmów (cd.)

Złożoność obliczeniowa algorytmu określana
jest przez zasoby systemu komputerowego
(przede wszystkim czas działania i ilość
zajmowanej pamięci) niezbędne do realizacji
algorytmu.

Rodzaje złożoności obliczeniowej:

złożoność czasowa,

złożoność pamięciowa.

Złożoność obliczeniowa (czasowa i
pamięciowa) algorytmu podawana jest jako
funkcja rozmiaru danych wejściowych n.

background image

Krzysztof Pancerz

Algorytmika i struktury danych

Złożoność obliczeniowa algorytmów

Przy określaniu złożoności czasowej
uwzględnia się tzw. operacje dominujące
(podstawowe) w algorytmie.

Rodzaje złożoności czasowej:

pesymistyczna (złożoność w najgorszym

przypadku),

średnia (oczekiwana).

background image

Krzysztof Pancerz

Algorytmika i struktury danych

Podstawowe złożoności obliczeniowe

Złożoność logarytmiczna O(log n)

Złożoność liniowa O(n)

Złożoność liniowo-logarytmiczna O(n log n)

Złożoność kwadratowa O(n

2

)

Złożoności wielomianowe O(n

3

), O(n

4

), ...

Złożoność wykładnicza O(2

n

)

Złożoność silnia O(n!)

background image

Krzysztof Pancerz

Algorytmika i struktury danych

Podstawowe złożoności obliczeniowe (cd.)

n

10

100

1000

O(n)

10 μs

100 μs

1 ms

O(n

2

)

100 μs

10 ms

1 s

O(2

n

)

10 ms

3,17•10

7

lat

background image

Krzysztof Pancerz

Algorytmika i struktury danych

Oszacowanie złożoności

Przykład

n – rozmiar danych wejściowych.

n

10

1 021

1 000

100

100 201

100 000

1 000

10 002 001

10 000 000

10 000

1 000 020 001

1 000 000 000

t

n=10 n

2

2 n1

10 n

2

2 n1

10 n

2

background image

Krzysztof Pancerz

Algorytmika i struktury danych

Przykład 1

Określić złożoność obliczeniową następującego
fragmentu algorytmu:

for(i=1; i<=n; i++)
{
for(j=1; j<=i; j++)
{ k=2*k; }
}

Operacja dominująca: mnożenie

background image

Krzysztof Pancerz

Algorytmika i struktury danych

Przykład 2

Określić złożoność obliczeniową następującego
fragmentu algorytmu:

for(int i=1; i<n; i++)
{ for(int j=n-1; j>=i; j--)

{ if(tab[j-1]>tab[j])

{
t=tab[j-1]; tab[j-1]=tab[j]; tab[j]=t;

}

}

}

Operacja dominująca: porównanie

background image

Krzysztof Pancerz

Algorytmika i struktury danych

Trudność problemów

Problemy, dla których zaproponowano
algorytmy o złożoności wielomianowej (klasa
P).

Problemy, których trudność została
udowodniona w czasie wielomianowym (klasa
NP).

Problemy, dla których trudność nie została
udowodniona, jednak nie zaproponowano
algorytmów o złożoności wielomianowej
rozwiązujących te problemy (klasa problemów
NP-zupełnych).

background image

Krzysztof Pancerz

Algorytmika i struktury danych

Niezmiennik instrukcji iteracyjnej (pętli)

Niezmiennik instrukcji iteracyjnej (pętli) –
warunek opisujący wartości zmiennych w
trakcie wykonywania algorytmu taki, że:

jest on spełniony na początku instrukcji iteracyjnej,

każde powtórzenie instrukcji iteracyjnej zachowuje

go,

jest on spełniony po zakończeniu instrukcji

iteracyjnej.

background image

Krzysztof Pancerz

Algorytmika i struktury danych

Niezmiennik instrukcji iteracyjnej (pętli)

x=0∧ y=m∧m0∧n0∧ y0

[ x=myn]∧[ y0 ]

[ x=myn]∧[ y=0 ]⇒[ x=mn]

Przykład


Wyszukiwarka

Podobne podstrony:
AiSD Wyklad4 dzienne id 53497 Nieznany (2)
AiSD wyklad 3
AiSD Wyklad9 dzienne id 53501 Nieznany
AiSD Wyklad2 dzienne
AiSD Wyklad1 dzienne
AiSD wyklad 1 id 53489 Nieznany
AiSD Wyklad11 dzienne id 53494 Nieznany
AiSD wykład drzewa (procedury)
Algorytmy i struktury danych AiSD-C-Wyklad05
AiSD wyklad 5
AiSD Wyklad1 dzienne
AiSD Wyklad6 dzienne id 53499 Nieznany (2)
AiSD Wyklad7 dzienne id 53500 Nieznany (2)
AiSD wyklad 9 id 53492 Nieznany (2)
AiSD Wyklad3 dzienne id 53496 Nieznany (2)
Algorytmy i struktury danych, AiSD C Wyklad04 2
Algorytmy i struktury danych AiSD-C-Wyklad04
AiSD Wyklad2 dzienne

więcej podobnych podstron