Algorytmy i Struktury Danych.

Wielkość: px
Rozpocząć pokaz od strony:

Download "Algorytmy i Struktury Danych."

Transkrypt

1 Algorytmy i Struktury Danych. Złożoność obliczeniowa algorytmu dr hab. Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 2 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 1 / 96

2 Analiza algorytmów Wprowadzenie Naukowe metody analizy algorytmów Model matematyczny Klasyfikacja algorytmów Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 2 / 96

3 Analiza doświadczalna a model matematyczny Analiza doświadczalna algorytmu jest sposobem na przewidzenie jego wydajności, ale nie pomaga w zrozumieniu jego działania. W zrozumieniu działania algorytmu pomocny jest model matematyczny czasu pracy algorytmu. Model matematyczny daje nam podstawy do zrozumienia złożoności obliczeniowej algorytmu. Złożoność obliczeniowa algorytmu to koszt jego realizacji, czyli ilość zasobów komputera niezbędnych do jego wykonania. W zależności od rozważanego zasobu złożoność dzielimy na złożoność czasowa oraz złożoność pamięciowa. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 3 / 96

4 Matematyczny model czasu pracy algorytmu Koncepcja modelu matematycznego została opracowana i spopularyzowana przez Donalda Knutha w późnych latach 60 ubiegłego stulecia. Sztuka programowania (The Art of Computer Programming)- przełomowa monografia autorstwa Donalda Knutha dotyczaca analizy algorytmów; pierwszy tom wydano w 1968r. Rysunek: Donald Ervin Knuth (10 stycznia ). Laureat nagrody Turinga Źródło zdjęcia: Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 4 / 96

5 Matematyczny model czasu pracy algorytmu Całkowity czas pracy algorytmu (programu) to suma po wszystkich operacjach (instrukcjach) występujacych w algorytmie wartości: koszt operacji częstotliwość występowania operacji. Aby policzyć całkowity czas pracy algorytmu, należy: przeanalizować program w celu określenia zestawu operacji. pamiętać, że koszt operacji zależy, m.in., od komputera, systemu operacyjnego i kompilatora pamiętać, że częstotliwość wystapienia operacji zależy zarówno od algorytmu jak i danych wejściowych. Dzięki Donaldowi Knuthowi wiemy, że można uzyskać dokładne modele matematyczne wykonywania danego algorytmu (programu) oraz operacji. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 5 / 96

6 Koszt wykonania podstawowych operacji Na poczatku rozwoju komputerów każdy komputer był dostarczany z instrukcja (podręcznikiem) zawierajac a dokładny czas wykonania każdej operacji - teraz już tak nie jest. Obecnie, aby poznać koszt wykonania danej operacji można, np., wykonać bilon eksperymentów i oszacować tę wielkość, np. że: dodawanie dwóch liczb całkowitych zajmuje 2 nanosekundy, a mnożenie dwóch liczb rzeczywistych zajmuje 4 nanosekundy. Praktycznie jednak zakłada się, że operacje (np.,dodawanie, odejmowanie, mnożenie, dzielenie, przypisanie, porównanie, deklaracja zmiennej, dostęp do elementu tablicy) wykonywane na standardowych (wbudowanych) typach danych zajmuja pewien stały (bardzo nieduży) czas wykonania 1. 1 Należy pamiętać, że niektóre operacje, np. deklaracja tablicy o rozmiarze N w Javie, zajmuje czas proporcjonalny do N z uwagi na to, że każdy jej element domyślnie inicjalizowany jest zerem. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 6 / 96

7 Częstość występowania operacji - przykład Pytanie: Ile jest instrukcji w zależności od rozmiaru danych wejściowych n? int count = 0; for (int i = 0; i < n; i++) if (a[i] == 0) count++; Operacja liczba wystapień deklaracja zmiennych 2 przypisanie 2 porównanie == n porównanie < n+1 dostęp do tablicy n inkrementacja i n inkrementacja count n Częstość wysta- pienia zależna od wielkości danych wejściowych Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 7 / 96

8 Częstość występowania operacji - problem 2SUM Pytanie: Ile jest instrukcji w zależności od rozmiaru danych wejściowych n? int count = 0; for (int i = 0; i < n; i++) for (int j = i+1; j < n; j++) if (a[i] + a[j] == 0) count++; Operacja liczba wystapień deklaracja zmiennych n+2 przypisanie n+2 1 porównanie == 2 (n 1) n 1 porównanie < 2 (n + 1) (n + 2) dostęp do tablicy n (n 1) inkrementacja od 1 2 n (n 1) do n (n 1) Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 8 / 96

9 Częstość występowania operacji - przykład Pytanie Dlaczego mamy 1 2 (n 1) n operacji ==? Odp. Zauważmy, że: Wartości i Wartości j Liczba operacji i = 0 1,2,3...,n-1 n-1 i = 1 2,3...,n-1 n-2 i = 2 3,...,n-1 n i = n-2 n-1 1 i = n-1-0 Sumujac liczbę operacji: n 1 + n 2 + n Otrzymujemy: 1 2 (n 1) n Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 9 / 96

10 Częstość występowania operacji - przykład Pytanie Dlaczego mamy 1 2 (n + 1) (n + 2) operacji <? Odp. Zauważmy, że: Wartości i Wartości j Liczba operacji porównania dla j i 1 dla i i = 0 1,2,3...,n n+1 i = 1 2,3...,n n i = 2 3,...,n n i = n-2 n-1,n 3 i = n-1 n 2 i = n - 1 Sumujac liczbę operacji: n n + n Otrzymujemy: 1 2 (n + 1) (n + 2) Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 10 / 96

11 Częstość występowania operacji - przykład Pytanie Dlaczego mamy (n 1) n operacji dostępu do tablicy? Odp. Zauważmy, że: Wartości i Wartości j Liczba dostępu do tablicy i i = 0 1,2,3...,n-1 2 (n 1) i = 1 2,3...,n-1 2 (n 2) i = 2 3,...,n 2 (n 3) i = n-2 n-1 2 i = n-1 - Sumujac liczbę operacji: 2 (n 1 + n 2 + n ) Otrzymujemy: (n 1) n Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 11 / 96

12 Uproszczenie liczenia częstości występowania operacji Już Alan Turing w 1947 roku wiedział, że liczenie wszystkich operacji majacych wpływ na czas pracy algorytmu może być żmudne i niekoniecznie potrzebne. "It is convenient to have a measure of the amount of work involved in a computing process, even though it be a very crude one. We may count up the number of times that various elementary operations are applied in the whole process and then given them various weights. We might, for instance, count the number of additions, subtractions, multiplications, divisions, recording of numbers, and extractions of figures from tables. In the case of computing with matrices most of the work consists of multiplications and writing down numbers, and we shall therefore only attempt to count the number of multiplications and recordings." Alan Turing (1947); ROUNDING-OFF ERRORS IN MATRIX PROCESSES. National Physical Laboratory, Teddington, Middlesex. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 12 / 96

13 Uproszczenie liczenia częstości występowania operacji Pierwsze uproszczenie: wybór operacji dominujacej (elementarnej). Operacja elementarna może być na przykład: przypisanie, porównanie, działanie arytmetyczne lub dostęp do tablicy. Zazwyczaj jako operację dominujac a wybiera się tę, która kosztuje najwięcej i ma największa częstotliwość występowania. int count = 0; for (int i = 0; i < n; i++) for (int j = i+1; j < n; j++) if (a[i] + a[j] == 0) count++; Operacja liczba dominujaca wystapień dostęp do tablicy n (n 1) Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 13 / 96

14 Uproszczenie liczenia częstości występowania operacji Drugie uproszczenie - notacja : szacujemy czas działania jako funkcję, która przyjmuje dane wejściowe o rozmiarze n ignorujemy składowe o mniejszej ważności w formułach reprezentujacych częstotliwość występowania danej operacji. gdy n jest duże, składowe te sa nieistotne, gdy n jest małe, nie bierzemy ich pod uwagę Przykłady P1 1 6 n3 + 20n n3 P2 1 6 n n n3 P3 1 6 n n2 + n n3 Formalna definicja notacji f (n) g(n) definiujemy jako f (n) lim n g(n) = 1 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 14 / 96

15 Uproszczenie liczenia częstości występowania operacji - notacja Operacja liczba notacja wystapień deklaracja zmiennych n+2 n przypisanie n+2 n 1 porównanie == 2 (n 1) n 1 2 n2 1 porównanie < 2 (n + 1) (n + 2) 1 2 n2 dostęp do tablicy n (n 1) n 2 inkrementacja od 1 2 n (n 1) od 1 2 n2 do n (n 1) do n 2 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 15 / 96

16 Problem 2SUM Pytanie: Jakie jest asymptotyczne tempo wzrostu funkcji zliczajacej operację dominujac a dostęp do tablicy, która przyjmuje dane wejściowe o rozmiarze n? int count = 0; for (int i = 0; i < n; i++) for (int j = i+1; j < n; j++) if (a[i] + a[j] == 0) count++; Odpowiedź: n 2. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 16 / 96

17 Problem 2SUM Pytanie: Jakie jest asymptotyczne tempo wzrostu funkcji zliczajacej operację dominujac a dostęp do tablicy, która przyjmuje dane wejściowe o rozmiarze n? int count = 0; for (int i = 0; i < n; i++) for (int j = i+1; j < n; j++) for (int k = j+1; k < n; k++) if (a[i] + a[j] + a[k] == 0) count++; Dokładna liczba operacji dominujacej dostęp do tablicy jest postaci: ( ) n (n 1) (n 2) n = 6 3 Odpowiedź: 1 6 n3. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 17 / 96

18 Oszacowania dla sum dyskretnych Pytanie: Jak oszacować sumę dyskretna? Odpowiedź: Pouczyć się matematyki dyskretnej :)! Przykładowe oszacowania często spotykanych sum: n n2 1 k + 2 k n k k+1 nk n ln(n) 2-sum pętla n2 3-sum pętla n3. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 18 / 96

19 Analiza algorytmów Wprowadzenie Naukowe metody analizy algorytmów Model matematyczny Klasyfikacja algorytmów Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 19 / 96

20 Złożoność algorytmu Definicja Złożoność algorytmu to ilość zasobów komputera niezbędnych do jego wykonania. W zależności od rozważanego zasobu złożoność dzielimy na złożoność czasowa oraz złożoność pamięciowa. Złożoność czasowa - zależność pomiędzy rozmiarem danych wejściowych a liczba operacji dominujacych z uwzględnieniem notacji wykonywanych w trakcie przebiegu algorytmu. Złożoność pamięciowa to zależność pomiędzy rozmiarem danych wejściowych a ilościa wykorzystanej pamięci. Jako tę ilość najczęściej przyjmuje się użyta pamięć maszyny abstrakcyjnej (na przykład liczbę komórek pamięci maszyny RAM) w funkcji rozmiaru wejścia. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 20 / 96

21 Rodzaje złożoności W praktyce rozważa się dwa podejścia: rozpatrywanie przypadków najgorszych (złożoność pesymistyczna) oraz zastosowanie określonego sposobu uśrednienia wszystkich możliwych przypadków (złożoność oczekiwana). Złożoność pesymistyczna (ang. worst-case): T (n) = maksymalna ilość zasobu (pamięć, czas) potrzebna do wykonania algorytmu dla dowolnego wejścia o rozmiarze n. Złożoność oczekiwana (ang. average-case): T (n) = oczekiwana ilość zasobu (pamięć, czas) potrzebna do wykonania algorytmu dla dowolnego wejścia o rozmiarze n. Złożoność oczekiwana zależy istotnie od założenia o rozważanej przestrzeni probabilistycznej danych wejściowych. Przestrzeń probabilistyczna danych wejściowych może być bardzo skomplikowana, co powoduje, że wyznaczenie złożoności oczekiwanej wymaga bardzo trudnych analiz matematycznych. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 21 / 96

22 Notacja Duże O Niech f(n) oraz g(n) beda funkcjami ze bioru liczb naturalnych w zbiór liczb rzeczywistych (tj. f : N R, g : N R), które sa czasami przebiegu dwóch algorytmów działajacych na danych wejściowych o rozmiarze n (lub które reprezentuja ilość pamięci wykorzystanej przez dwa algorytmy działajace na danych wejściowych o rozmiarze n. Definicja Powiemy, że f rośnie nie szybciej niż g i oznaczamy: f(n) = O(g(n)) jeżeli istnieja stałe c > 0 oraz n 0 N takie, że f (n) c g(n) dla wszystkich n n 0 Notacji duże-o używamy w celu wyznaczenia górnych granic asymptotycznych, ponieważ ogranicza ona wzrost czasu wykonania dla dużych danych wejściowych. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 22 / 96

23 Notacja Omega Definicja Powiemy, że f jest niemniejsza niż g i oznaczamy f (n) = Ω(g(n)), jeżeli istnieja stałe c > 0 oraz n 0 N takie, że f (n) c g(n) dla wszystkich n n 0. Uwaga! f (n) = Ω(g(n)) oznacza, że g(n) = O(f (n)) Notacji Omega używamy w celu wyznaczenia dolnych granic asymptotycznych, ponieważ ogranicza ona wzrost czasu wykonania od dołu dla odpowiednio dużych danych wejściowych. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 23 / 96

24 Notacja Theta Definicja Powiemy, że f jest podobna do g i oznaczamy f (n) = Θ(g(n)), jeżeli istnieja stałe c 0, c 1 > 0 i n 0 N, takie, że c 0 g(n) f (n) c 1 g(n) dla wszystkich n n 0 Uwaga! f (n) = Θ(g(n)) oznacza, że f (n) = O(g(n)) oraz f (n) = Ω(g(n)) Notacji Theta używamy w celu wyznaczenia asymptotycznego wzrost czasu wykonania dla dużych danych wejściowych i klasyfikacji algorytmu. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 24 / 96

25 Notacja asymptotyczna - Przykład 1 Załóżmy, że mamy wybrać jeden z dwóch algorytmów rozwiazuj acych pewien zadany problem obliczeniowy. Pierwszy algorytm wykonuje f 1 (n) = n 2 kroków. Drugi algorytm wykonuje f 2 (n) = 2n + 20 kroków n*n 2*n f(n) n Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 25 / 96

26 Notacja asymptotyczna - Przykład 1 Załóżmy, że mamy wybrać jeden z dwóch algorytmów rozwiazuj acych pewien zadany problem obliczeniowy. Pierwszy algorytm wykonuje f 1 (n) = n 2 kroków. Drugi algorytm wykonuje f 2 (n) = 2n + 20 kroków n*n 2*n f(n) Który z nich jest lepszy? n Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 25 / 96

27 Notacja asymptotyczna - Przykład 1, cd n*n 2*n f(n) n Odpowiedź zależy od wartości n! Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 26 / 96

28 Notacja asymptotyczna - Przykład 1, cd n*n 2*n f(n) n Odpowiedź zależy od wartości n! Dla n 5 wartości n 2 sa mniejsze od 2n Dla n > 5 wartości n 2 sa większe od 2n Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 26 / 96

29 Notacja asymptotyczna - Przykład 1, cd n*n 2*n f(n) n Odpowiedź zależy od wartości n! Dla n 5 wartości n 2 sa mniejsze od 2n Dla n > 5 wartości n 2 sa większe od 2n Wniosek! Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 26 / 96

30 Notacja asymptotyczna - Przykład 1, cd n*n 2*n f(n) n Odpowiedź zależy od wartości n! Dla n 5 wartości n 2 sa mniejsze od 2n Dla n > 5 wartości n 2 sa większe od 2n Wniosek! Funkcja f 2 (n) = 2n + 20 zachowuje się znacznie lepiej, gdy n rośnie. Dlatego też algorytm drugi jest zwycięzca. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 26 / 96

31 Notacja asymptotyczna - Przykład 1, cd n*n 2*n f(n) n Odpowiedź zależy od wartości n! Dla n 5 wartości n 2 sa mniejsze od 2n Dla n > 5 wartości n 2 sa większe od 2n Wniosek! Funkcja f 2 (n) = 2n + 20 zachowuje się znacznie lepiej, gdy n rośnie. Dlatego też algorytm drugi jest zwycięzca. Powyższa własność można opisać przez notację O wielkie: f 2 (n) = O(f 1 (n)). Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 26 / 96

32 Notacja asymptotyczna - Przykład 1, cd. Dlaczego f 2 (n) = O(f 1 (n))? Ponieważ dla wszystkich n > 0 zachodzi: f 2 (n) 2n + 20 = f 1 (n) n Maksimum = 22 (2*n+20)/(n*n) 15 f(n) n tzn. f 2 (n) 22 f 1 (n) Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 27 / 96

33 Notacja asymptotyczna - Przykład 1, cd. Dlaczego f 1 (n) O(f 2 (n))? Ponieważ stosunek może być dowolnie duży! f 1 (n) f 2 (n) = n 2 2n (n*n)/(2*n+20) 5 f(n) n Nie istnieje zatem żadna stała c spełniajaca warunki definicji. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 28 / 96

34 Notacja asymptotyczna - Przykład 1, cd. Przyjmijmy teraz, że mamy także trzeci algorytm rozwiazuj acy zadany problem, przykładowo, w f 3 (n) = n + 1 krokach. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 29 / 96

35 Notacja asymptotyczna - Przykład 1, cd. Przyjmijmy teraz, że mamy także trzeci algorytm rozwiazuj acy zadany problem, przykładowo, w f 3 (n) = n + 1 krokach n*n 2*n+20 n+1 60 f(n) n Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 29 / 96

36 Notacja asymptotyczna - Przykład 1, cd. Przyjmijmy teraz, że mamy także trzeci algorytm rozwiazuj acy zadany problem, przykładowo, w f 3 (n) = n + 1 krokach n*n 2*n+20 n+1 60 f(n) n Czy algorytm trzeci jest lepszy od algorytmu drugiego? TAK, ale tylko z dokładnościa do stałego współczynnika. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 29 / 96

37 Notacja asymptotyczna - Przykład 1, cd. Zachodzi: f 2 (n) = O(f 3 (n)). Dlaczego: Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 30 / 96

38 Notacja asymptotyczna - Przykład 1, cd. Zachodzi: f 2 (n) = O(f 3 (n)). Dlaczego: ponieważ dla wszystkich n 0 zachodzi: f 2 (n) 2n + 20 = f 3 (n) n Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 30 / 96

39 Notacja asymptotyczna - Przykład 1, cd. Zachodzi: f 2 (n) = O(f 3 (n)). Dlaczego: ponieważ dla wszystkich n 0 zachodzi: f 2 (n) 2n + 20 = f 3 (n) n f(n) 20 Maksimum = 20 (2*n+20)/(n+1) n Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 30 / 96

40 Notacja asymptotyczna - Przykład 1, cd. Zachodzi: f 2 (n) = O(f 3 (n)). Dlaczego: ponieważ dla wszystkich n 0 zachodzi: f 2 (n) 2n + 20 = f 3 (n) n f(n) 20 Maksimum = 20 (2*n+20)/(n+1) n tzn. f 2 (n) 20 f 3 (n) Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 30 / 96

41 Notacja asymptotyczna - Przykład 1, cd. Zachodzi: f 3 (n) = O(f 2 (n)). Dlaczego: Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 31 / 96

42 Notacja asymptotyczna - Przykład 1, cd. Zachodzi: f 3 (n) = O(f 2 (n)). Dlaczego: ponieważ dla wszystkich n 0 zachodzi: f 3 (n) f 2 (n) = n + 1 2n Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 31 / 96

43 Notacja asymptotyczna - Przykład 1, cd. Zachodzi: f 3 (n) = O(f 2 (n)). Dlaczego: ponieważ dla wszystkich n 0 zachodzi: f 3 (n) f 2 (n) = n + 1 2n f(n) 0.5 (n+1)/(2*n+20) n tzn. f 3 (n) 1 f 2 (n) Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 31 / 96

44 Notacja asymptotyczna - Przykład 1, cd. Wnioski z przykładu! A. f 2 (n) = O(f 1 (n)), ale f 1 (n) O(f 2 (n)) B. f 3 (n) = O(f 1 (n)), ale f 1 (n) O(f 3 (n)) C. f 2 (n) = O(f 3 (n)) oraz f 3 (n) = O(f 2 (n)) Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 32 / 96

45 Notacja asymptotyczna - Przykład 1, cd. Wnioski z przykładu! A. f 2 (n) = O(f 1 (n)), ale f 1 (n) O(f 2 (n)) B. f 3 (n) = O(f 1 (n)), ale f 1 (n) O(f 3 (n)) C. f 2 (n) = O(f 3 (n)) oraz f 3 (n) = O(f 2 (n)) Z definicji Ω mamy: A. f 1 (n) = Ω(f 2 (n)) B. f 1 (n) = Ω(f 3 (n)) C. f 3 (n) = Ω(f 2 (n)) oraz f 2 (n) = Ω(f 3 (n)) Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 32 / 96

46 Notacja asymptotyczna - Przykład 1, cd. Wnioski z przykładu! A. f 2 (n) = O(f 1 (n)), ale f 1 (n) O(f 2 (n)) B. f 3 (n) = O(f 1 (n)), ale f 1 (n) O(f 3 (n)) C. f 2 (n) = O(f 3 (n)) oraz f 3 (n) = O(f 2 (n)) Z definicji Ω mamy: A. f 1 (n) = Ω(f 2 (n)) B. f 1 (n) = Ω(f 3 (n)) C. f 3 (n) = Ω(f 2 (n)) oraz f 2 (n) = Ω(f 3 (n)) Z definicji Θ mamy: A. f 2 (n) = Θ(f 3 (n)) oraz f 3 (n) = Θ(f 2 (n)) Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 32 / 96

47 Notacja asymptotyczna - Zadania Dane sa następujace funkcje f (n) oraz g(n). Zadecyduj, które z sytuacji zachodzi: f = O(g), f = Ω(g), czy też f = Θ(g) (a) f (n) = n 100, g(n) = n 200 (b) f (n) = 100n + log(n), g(n) = n + (log(n)) 2 (c) f (n) = n 2 n, g(n) = 3 n Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 33 / 96

48 Notacja asymptotyczna - Odpowiedzi f(n) n (n-100) (n-200) f(n) n (n-100)/(n-200) f(n) n (n-200)/(n-100) (a) Ponieważ f (n) g(n) = n 100 n dla wszystkich n 201, to f (n) = O(g(n)). 1 dla wszystkich n 101, to g(n) = O(f (n)). Z definicji Ω mamy, że f (n) = Ω(g(n)) oraz g(n) = Ω(f (n)). Z definicji Θ mamy, że f (n) = Θ(g(n)) oraz g(n) = Θ(f (n)) Ponieważ stosunek g(n) f (n) = n 200 n 100 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 34 / 96

49 Notacja asymptotyczna - Odpowiedzi f(n) *n+log(n) n+(log(n))*(log(n)) f(n) (100*n+log(n))/(n+(log(n))*(log(n))) f(n) (n+(log(n))*(log(n)))/(100*n+log(n)) n n n (b) Ponieważ stosunek f (n) g(n) = 100n+log(n) może być dowolnie duży, to n+(log(n)) 2 f (n) O(g(n)). Ponieważ stosunek g(n) f (n) = n+(log(n))2 100n+log(n) 1 dla wszystkich n > 0, to g(n) = O(f (n)). Z definicji Ω mamy, że f (n) = Ω(g(n)). Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 35 / 96

50 Notacja asymptotyczna - Odpowiedzi f(n) n n*2**n 3**n f(n) n (n*2**n)/(3**n) f(n) n (3**n)/(n*2**n) (c) Ponieważ stosunek f (n) g(n) = n 2n 3 1 dla wszystkich n > 0, to n f (n) = O(g(n)). Ponieważ stosunek g(n) f (n) = 3n n 2 może być dowolnie duży, to n g(n) O(f (n)). Z definicji Ω mamy, że g(n) = Ω(f (n)). Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 36 / 96

51 Notacja asymptotyczna Gdy g(n) = log(n), to mówimy, że f (n) jest logarytmiczna. Gdy g(n) = n, to mówimy, że f (n) jest liniowa. Gdy g(n) = n log(n), to mówimy, że f (n) jest liniowo-logarytmiczna. Gdy g(n) = n 2, to mówimy, że złożoność f (n) jest kwadratowa. Jeśli g(n) jest wielomianem, to mówimy o złożoności wielomianowej dla f (n). Jeśli g(n) jest wykładnicza, to mówimy o złożoności wykładniczej dla f (n). Jeśli g(n) jest silnie wykładnicza, to mówimy o złożoności silnie wykładniczej dla f (n). Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 37 / 96

52 Notacja asymptotyczna - podsumowanie Notacja Zapewnia Przykład Stosowany do Duże Theta asymptotyczne oszacowanie dokładne Θ(N 2 ) klasyfikacji algorytmu Duże O Θ(N 2 ) i O(N 2 ) Wyznaczenia mniejsze granicy górnej Duże Omega Θ(N 2 ) i większe Ω(N 2 ) Wyznaczenia granicy dolnej Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 38 / 96

53 Przykłady algorytmów Wyszukiwanie binarne (algorytm bisekcji) Wyszukiwanie liniowe Wyszukiwanie liniowe z wartownikiem Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 39 / 96

54 Wyszukiwanie binarne Problem: Dany jest posortowany zbiór danych (np. w tablicy) Arr oraz pewien element key. Należy odpowiedzieć na pytanie czy klucz key znajduje się w tablicy Arr. Algorytm: Sprawdź środkowy element tablicy. Jeśli jest równy key, to koniec. Jeśli środkowy element jest większy niż key, to szukaj elementu key w lewej części tablicy. Jeśli środkowy element jest mniejszy niż key, to szukaj elementu key w prawej części tablicy. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 40 / 96

55 Wyszukiwanie binarne Przykład: Znaleźć liczbę 9 w ciagu: 3, 5, 7, 8, 9, 12, Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 41 / 96

56 Wyszukiwanie binarne Algorytm bisekcji (A,n,key): 1: i = 0; j = n 1; 2: while (i j) do 3: mid = i + (j i)/2; 4: if key < A[mid] then 5: j = mid 1; 6: else 7: if key > A[mid] then 8: i = mid + 1; 9: else 10: return mid; 11: end if 12: end if 13: end while 14: return 1; Hipoteza: Algorytm wyszukiwania binarnego w celu znalezienia elementu key w posortowanej tablicy o rozmiarze n wykonuje co najwyżej 1 + lg(n) porównań. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 42 / 96

57 Wyszukiwanie binarne - Hipoteza podwojenia I N T(N) w sek. T (2N)/T (N) log 2 (T (2N)/T (N)) e e e e e e e e Zauważamy, że stosunek T (2N)/T (N) jest albo 1 albo 2, a wartość log 2 jest albo 0 albo 1. Obserwacja sugeruje, że czas pracy naszego programu jest log 2 (n). Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 43 / 96

58 Wyszukiwanie binarne - analiza matematyczna Zależność czasu pracy algorytmu od rozmiaru danych wejściowych Dane experymentalne aproksymacja Czas pracy T(N) w sekundach e+08 4e+08 6e+08 8e+08 1e e+09 Rozmiar danych wejściowych N fit a*log(x)/log(2) "dane.txt" via a; Final set of parameters ======================= a = e-08 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 44 / 96

59 Wyszukiwanie binarne - analiza matematyczna Równanie opisujace zachowanie algorytmu: T (n) T (n/2) + 1 dla n > 1 oraz T (1) = 1. Dlaczego? Algorytm wymaga jednego sprawdzenia dla elementu środkowego, a następnie przeszukuje binarnie albo lewa połowę albo prawa połowę tablicy, z których każda ma n/2 elementów. Uzasadnienie: Załóżmy, że n = 2 m. Wówczas otrzymujemy: T (n) T (n/2) + 1 T (n/4) T (n/8) T (1) + m T (2 m ) m + 1 Z uwagi na założenie n = 2 m otrzymujemy: T (n) log 2 (n) + 1 Złożoność algorytmu: Θ(log 2 (n)). Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 45 / 96

60 Złożoność logarytmiczna Mówimy, że algorytm ma złożoność logarytmiczna, gdy czas wykonania algorytmu rośnie logarytmiczne wraz ze wzrostem wielkości danych. Złożoność logarytmiczna maja na przykład algorytmy, w których problem postawiony dla danych rozmiaru n da się sprowadzić do problemu z rozmiarem danych o połowę mniejszym. Złożoność logarytmiczna: Θ(log 2 (n)). Algorytmy o złożoności logarytmicznej należa do klasy problemów łatwych - klasy P, czyli problemów, które potrafimy rozwiazań w czasie co najwyżej wielomianowym. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 46 / 96

61 Wyszukiwanie liniowe Problem: Dany jest (nieposortowany) zbiór danych (np. w tablicy) Arr oraz pewien element key. Należy odpowiedzieć na pytanie czy element key znajduje się w tablicy Arr. Algorytm: Sprawdź kolejne elementy tablicy. Jeżeli dany element tablicy jest równy key to szukany element został znaleziony i zakończ szukanie. Jeżeli osiagnięty został koniec tablicy i elementu key nie znaleziono to znaczy, że zadanego elementu key nie ma w tablicy. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 47 / 96

62 Wyszukiwanie liniowe Przykład: Znaleźć key = 9 w ciagu: A = {3, 5, 7, 8, 9, 12, 15} key = A[0]? Nie key = A[1]? Nie key = A[2]? Nie key = A[3]? Nie key = A[4]? TAK Znaleziono! Koniec. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 48 / 96

63 Wyszukiwanie liniowe LinearSearch (A,n,key): 1: i = 0; 2: while (i n 1) do 3: if key == A[i] then 4: return i; 5: end if 6: i = i + 1; 7: end while 8: return 1; Pytanie: Jakie jest asymptotyczne tempo wzrostu funkcji zliczajacej operację dominujac a porównanie typu == oraz, która przyjmuje dane wejściowe o rozmiarze n? Operacja dominujaca operacja porównania == i liczba wystapień 2n Odpowiedź: 2ṅ. Asymptotyczne oszacownie dokładne: Θ(n). Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 49 / 96

64 Wyszukiwanie liniowe z wartownikiem Problem: Dany jest (nieposortowany) zbiór danych (np. w tablicy) Arr oraz pewien element key. Należy odpowiedzieć na pytanie czy element key znajduje się w tablicy Arr. Algorytm z wartownikiem: Dopisz wartownika (element Key) na koniec tablicy. Sprawdź kolejne elementy tablicy. Jeżeli dany element tablicy jest równy key to szukany element został znaleziony i zakończ szukanie. Jeżeli osiagnięty został wartownik to znaczy, że zadanego elementu key nie ma w tablicy. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 50 / 96

65 Wyszukiwanie liniowe z wartownikiem Przykład: Znaleźć key = 9 w ciagu: A = {3, 5, 7, 8, 9, 12, 15} Rozszerzamy tablice o wartownika key = 9 = A[0]? Nie key = 9 = A[1]? Nie key = 9 = A[2]? Nie key = 9 = A[3]? Nie key = 9 = A[4]? TAK Znaleziono! Koniec. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 51 / 96

66 Wyszukiwanie liniowe z wartownikiem Przykład: Znaleźć key = 11 w ciagu: A = {3, 5, 7, 8, 9, 12, 15} Rozszerzamy tablice o wartownika key = 11 = A[0]? Nie key = 11 = A[1]? Nie key = 11 = A[2]? Nie key = 11 = A[3]? Nie key = 11 = A[4]? Nie key = 11 = A[5]? Nie key = 11 = A[6]? Nie key = 11 = A[7]= wartownik? TAK Elementu nie ma w tablicy! Koniec. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 52 / 96

67 Wyszukiwanie liniowe z wartownikiem LinearSearch (A,n,key): 1: i = 0; 2: while (key! = A[i]) do 3: i = i + 1; 4: end while 5: if i == n then 6: return 1; 7: else 8: return i; 9: end if Pytanie: Jakie jest asymptotyczne tempo wzrostu funkcji zliczajacej operację dominujac a porównanie typu! = oraz ==, która przyjmuje dane wejściowe o rozmiarze n? Operacja liczba dominujaca wystapień operacja porównania n + 1 == i! = Odpowiedź: n. Asymptotyczne oszacownie dokładne: Θ(n). Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 53 / 96

68 Złożoność liniowa Mówimy, że algorytm ma złożoność liniowa, gdy czas wykonania algorytmu rośnie liniowo wraz ze wzrostem wielkości danych. Czas działania liniowy występuje dla algorytmów, w których jest wykonywana pewna stała liczba działań dla każdego z n elementów danych wejściowych. Złożoność liniowa: Θ(n). Algorytmy o złożoności liniowej należa do klasy problemów łatwych - klasy P, czyli problemów, które potrafimy rozwiazań w czasie co najwyżej wielomianowym. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 54 / 96

69 Złożoność liniowo-logarytmiczna Mówimy, że algorytm ma złożoność liniowo-logarytmiczna, gdy czas wykonania algorytmu rośnie quasi-liniowo wraz ze wzrostem wielkości danych. Czas działania liniowo-logarytmiczny występuje dla algorytmów, w których problem postawiony dla danych rozmiaru n da się sprowadzić w liniowej liczbie operacji do rozwiazania dwóch problemów o rozmiarach n/2. Złożoność liniowo-logarytmiczna: Θ(n log 2 (n)). Algorytmy o złożoności liniowo-logarytmicznej należa do klasy problemów łatwych - klasy P, czyli problemów, które potrafimy rozwiazań w czasie co najwyżej wielomianowym. Przykład: Algorytmy, które można rozwiazać przy pomocy metody dziel i zwyciężaj, np. sortowanie przez scalanie, sorotwanie przez kopcowanie. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 55 / 96

70 Złożoność kwadratowa Mówimy, że algorytm ma złożoność kwadratowa, gdy czas wykonania algorytmu rośnie proporcjonalnie dodo kwadratu rozmiaru danych wejściowych. Czas działania kwadratowy występuje dla algorytmów,w których dla każdej pary elementów danych wykonywana jest stała liczba operacji podstawowych. Złożoność kwadratowa: Θ(n 2 ). Algorytmy o złożoności kwadratowej należa do klasy problemów łatwych - klasy P, czyli problemów, które potrafimy rozwiazań w czasie co najwyżej wielomianowym. Przykład: Rozważany na wykładzie problem 2SUM i jego rozwiazanie metoda siłowa (algorytm brute-force). Złożoność czasowa: Θ(n 2 ). Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 56 / 96

71 Złożoność wielomianowa Mówimy, że algorytm ma złożoność wielomianowa, gdy czas wykonania algorytmu rośnie proporcjonalnie do pewnego wielomianu rozmiaru danych wejściowych. Czas działania wielomianowy występuje dla algorytmów, w których dla każdej krotki elementów danych wykonywana jest stała liczba operacji podstawowych. Złożoność wielomianowa: Θ(n r + n r r + 1). Algorytmy o złożoności wielomianowej należa do klasy problemów łatwych - klasy P, czyli problemów, które potrafimy rozwiazań w czasie co najwyżej wielomianowym. Przykład: Rozważany na wykładzie problem 3SUM i jego rozwiazanie metoda siłowa (algorytm brute-force). Złożoność czasowa: Θ(n 3 ). Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 57 / 96

72 Wieże Hanoi Zagadka: Dane sa trzy pale: A, B i C. Na jeden z nich, np. na A nałożono krażki o różnych średnicach, tak że krażek mniejszy nie leży pod wiekszym. Pale B i C sa puste. Należy przenieść wszystkie krażki z pala A na C. Można używac B jako pomocnicze miejsce przechowywania. Nie można kłaść krażków wiekszych na mniejsze. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 58 / 96

73 Wieże Hanoi 1 Krażek 1 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 59 / 96

74 Wieże Hanoi 1 Krażek 1 Dysk przeniesiony z palika 1 na palik 3. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 60 / 96

75 Wieże Hanoi 1 Krażek OK 1 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 61 / 96

76 Wieże Hanoi 2 Krażki 1 2 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 62 / 96

77 Wieże Hanoi 2 Krażki 2 1 Dysk przeniesiony z palika 1 na palik 2. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 63 / 96

78 Wieże Hanoi 2 Krażki 1 2 Dysk przeniesiony z palika 1 na palik 3. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 64 / 96

79 Wieże Hanoi 2 Krażki 1 2 Dysk przeniesiony z palika 2 na palik 3. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 65 / 96

80 Wieże Hanoi 2 Krażki OK 1 2 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 66 / 96

81 Wieże Hanoi 3 Krażki Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 67 / 96

82 Wieże Hanoi 3 Krażki Dysk przeniesiony z palika 1 na palik 3. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 68 / 96

83 Wieże Hanoi 3 Krażki Dysk przeniesiony z palika 1 na palik 2. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 69 / 96

84 Wieże Hanoi 3 Krażki Dysk przeniesiony z palika 3 na palik 2. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 70 / 96

85 Wieże Hanoi 3 Krażki Dysk przeniesiony z palika 1 na palik 3. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 71 / 96

86 Wieże Hanoi 3 Krażki Dysk przeniesiony z palika 2 na palik 1. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 72 / 96

87 Wieże Hanoi 3 Krażki Dysk przeniesiony z palika 2 na palik 3. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 73 / 96

88 Wieże Hanoi 3 Krażki Dysk przeniesiony z palika 1 na palik 3. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 74 / 96

89 Wieże Hanoi 3 Krażki OK Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 75 / 96

90 Wieże Hanoi 4 Krażki Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 76 / 96

91 Wieże Hanoi 4 Krażki Dysk przeniesiony z palika 1 na palik 2. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 77 / 96

92 Wieże Hanoi 4 Krażki Dysk przeniesiony z palika 1 na palik 3. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 78 / 96

93 Wieże Hanoi 4 Krażki Dysk przeniesiony z palika 2 na palik 3. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 79 / 96

94 Wieże Hanoi 4 Krażki Dysk przeniesiony z palika 1 na palik 2. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 80 / 96

95 Wieże Hanoi 4 Krażki Dysk przeniesiony z palika 3 na palik 1. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 81 / 96

96 Wieże Hanoi 4 Krażki Dysk przeniesiony z palika 3 na palik 2. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 82 / 96

97 Wieże Hanoi 4 Krażki Dysk przeniesiony z palika 1 na palik 2. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 83 / 96

98 Wieże Hanoi 4 Krażki Dysk przeniesiony z palika 1 na palik 3. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 84 / 96

99 Wieże Hanoi 4 Krażki Dysk przeniesiony z palika 2 na palik 3. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 85 / 96

100 Wieże Hanoi 4 Krażki Dysk przeniesiony z palika 2 na palik 1. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 86 / 96

101 Wieże Hanoi 4 Krażki Dysk przeniesiony z palika 3 na palik 1. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 87 / 96

102 Wieże Hanoi 4 Krażki Dysk przeniesiony z palika 2 na palik 3. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 88 / 96

103 Wieże Hanoi 4 Krażki Dysk przeniesiony z palika 1 na palik 2. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 89 / 96

104 Wieże Hanoi 4 Krażki Dysk przeniesiony z palika 1 na palik 3. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 90 / 96

105 Wieże Hanoi 4 Krażki Dysk przeniesiony z palika 2 na palik 3. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 91 / 96

106 Wieże Hanoi 4 Krażki OK Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 92 / 96

107 Wieże Hanoi 5 Krażków? Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 93 / 96

108 Wieże Hanoi Zagadka Wież Hanoi stała się znana w XIX wieku dzięki matematykowi Edouardowi Lucas, który zaproponował tę zagadkę dla 8 krażków. Do sprzedawanego zestawu była dołaczona - wymyślona przez Lucas - Tybetańska legenda, według której mnisi w światyni Brahmy rozwiazuj a tę łamigłówkę dla 64 złotych krażków. Legenda mówi, że gdy mnisi zakończa zadanie, to nastapi koniec świata. Zakładajac, że mnisi wykonuja 1 ruch na sekundę, ułożenie wieży zajmie = (blisko 18 i pół tryliona) sekund, czyli około miliardów lat. Dla porównania: Wszechświat ma około 13,7 mld lat. Złożoność czasowa: Θ(2 n 1 ). Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 94 / 96

109 Złożoność wykładnicza Mówimy, że algorytm ma złożoność wykładnicza, gdy czas jego wykonania rośnie wykładniczo względem rozmiaru danych. Czas działania wykładniczy występuje w algorytmie, w którym jest wykonywana stała liczba działań dla każdego podzbioru danych wejściowych. Złożoność wykładnicza: Θ(2 n ). Algorytmy o złożoności wykładniczej należa do klasy problemów trudnych - klasy NP, czyli problemów, dla których nie znamy rozwiazań w czasie wielomianowym lub mniejszym, czyli zadania o złożoności co najmniej wykładniczej. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 95 / 96

110 Przykładowe algorytmy i ich złożoności Mówimy, że algorytm ma złożoność silnie wykładnicza, gdy czas jego wykonania rośnie z szybkościa silni względem rozmiaru danych. Czas działania silnie wykładniczy ma algorytm, w którym jest wykonywana stała liczba działań dla każdej permutacji danych wejściowych. Algorytmy o złożoności silnie wykładniczej należa do klasy problemów trudnych - klasy NP, czyli problemów, dla których nie znamy rozwiazań w czasie wielomianowym lub mniejszym, czyli zadania o złożoności co najmniej wykładniczej. Przykład: Rozważany na wykładzie problem komiwojażera (TSP) i jego rozwiazanie metoda siłowa (algorytm brute-force). Złożoność czasowa: Θ(n!). Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 96 / 96

Algorytmy i Struktury Danych.

Algorytmy i Struktury Danych. Algorytmy i Struktury Danych. Treści programowe. Złożoność obliczeniowa algorytmu na przykładach. dr hab. Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 1 Bożena Woźna-Szcześniak

Bardziej szczegółowo

Algorytmy i Struktury Danych.

Algorytmy i Struktury Danych. Algorytmy i Struktury Danych. Organizacja wykładu. Problem Sortowania. Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 1 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury

Bardziej szczegółowo

Podstawy Informatyki. Sprawność algorytmów

Podstawy Informatyki. Sprawność algorytmów Podstawy Informatyki Sprawność algorytmów Sprawność algorytmów Kryteria oceny oszczędności Miara złożoności rozmiaru pamięci (złożoność pamięciowa): Liczba zmiennych + liczba i rozmiar struktur danych

Bardziej szczegółowo

Zasady analizy algorytmów

Zasady analizy algorytmów Zasady analizy algorytmów A więc dziś w programie: - Kilka ważnych definicji i opisów formalnych - Złożoność: czasowa i pamięciowa - Kategorie problemów - Jakieś przykłady Problem: Zadanie możliwe do rozwiązania

Bardziej szczegółowo

Porównanie czasów działania algorytmów sortowania przez wstawianie i scalanie

Porównanie czasów działania algorytmów sortowania przez wstawianie i scalanie Więcej o sprawności algorytmów Porównanie czasów działania algorytmów sortowania przez wstawianie i scalanie Załóżmy, że możemy wykonać dane zadanie przy użyciu dwóch algorytmów: jednego o złożoności czasowej

Bardziej szczegółowo

Wprowadzenie do złożoności obliczeniowej

Wprowadzenie do złożoności obliczeniowej problemów Katedra Informatyki Politechniki Świętokrzyskiej Kielce, 16 stycznia 2007 problemów Plan wykładu 1 2 algorytmów 3 4 5 6 problemów problemów Plan wykładu 1 2 algorytmów 3 4 5 6 problemów problemów

Bardziej szczegółowo

Zadanie 1 Przygotuj algorytm programu - sortowanie przez wstawianie.

Zadanie 1 Przygotuj algorytm programu - sortowanie przez wstawianie. Sortowanie Dane wejściowe: ciąg n-liczb (kluczy) (a 1, a 2, a 3,..., a n 1, a n ) Dane wyjściowe: permutacja ciągu wejściowego (a 1, a 2, a 3,..., a n 1, a n) taka, że a 1 a 2 a 3... a n 1 a n. Będziemy

Bardziej szczegółowo

Złożoność obliczeniowa algorytmu ilość zasobów komputera jakiej potrzebuje dany algorytm. Pojęcie to

Złożoność obliczeniowa algorytmu ilość zasobów komputera jakiej potrzebuje dany algorytm. Pojęcie to Złożoność obliczeniowa algorytmu ilość zasobów komputera jakiej potrzebuje dany algorytm. Pojęcie to wprowadzili J. Hartmanis i R. Stearns. Najczęściej przez zasób rozumie się czas oraz pamięć dlatego

Bardziej szczegółowo

Algorytmy i Struktury Danych.

Algorytmy i Struktury Danych. Algorytmy i Struktury Danych. Metoda Dziel i zwyciężaj. Problem Sortowania, cd. Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 2 Bożena Woźna-Szcześniak (AJD) Algorytmy

Bardziej szczegółowo

Wykład 2. Poprawność algorytmów

Wykład 2. Poprawność algorytmów Wykład 2 Poprawność algorytmów 1 Przegląd Ø Poprawność algorytmów Ø Podstawy matematyczne: Przyrost funkcji i notacje asymptotyczne Sumowanie szeregów Indukcja matematyczna 2 Poprawność algorytmów Ø Algorytm

Bardziej szczegółowo

Złożoność Obliczeniowa Algorytmów

Złożoność Obliczeniowa Algorytmów Algorytmów Pożądane cechy dobrego algorytmu Dobry algorytm mający rozwiązywać jakiś problem powinien mieć 2 naturalne cechy: 1 (poprawność) zwracać prawidłowy wynik (dokładniej: zgodność z warunkiem końcowym

Bardziej szczegółowo

TEORETYCZNE PODSTAWY INFORMATYKI

TEORETYCZNE PODSTAWY INFORMATYKI 1 TEORETYCZNE PODSTAWY INFORMATYKI 16/01/2017 WFAiS UJ, Informatyka Stosowana I rok studiów, I stopień Repetytorium złożoność obliczeniowa 2 Złożoność obliczeniowa Notacja wielkie 0 Notacja Ω i Θ Rozwiązywanie

Bardziej szczegółowo

TEORETYCZNE PODSTAWY INFORMATYKI

TEORETYCZNE PODSTAWY INFORMATYKI 1 TEORETYCZNE PODSTAWY INFORMATYKI WFAiS UJ, Informatyka Stosowana I rok studiów, I stopień Wykład 3 2 Złożoność obliczeniowa algorytmów Notacja wielkie 0 Notacja Ω i Θ Algorytm Hornera Przykłady rzędów

Bardziej szczegółowo

Zaawansowane algorytmy i struktury danych

Zaawansowane algorytmy i struktury danych Zaawansowane algorytmy i struktury danych u dr Barbary Marszał-Paszek Opracowanie pytań teoretycznych z egzaminów. Strona 1 z 12 Pytania teoretyczne z egzaminu pisemnego z 25 czerwca 2014 (studia dzienne)

Bardziej szczegółowo

Matematyczne Podstawy Informatyki

Matematyczne Podstawy Informatyki Matematyczne Podstawy Informatyki dr inż. Andrzej Grosser Instytut Informatyki Teoretycznej i Stosowanej Politechnika Częstochowska Rok akademicki 2013/2014 Algorytm 1. Termin algorytm jest używany w informatyce

Bardziej szczegółowo

INFORMATYKA SORTOWANIE DANYCH.

INFORMATYKA SORTOWANIE DANYCH. INFORMATYKA SORTOWANIE DANYCH http://www.infoceram.agh.edu.pl SORTOWANIE Jest to proces ustawiania zbioru obiektów w określonym porządku. Sortowanie stosowane jest w celu ułatwienia późniejszego wyszukania

Bardziej szczegółowo

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

Podstawowe algorytmy i ich implementacje w C. Wykład 9 Wstęp do programowania 1 Podstawowe algorytmy i ich implementacje w C Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 9 Element minimalny i maksymalny zbioru Element minimalny

Bardziej szczegółowo

Zaliczenie. Egzamin. lub. Wykład. Zaliczenie. Ćwiczenie. 3 zadania. Projekty. Ocena. Na ocenę

Zaliczenie. Egzamin. lub. Wykład. Zaliczenie. Ćwiczenie. 3 zadania. Projekty. Ocena. Na ocenę Zaliczenie Egzamin Ocena lub Zerówka Wykład z Zaliczenie Ocena Ćwiczenie Projekty 3 zadania Na ocenę Sylabus O http://wmii.uwm.edu.pl/~jakula/sylabus_23 17N1-ALISTD_PL.pdf JAK? CO? ILE? Polecane Cormen

Bardziej szczegółowo

Za pierwszy niebanalny algorytm uważa się algorytm Euklidesa wyszukiwanie NWD dwóch liczb (400 a 300 rok przed narodzeniem Chrystusa).

Za pierwszy niebanalny algorytm uważa się algorytm Euklidesa wyszukiwanie NWD dwóch liczb (400 a 300 rok przed narodzeniem Chrystusa). Algorytmy definicja, cechy, złożoność. Algorytmy napotykamy wszędzie, gdziekolwiek się zwrócimy. Rządzą one wieloma codziennymi czynnościami, jak np. wymiana przedziurawionej dętki, montowanie szafy z

Bardziej szczegółowo

Złożoność algorytmów. Wstęp do Informatyki

Złożoność algorytmów. Wstęp do Informatyki Złożoność algorytmów Złożoność pamięciowa - liczba i rozmiar struktur danych wykorzystywanych w algorytmie Złożoność czasowa - liczba operacji elementarnych wykonywanych w trakcie przebiegu algorytmu Złożoność

Bardziej szczegółowo

Jeśli czas działania algorytmu zależy nie tylko od rozmiaru danych wejściowych i przyjmuje różne wartości dla różnych danych o tym samym rozmiarze,

Jeśli czas działania algorytmu zależy nie tylko od rozmiaru danych wejściowych i przyjmuje różne wartości dla różnych danych o tym samym rozmiarze, Oznaczenia: Jeśli czas działania algorytmu zależy nie tylko od rozmiaru danych wejściowych i przyjmuje różne wartości dla różnych danych o tym samym rozmiarze, to interesuje nas złożoność obliczeniowa

Bardziej szczegółowo

Matematyka dyskretna. Andrzej Łachwa, UJ, /14

Matematyka dyskretna. Andrzej Łachwa, UJ, /14 Matematyka dyskretna Andrzej Łachwa, UJ, 2012 andrzej.lachwa@uj.edu.pl 2/14 Funkcji podłogi z logarytmu można użyć do wyliczenia liczby cyfr liczby naturalnej k (k>0): w układzie dziesiętnym log 10 (k)

Bardziej szczegółowo

Teoretyczne podstawy informatyki

Teoretyczne podstawy informatyki Teoretyczne podstawy informatyki Wykład 4a: Rozwiązywanie rekurencji http://kiwi.if.uj.edu.pl/~erichter/dydaktyka2010/tpi-2010 Prof. dr hab. Elżbieta Richter-Wąs 1 Czas działania programu Dla konkretnych

Bardziej szczegółowo

Algorytmika w bioinformatyce

Algorytmika w bioinformatyce Algorytmika w bioinformatyce Kurs dla kierunku BIOINFORMATYKA 2017/2018 Prowadzący: Prof. Danuta Makowiec danuta.makowiec@gmail.com IFTiA, pok. 353, tel.: 58 523 2466 Motywacja 2 Cztery etapy rekonstrukcji

Bardziej szczegółowo

Liczby pierwsze - wstęp

Liczby pierwsze - wstęp Artykuł pobrano ze strony eioba.pl Liczby pierwsze - wstęp W latach 60 ubiegłego wieku w Afryce znaleziono kości z wyrytymi na nich karbami liczące ponad 5000 lat. Na jednej z nich (kość z Ishango) karby

Bardziej szczegółowo

Sortowanie przez scalanie

Sortowanie przez scalanie Sortowanie przez scalanie Wykład 2 12 marca 2019 (Wykład 2) Sortowanie przez scalanie 12 marca 2019 1 / 17 Outline 1 Metoda dziel i zwyciężaj 2 Scalanie Niezmiennik pętli - poprawność algorytmu 3 Sortowanie

Bardziej szczegółowo

Efektywność algorytmów

Efektywność algorytmów Efektywność algorytmów Algorytmika Algorytmika to dział informatyki zajmujący się poszukiwaniem, konstruowaniem i badaniem własności algorytmów, w kontekście ich przydatności do rozwiązywania problemów

Bardziej szczegółowo

Sortowanie przez wstawianie

Sortowanie przez wstawianie Sortowanie przez wstawianie Wykład 1 26 lutego 2019 (Wykład 1) Sortowanie przez wstawianie 26 lutego 2019 1 / 25 Outline 1 Literatura 2 Algorytm 3 Problem sortowania Pseudokod 4 Sortowanie przez wstawianie

Bardziej szczegółowo

Teoretyczne podstawy informatyki

Teoretyczne podstawy informatyki Teoretyczne podstawy informatyki Wykład 3a: Złożoność obliczeniowa algorytmów http://kiwi.if.uj.edu.pl/~erichter/dydaktyka2010/tpi-2010 Prof. dr hab. Elżbieta Richter-Wąs 1 Złożoność obliczeniowa i asymptotyczna

Bardziej szczegółowo

Struktury danych i złożoność obliczeniowa Wykład 2. Prof. dr hab. inż. Jan Magott

Struktury danych i złożoność obliczeniowa Wykład 2. Prof. dr hab. inż. Jan Magott Struktury danych i złożoność obliczeniowa Wykład 2. Prof. dr hab. inż. Jan Magott Metody konstrukcji algorytmów: Siłowa (ang. brute force), Dziel i zwyciężaj (ang. divide-and-conquer), Zachłanna (ang.

Bardziej szczegółowo

Algorytmy i Struktury Danych

Algorytmy i Struktury Danych Algorytmy i Struktury Danych Podstawowe informacje Prowadzący: Jan Tuziemski Email: jan.tuziemski@pg.edu.pl Konsultacje: pokój 412 GB (do ustalenia 412 GB) Podstawowe informacje literatura K. Goczyła Struktury

Bardziej szczegółowo

Algorytmika w bioinformatyce

Algorytmika w bioinformatyce Algorytmika w bioinformatyce Kurs dla kierunku BIOINFORMATYKA 2016/2017 Prowadzący: Prof. Danuta Makowiec danuta.makowiec@gmail.com IFTiA, pok. 353, tel.: 58 523 2466 Motywacja 2 Cztery etapy rekonstrukcji

Bardziej szczegółowo

Analiza algorytmów zadania podstawowe

Analiza algorytmów zadania podstawowe Analiza algorytmów zadania podstawowe Zadanie 1 Zliczanie Zliczaj(n) 1 r 0 2 for i 1 to n 1 3 do for j i + 1 to n 4 do for k 1 to j 5 do r r + 1 6 return r 0 Jaka wartość zostanie zwrócona przez powyższą

Bardziej szczegółowo

Wykład na Politechnice Krakowskiej w dniu 18 stycznia 2012 r. ZADAŃ I ALGORYTMÓW W OPTYMALIZACJI DYSKRETNEJ

Wykład na Politechnice Krakowskiej w dniu 18 stycznia 2012 r. ZADAŃ I ALGORYTMÓW W OPTYMALIZACJI DYSKRETNEJ Wykład na Politechnice Krakowskiej w dniu 18 stycznia 2012 r. ZŁOŻONOŚĆ OBLICZENIOWA ZADAŃ I ALGORYTMÓW W OPTYMALIZACJI DYSKRETNEJ dr hab. Krzysztof SZKATUŁA, prof. PAN Instytut Badań Systemowych PAN Uniwersytet

Bardziej szczegółowo

Podyplomowe Studium Informatyki

Podyplomowe Studium Informatyki Podyplomowe Studium Informatyki Wstęp do informatyki 30 godz. wykładu dr inż. Paweł Syty, 413GB, sylas@mif.pg.gda.pl, http://sylas.info Literatura D. Harel, Rzecz o istocie informatyki. Algorytmika, WNT

Bardziej szczegółowo

Algorytmy i struktury danych Matematyka III sem.

Algorytmy i struktury danych Matematyka III sem. Algorytmy i struktury danych Matematyka III sem. 30 godz. wykł. / 15 godz. ćw. / 15 godz. projekt dr inŝ. Paweł Syty, 413GB, sylas@mif.pg.gda.pl, http://sylas.info Literatura T.H. Cormen i inni, Wprowadzenie

Bardziej szczegółowo

Algorytmy i Struktury Danych

Algorytmy i Struktury Danych Algorytmy i Struktury Danych Kopce Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 11 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych Wykład 11 1 / 69 Plan wykładu

Bardziej szczegółowo

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 13. Karol Tarnowski A-1 p.

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 13. Karol Tarnowski A-1 p. Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy Wykład 13 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan prezentacji (1) Złożoność algorytmów czy to istotne, skoro

Bardziej szczegółowo

Wstęp do programowania INP001213Wcl rok akademicki 2018/19 semestr zimowy. Wykład 13. Karol Tarnowski A-1 p.

Wstęp do programowania INP001213Wcl rok akademicki 2018/19 semestr zimowy. Wykład 13. Karol Tarnowski A-1 p. Wstęp do programowania INP001213Wcl rok akademicki 2018/19 semestr zimowy Wykład 13 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan prezentacji (1) Złożoność algorytmów czy to istotne, skoro

Bardziej szczegółowo

Strategia "dziel i zwyciężaj"

Strategia dziel i zwyciężaj Strategia "dziel i zwyciężaj" W tej metodzie problem dzielony jest na kilka mniejszych podproblemów podobnych do początkowego problemu. Problemy te rozwiązywane są rekurencyjnie, a następnie rozwiązania

Bardziej szczegółowo

Algorytm selekcji Hoare a. Łukasz Miemus

Algorytm selekcji Hoare a. Łukasz Miemus Algorytm selekcji Hoare a Łukasz Miemus 1 lutego 2006 Rozdział 1 O algorytmie 1.1 Problem Mamy tablicę A[N] różnych elementów i zmienną int K, takie że 1 K N. Oczekiwane rozwiązanie to określenie K-tego

Bardziej szczegółowo

Analiza algorytmów zadania podstawowe

Analiza algorytmów zadania podstawowe Analiza algorytmów zadania podstawowe 15 stycznia 2019 Zadanie 1 Zliczanie Zliczaj(n) 1 r 0 2 for i 1 to n 1 3 do for j i + 1 to n 4 do for k 1 to j 5 do r r + 1 6 return r P Jaka wartość zostanie zwrócona

Bardziej szczegółowo

Zaawansowane algorytmy i struktury danych

Zaawansowane algorytmy i struktury danych Zaawansowane algorytmy i struktury danych u dr Barbary Marszał-Paszek Opracowanie pytań praktycznych z egzaminów. Strona 1 z 12 Pytania praktyczne z kolokwium zaliczeniowego z 19 czerwca 2014 (studia dzienne)

Bardziej szczegółowo

Programowanie Proceduralne

Programowanie Proceduralne Programowanie Proceduralne Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 1 Bożena Woźna-Szcześniak (AJD) Programowanie Proceduralne Wykład 1 1 / 59 Cel wykładów z programowania

Bardziej szczegółowo

Technologie informacyjne Wykład VII-IX

Technologie informacyjne Wykład VII-IX Technologie informacyjne -IX A. Matuszak 19 marca 2013 A. Matuszak Technologie informacyjne -IX Rekurencja A. Matuszak (2) Technologie informacyjne -IX Gotowanie jajek na miękko weż czysty garnek włóż

Bardziej szczegółowo

Algorytmy i złożoność obliczeniowa. Wojciech Horzelski

Algorytmy i złożoność obliczeniowa. Wojciech Horzelski Algorytmy i złożoność obliczeniowa Wojciech Horzelski 1 Tematyka wykładu Ø Ø Ø Ø Ø Wprowadzenie Poprawność algorytmów (elementy analizy algorytmów) Wyszukiwanie Sortowanie Elementarne i abstrakcyjne struktury

Bardziej szczegółowo

Wstęp do programowania

Wstęp do programowania Wstęp do programowania Rekurencja, metoda dziel i zwyciężaj Paweł Daniluk Wydział Fizyki Jesień 2014 P. Daniluk(Wydział Fizyki) WP w. VIII Jesień 2014 1 / 27 Rekurencja Recursion See Recursion. P. Daniluk(Wydział

Bardziej szczegółowo

Wstęp do Informatyki zadania ze złożoności obliczeniowej z rozwiązaniami

Wstęp do Informatyki zadania ze złożoności obliczeniowej z rozwiązaniami Wstęp do Informatyki zadania ze złożoności obliczeniowej z rozwiązaniami Przykład 1. Napisz program, który dla podanej liczby n wypisze jej rozkład na czynniki pierwsze. Oblicz asymptotyczną złożoność

Bardziej szczegółowo

Algorytmy i struktury danych. Co dziś? Tytułem przypomnienia metoda dziel i zwyciężaj. Wykład VIII Elementarne techniki algorytmiczne

Algorytmy i struktury danych. Co dziś? Tytułem przypomnienia metoda dziel i zwyciężaj. Wykład VIII Elementarne techniki algorytmiczne Algorytmy i struktury danych Wykład VIII Elementarne techniki algorytmiczne Co dziś? Algorytmy zachłanne (greedyalgorithms) 2 Tytułem przypomnienia metoda dziel i zwyciężaj. Problem można podzielić na

Bardziej szczegółowo

Złożoność obliczeniowa zadania, zestaw 2

Złożoność obliczeniowa zadania, zestaw 2 Złożoność obliczeniowa zadania, zestaw 2 Określanie złożoności obliczeniowej algorytmów, obliczanie pesymistycznej i oczekiwanej złożoności obliczeniowej 1. Dana jest tablica jednowymiarowa A o rozmiarze

Bardziej szczegółowo

Podyplomowe Studium Programowania i Systemów Baz Danych

Podyplomowe Studium Programowania i Systemów Baz Danych Podyplomowe Studium Programowania i Systemów Baz Danych Algorytmy, struktury danych i techniki programowania 15 godz. wykładu / 15 godz. laboratorium dr inż. Paweł Syty, 413GB, sylas@mif.pg.gda.pl, http://sylas.info

Bardziej szczegółowo

Algorytmy i struktury danych

Algorytmy i struktury danych Letnie Warsztaty Matematyczno-Informatyczne Algorytmy i struktury danych Mariusz Różycki University of Cambridge Zajęcia będą mieć formę wykładową. Slajdy można znaleźć na stronie kursu: http://lw.mi.edu.pl/informatyka/algorytmy.

Bardziej szczegółowo

ANALIZA ALGORYTMÓW. Analiza algorytmów polega między innymi na odpowiedzi na pytania:

ANALIZA ALGORYTMÓW. Analiza algorytmów polega między innymi na odpowiedzi na pytania: ANALIZA ALGORYTMÓW Analiza algorytmów polega między innymi na odpowiedzi na pytania: 1) Czy problem może być rozwiązany na komputerze w dostępnym czasie i pamięci? 2) Który ze znanych algorytmów należy

Bardziej szczegółowo

i = n = n 1 + n 2 1 i 2 n 1. n(n + 1)(2n + 1) n (n + 1) =

i = n = n 1 + n 2 1 i 2 n 1. n(n + 1)(2n + 1) n (n + 1) = Druga zasada inducji matematycznej Niech m będzie liczbą całowitą, niech p(n) będzie ciągiem zdań zdefiniowanych na zbiorze {n Z: n m} oraz niech l będzie nieujemną liczbą całowitą. Jeśli (P) wszystie

Bardziej szczegółowo

WYŻSZA SZKOŁA INFORMATYKI STOSOWANEJ I ZARZĄDZANIA

WYŻSZA SZKOŁA INFORMATYKI STOSOWANEJ I ZARZĄDZANIA WYŻSZA SZKOŁA IFORMATYKI STOSOWAEJ I ZARZĄDZAIA Złożoność algorytmów Złożoność pamięciowa algorytmu wynika z liczby i rozmiaru struktur danych wykorzystywanych w algorytmie. Złożoność czasowa algorytmu

Bardziej szczegółowo

Algorytmy i Struktury Danych, 2. ćwiczenia

Algorytmy i Struktury Danych, 2. ćwiczenia Algorytmy i Struktury Danych, 2. ćwiczenia 2017-10-13 Spis treści 1 Optymalne sortowanie 5 ciu elementów 1 2 Sortowanie metodą Shella 2 3 Przesunięcie cykliczne tablicy 3 4 Scalanie w miejscu dla ciągów

Bardziej szczegółowo

O rekurencji i nie tylko

O rekurencji i nie tylko O rekurencji i nie tylko dr Krzysztof Bryś Wydział Matematyki i Nauk Informacyjnych Politechnika Warszawska 10 grudnia 2011 Intuicyjnie: rekurencja sprowadzenie rozwiązania danego problemu do rozwiązania

Bardziej szczegółowo

Wstęp do Informatyki

Wstęp do Informatyki Wstęp do Informatyki dr hab. Bożena Woźna-Szcześniak, prof. AJD bwozna@gmail.com Jan Długosz University, Poland Wykład 8 Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 1 / 1 Rekurencja Rekurencja

Bardziej szczegółowo

Podstawy programowania. Podstawy C# Przykłady algorytmów

Podstawy programowania. Podstawy C# Przykłady algorytmów Podstawy programowania Podstawy C# Przykłady algorytmów Proces tworzenia programu Sformułowanie problemu funkcje programu zakres i postać danych postać i dokładność wyników Wybór / opracowanie metody rozwiązania

Bardziej szczegółowo

Rekurencja. Dla rozwiązania danego problemu, algorytm wywołuje sam siebie przy rozwiązywaniu podobnych podproblemów. Przykład: silnia: n! = n(n-1)!

Rekurencja. Dla rozwiązania danego problemu, algorytm wywołuje sam siebie przy rozwiązywaniu podobnych podproblemów. Przykład: silnia: n! = n(n-1)! Rekurencja Dla rozwiązania danego problemu, algorytm wywołuje sam siebie przy rozwiązywaniu podobnych podproblemów. Przykład: silnia: n! = n(n-1)! Pseudokod: silnia(n): jeżeli n == 0 silnia = 1 w przeciwnym

Bardziej szczegółowo

Algorytm i złożoność obliczeniowa algorytmu

Algorytm i złożoność obliczeniowa algorytmu Algorytm i złożoność obliczeniowa algorytmu Algorytm - przepis postępowania, którego wykonanie prowadzi do rozwiązania określonego problemu określa czynności, jakie należy wykonać wyszczególnia wszystkie

Bardziej szczegółowo

Wstęp do programowania

Wstęp do programowania Wstęp do programowania Złożoność obliczeniowa, poprawność programów Paweł Daniluk Wydział Fizyki Jesień 2013 P. Daniluk(Wydział Fizyki) WP w. XII Jesień 2013 1 / 20 Złożoność obliczeniowa Problem Ile czasu

Bardziej szczegółowo

Grzegorz Mazur. Zak lad Metod Obliczeniowych Chemii UJ. 14 marca 2007

Grzegorz Mazur. Zak lad Metod Obliczeniowych Chemii UJ. 14 marca 2007 Zak lad Metod Obliczeniowych Chemii UJ 14 marca 2007 Rzad 1 Zamiast wst epu 2 Rzad Notacja dużego O Notacja Ω Notacja Θ 3 S lowniczek Rzad Algorytm W matematyce oraz informatyce to skończony, uporzadkowany

Bardziej szczegółowo

Wykład 3. Metoda dziel i zwyciężaj

Wykład 3. Metoda dziel i zwyciężaj Wykład 3 Metoda dziel i zwyciężaj 1 Wprowadzenie Technika konstrukcji algorytmów dziel i zwyciężaj. przykładowe problemy: Wypełnianie planszy Poszukiwanie (binarne) Sortowanie (sortowanie przez łączenie

Bardziej szczegółowo

Struktury danych i złozoność obliczeniowa. Prof. dr hab. inż. Jan Magott

Struktury danych i złozoność obliczeniowa. Prof. dr hab. inż. Jan Magott Struktury danych i złozoność obliczeniowa Prof. dr hab. inż. Jan Magott Formy zajęć: Wykład 1 godz., Ćwiczenia 1 godz., Projekt 2 godz.. Adres strony z materiałami do wykładu: http://www.zio.iiar.pwr.wroc.pl/sdizo.html

Bardziej szczegółowo

Teoria obliczeń i złożoność obliczeniowa

Teoria obliczeń i złożoność obliczeniowa Teoria obliczeń i złożoność obliczeniowa Kontakt: dr hab. inż. Adam Kasperski, prof. PWr. pokój 509 B4 adam.kasperski@pwr.wroc.pl materiały + informacje na stronie www. Zaliczenie: Egzamin Literatura Problemy

Bardziej szczegółowo

Programowanie w VB Proste algorytmy sortowania

Programowanie w VB Proste algorytmy sortowania Programowanie w VB Proste algorytmy sortowania Sortowanie bąbelkowe Algorytm sortowania bąbelkowego polega na porównywaniu par elementów leżących obok siebie i, jeśli jest to potrzebne, zmienianiu ich

Bardziej szczegółowo

Efektywna metoda sortowania sortowanie przez scalanie

Efektywna metoda sortowania sortowanie przez scalanie Efektywna metoda sortowania sortowanie przez scalanie Rekurencja Dla rozwiązania danego problemu, algorytm wywołuje sam siebie przy rozwiązywaniu podobnych podproblemów. Metoda dziel i zwycięŝaj Dzielimy

Bardziej szczegółowo

ANALIZA ALGORYTMÓW. Analiza algorytmów polega między innymi na odpowiedzi na pytania:

ANALIZA ALGORYTMÓW. Analiza algorytmów polega między innymi na odpowiedzi na pytania: ANALIZA ALGORYTMÓW Analiza algorytmów polega między innymi na odpowiedzi na pytania: 1) Czy problem może być rozwiązany na komputerze w dostępnym czasie i pamięci? 2) Który ze znanych algorytmów należy

Bardziej szczegółowo

Algorytmy w teorii liczb

Algorytmy w teorii liczb Łukasz Kowalik, ASD 2004: Algorytmy w teorii liczb 1 Algorytmy w teorii liczb Teoria liczb jest działem matemtyki dotyczącym własności liczb naturalnych. Rozważa się zagadnienia związane z liczbami pierwszymi,

Bardziej szczegółowo

Programowanie Równoległe i Rozproszone. Algorytm Kung a. Algorytm Kung a. Programowanie Równoległe i Rozproszone Wykład 8. Przygotował: Lucjan Stapp

Programowanie Równoległe i Rozproszone. Algorytm Kung a. Algorytm Kung a. Programowanie Równoległe i Rozproszone Wykład 8. Przygotował: Lucjan Stapp Programowanie Równoległe i Rozproszone Lucjan Stapp Wydział Matematyki i Nauk Informacyjnych Politechnika Warszawska (l.stapp@mini.pw.edu.pl) 1/34 PRiR Algorytm Kunga Dany jest odcinek [a,b] i ciągła funkcja

Bardziej szczegółowo

EGZAMIN - Wersja A. ALGORYTMY I STRUKTURY DANYCH Lisek89 opracowanie kartki od Pani dr E. Koszelew

EGZAMIN - Wersja A. ALGORYTMY I STRUKTURY DANYCH Lisek89 opracowanie kartki od Pani dr E. Koszelew 1. ( pkt) Dany jest algorytm, który dla dowolnej liczby naturalnej n, powinien wyznaczyd sumę kolejnych liczb naturalnych mniejszych od n. Wynik algorytmu jest zapisany w zmiennej suma. Algorytm i=1; suma=0;

Bardziej szczegółowo

Zaawansowane algorytmy. Wojciech Horzelski

Zaawansowane algorytmy. Wojciech Horzelski Zaawansowane algorytmy Wojciech Horzelski 1 Organizacja Wykład: poniedziałek 8 15-10 Aula Ćwiczenia: Każdy student musi realizować projekty (treść podawana na wykładzie) : Ilość projektów : 5-7 Na realizację

Bardziej szczegółowo

Algorytmy asymetryczne

Algorytmy asymetryczne Algorytmy asymetryczne Klucze występują w parach jeden do szyfrowania, drugi do deszyfrowania (niekiedy klucze mogą pracować zamiennie ) Opublikowanie jednego z kluczy nie zdradza drugiego, nawet gdy można

Bardziej szczegółowo

Wstęp do informatyki. Maszyna RAM. Schemat logiczny komputera. Maszyna RAM. RAM: szczegóły. Realizacja algorytmu przez komputer

Wstęp do informatyki. Maszyna RAM. Schemat logiczny komputera. Maszyna RAM. RAM: szczegóły. Realizacja algorytmu przez komputer Realizacja algorytmu przez komputer Wstęp do informatyki Wykład UniwersytetWrocławski 0 Tydzień temu: opis algorytmu w języku zrozumiałym dla człowieka: schemat blokowy, pseudokod. Dziś: schemat logiczny

Bardziej szczegółowo

Struktura danych. Sposób uporządkowania informacji w komputerze.

Struktura danych. Sposób uporządkowania informacji w komputerze. Struktura danych Sposób uporządkowania informacji w komputerze. Algorytm Skończony, uporządkowany ciąg jasno zdefiniowanych czynności, koniecznych do wykonania pewnego zadania. Al-Khwarizmi perski matematyk

Bardziej szczegółowo

Technologie cyfrowe. Artur Kalinowski. Zakład Cząstek i Oddziaływań Fundamentalnych Pasteura 5, pokój 4.15

Technologie cyfrowe. Artur Kalinowski. Zakład Cząstek i Oddziaływań Fundamentalnych Pasteura 5, pokój 4.15 Technologie cyfrowe Artur Kalinowski Zakład Cząstek i Oddziaływań Fundamentalnych Pasteura 5, pokój 4.15 Artur.Kalinowski@fuw.edu.pl Semestr letni 2014/2015 Zadanie algorytmiczne: wyszukiwanie dane wejściowe:

Bardziej szczegółowo

Algorytmy i Struktury Danych.

Algorytmy i Struktury Danych. Algorytmy i Struktury Danych. Grafy dr hab. Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 9 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 9 1 / 20

Bardziej szczegółowo

Algorytmy i Struktury Danych.

Algorytmy i Struktury Danych. Algorytmy i Struktury Danych. Problem Sortowania. Metoda Dziel i zwyciężaj. dr hab. Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 4 Bożena Woźna-Szcześniak (AJD) Algorytmy

Bardziej szczegółowo

Algorytmy i Struktury Danych.

Algorytmy i Struktury Danych. Algorytmy i Struktury Danych. Problem Sortowania, cd. Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 3 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład

Bardziej szczegółowo

Algorytmy i Struktury Danych. (c) Marcin Sydow. Sortowanie Selection Sort Insertion Sort Merge Sort. Sortowanie 1. Listy dowiązaniowe.

Algorytmy i Struktury Danych. (c) Marcin Sydow. Sortowanie Selection Sort Insertion Sort Merge Sort. Sortowanie 1. Listy dowiązaniowe. 1 Tematy wykładu: problem sortowania sortowanie przez wybór (SelectionSort) sortowanie przez wstawianie (InsertionSort) sortowanie przez złaczanie (MergeSort) struktura danych list dowiązaniowych Input:

Bardziej szczegółowo

Złożoność obliczeniowa i pamięciowa. Spis treści. Złożoność obliczeniowa -- założenia

Złożoność obliczeniowa i pamięciowa. Spis treści. Złożoność obliczeniowa -- założenia Spis treści 1 Złożoność obliczeniowa i pamięciowa 1.1 Złożoność obliczeniowa -- założenia 1.2 Koszt pesymistyczny i oczekiwany 1.2.1 Ćwiczenia 1.2.2 Notacja duże "O" i rzędy wielkości 1.2.2.1 Ćwiczenie

Bardziej szczegółowo

Algorytmy i Struktury Danych.

Algorytmy i Struktury Danych. Algorytmy i Struktury Danych. Liniowe struktury danych - Lista Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 5 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych.

Bardziej szczegółowo

ANALIZA ALGORYTMÓW. Analiza algorytmów polega między innymi na odpowiedzi na pytania:

ANALIZA ALGORYTMÓW. Analiza algorytmów polega między innymi na odpowiedzi na pytania: ANALIZA ALGORYTMÓW Analiza algorytmów polega między innymi na odpowiedzi na pytania: 1) Czy problem może być rozwiązany na komputerze w dostępnym czasie i pamięci? 2) Który ze znanych algorytmów należy

Bardziej szczegółowo

Podstawy Programowania. Złożoność obliczeniowa

Podstawy Programowania. Złożoność obliczeniowa Podstawy Programowania Wykład X Złożoność obliczeniowa Robert Muszyński Katedra Cybernetyki i Robotyki, PWr Zagadnienia: efektywność programów/algorytmów, sposoby zwiększania efektywności algorytmów, zasada

Bardziej szczegółowo

Krzysztof Gniłka. Twierdzenie o rekurencji uniwersalnej

Krzysztof Gniłka. Twierdzenie o rekurencji uniwersalnej Krzysztof Gniłka Twierdzenie o rekurencji uniwersalnej Spis treści Wstęp 3 Rozdział 1 Definicje i pomocnicze lematy 4 1 Części całkowite liczb 4 2 Logarytmy 9 3 Notacja asymptotyczna 12 Rozdział 2 Metoda

Bardziej szczegółowo

Informatyka 1. Złożoność obliczeniowa

Informatyka 1. Złożoność obliczeniowa Informatyka 1 Wykład XI Złożoność obliczeniowa Robert Muszyński ZPCiR ICT PWr Zagadnienia: efektywność programów/algorytmów, sposoby zwiększania efektywności algorytmów, zasada 80 20, ocena efektywności

Bardziej szczegółowo

Wykład 5. Sortowanie w czasie liniowologarytmicznym

Wykład 5. Sortowanie w czasie liniowologarytmicznym Wykład 5 Sortowanie w czasie liniowologarytmicznym 1 Sortowanie - zadanie Definicja (dla liczb): wejście: ciąg n liczb A = (a 1, a 2,, a n ) wyjście: permutacja (a 1,, a n ) taka, że a 1 a n 2 Zestawienie

Bardziej szczegółowo

Aproksymacja funkcji a regresja symboliczna

Aproksymacja funkcji a regresja symboliczna Aproksymacja funkcji a regresja symboliczna Problem aproksymacji funkcji polega na tym, że funkcję F(x), znaną lub określoną tablicą wartości, należy zastąpić inną funkcją, f(x), zwaną funkcją aproksymującą

Bardziej szczegółowo

Algorytmy i Struktury Danych. (c) Marcin Sydow. Introduction. QuickSort. Sortowanie 2. Limit. CountSort. RadixSort. Summary

Algorytmy i Struktury Danych. (c) Marcin Sydow. Introduction. QuickSort. Sortowanie 2. Limit. CountSort. RadixSort. Summary Sortowanie 2 Zawartość wykładu: Własność stabilności algorytmów sortujących algorytm sortowania szybkiego () czy można sortować szybciej niż ze złożonością Θ(n log(n))? algorytm sortowania przez zliczanie

Bardziej szczegółowo

Ciągi liczbowe. Zbigniew Koza. Wydział Fizyki i Astronomii

Ciągi liczbowe. Zbigniew Koza. Wydział Fizyki i Astronomii Ciągi liczbowe Zbigniew Koza Wydział Fizyki i Astronomii Wrocław, 2015 Co to są ciągi? Ciąg skończony o wartościach w zbiorze A to dowolna funkcja f: 1,2,, n A Ciąg nieskończony o wartościach w zbiorze

Bardziej szczegółowo

Piotr Chrząstowski-Wachtel Uniwersytet Warszawski. Al Chwarizmi i trzy algorytmy Euklidesa

Piotr Chrząstowski-Wachtel Uniwersytet Warszawski. Al Chwarizmi i trzy algorytmy Euklidesa Piotr Chrząstowski-Wachtel Uniwersytet Warszawski Al Chwarizmi i trzy algorytmy Euklidesa Algorytmika Najważniejsza część informatyki Opisuje jak rozwiązywać problemy algorytmiczne, jakie struktury danych

Bardziej szczegółowo

Definicja. Ciąg wejściowy: Funkcja uporządkowująca: Sortowanie polega na: a 1, a 2,, a n-1, a n. f(a 1 ) f(a 2 ) f(a n )

Definicja. Ciąg wejściowy: Funkcja uporządkowująca: Sortowanie polega na: a 1, a 2,, a n-1, a n. f(a 1 ) f(a 2 ) f(a n ) SORTOWANIE 1 SORTOWANIE Proces ustawiania zbioru elementów w określonym porządku. Stosuje się w celu ułatwienia późniejszego wyszukiwania elementów sortowanego zbioru. 2 Definicja Ciąg wejściowy: a 1,

Bardziej szczegółowo

WSTĘP DO INFORMATYKI. Złożoność obliczeniowa, efektywność i algorytmy sortowania

WSTĘP DO INFORMATYKI. Złożoność obliczeniowa, efektywność i algorytmy sortowania Akademia Górniczo-Hutnicza Wydział Elektrotechniki, Automatyki, Informatyki i Inżynierii Biomedycznej WSTĘP DO INFORMATYKI Adrian Horzyk Złożoność obliczeniowa, efektywność i algorytmy sortowania www.agh.edu.pl

Bardziej szczegółowo

Układy równań liniowych

Układy równań liniowych Układy równań liniowych Mirosław Sobolewski Wydział Matematyki, Informatyki i Mechaniki UW 1. wykład z algebry liniowej Warszawa, październik 2015 Mirosław Sobolewski (UW) Warszawa, wrzesień 2015 1 / 1

Bardziej szczegółowo

Przykładowe sprawozdanie. Jan Pustelnik

Przykładowe sprawozdanie. Jan Pustelnik Przykładowe sprawozdanie Jan Pustelnik 30 marca 2007 Rozdział 1 Sformułowanie problemu Tematem pracy jest porównanie wydajności trzech tradycyjnych metod sortowania: InsertionSort, SelectionSort i BubbleSort.

Bardziej szczegółowo

Struktury danych i złożoność obliczeniowa. Prof. dr hab. inż. Jan Magott

Struktury danych i złożoność obliczeniowa. Prof. dr hab. inż. Jan Magott Struktury danych i złożoność obliczeniowa Prof. dr hab. inż. Jan Magott Formy zajęć: Wykład 1 godz., Ćwiczenia 2 godz., Projekt 1 godz.. Strona kursu: http://www.zio.iiar.pwr.wroc.pl/sdizo.html Struktury

Bardziej szczegółowo

w analizie wyników badań eksperymentalnych, w problemach modelowania zjawisk fizycznych, w analizie obserwacji statystycznych.

w analizie wyników badań eksperymentalnych, w problemach modelowania zjawisk fizycznych, w analizie obserwacji statystycznych. Aproksymacja funkcji a regresja symboliczna Problem aproksymacji funkcji polega na tym, że funkcję F(), znaną lub określoną tablicą wartości, należy zastąpić inną funkcją, f(), zwaną funkcją aproksymującą

Bardziej szczegółowo

3. Podaj elementy składowe jakie powinna uwzględniać definicja informatyki.

3. Podaj elementy składowe jakie powinna uwzględniać definicja informatyki. 1. Podaj definicję informatyki. 2. W jaki sposób można definiować informatykę? 3. Podaj elementy składowe jakie powinna uwzględniać definicja informatyki. 4. Co to jest algorytm? 5. Podaj neumanowską architekturę

Bardziej szczegółowo

Matematyka dyskretna. Andrzej Łachwa, UJ, a/15

Matematyka dyskretna. Andrzej Łachwa, UJ, a/15 Matematyka dyskretna Andrzej Łachwa, UJ, 2017 andrzej.lachwa@uj.edu.pl 3a/15 Indukcja matematyczna Zasada Minimum Dowolny niepusty podzbiór S zbioru liczb naturalnych ma w sobie liczbę najmniejszą. Zasada

Bardziej szczegółowo