Algorytmy i Struktury Danych.
|
|
- Karol Żurek
- 5 lat temu
- Przeglądów:
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. 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ółowoAlgorytmy 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ółowoPodstawy 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ółowoZasady 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ółowoPoró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ółowoWprowadzenie 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ółowoZadanie 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ółowoZł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ółowoAlgorytmy 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ółowoWykł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ółowoZł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ółowoTEORETYCZNE 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ółowoTEORETYCZNE 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ółowoZaawansowane 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ółowoMatematyczne 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ółowoINFORMATYKA 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ółowoPodstawowe 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ółowoZaliczenie. 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ółowoZa 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ółowoZł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ółowoJeś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ółowoMatematyka 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ółowoTeoretyczne 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ółowoAlgorytmika 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ółowoLiczby 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ółowoSortowanie 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ółowoEfektywność 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ółowoSortowanie 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ółowoTeoretyczne 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ółowoStruktury 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ółowoAlgorytmy 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ółowoAlgorytmika 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ółowoAnaliza 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ółowoWykł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ółowoPodyplomowe 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ółowoAlgorytmy 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ółowoAlgorytmy 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ółowoWstę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ółowoWstę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ółowoStrategia "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ółowoAlgorytm 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ółowoAnaliza 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ółowoZaawansowane 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ółowoProgramowanie 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ółowoTechnologie 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ółowoAlgorytmy 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ółowoWstę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ółowoWstę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ółowoAlgorytmy 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ółowoZł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ółowoPodyplomowe 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ółowoAlgorytmy 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ółowoANALIZA 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ółowoi = 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ółowoWYŻ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ółowoAlgorytmy 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ółowoO 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ółowoWstę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ółowoPodstawy 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ółowoRekurencja. 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ółowoAlgorytm 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ółowoWstę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ółowoGrzegorz 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ółowoWykł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ółowoStruktury 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ółowoTeoria 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ółowoProgramowanie 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ółowoEfektywna 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ółowoANALIZA 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ółowoAlgorytmy 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ółowoProgramowanie 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ółowoEGZAMIN - 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ółowoZaawansowane 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ółowoAlgorytmy 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ółowoWstę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ółowoStruktura 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ółowoTechnologie 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ółowoAlgorytmy 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ółowoAlgorytmy 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ółowoAlgorytmy 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ółowoAlgorytmy 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ółowoZł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ółowoAlgorytmy 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ółowoANALIZA 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ółowoPodstawy 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ółowoKrzysztof 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ółowoInformatyka 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ółowoWykł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ółowoAproksymacja 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ółowoAlgorytmy 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ółowoCią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ółowoPiotr 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ółowoDefinicja. 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ółowoWSTĘ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ółowoUkł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ółowoPrzykł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ółowoStruktury 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ółowow 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ółowo3. 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ółowoMatematyka 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