Podstawowe narzędzia matematyczne- funkcje podłogi i sufitu

41
Służą do wyznaczenia liczby operacji dominujących Podstawowe narzędzia matematyczne- funkcje podłogi i sufitu

description

Podstawowe narzędzia matematyczne- funkcje podłogi i sufitu. Służą do wyznaczenia liczby operacji dominujących. Podstawowe narzędzia matematyczne- funkcje podłogi i sufitu. Podstawowe narzędzia matematyczne- funkcje podłogi i sufitu. Podstawowe narzędzia matematyczne- funkcje podłogi i sufitu. - PowerPoint PPT Presentation

Transcript of Podstawowe narzędzia matematyczne- funkcje podłogi i sufitu

Page 1: Podstawowe narzędzia matematyczne- funkcje podłogi i sufitu

Służą do wyznaczenia liczby operacji dominujących

Podstawowe narzędzia matematyczne- funkcje podłogi i sufitu

Page 2: Podstawowe narzędzia matematyczne- funkcje podłogi i sufitu

Podstawowe narzędzia matematyczne- funkcje podłogi i sufitu

Page 3: Podstawowe narzędzia matematyczne- funkcje podłogi i sufitu

Podstawowe narzędzia matematyczne- funkcje podłogi i sufitu

Page 4: Podstawowe narzędzia matematyczne- funkcje podłogi i sufitu

Podstawowe narzędzia matematyczne- funkcje podłogi i sufitu

Page 5: Podstawowe narzędzia matematyczne- funkcje podłogi i sufitu

Podstawowe narzędzia matematyczne- szacowanie sum za pomocą całek

Page 6: Podstawowe narzędzia matematyczne- funkcje podłogi i sufitu

Określając pesymistyczną lub średnią złożoność chcemy podawać tylko najważniejszą

część informacji pochodzących z teoretycznych wyliczeń, czyli rząd wielkości.

Jest on określany dla danych o dużym rozmiarze, więc mówimy np. o

asymptotycznym czasie (złożoności czasowej).

Funkcja taka musi więc przyjmować wartości dodatnie przynajmniej dla dostatecznie

dużych argumentów. Jest to tzw. funkcja asymptotycznie dodatnia.

Podstawowe narzędzia matematyczne- notacja asymptotyczna

Argumenty = liczby naturalne lub zero

Page 7: Podstawowe narzędzia matematyczne- funkcje podłogi i sufitu

Podstawowe narzędzia matematyczne- notacja asymptotyczna – notacja „o-małe”

Funkcja f(n) jest pomijalna względem g, gdy n dąży do nieskończoności.

Page 8: Podstawowe narzędzia matematyczne- funkcje podłogi i sufitu

Podstawowe narzędzia matematyczne- notacja asymptotyczna – notacja „o-małe”

Page 9: Podstawowe narzędzia matematyczne- funkcje podłogi i sufitu

Podstawowe narzędzia matematyczne- notacja asymptotyczna – notacja „o-małe”

Page 10: Podstawowe narzędzia matematyczne- funkcje podłogi i sufitu

Gdy zwiększymy zakres argumentów „pomijalność” funkcji logarytmicznej względem pierwiastkowej dla dużych argumentów jest jeszcze bardziej widoczna.

Podstawowe narzędzia matematyczne- notacja asymptotyczna – notacja „o-małe”

Page 11: Podstawowe narzędzia matematyczne- funkcje podłogi i sufitu

Podstawowe narzędzia matematyczne- notacja asymptotyczna – notacja „O-duże”

Page 12: Podstawowe narzędzia matematyczne- funkcje podłogi i sufitu

Podstawowe narzędzia matematyczne- notacja asymptotyczna – notacja „O-duże”

Page 13: Podstawowe narzędzia matematyczne- funkcje podłogi i sufitu

Podstawowe narzędzia matematyczne- notacja asymptotyczna – notacja „O-duże”

Page 14: Podstawowe narzędzia matematyczne- funkcje podłogi i sufitu

Definicja 15 ma szersze zastosowanie niż twierdzenie 16 (choć tw. jest

wygodniejsze).

Przykład:

Istotnie, połóżmy

Wówczas dla dowolnego zachodzi nierówność:

Twierdzenia 16 nie można jednak zastosować, bo nie istnieje granica

Podstawowe narzędzia matematyczne- notacja asymptotyczna – notacja „O-duże”

Page 15: Podstawowe narzędzia matematyczne- funkcje podłogi i sufitu

Podstawowe narzędzia matematyczne- notacja asymptotyczna – notacja „O-duże”

Page 16: Podstawowe narzędzia matematyczne- funkcje podłogi i sufitu

Podstawowe narzędzia matematyczne- notacja asymptotyczna – notacja „O-duże”

Page 17: Podstawowe narzędzia matematyczne- funkcje podłogi i sufitu

Podstawowe narzędzia matematyczne- notacja asymptotyczna – notacja „O-duże”

Page 18: Podstawowe narzędzia matematyczne- funkcje podłogi i sufitu

Uwaga!

Własności 3 i 5 dotyczących dodawania i mnożenia rzędów wielkości nie można przenieść na operacje odejmowania i dzielenia.

Przykład:

Podstawowe narzędzia matematyczne- notacja asymptotyczna – notacja „O-duże”

Page 19: Podstawowe narzędzia matematyczne- funkcje podłogi i sufitu

Podstawowe narzędzia matematyczne- notacja asymptotyczna - inne

Page 20: Podstawowe narzędzia matematyczne- funkcje podłogi i sufitu

Podstawowe narzędzia matematyczne- notacja asymptotyczna - inne

Page 21: Podstawowe narzędzia matematyczne- funkcje podłogi i sufitu

Podstawowe narzędzia matematyczne- notacja asymptotyczna - inne

Page 22: Podstawowe narzędzia matematyczne- funkcje podłogi i sufitu

Przypomnijmy:

Tmax(n)=2*(log2n) =2*(log2n)-1

Tśr(n)=1/2+log2n

Podstawowe narzędzia matematyczne- notacja asymptotyczna - przykład

Przykład:

Rozważmy ponownie zbiór danych ZDWn jako n-wyrazowych ciągów

uporządkowanych liczb naturalnych. Rozważmy dalej typowy algorytm w rodzaju

„dziel i zwyciężaj” sprawdzenia, czy liczba naturalna x jest elementem ciągu

zdwZDWn.

)1)(log4()( 2212

1 nn

Łatwo zauważyć, licząc odpowiednie granice, że (n) jest rzędu

log2n/√3, jest więc mniejsza niż Tśr(n)=1/2+log2n , ale obie są rzędu

logarytmicznego.

Rachunek na tablicy

Page 23: Podstawowe narzędzia matematyczne- funkcje podłogi i sufitu

Poprawność

składniowa

Poprawność

semanty-czna

Poprawnoś

ć algorytmu

Poprawność algorytmów

Wypisywanie zdań z języka poprawnych składniowo

Poprawne wartościowanie zdań języka, np. w języku programowania – skutki

wystąpienia wyróżnionych części programu, jak definicje typów, deklaracje

stałych i zmiennych, zmian wartościowania zmiennych będących

instrukcjami programu.

Page 24: Podstawowe narzędzia matematyczne- funkcje podłogi i sufitu

Algorytm jako napis może być poprawny składniowo, ale niepoprawny semantycznie, co jest równoznaczne z niemożnością poprawnego deklarowania i wartościowania zmiennych.

Powody:

w wyrażeniu występuje argument nie należący do typu związanego z tym wyrażeniem (np. w wyniku działania funkcji otrzymujemy liczbę rzeczywistą, a funkcja miała zwracać wartości całkowite);

wystąpienie w algorytmie pętli o wyrażeniu logicznym stale wartościowanym jako prawdziwe (pętla będzie wykonywana bez końca);

końcowe wartościowanie zmiennych nie odpowiada oczekiwaniom (program poprawnie kończy obliczenia, ale wyniki nie rozwiązują postawionego zadania).

Poprawność algorytmów

Page 25: Podstawowe narzędzia matematyczne- funkcje podłogi i sufitu

Niech

A –oznacza algorytm-program,

-warunek (warunki), jakie powinny spełniać dane wejściowe (początkowe wartościowania zmiennych) algorytmu A,

-warunek, jaki powinny spełniać końcowe wartościowania zmiennych (własności danych wyjściowych i ich związek z danymi wejściowymi)

Semantyczna poprawność algorytmów

Page 26: Podstawowe narzędzia matematyczne- funkcje podłogi i sufitu

Semantyczna poprawność algorytmów

Semantyczna poprawność nazywana jest też inaczej pełną poprawnością. Dowodzenie jest trudne. Niekiedy zadowalamy się sprawdzeniem elementów tej definicji.

Semantyczna

poprawność

Częściowa semantyczna poprawność

Własność określoności dla warunku początkoweg

o

Własność stopu

Page 27: Podstawowe narzędzia matematyczne- funkcje podłogi i sufitu

Definicje elementów:

Semantyczna poprawność algorytmów

Page 28: Podstawowe narzędzia matematyczne- funkcje podłogi i sufitu

Semantyczna poprawność algorytmów

Dowodzenie Indukcja

Metoda niezmienników

Częściowa poprawność

Definicja 1

Własność stopu

Page 29: Podstawowe narzędzia matematyczne- funkcje podłogi i sufitu

Przykład. Rozważmy algorytm przeszukiwania drzewa binarnego DB zadanego przez wskaźnik na korzeń DB określonego przez zmienną typu

el_drzewa zdefiniowanego następująco:

Semantyczna poprawność algorytmów – dowodzenie za pomocą indukcji

W dowodzeniu indukcyjnym semantycznej poprawności algorytmu przeprowadza się zwykle indukcję względem liczby powtórzeń instrukcji iteracyjnej lub poziomu zagnieżdżenia realizacji procedury rekurencyjnej.

struct element{ int wartosc; element *pien; element *konar_lewy; element *konar_prawy;}typedef element, *el_drzewa;

Page 30: Podstawowe narzędzia matematyczne- funkcje podłogi i sufitu

Semantyczna poprawność algorytmów – dowodzenie za pomocą indukcji

struct element{ int wartosc; element *pien; element *konar_lewy; element *konar_prawy;}typedef element, *el_drzewa;

int preorder (el_drzewa korzen, int x){ //{ : korzen !=NULL} int pom=0; if ((*korzen).wartosc==x) return 1; if ((*korzen).konar_lewy!=NULL) //2 pom=preorder((*korzen).konar_lewy,x); if (pom) return 1; //3 else if ((*korzen).konar_prawy!=NULL) //4 pom=preorder((*korzen).konar_prawy,x); if (pom) return 1; //5 else return 0; //{ : funkcja zwraca 1, gdy "x jest elementem drzewa"}, // zwraca 0, gdy "x nie jest elementem drzewa".} }

Rozważmy następujący algorytm przeszukiwania drzewa binarnego:

Page 31: Podstawowe narzędzia matematyczne- funkcje podłogi i sufitu

Własność.

Dla dowolnego drzewa binarnego o wysokości wd będącej liczbą

naturalną wd>0, algorytm preorder dla danych spełniających w

skończonej liczbie kroków dochodzi do wartościowania końcowego i

to wartościowanie spełnia .

Semantyczna poprawność algorytmów – dowodzenie za pomocą indukcji

Dowód przeprowadzimy indukcyjnie względem parametru określającego wysokość

drzewa.

Oznaczmy wysokość drzewa przez wd.

Dla dowodu poprawności semantycznej algorytmu preorder sformułujmy

własność:

Page 32: Podstawowe narzędzia matematyczne- funkcje podłogi i sufitu

Krok 1 – sprawdzenie poprawności algorytmu dla początkowej wartości. Należy pokazać,

że preorder(korzen) poprawnie określa wynik końcowy dla dowolnego drzewa

binarnego o określonym adresie korzenia i wysokości wd=1.

Istotnie, jeśli (*korzen).wartosc==x, to nastąpi koniec wartościowania funkcji i wartością

funkcji będzie 1, co będzie oznaczać zajście .

Jeśli (*korzen).wartosc!=x, to wobec i założenia, że wd=1 mamy

(*korzen).konar_lewy==NULL oraz (*korzen).konar_prawy==NULL. Zatem wobec

początkowego wartościowania zmiennej pom=0, nie wykona się żadna z pięciu instrukcji

warunkowych i funkcja zwróci 0, co będzie oznaczało zajście .

Ponieważ jedynym miejscem – elementem w drzewie, gdzie może znajdować się pole

wartościujące równe x jest pole korzenia, zatem dla wd=1 program jest semantycznie

poprawny.

Semantyczna poprawność algorytmów – dowodzenie za pomocą indukcji

Dowód:Przeprowadzimy go metodą indukcji matematycznej.

Page 33: Podstawowe narzędzia matematyczne- funkcje podłogi i sufitu

Krok2 – założenie i teza indukcyjna z dowodem.

Załóżmy, że algorytm preorder jest poprawnie określony dla drzew binarnych o wysokości wd<=n.

Udowodnimy, że jest wtedy poprawnie określony dla drzew binarnych o wysokości wd=n+1.

Semantyczna poprawność algorytmów – dowodzenie za pomocą indukcji

Zał. ind.

Teza. ind.

Page 34: Podstawowe narzędzia matematyczne- funkcje podłogi i sufitu

Semantyczna poprawność algorytmów – dowodzenie za pomocą indukcji

Istotnie.

Rozważmy drzewo binarne o wysokości wd=n+1.

Jeśli (*korzen).wartosc==x, to nastąpi koniec wartościowania funkcji i wartością

będzie 1, co oznacza zajście .

Jeśli (*korzen).wartosc!=x, to nastąpi ewentualne wykonanie kolejnych instrukcji

programu (2,3,4,5).

Wobec założenia indukcyjnego, ponieważ lewe i prawe poddrzewo drzewa o

wysokości n+1, będą drzewami o wysokościach mniejszych lub równych n, więc

instrukcje 2,3,4 zostaną wykonane poprawnie i spowodują wartościowanie funkcji

spełniające .

Instrukcja 5 dokona wartościowania funkcji jako 0, jeśli x nie będzie elementem

lewego i prawego poddrzewa, czyli nie będzie elementem drzewa.

Zatem wartością funkcji będzie 1, gdy x jest elementem drzewa, 0 – gdy nie jest

elementem drzewa, co oznacza zajście .

Page 35: Podstawowe narzędzia matematyczne- funkcje podłogi i sufitu

Zatem na mocy zasady indukcji matematycznej ma miejsce teza

własności dla drzew binarnych o dowolnej wysokości wd, co jest

równoważne całkowitej poprawności semantycznej algorytmu preorder

wobec definicji 1.

Semantyczna poprawność algorytmów – dowodzenie za pomocą indukcji

Page 36: Podstawowe narzędzia matematyczne- funkcje podłogi i sufitu

Przykład. Algorytm obliczający wartość wyrażenia 2n+1 

int Fibonaci(int n){ //: n>=0if((n==0)||(n==1)) return n+2;return 3*Fibonaci(n-1)-2*Fibonaci(n-2);} //: wartością funkcji jest 2n+1.

Semantyczna poprawność algorytmów – dowodzenie za pomocą indukcji

Przykład algorytmu rekuren-cyjnego (poprzedni też taki był)

Page 37: Podstawowe narzędzia matematyczne- funkcje podłogi i sufitu

Semantyczna poprawność algorytmów – dowodzenie za pomocą indukcji

Dowód przeprowadzimy indukcyjnie względem parametru n określającego wykładnik

potęgi 2.

Dla dowodu poprawności semantycznej algorytmu Fibonaci sformułujmy własność:

Własność.

Dla dowolnego wykładnika potęgi o podstawie 2 będącego liczbą

naturalną n>=0, algorytm Fibonaci dla danych spełniających w

skończonej liczbie kroków dochodzi do wartościowania końcowego i

to wartościowanie spełnia .

Page 38: Podstawowe narzędzia matematyczne- funkcje podłogi i sufitu

Krok 1 – sprawdzenie poprawności algorytmu dla początkowej wartości. Należy

pokazać, że Fibonaci(n) poprawnie określa wynik końcowy dla potęgi o

podstawie 2 i wykładniku n=0 lub n=1.

Istotnie, jeśli n=0, to zachodzi warunek if((n==0)||(n==1)) i nastąpi koniec

wartościowania funkcji i wartością funkcji będzie n+2, czyli 2, co będzie oznaczać

zajście .

Jeśli natomiast n=1, to również zachodzi warunek if((n==0)||(n==1))

i nastąpi koniec wartościowania funkcji i wartością funkcji będzie również n+2,

czyli 3, co także będzie oznaczać zajście .

Zatem dla n=0 lub n=1 program jest semantycznie poprawny.

Semantyczna poprawność algorytmów – dowodzenie za pomocą indukcji

Dowód:Przeprowadzimy go metodą indukcji matematycznej.

Page 39: Podstawowe narzędzia matematyczne- funkcje podłogi i sufitu

Krok2 – założenie i teza indukcyjna z dowodem.

Załóżmy, że algorytm Fibonaci jest poprawnie określony dla potęgi o podstawie 2 i wykładniku k<=n, n=1,2,3….

Udowodnimy, że jest wtedy poprawnie określony dla potęgi o wykładniku n+1.

Semantyczna poprawność algorytmów – dowodzenie za pomocą indukcji

Zał. ind.

Teza. ind.

Page 40: Podstawowe narzędzia matematyczne- funkcje podłogi i sufitu

Semantyczna poprawność algorytmów – dowodzenie za pomocą indukcji

Istotnie.

Rozważmy potęgę o podstawie 2 i wykładniku n+1.

Ponieważ n+1>1, to Fibonaci(n+1) zwróci wartościowanie funkcji spełniające

3*Fibonaci((n+1)-1)-2*Fibonaci((n+1)-2).

Policzmy:

3*Fibonaci((n+1)-1)-2*Fibonaci((n+1)-2)=3*Fibonaci(n)-2*Fibonaci(n-1).

Wobec założenia indukcyjnego, ponieważ Fibonaci(n) i Fibonaci(n-1) będą

funkcjami obliczającymi wartość potęgi dla wykładników mniejszych lub równych n,

więc zostaną wykonane poprawnie i spowodują wartościowanie funkcji spełniające .

Zatem Fibonaci(n) zwróci 2n+1, a Fibonaci(n-1) zwróci 2n-1+1.

Możemy więc napisać:

3*Fibonaci((n+1)-1)-2*Fibonaci((n+1)-2)=3*Fibonaci(n)-2*Fibonaci(n-1) =

=3*(2n+1)-2*(2n-1+1) =3*2n+3-2n-2=2*2n+1=2n+1+1,

co oznacza zajście .

Page 41: Podstawowe narzędzia matematyczne- funkcje podłogi i sufitu

Zatem na mocy zasady indukcji matematycznej ma miejsce teza

własności dla algorytmu Fibonaci dla dowolnego wykładnika potęgi n,

co jest równoważne całkowitej poprawności semantycznej algorytmu

Fibonaci wobec definicji 1.

Semantyczna poprawność algorytmów – dowodzenie za pomocą indukcji