Algorytmy i struktury danych

Podobne dokumenty
Algorytmy i struktury danych

Algorytmy i struktury danych

Twierdzenie Wainera. Marek Czarnecki. Warszawa, 3 lipca Wydziaª Filozoi i Socjologii Uniwersytet Warszawski

ARYTMETYKA MODULARNA. Grzegorz Szkibiel. Wiosna 2014/15

JAO - J zyki, Automaty i Obliczenia - Wykªad 1. JAO - J zyki, Automaty i Obliczenia - Wykªad 1

Metodydowodzenia twierdzeń

Relacj binarn okre±lon w zbiorze X nazywamy podzbiór ϱ X X.

Metody dowodzenia twierdze«

Lab. 02: Algorytm Schrage

Wykªad 4. Funkcje wielu zmiennych.

ASD - ćwiczenia III. Dowodzenie poprawności programów iteracyjnych. Nieformalnie o poprawności programów:

Matematyka dyskretna dla informatyków

Ukªady równa«liniowych

Równania ró»niczkowe I rz du (RRIR) Twierdzenie Picarda. Anna D browska. WFTiMS. 23 marca 2010

1 Metody iteracyjne rozwi zywania równania f(x)=0

*** Teoria popytu konsumenta *** I. Pole preferencji konsumenta 1. Przestrze«towarów 2. Relacja preferencji konsumenta 3. Optymalny koszyk towarów

Wyszukiwanie. Algorytmy i Struktury Danych. (c) Marcin Sydow. Dziel i rz d¹. Wyszukiwanie. Statystyki pozycyjne. Podsumowanie

Minimalne drzewa rozpinaj ce

Materiaªy do Repetytorium z matematyki

Algorytmy zwiazane z gramatykami bezkontekstowymi

Zdzisªaw Dzedzej, Katedra Analizy Nieliniowej pok. 611 Kontakt:

Funkcje wielu zmiennych

Zadania z kolokwiów ze Wst pu do Informatyki. Semestr II.

A = n. 2. Ka»dy podzbiór zbioru sko«czonego jest zbiorem sko«czonym. Dowody tych twierdze«(elementarne, lecz nieco nu» ce) pominiemy.

Zadanie 1 Przygotuj algorytm programu - sortowanie przez wstawianie.

Bash i algorytmy. Elwira Wachowicz. 20 lutego

1 0 Je»eli wybierzemy baz A = ((1, 1), (2, 1)) to M(f) A A =. 0 2 Daje to znacznie lepszy opis endomorzmu f.

ARYTMETYKA MODULARNA. Grzegorz Szkibiel. Wiosna 2014/15

Matematyka dyskretna dla informatyków

Macierz A: macierz problemów liniowych (IIII); Macierz rozszerzona problemów liniowych (IIII): a 11 a 1m b 1 B = a n1 a nm b n

Maszyny Turinga i problemy nierozstrzygalne. Maszyny Turinga i problemy nierozstrzygalne

Ÿ1 Oznaczenia, poj cia wst pne

Skrypt do Algorytmów i Struktur Danych

Podstawy matematyki dla informatyków

Ekstremalnie maªe zbiory

Wybrane poj cia i twierdzenia z wykªadu z teorii liczb

AM II /2019 (gr. 2 i 3) zadania przygotowawcze do I kolokwium

c Marcin Sydow Wst p Grafy i Zastosowania Wierzchoªki 8: Kolorowanie Grafów Mapy Kraw dzie Zliczanie Podsumowanie

Programowanie funkcyjne. Wykªad 13

ALGORYTMY SORTOWANIA DANYCH

ARYTMETYKA MODULARNA. Grzegorz Szkibiel. Wiosna 2014/15

WST P DO TEORII INFORMACJI I KODOWANIA. Grzegorz Szkibiel. Wiosna 2013/14

ARYTMETYKA MODULARNA. Grzegorz Szkibiel. Wiosna 2014/15

Wykład 1 Wprowadzenie do algorytmów. Zawartość wykładu 1. Wstęp do algorytmów i struktur danych 2. Algorytmy z rozgałęzieniami.

Algorytmy i Struktury Danych.

1 Bª dy i arytmetyka zmiennopozycyjna

Programowanie wspóªbie»ne

Wykªad 7. Ekstrema lokalne funkcji dwóch zmiennych.

Kierunek: Informatyka. Przedmiot:

Rekurencyjne struktury danych

Podstawy Informatyki. Sprawność algorytmów

Ekonometria - wykªad 8

Listy i operacje pytania

Elementy geometrii w przestrzeni R 3

Przetwarzanie sygnaªów

W poprzednim odcinku... Podstawy matematyki dla informatyków. Relacje równowa»no±ci. Zbiór (typ) ilorazowy. Klasy abstrakcji

Przekroje Dedekinda 1

Przeksztaªcenia liniowe

Metoda tablic semantycznych. 1 Metoda tablic semantycznych

ARYTMETYKA MODULARNA. Grzegorz Szkibiel. Wiosna 2014/15

1 Przypomnienie wiadomo±ci ze szkoªy ±redniej. Rozwi zywanie prostych równa«i nierówno±ci

1 a + b 1 = 1 a + 1 b 1. (a + b 1)(a + b ab) = ab, (a + b)(a + b ab 1) = 0, (a + b)[a(1 b) + (b 1)] = 0,

Liniowe równania ró»niczkowe n tego rz du o staªych wspóªczynnikach

ELEMENTARNA TEORIA LICZB. 1. Podzielno±

Algorytmy tekstowe. Andrzej Jastrz bski. Akademia ETI

Modele wielorównaniowe. Problem identykacji

Informacje pomocnicze

Funkcje, wielomiany. Informacje pomocnicze

Programowanie wspóªbie»ne

Analiza algorytmów zadania podstawowe

Zad. 1 Zad. 2 Zad. 3 Zad. 4 Zad. 5 SUMA. W obu podpunktach zakªadamy,»e kolejno± ta«ców jest wa»na.

Listy Inne przykªady Rozwi zywanie problemów. Listy w Mathematice. Marcin Karcz. Wydziaª Matematyki, Fizyki i Informatyki.

Podstawy logiki i teorii zbiorów wiczenia

Zadania z z matematyki dla studentów gospodarki przestrzennej UŠ. Marek Majewski Aktualizacja: 31 pa¹dziernika 2006

Teoria grafów i jej zastosowania. 1 / 126

Rachunek caªkowy funkcji wielu zmiennych

Matematyczne Podstawy Informatyki

Podstawowe algorytmy i ich implementacje w C. Wykład 9

Poprawność semantyczna

Rozwi zanie równania ró»niczkowego metod operatorow (zastosowanie transformaty Laplace'a).

r = x x2 2 + x2 3.

Granular Computing 9999 pages 15 METODY SZTUCZNEJ INTELIGENCJI - PROJEKTY

XVII Warmi«sko-Mazurskie Zawody Matematyczne

WST P DO TEORII INFORMACJI I KODOWANIA. Grzegorz Szkibiel. Wiosna 2013/14

Zadania z analizy matematycznej - sem. II Rachunek ró»niczkowy funkcji wielu zmiennych

Algorytmy grafowe 2. Andrzej Jastrz bski. Akademia ETI. Politechnika Gda«ska Algorytmy grafowe 2

Algorytmiczna teoria grafów

Vincent Van GOGH: M»czyzna pij cy li»ank kawy. Radosªaw Klimek. J zyk programowania Java

Wst p teoretyczny do wiczenia nr 3 - Elementy kombinatoryki

Indeksowane rodziny zbiorów

Uniwersytet Warszawski Wydziaª Matematyki, Informatyki i Mechaniki

Wektory w przestrzeni

Zadania z PM II A. Strojnowski str. 1. Zadania przygotowawcze z Podstaw Matematyki seria 2

O pewnym zadaniu olimpijskim

Wst p do sieci neuronowych 2010/2011 wykªad 7 Algorytm propagacji wstecznej cd.

Strategia "dziel i zwyciężaj"

Granular Computing 9999 pages 15 METODY SZTUCZNEJ INTELIGENCJI - PROJEKTY

Matematyka 1. Šukasz Dawidowski. Instytut Matematyki, Uniwersytet l ski

Załącznik KARTA PRZEDMIOTU. KARTA PRZEDMIOTU Wydział Automatyki, Elektroniki i Informatyki, Rok akademicki: 2009/2010

Podziaª pracy. Cz ± II. 1 Tablica sortuj ca. Rozwi zanie

Transkrypt:

Algorytmy i struktury danych Wykªad II wyszukiwanie Paweª Rembelski PJWSTK 4 pa¹dziernika 2009 Paweª Rembelski (PJWSTK) Algorytmy i struktury danych 4 pa¹dziernika 2009 1 / 49

1 Wyszukanie wskazanego elementu bez uporz dkowania Algorytm Find 2 Wyszukanie elementu maksymalnego Algorytm FindMax 3 Wyszukanie elementu 2-go co do wielko±ci Algorytm Find2nd Algorytm Turniej szkic 4 Wyszukanie elementów minimalnego i maksymalnego Algorytm FindMinMax Algorytm RecMinMax 5 Wyszukiwanie i otoczka wypukªa Wst p Algorytm Jarvisa Paweª Rembelski (PJWSTK) Algorytmy i struktury danych 4 pa¹dziernika 2009 2 / 49

Wyszukanie wskazanego elementu bez uporz dkowania Problem, struktura i specykacja algorytmu Wyszukanie wskazanego elementu bez uporz dkowania Problem, struktura i specykacja algorytmu Paweª Rembelski (PJWSTK) Algorytmy i struktury danych 4 pa¹dziernika 2009 3 / 49

Wyszukanie wskazanego elementu bez uporz dkowania Problem, struktura i specykacja algorytmu Problem Poda algorytm Alg (T, n, x) znajduj cy indeks elementu x zapisanego w niepustym n-elementowym wektorze ró»nych liczb naturalnych T. Struktura dla algorytmu Struktura dla algorytmu Alg: N, +,. Specykacja algorytmu Specykacj algorytmu Alg stanowi para WP, WK, gdzie warunki pocz tkowy i ko«cowy s postaci kolejno: WP : T jest niepustym wektorem ró»nych liczb naturalnych, n N +, T = n, (!0 i < n) (T [i] = x), WK : Alg (T, n, x) = idx, gdzie T [idx] = x. Paweª Rembelski (PJWSTK) Algorytmy i struktury danych 4 pa¹dziernika 2009 4 / 49

Wyszukanie wskazanego elementu bez uporz dkowania Algorytm Find Wyszukanie wskazanego elementu bez uporz dkowania Algorytm Find Paweª Rembelski (PJWSTK) Algorytmy i struktury danych 4 pa¹dziernika 2009 5 / 49

Wyszukanie wskazanego elementu bez uporz dkowania Algorytm Find implementacja Rozwi zanie problemu algorytm Find: 1 int Find(int T[], int n, int x) { WP : T jest niepustym wektorem ró»nych liczb naturalnych, n N +, T = n,! (0 i < n) (T [i] = x) 2 int idx:=0; 3 4 while (T[idx] x) 5 idx:=idx+1; 6 7 return idx; WK : Find (T, n, x) = idx, gdzie T [idx] = x. 8 } Paweª Rembelski (PJWSTK) Algorytmy i struktury danych 4 pa¹dziernika 2009 6 / 49

Wyszukanie wskazanego elementu bez uporz dkowania Poprawno± i zªo»ono± algorytmu Find Poprawno± algorytmu Find poprawno± cz ±ciowa: wynika bezpo±rednio z warunku pocz tkowego i zaprzeczenia dozoru p tli iteracyjnej ( T [idx] x) T [idx] = x, st d prawdziwy jest warunek ko«cowy Find (T, n, x) = idx, T [idx] = x, warunek stopu: z warunku pocz tkowego! (0 i < n) (T [i] = x) i n N +. Zmienna idx inicjalizowana warto±ci 0 jest inkrementowana z ka»d iteracja p tli o 1, st d po i iteracjach p tli idx = i, czyli T [idx] = x, co ko«czy dziaªanie algorytmu. Zadanie. Podaj posta niezmiennik uzasadniaj cego poprawno± cz ±ciow algorytmu Find. Zªo»ono± algorytmu Find operacja dominuj ca: porównanie elementów rozwa»anego uniwersum, ±rednia zªo»ono± czasowa: A (n) = n 2 = Θ (n), zakªadaj c Pr (T [i] = x) = 1 n, dla ka»dego 0 i < n, pesymistyczna zªo»ono± czasowa: oraz W (n) = n = Θ (n), zªo»ono± pami ciowa: O (1). Pytanie. Czy prawdziwe jest stwierdzenie T (Find, n) = Θ (n)? Paweª Rembelski (PJWSTK) Algorytmy i struktury danych 4 pa¹dziernika 2009 7 / 49

Wyszukanie wskazanego elementu bez uporz dkowania Optymalno± algorytmu Find Twierdzenie Algorytm Find jest optymalnym w sensie ±rednim i pesymistycznym rozwi zaniem postawionego problemu*. * powy»sze twierdzenie jest prawdziwe w klasycznym modelu obliczeniowym deterministycznej maszyny Turinga. Nie jest ono jednak speªnione np. w modelu kwantowej maszyny Turinga (zob. algorytm Grover'a, 1996). Paweª Rembelski (PJWSTK) Algorytmy i struktury danych 4 pa¹dziernika 2009 8 / 49

Wyszukanie elementu maksymalnego Problem, struktura i specykacja algorytmu Wyszukanie elementu maksymalnego Problem, struktura i specykacja algorytmu Paweª Rembelski (PJWSTK) Algorytmy i struktury danych 4 pa¹dziernika 2009 9 / 49

Wyszukanie elementu maksymalnego Problem, struktura i specykacja algorytmu Problem Poda algorytm Alg (T, n) znajduj cy indeks elementu maksymalnego w niepustym n-elementowym wektorze ró»nych liczb naturalnych T. Struktura dla algorytmu Struktura dla algorytmu Alg: N, +, <. Specykacja algorytmu Specykacj algorytmu Alg stanowi para WP, WK, gdzie warunki pocz tkowy i ko«cowy s postaci kolejno: WP : T jest niepustym wektorem ró»nych liczb naturalnych, n N +, T = n, WK : Alg (T, n) = idxmax, gdzie (0 i < n) (T [i] T [idxmax]). Paweª Rembelski (PJWSTK) Algorytmy i struktury danych 4 pa¹dziernika 2009 10 / 49

Wyszukanie elementu maksymalnego Algorytm FindMax Wyszukanie wskazanego elementu bez uporz dkowania Algorytm FindMax Paweª Rembelski (PJWSTK) Algorytmy i struktury danych 4 pa¹dziernika 2009 11 / 49

Wyszukanie elementu maksymalnego Algorytm FindMax implementacja Rozwi zanie problemu algorytm FindMax: 1 int FindMax(int T[], int n) { WP : T jest niepustym wektorem ró»nych liczb naturalnych, n N +, T = n 2 int i:=1, idxmax:=0; 3 4 while (i<n) { 5 if (T[idxMax]<T[i]) idxmax:=i; 6 i:=i+1; 7 } 8 return idxmax; WK : Alg (T, n) = idxmax, gdzie (0 i < n) (T [i] T [idxmax]) 9 } Paweª Rembelski (PJWSTK) Algorytmy i struktury danych 4 pa¹dziernika 2009 12 / 49

Wyszukanie elementu maksymalnego Poprawno± cz ±ciowa algorytmu FindMax Dowód cz ±ciowej poprawno±ci algorytmu metod niezmienników: 1 int FindMax(int T[], int n) { T jest niepustym wektorem ró»nych liczb naturalnych, n N +, T = n 2 int i:=1, idxmax:=0; T [idxmax] T [idxmax] (0 j < i) (T [j] T [idxmax]) 3 ustalenie niezmiennika: (0 j < i) (T [j] T [idxmax]) 4 while (i<n) { werykacja niezmiennika: (0 j < i) (T [j] T [idxmax]) 5 if (T[idxMax]<T[i]) idxmax:=i; (0 j i) (T [j] T [idxmax]) 6 i:=i+1; odtworzenie niezmiennika: (0 j < i) (T [j] T [idxmax]) 7 } (NZ (i < n)) (0 j < i) (T [j] T [idxmax]) (0 j < n) (T [j] T [idxmax]) 8 return idxmax; Alg (T, n) = idx, gdzie (0 i < n) (T [i] T [idx]) 9 } Wniosek Algorytm FindMax jest cz ±ciowo poprawny wzgl dem specykacji WP, WK. Zadanie. Udowodnij przez indukcj wªasno± stopu algorytmu FindMax. Paweª Rembelski (PJWSTK) Algorytmy i struktury danych 4 pa¹dziernika 2009 13 / 49

Wyszukanie elementu maksymalnego Zªo»ono± algorytmu FindMax Zªo»ono± algorytmu FindMax operacja dominuj ca: porównanie elementów rozwa»anego uniwersum, zªo»ono± czasowa: T (n) = n 1 = Θ (n), zªo»ono± pami ciowa: O (1). Twierdzenie Algorytm FindMax jest optymalnym rozwi zaniem postawionego problemu. Paweª Rembelski (PJWSTK) Algorytmy i struktury danych 4 pa¹dziernika 2009 14 / 49

Wyszukanie elementu 2-go co do wielko±ci Problem, struktura i specykacja algorytmu Wyszukanie elementu 2-go co do wielko±ci Problem, struktura i specykacja algorytmu Paweª Rembelski (PJWSTK) Algorytmy i struktury danych 4 pa¹dziernika 2009 15 / 49

Wyszukanie elementu 2-go co do wielko±ci Problem, struktura i specykacja algorytmu Problem Poda algorytm Alg (T, n) znajduj cy indeks elementu 2-go co do wielko±ci w n-elementowym wektorze ró»nych liczb naturalnych T, gdzie n 2. Struktura dla algorytmu Struktura dla algorytmu Alg: N, +, <, >. Specykacja algorytmu Specykacj algorytmu Alg stanowi para WP, WK, gdzie warunki pocz tkowy i ko«cowy s postaci kolejno: WP : T jest niepustym wektorem ró»nych liczb naturalnych, n N \ {0, 1}, T = n, WK : Alg (T, n) = idxsec, gdzie! (0 i < n) (T [i] > T [idxsec]). Paweª Rembelski (PJWSTK) Algorytmy i struktury danych 4 pa¹dziernika 2009 16 / 49

Wyszukanie elementu 2-go co do wielko±ci Algorytm Find2nd Wyszukanie elementu 2-go co do wielko±ci Algorytm Find2nd Paweª Rembelski (PJWSTK) Algorytmy i struktury danych 4 pa¹dziernika 2009 17 / 49

Wyszukanie elementu 2-go co do wielko±ci Algorytm Find2nd implementacja Rozwi zanie problemu algorytm Find2nd: 1 int Find2nd(int T[], int n) { WP : T jest niepustym wektorem ró»nych liczb naturalnych, n N \ {0, 1}, T = n, 2 int i:=2, idxmax, idxsec; 3 4 if (T[0]<T[1]) { idxmax:=1; idxsec:=0; } 5 else { idxmax:=0; idxsec:=1 } 6 7 while (i<n) { 8 if (T[i]>T[idxMax]) { idxsec:=idxmax; idxmax:=i; } 9 else if (T[i]>T[idxSec]) idxsec:=i; 10 11 i:=i+1; 12 } 13 14 return idxsec; WK : Find2nd (T, n) = idxsec, gdzie! (0 i < n) (T [i] > T [idxsec]) 15 } Paweª Rembelski (PJWSTK) Algorytmy i struktury danych 4 pa¹dziernika 2009 18 / 49

Wyszukanie elementu 2-go co do wielko±ci Poprawno± algorytmu Find2nd Poprawno± algorytmu Find2nd poprawno± cz ±ciowa: tu» po inicjalizacji zmiennych w wierszach 4-5 prawd jest,»e zmienna idxsec wskazuje na 2-gi co do wielko±ci element w ci gu dwuelementowym T [0], T [1]. Niezmiennikiem p tli jest formuªa NZ :! (0 j < i) (T [j] > T [idxsec]). Po wykonaniu instrukcji warunkowej w wierszach 8-9 prawd jest,»e! (0 j i) (T [j] > T [idxsec]). Zatem po wykonaniu instrukcji i := i + 1 zachodzi! (0 j < i) (T [j] > T [idxsec]) odtworzenie niezmiennika NZ. Po zako«czeniu p tli iteracyjnej mamy i = n, st d! (0 i < n) (T [i] > T [idxsec]), warunek stopu: z warunku pocz tkowego n N \ {0, 1}. Zmienna i inicjalizowana warto±ci 2 jest inkrementowana z ka»d iteracja p tli o 1, st d po n 2 iteracjach p tli i = n, co ko«czy dziaªanie algorytmu. Paweª Rembelski (PJWSTK) Algorytmy i struktury danych 4 pa¹dziernika 2009 19 / 49

Wyszukanie elementu 2-go co do wielko±ci Zªo»ono± algorytmu Find2nd Zªo»ono± algorytmu Find2nd operacja dominuj ca: porównanie elementów rozwa»anego uniwersum, ±rednia zªo»ono± czasowa: A (n) = 2n 2 + n 2 ± c = Θ (n), gdzie c 2 jest pewn staª, zakªadaj c Pr (T [i] > T [idxmax]) = 1 2, dla ka»dego 0 i < n, pesymistyczna zªo»ono± czasowa: oraz W (n) = 2n ± c = Θ (n), gdzie c 2 jest pewn staª, zªo»ono± pami ciowa: O (1). Pytanie. Czy algorytm Find2nd jest optymalnym rozwi zaniem dla rozwa»anego problemu? Paweª Rembelski (PJWSTK) Algorytmy i struktury danych 4 pa¹dziernika 2009 20 / 49

Wyszukanie elementu 2-go co do wielko±ci Algorytm Turniej szkic Wyszukanie elementu 2-go co do wielko±ci Algorytm Turniej szkic Paweª Rembelski (PJWSTK) Algorytmy i struktury danych 4 pa¹dziernika 2009 21 / 49

Wyszukanie elementu 2-go co do wielko±ci Algorytm Turniej szkic Pomysª. Zbuduj drzewo turnieju zgodnie z zasad przechodzi tylko wygrywaj cy, np. dla T = [9, 3, 5, 8, 2, 1, 6, 4, 0, 7] i n = 10 otrzymujemy: Pytanie. Ile porówna«elementów tablicy T jest niezb dnych do zbudowania drzewa turnieju dla rozwa»anego przykªadu (tj. n = 10) i w przypadku ogólnym? Pytanie. Jak najmniejszym kosztem mo»na znale¹ element 2-gi co do wielko±ci? Paweª Rembelski (PJWSTK) Algorytmy i struktury danych 4 pa¹dziernika 2009 22 / 49

Wyszukanie elementu 2-go co do wielko±ci Algorytm Turniej szkic Wniosek Element 2-gi co do wielko±ci jest jednym z tych, które przegraªy z elementem maksymalnym. Tych elementów jest co najwy»ej lg n i w±ród nich nale»y wyszuka elementu maksymalnego np. stosuj c metod FindMax. Zªo»ono± algorytmu Turniej operacja dominuj ca: porównanie elementów rozwa»anego uniwersum, pesymistyczna zªo»ono± czasowa: W (Turniej, n) = n 1 + lg n 1 = n + lg n 2, zªo»ono± pami ciowa: O (n) ze wzgl du na konieczno± zapisywania rezultatów pojedynków. Twierdzenie Algorytm Turniej jest optymalnym z dokªadno±ci co do staªej w przypadku pesymistycznym rozwi zaniem rozwa»anego problemu, tj. zªo»ono± ka»dego innego optymalnego w przypadku pesymistycznym algorytm dla postawionego problemu jest rz du W (Turniej, n) + c = n + lg n 2 + c, gdzie c jest nieujemn staª naturaln. Paweª Rembelski (PJWSTK) Algorytmy i struktury danych 4 pa¹dziernika 2009 23 / 49

Wyszukanie elementów minimalnego i maksymalnego Problem, struktura i specykacja algorytmu Wyszukanie elementów minimalnego i maksymalnego Problem, struktura i specykacja algorytmu Paweª Rembelski (PJWSTK) Algorytmy i struktury danych 4 pa¹dziernika 2009 24 / 49

Wyszukanie elementów minimalnego i maksymalnego Problem, struktura i specykacja algorytmu Problem Poda algorytm Alg (T, n) znajduj cy indeks elementów minimalnego i maksymalnego w n-elementowym wektorze ró»nych liczb naturalnych T, gdzie n = 2k i k N +. Struktura dla algorytmu Struktura dla algorytmu Alg: standardowa struktura liczb naturalnych. Specykacja algorytmu Specykacj algorytmu Alg stanowi para WP, WK, gdzie warunki pocz tkowy i ko«cowy s postaci kolejno: WP : T jest niepustym wektorem ró»nych liczb naturalnych, n = 2k, k N +, T = n, WK : Alg (T, n) = (idxmin, idxmax), gdzie (0 i < n) (T [idxmin] T [i]), (0 i < n) (T [idxmax] T [i]). Pytanie. Czy sekwencyjne zastosowanie algorytmów FindMax i analogicznego FindMin jest poprawnym rozwi zaniem rozwa»anego problemu? Je»eli tak, to jaka jest dokªadna zªo»ono± czasowa takiego rozwi zania? Paweª Rembelski (PJWSTK) Algorytmy i struktury danych 4 pa¹dziernika 2009 25 / 49

Wyszukanie elementów minimalnego i maksymalnego Algorytm FindMinMax Wyszukanie elementów minimalnego i maksymalnego Algorytm FindMinMax Paweª Rembelski (PJWSTK) Algorytmy i struktury danych 4 pa¹dziernika 2009 26 / 49

Wyszukanie elementów minimalnego i maksymalnego Algorytm FindMinMax implementacja Rozwi zanie problemu algorytm FindMinMax: 1 (int, int) FindMinMax(int T[], int n) { WP : T jest niepustym wektorem ró»nych liczb naturalnych, n = 2k, k N +, T = n, 2 int i:=0; 3 (int, int) s; 4 5 for (i:=0; i<n/2; i:=i+1) 6 if (T[i]>T[(n-1)-i]) 6 SWAP(T,i,(n-1)-i); operacja zamiany elementów wektora 7 8 s.idxmin:=findmin(t[0...n/2-1],n/2); procedura wyszukania elementu minimalnego analogiczna do omówionej metody FindMax 9 s.idxmax:=findmax(t[n/2...n-1],n/2); 10 11 return s; WK : FindMinMax (T, n) = (idxmin, idxmax), gdzie (0 i < n) (T [idxmin] T [i]), (0 i < n) (T [idxmax] T [i]). 12 } Paweª Rembelski (PJWSTK) Algorytmy i struktury danych 4 pa¹dziernika 2009 27 / 49

Wyszukanie elementów minimalnego i maksymalnego Poprawno±ci i zªo»ono± algorytmu FindMinMax Zadanie. Uzasadnij poprawno± caªkowit algorytmu FindMinMax. Zªo»ono± algorytmu Jarvisa operacja dominuj ca: porównywanie elementów rozwa»anego uniwersum, zªo»ono± czasowa metody pomocniczej FindMin: T (FindMin, n) = n 2 1, zªo»ono± czasowa metody pomocniczej FindMax: T (FindMax, n) = n 2 1, zªo»ono± czasowa algorytmu Jarvisa: T (FindMinMax, n) = n 2 + T (FindMin, n) + T (FindMax, n) = 3 2 n 2, zªo»ono± pami ciowa algorytmu Jarvisa: O (1). Twierdzenie Algorytm FindMinMax jest optymalnym z dokªadno±ci co do staªej rozwi zaniem rozwa»anego problemu, tj. zªo»ono± ka»dego innego optymalnego algorytm dla postawionego problemu jest rz du T (FindMinMax, n) + c = 3 2 n 2 + c, gdzie c jest nieujemn staª naturaln. Paweª Rembelski (PJWSTK) Algorytmy i struktury danych 4 pa¹dziernika 2009 28 / 49

Wyszukanie elementów minimalnego i maksymalnego Algorytm RecMinMax Wyszukanie elementów minimalnego i maksymalnego Algorytm RecMinMax Paweª Rembelski (PJWSTK) Algorytmy i struktury danych 4 pa¹dziernika 2009 29 / 49

Wyszukanie elementów minimalnego i maksymalnego Algorytm RecMinMax Pomysª. Zbuduj rekurencyjnie zmodykowane drzewo turnieju zgodnie z zasad przechodz tylko elementy minimalny i maksymalny, rezultat znajdziemy w korzeniu drzewa, np. dla T = [9, 3, 5, 8, 2, 1, 6, 4, 0, 7] i n = 10 otrzymujemy: Konstruujemy procedur rekurencyjn RecMinMax (T, l, r), gdzie l i r to kolejno indeks lewego i prawego kra«ca aktualnie analizowanego fragmentu wektora T. Dalej zaªó»my bez straty ogólno±ci,»e (r l + 1) = n = 2 k i k N +. Paweª Rembelski (PJWSTK) Algorytmy i struktury danych 4 pa¹dziernika 2009 30 / 49

Wyszukanie elementów minimalnego i maksymalnego Algorytm RecMinMax implementacja Rozwi zanie problemu algorytm RecMinMax: 1 (int,int) RecMinMax(int T[], int l, int r) { WP : T jest niepustym wektorem ró»nych liczb naturalnych, (r l + 1) = n = 2 k, k N +, T = n, 2 int idxmin, idxmax; 3 (int,int) sl, sr; 4 5 if (r-l=1) 6 if (T[r]>T[l]) return (l,r) else return (r,l); 8 else { 9 sl:=recminmax(t,l,(l+r)/2); 10 sr:=recminmax(t,((l+r)/2)+1,r); 11 12 if (T[sl.idxMin]<T[sr.idxMin]) idxmin:=sl.idxmin else idxmin:=sr.idxmin; 13 if (T[sl.idxMax]<T[sr.idxMax]) idxmax:=sl.idxmax else idxmax:=sr.idxmax; 14 15 return (idxmin,idxmax); WK : RecMinMax (T, l, r) = (idxmin, idxmax), gdzie (l i r) (T [idxmin] T [i]), (l i r) (T [idxmax] T [i]). 16 } 17 } Paweª Rembelski (PJWSTK) Algorytmy i struktury danych 4 pa¹dziernika 2009 31 / 49

Wyszukanie elementów minimalnego i maksymalnego Poprawno± cz ±ciowa algorytmu RecMinMax Dowód cz ±ciowej poprawno±ci algorytmu przez indukcj wzgl dem k N +, gdzie n = 2 k : baza indukcji: dla k = 1, tj. n = 2 zachodzi r l = 1, zatem wykonany jest pierwszy warunek zewn trznej instrukcji warunkowej, czyli if (T[r]>T[l]) return (l,r) else return (r,l); St d algorytm RecMinMax jest cz ±ciowo poprawny dla k = 1 i n = 2, zaªo»enie indukcyjne: dla 0 i < k i n = 2 i algorytm RecMinMax jest cz ±ciowo poprawny, teza indukcyjna: dla k > 1 i n = 2 k algorytm RecMinMax jest cz ±ciowo poprawny. Dowód tezy indukcyjnej Dla k > 1, tj. n > 2 mamy r l > 2, zatem wykonany jest drugi warunek zewn trznej instrukcji warunkowej, czyli kolejno instrukcje w wierszach 9-10. St d i na podstawie zaªo»enia indukcyjnego zachodzi sl.idxmin = indeks elem. min ({ T [l], T [l + 1],..., T ({ sl.idxmax = indeks elem. max T [l], T [l + 1],..., T [ l + r 2 [ l + r 2 ]}), ]}), Paweª Rembelski (PJWSTK) Algorytmy i struktury danych 4 pa¹dziernika 2009 32 / 49

Wyszukanie elementów minimalnego i maksymalnego Poprawno± cz ±ciowa algorytmu RecMinMax Dowód tezy indukcyjnej c.d. oraz sr.idxmin = indeks elem. min ({ T ({ sr.idxmax = indeks elem. max T [ l + r 2 [ l + r 2 ] + 1, T ] + 1, T [ l + r 2 [ l + r 2 ] }) + 2,..., T [r], ] }) + 2,..., T [r]. Nast pnie wykonane s instrukcje warunkowe 12 if (T[sl.idxMin]<T[sr.idxMin]) idxmin:=sl.idxmin else idxmin:=sr.idxmin; 13 if (T[sl.idxMax]<T[sr.idxMax]) idxmax:=sl.idxmax else idxmax:=sr.idxmax; 14 15 return (idxmin,idxmax); St d idxmin = indeks elem. min ({T [l], T [l + 1],..., T [r]}), idxmax = indeks elem. max ({T [l], T [l + 1],..., T [r]}), gdzie r l = n i n = 2 k, dla k > 1, co ko«czy dowód. Zadanie. Udowodnij przez indukcj wªasno± stopu algorytmu RecMinMax. Paweª Rembelski (PJWSTK) Algorytmy i struktury danych 4 pa¹dziernika 2009 33 / 49

Wyszukanie elementów minimalnego i maksymalnego Zªo»ono± algorytmu RecMinMax Zªo»ono± czasowa algorytmu RecMinMax Niech dalej T (n) b dzie liczb operacji porówna«elementów rozwa»anego uniwersum, jakie wykonuje algorytm RecMinMax dla danych rozmiaru n (ponownie zakªadamy,»e n = 2 k i k N + ), wtedy: { 1 dla n = 2 czyli dla n = 2 k i k N + T (n) = ) T (2 k = 2T ( n 2 ) + 2 dla n > 2, { 1 dla k = 1 2T ( 2 k 1) + 2 dla k > 1, i ostatecznie* T ( 2 k) = 3 2 2k 2, st d T (n) = 3 2 n 2. * k = 1 mamy T ( 2 1) = T (2) = 3 2 2 2 = 1 co stanowi baz indukcji. Zaªó»my,»e dla k > 1 zachodzi T ( 2 k) = 2 3 2k 2, wtedy dla k + 1 mamy T ( 2 k+1) = 2T ( 2 k) + 2 i na podstawie zaªo»enia ( T 2 k+1) ( ) 3 = 2 2 2k 2 + 2 = 3 2 k 2 = 3 2 2k+1 2 co ko«czy dowód indukcyjny. St d dla n = 2 k i k N + zachodzi T (n) = 3 2 n 2. Paweª Rembelski (PJWSTK) Algorytmy i struktury danych 4 pa¹dziernika 2009 34 / 49

Wyszukanie elementów minimalnego i maksymalnego Zªo»ono± algorytmu RecMinMax Wniosek Z twierdzenia o optymalno±ci algorytmu FindMinMax i wyprowadzonej z powy»szego równania rekurencyjnego postaci zwartej na T (n) wynika,»e algorytm RecMinMax jest optymalnym rozwi zaniem postawionego problemu. Zªo»ono± pami ciowa algorytmu RecMinMax Zªo»ono± pami ciowa algorytmu RecMinMax z uwzgl dnieniem kosztów rekursji jest asymptotycznie równa wysoko±ci zmodykowanego drzewa turnieju, tj. S (n) = Θ (lg n). Paweª Rembelski (PJWSTK) Algorytmy i struktury danych 4 pa¹dziernika 2009 35 / 49

Wyszukiwanie i otoczka wypukªa Wst p Wyszukiwanie i otoczka wypukªa Wst p Paweª Rembelski (PJWSTK) Algorytmy i struktury danych 4 pa¹dziernika 2009 36 / 49

Wyszukiwanie i otoczka wypukªa Wst p Wªasno± Niech p 0 = (x 0, y 0), p 1 = (x 1, y 1) oraz p 2 = (x 2, y 2) b d dowolnymi punktami pªaszczyzny N N oraz det (p 0, p 1, p 2) wyznacznikiem takim,»e wtedy, je»eli: det (p 0, p 1, p 2) = (x 1 x 0) (y 2 y 0) (y 1 y 0) (x 2 x 0), det (p 0, p 1, p 2) > 0 wtedy punkt p 2 le»y po lewej stronie prostej przechodz cej przez punkty p 0, p 1, det (p 0, p 1, p 2) = 0 wtedy punkty p 0, p 1 oraz p 2 s wspóªliniowe, det (p 0, p 1, p 2) < 0 wtedy punkt p 2 le»y po prawej stronie prostej przechodz cej przez punkty p 0, p 1. Denicja Niech p 0 b dzie wybranym pªaszczyzny N N. Ustalamy relacj porz dku cz ±ciowego p0 (N N) 2 tak,»e p 1 p0 p 2 wtedy i tylko wtedy, gdy det (p 0, p 1, p 2) 0 dla dowolnych punktów p 1, p 2 N N. Relacj p0 b dziemy nazywali porz dkiem k towym. Paweª Rembelski (PJWSTK) Algorytmy i struktury danych 4 pa¹dziernika 2009 37 / 49

Wyszukiwanie i otoczka wypukªa Wst p Wniosek Niech Q b dzie dowolnym zbiorem punktów pªaszczyzny N N. Je»eli dla dowolnego punktu p 0 dowolne dwa ró»ne punkty p 1, p 2 nale» ce do dziedziny relacji p0 nie s wspóªliniowe (tj. det (p 0, p 1, p 2) 0), to relacja p0 jest relacj porz dku liniowego w zbiorze Q. Przykªad. Zbiory punktów, w których relacja porz dku k towego jest/nie jest relacj porz dku liniowego. Paweª Rembelski (PJWSTK) Algorytmy i struktury danych 4 pa¹dziernika 2009 38 / 49

Wyszukiwanie i otoczka wypukªa Wst p Denicja Niech Q N N b dzie zbiorem punktów pªaszczyzny, z których ka»de trzy ró»ne punkty nie s wspóªliniowe. Otoczk wypukª zbioru Q nazywamy zbiór CH (Q) Q taki,»e wielok t wypukªy o wierzchoªkach ze zbioru punktów CH (Q) zawiera wewn trz wszystkie punktu zbioru Q \ CH (Q) oraz CH (Q) jest najmniejszym takim zbiorem. Przykªad. Zbiór punktów Q oraz otoczka wypukªa CH (Q) owego zbioru. Paweª Rembelski (PJWSTK) Algorytmy i struktury danych 4 pa¹dziernika 2009 39 / 49

Wyszukiwanie i otoczka wypukªa Problem, struktura i specykacja algorytmu Wyszukiwanie i otoczka wypukªa Problem, struktura i specykacja algorytmu Paweª Rembelski (PJWSTK) Algorytmy i struktury danych 4 pa¹dziernika 2009 40 / 49

Wyszukiwanie i otoczka wypukªa Problem, struktura i specykacja algorytmu Problem Poda algorytm Alg (P, n) znajduj cy liczb punktów tworz cych otoczk wypukª niepustego n-elementowego zbioru ró»nych i trójkami niewspóªliniowych punktów Q pªaszczyzny N N, zapisanego w wektorze (tablicy) punktów P = [(x 0, y 0), (x 1, y 1),..., (x n 1, y n 1)]. Struktura dla problemu Rozszerzenie standardowej struktury dla algorytmu Alg: zbiór punktów pªaszczyzny N N, z wyró»nion relacj porz dku k towego. Specykacja algorytmu Specykacj algorytmu Alg stanowi para WP, WK, gdzie warunki pocz tkowy i ko«cowy s postaci kolejno: WP : P jest niepustym wektorem ró»nych i trójkami niewspóªliniowych punktów, n N +, P = n, WK : Alg (P, n) = CH (Q), gdzie Q jest zbiorem reprezentowanym przez wektor P. Paweª Rembelski (PJWSTK) Algorytmy i struktury danych 4 pa¹dziernika 2009 41 / 49

Wyszukiwanie i otoczka wypukªa Algorytm Jarvisa Wyszukiwanie i otoczka wypukªa Algorytm Jarvisa Paweª Rembelski (PJWSTK) Algorytmy i struktury danych 4 pa¹dziernika 2009 42 / 49

Wyszukiwanie i otoczka wypukªa Procedury pomocnicze int FindStart((int,int) P[], int n) warunek pocz tkowy WP : P jest niepustym wektorem ró»nych i trójkami niewspóªliniowych punktów, n N +, P = n, warunek ko«cowy WK : FindStart(P, n) = idx, gdzie P [idx] jest punktem o najmniejszej wspóªrz dnej y a w razie niejednoznaczno±ci kolejno najmniejszej wspóªrz dnej x. 1 int FindStart((int,int) P[], int n) { WP 2 int i, idx:=0; 3 4 for (i:=1; i<n; i:=i+1) 5 if ((P[idx].y>P[i].x) OR 6 ((P[idx].y=P[i].y) AND ((P[idx].x>P[i].x))) 7 idx:=i; 8 9 return idx; WK 10 } Zadanie. Uzasadni caªkowit poprawno± procedury FindStart. Paweª Rembelski (PJWSTK) Algorytmy i struktury danych 4 pa¹dziernika 2009 43 / 49

Wyszukiwanie i otoczka wypukªa Procedury pomocnicze int FindNext((int,int) P[], int n, (int,int) p) warunek pocz tkowy WP : P jest niepustym wektorem ró»nych i trójkami niewspóªliniowych punktów, n N +, P = n, (0 i < n) (P [i] = p), warunek ko«cowy: WK : FindNext(P, n, p) = idx, gdzie P [idx] p jest punktem najmniejszym w sensie relacji porz dku k towego p (tj. wzgl dem punktu p). 1 int FindNext((int,int) P[], int n, (int,int) p) { WP 2 int i, idx:=randomdiff(q,n,p), indeks dowolnego elementu wektora P ró»nego od elementu p 3 first=idx; 4 5 for (i:=1; i<n; i:=i+1) 6 if ((i!=first) AND (P[i]!=p) AND (P[i] pp[idx])) 7 idx:=i; 8 9 return idx; WK 10 } Zadanie. Uzasadni caªkowit poprawno± procedury FindNext. Paweª Rembelski (PJWSTK) Algorytmy i struktury danych 4 pa¹dziernika 2009 44 / 49

Wyszukiwanie i otoczka wypukªa Algorytm Jarvisa implementacja Rozwi zanie problemu algorytmu Jarvisa: 1 int Jarvis((int,int) P[], int n) { WP : P jest niepustym wektorem ró»nych i trójkami niewspóªliniowych punktów, n N +, P = n 2 int size:=0, start:=findstart(p,n), tmp:=start; 3 4 do { 5 size:=size+1; 6 7 tmp:=findnext(p,n,t[tmp]); 8 } while (tmp!=start) 9 10 return size; WK : Jarvis (P, n) = CH (Q), 11 gdzie Q jest zbiorem reprezentowanym przez wektor P 12 } Paweª Rembelski (PJWSTK) Algorytmy i struktury danych 4 pa¹dziernika 2009 45 / 49

Wyszukiwanie i otoczka wypukªa Poprawno± algorytmu Jarvisa Poprawno± algorytmu Jarvisa poprawno± cz ±ciowa: metoda pomocnicza FindStart ustala pierwszy wierzchoªek poszukiwanej otoczki wypukªej start. Niech dalej α oznacza liczb odwiedzin elementów wektora P. Niezmiennikiem p tli jest formuªa: NZ : size = α 1. St d po wykonaniu instrukcji size := size + 1 prawd jest,»e size = α. Procedura FindNext wyznacza kolejny wierzchoªek otoczki wypukªej k towo najbli»szy aktualnemu wierzchoªkowi tmp. Zatem po wykonaniu instrukcji tmp := FindNext (P, n, tmp) prawd jest size = α 1 odtworzenie niezmiennika NZ. Po zako«czeniu p tli iteracyjnej mamy tmp = start, tj. pierwszy wierzchoªek otoczki wypukªej start odwiedzony byª 2-krotnie. Z wªasno±ci geometrycznych otoczki wypukªej i procedury FindNext wynika,»e ka»dy inny element wektora T (tj. wierzchoªek zbioru Q) odwiedzony byª co najwy»ej jeden raz. St d liczba wierzchoªków zbioru Q tworz cych otoczk wypukª CH (Q) jest równa dokªadnie α 1 = size, czyli Jarvis (P, n) = size = CH (Q). warunek stopu: poniewa» zbiór Q jest zbiorem sko«czonym i CH (Q) Q oraz z powy»szego rozumowania ka»dy wierzchoªek zbioru Q inny ni» start odwiedzany jest co najwy»ej jeden raz, to ci g wywoªa«metody FindNext jest tak»e sko«czony dla dowolnego wektora P dªugo±ci n reprezentuj cego zbiór Q. Paweª Rembelski (PJWSTK) Algorytmy i struktury danych 4 pa¹dziernika 2009 46 / 49

Wyszukiwanie i otoczka wypukªa Zªo»ono± algorytmu Jarvisa Zªo»ono± algorytmu Jarvisa operacja dominuj ca: porównywanie elementów rozwa»anego uniwersum wzgl dem relacji, zªo»ono± czasowa metody pomocniczej FindStart: T (FindStart, n) = Θ (1), zªo»ono± czasowa metody pomocniczej FindNext: T (FindNext, n) = Θ (n), zªo»ono± czasowa algorytmu Jarvisa: T (Jarvis, n) = T (FindStart, n) + k (T (FindNext, n) + O (1)) = Θ (kn), gdzie k jest liczb punktów tworz cych otoczk wypukª zbioru Q, zªo»ono± pami ciowa algorytmu Jarvisa: O (1), Pytanie. Jaka jest pesymistyczna zªo»ono± czasowa algorytmu Jarvisa? Pytanie. Jaka jest ±rednia zªo»ono± czasowa algorytmu Jarvisa? Paweª Rembelski (PJWSTK) Algorytmy i struktury danych 4 pa¹dziernika 2009 47 / 49

Literatura Literatura 1 T. H. Cormen, C. E. Leiserson, R. L. Rivest, C. Stein, Wprowadzenie do algorytmów, WNT 2004. 2 L. Banachowski, K. Diks, W. Rytter, Algorytmy i struktury danych, WNT 1996. 3 A. V. Aho, J. E. Hopcroft, J. D. Ullman, Algorytmy i struktury danych, Helion 2003. 4 A. Da«ko, T. L. Lee, G. Mirkowska, P. Rembelski, A. Smyk, M. Sydow, Algorytmy i struktury danych zadania, PJWSTK 2006. 5 R. Sedgewick, Algorytmy w C++, RM 1999. 6 N. Wirth, Algorytmy + struktury danych = programy, WNT 1999. 7 A. Drozdek, D. L. Simon, Struktury danych w j zyku C, WNT 1996. 8 D. Harel, Rzecz o istocie informatyki Algorytmika, WNT 2001. Paweª Rembelski (PJWSTK) Algorytmy i struktury danych 4 pa¹dziernika 2009 48 / 49

Zadania wiczeniowe Zadania wiczeniowe Paweª Rembelski (PJWSTK) Algorytmy i struktury danych 4 pa¹dziernika 2009 49 / 49

Zadania wiczeniowe 1 Zaimplementuj algorytm Find. 2 Zaimplementuj algorytm FindMax. 3 Zaimplementuj algorytm Find2nd. 4 Zaimplementuj algorytm Turniej. 5 Zaproponuj algorytm wyszukania elementu 3-go co do wielko±ci w n-elementowym wektorze ró»nych liczb naturalnych T, gdzie n 3, bazuj cy na metodzie turniejowej. Uzasadnij poprawno± algorytmu i oszacuj jego zªo»ono±.. 6 Zaimplementuj algorytm FindMinMax. 7 Zaimplementuj algorytm rekurencyjny RecMinMax, dla: 1 rozmiaru danych wej±ciowych n = 2 k i k N +, 2 rozmiaru danych wej±ciowych n = 2k i k N +. 8 Przeprowad¹ do±wiadczalnie analiz porównawcz efektywno±ci algorytmów FindMinMax i RecMinMax. 9 Zaimplementuj nast puj cy algorytm równoczesnego wyszukiwania minimum i maksimum w n-elementowym wektorze ró»nych liczb naturalnych T, gdzie n 2: 1 dla ka»dej pary kolejnych elementów wektora ustawiam minimum na pozycji parzystej, a maksimum na pozycji nieparzystej, 2 wyszukaj sekwencyjnie elementu minimalnego na pozycjach parzystych, 3 wyszukaj sekwencyjnie elementu maksymalnego na pozycjach nieparzystych. Uzasadnij poprawno± algorytmu i oszacuj jego zªo»ono±. Czy podana metoda jest optymalnym rozwi zaniem rozwa»anego problemu? 10 Zaimplementuj algorytm Jarvisa. 11 Zaproponuj i zaimplementuj algorytm sprawdzania, czy dana relacja binarna w zbiorze {1, 2,..., n}, zadana w postaci n-elementowego wektora T par postaci (x, y) jest: Paweª Rembelski (PJWSTK) Algorytmy i struktury danych 4 pa¹dziernika 2009 49 / 49

Zadania wiczeniowe 1 zwrotna, 2 symetryczna, 3 przechodnia. Uzasadnij poprawno± algorytmu i oszacuj jego zªo»ono±. Paweª Rembelski (PJWSTK) Algorytmy i struktury danych 4 pa¹dziernika 2009 49 / 49