Sortowanie przez scalanie
|
|
- Bernard Smoliński
- 5 lat temu
- Przeglądów:
Transkrypt
1 Sortowanie przez scalanie Wykład 2 12 marca 2019 (Wykład 2) Sortowanie przez scalanie 12 marca / 17
2 Outline 1 Metoda dziel i zwyciężaj 2 Scalanie Niezmiennik pętli - poprawność algorytmu 3 Sortowanie przez scalanie Analiza złożoności czasowej 4 Sortowanie przez scalanie - podsumowanie (Wykład 2) Sortowanie przez scalanie 12 marca / 17
3 Projektowanie algorytmów Metoda przyrostowa - metoda naiwna: (Wykład 2) Sortowanie przez scalanie 12 marca / 17
4 Projektowanie algorytmów Metoda przyrostowa - metoda naiwna: Sortowanie przez wstawianie: (Wykład 2) Sortowanie przez scalanie 12 marca / 17
5 Projektowanie algorytmów Metoda przyrostowa - metoda naiwna: Sortowanie przez wstawianie: a) podtablica A[1... j-1] posortowana, (Wykład 2) Sortowanie przez scalanie 12 marca / 17
6 Projektowanie algorytmów Metoda przyrostowa - metoda naiwna: Sortowanie przez wstawianie: a) podtablica A[1... j-1] posortowana, b) wstawiamy element A[j], (Wykład 2) Sortowanie przez scalanie 12 marca / 17
7 Projektowanie algorytmów Metoda przyrostowa - metoda naiwna: Sortowanie przez wstawianie: a) podtablica A[1... j-1] posortowana, b) wstawiamy element A[j], c) podtablica A[1... j] posortowana. (Wykład 2) Sortowanie przez scalanie 12 marca / 17
8 Projektowanie algorytmów Metoda przyrostowa - metoda naiwna: Sortowanie przez wstawianie: a) podtablica A[1... j-1] posortowana, b) wstawiamy element A[j], c) podtablica A[1... j] posortowana. Metoda dziel i zwyciężaj : (Wykład 2) Sortowanie przez scalanie 12 marca / 17
9 Projektowanie algorytmów Metoda przyrostowa - metoda naiwna: Sortowanie przez wstawianie: a) podtablica A[1... j-1] posortowana, b) wstawiamy element A[j], c) podtablica A[1... j] posortowana. Metoda dziel i zwyciężaj : Rekurencyjna struktura algorytmu - w celu rozwiązania danego problemu algorytm wywołuje sam siebie do rozwiązywania podobnych podproblemów. (Wykład 2) Sortowanie przez scalanie 12 marca / 17
10 Projektowanie algorytmów Metoda przyrostowa - metoda naiwna: Sortowanie przez wstawianie: a) podtablica A[1... j-1] posortowana, b) wstawiamy element A[j], c) podtablica A[1... j] posortowana. Metoda dziel i zwyciężaj : Rekurencyjna struktura algorytmu - w celu rozwiązania danego problemu algorytm wywołuje sam siebie do rozwiązywania podobnych podproblemów. Sortowanie przez scalanie (von Neumann, 1945), sortowanie szybkie (Hoare, 1959), algorytm Karatsuba (1960), algorytm Strassena (1969),... (Wykład 2) Sortowanie przez scalanie 12 marca / 17
11 Projektowanie algorytmów Metoda przyrostowa - metoda naiwna: Sortowanie przez wstawianie: a) podtablica A[1... j-1] posortowana, b) wstawiamy element A[j], c) podtablica A[1... j] posortowana. Metoda dziel i zwyciężaj : Rekurencyjna struktura algorytmu - w celu rozwiązania danego problemu algorytm wywołuje sam siebie do rozwiązywania podobnych podproblemów. Sortowanie przez scalanie (von Neumann, 1945), sortowanie szybkie (Hoare, 1959), algorytm Karatsuba (1960), algorytm Strassena (1969),... decrease-and-conquer: wyszukiwanie binarne (Mauchly, 1946; Babilon, 200 p.n.e.), algorytm Euklidesa (300 p.n.e),... (Wykład 2) Sortowanie przez scalanie 12 marca / 17
12 divide et impera - dziel i zwyciężaj Dziel: dzielimy problem na podproblemy. (Wykład 2) Sortowanie przez scalanie 12 marca / 17
13 divide et impera - dziel i zwyciężaj Dziel: dzielimy problem na podproblemy. Zwyciężaj: rozwiązujemy podproblemy rekurencyjnie lub używamy metod bezpośrednich, jeżeli nie wymagają wykorzystania rekursji. (Wykład 2) Sortowanie przez scalanie 12 marca / 17
14 divide et impera - dziel i zwyciężaj Dziel: dzielimy problem na podproblemy. Zwyciężaj: rozwiązujemy podproblemy rekurencyjnie lub używamy metod bezpośrednich, jeżeli nie wymagają wykorzystania rekursji. Połącz: łączymy rozwiązania podproblemów, aby otrzymać rozwiązanie problemu początkowego. (Wykład 2) Sortowanie przez scalanie 12 marca / 17
15 divide and conquer - dziel i zwyciężaj Sortowanie przez scalanie: (Wykład 2) Sortowanie przez scalanie 12 marca / 17
16 divide and conquer - dziel i zwyciężaj Sortowanie przez scalanie: Dziel: Dzielimy n-elementowy ciąg na dwa podciągi po n 2 elementów każdy. (Wykład 2) Sortowanie przez scalanie 12 marca / 17
17 divide and conquer - dziel i zwyciężaj Sortowanie przez scalanie: Dziel: Dzielimy n-elementowy ciąg na dwa podciągi po n 2 elementów każdy. Zwyciężaj: Sortujemy podciągi rekurencyjnie metodą sortowania przez scalanie. (Wykład 2) Sortowanie przez scalanie 12 marca / 17
18 divide and conquer - dziel i zwyciężaj Sortowanie przez scalanie: Dziel: Dzielimy n-elementowy ciąg na dwa podciągi po n 2 elementów każdy. Zwyciężaj: Sortujemy podciągi rekurencyjnie metodą sortowania przez scalanie. Połącz: Łączymy posortowane podciągi w jeden posortowany ciąg. (Wykład 2) Sortowanie przez scalanie 12 marca / 17
19 divide and conquer - dziel i zwyciężaj Sortowanie przez scalanie: Dziel: Dzielimy n-elementowy ciąg na dwa podciągi po n 2 elementów każdy. Zwyciężaj: Sortujemy podciągi rekurencyjnie metodą sortowania przez scalanie. Połącz: Łączymy posortowane podciągi w jeden posortowany ciąg. Scalanie - łączenie: (Wykład 2) Sortowanie przez scalanie 12 marca / 17
20 divide and conquer - dziel i zwyciężaj Sortowanie przez scalanie: Dziel: Dzielimy n-elementowy ciąg na dwa podciągi po n 2 elementów każdy. Zwyciężaj: Sortujemy podciągi rekurencyjnie metodą sortowania przez scalanie. Połącz: Łączymy posortowane podciągi w jeden posortowany ciąg. Scalanie - łączenie: Nie ma rekursji gdy sortujemy ciąg jednoelementowy. Automatycznie posortowany. (Wykład 2) Sortowanie przez scalanie 12 marca / 17
21 divide and conquer - dziel i zwyciężaj Sortowanie przez scalanie: Dziel: Dzielimy n-elementowy ciąg na dwa podciągi po n 2 elementów każdy. Zwyciężaj: Sortujemy podciągi rekurencyjnie metodą sortowania przez scalanie. Połącz: Łączymy posortowane podciągi w jeden posortowany ciąg. Scalanie - łączenie: Nie ma rekursji gdy sortujemy ciąg jednoelementowy. Automatycznie posortowany. Podstawową operacją algorytmu sortowania przez scalanie jest łączenie dwóch posortowanych ciągów w kroku połącz. (Wykład 2) Sortowanie przez scalanie 12 marca / 17
22 Scalanie - MERGE(A, p, q, r) A - tablica, p, q, r - indeksy, takie że p q < r. Założenie: Podtablice A[p...q], A[q+1...r] są posortowane. Procedura MERGE (A, p, q, r) scala podtablice A[p...q] oraz A[q+1...r] w posortowaną tablicę A[p...r]. Czas działania: Θ(n), gdzie n = r p + 1. (Wykład 2) Sortowanie przez scalanie 12 marca / 17
23 Scalanie - MERGE(A, p, q, r) MERGE(A, p, q, r) 1: a q p + 1 2: b r q 3: //utworz tablice L[1..a + 1] oraz R[1..b + 1] 4: for i 1 to a do 5: L[i] A[p + i 1] 6: for j 1 to b do 7: R[j] A[q + j] 8: L[a + 1] 9: R[b + 1] 10: i 1 11: j 1 12:... (Wykład 2) Sortowanie przez scalanie 12 marca / 17
24 Scalanie - MERGE(A, p, q, r) cd. MERGE(A, p, q, r) cd. 12: for k p to r do 13: if L[i] R[j] then 14: A[k] L[i] 15: i i : else 17: A[k] R[j] 18: j j + 1 (Wykład 2) Sortowanie przez scalanie 12 marca / 17
25 Scalanie - MERGE(A, p, q, r) Inicjalizacja: (Wykład 2) Sortowanie przez scalanie 12 marca / 17
26 Scalanie - MERGE(A, p, q, r) Inicjalizacja: Tworzymy podtablice L, R. (Wykład 2) Sortowanie przez scalanie 12 marca / 17
27 Scalanie - MERGE(A, p, q, r) Inicjalizacja: Tworzymy podtablice L, R. Kopiujemy podtablicę A[p..q] do L[1..a]. (Wykład 2) Sortowanie przez scalanie 12 marca / 17
28 Scalanie - MERGE(A, p, q, r) Inicjalizacja: Tworzymy podtablice L, R. Kopiujemy podtablicę A[p..q] do L[1..a]. Kopiujemy podtablicę A[q+1..r] do R[1..b]. (Wykład 2) Sortowanie przez scalanie 12 marca / 17
29 Scalanie - MERGE(A, p, q, r) Inicjalizacja: Tworzymy podtablice L, R. Kopiujemy podtablicę A[p..q] do L[1..a]. Kopiujemy podtablicę A[q+1..r] do R[1..b]. Na końcach podtablic L i R umieszczamy wartowników. (Wykład 2) Sortowanie przez scalanie 12 marca / 17
30 Scalanie - MERGE(A, p, q, r) Inicjalizacja: Tworzymy podtablice L, R. Kopiujemy podtablicę A[p..q] do L[1..a]. Kopiujemy podtablicę A[q+1..r] do R[1..b]. Na końcach podtablic L i R umieszczamy wartowników. Scalanie: (Wykład 2) Sortowanie przez scalanie 12 marca / 17
31 Scalanie - MERGE(A, p, q, r) Inicjalizacja: Tworzymy podtablice L, R. Kopiujemy podtablicę A[p..q] do L[1..a]. Kopiujemy podtablicę A[q+1..r] do R[1..b]. Na końcach podtablic L i R umieszczamy wartowników. Scalanie: Wykonujemy r - p + 1 operacji, które zachowują następujący niezmiennik pętli: (Wykład 2) Sortowanie przez scalanie 12 marca / 17
32 Scalanie - MERGE(A, p, q, r) Inicjalizacja: Tworzymy podtablice L, R. Kopiujemy podtablicę A[p..q] do L[1..a]. Kopiujemy podtablicę A[q+1..r] do R[1..b]. Na końcach podtablic L i R umieszczamy wartowników. Scalanie: Wykonujemy r - p + 1 operacji, które zachowują następujący niezmiennik pętli: i) Na początku każdej iteracji pętli for podtablica A[p..k-1] zawiera k - p najmniejszych elementów tablic L[1..a+1] oraz R[1..b+1], w kolejności posortowanej. (Wykład 2) Sortowanie przez scalanie 12 marca / 17
33 Scalanie - MERGE(A, p, q, r) Inicjalizacja: Tworzymy podtablice L, R. Kopiujemy podtablicę A[p..q] do L[1..a]. Kopiujemy podtablicę A[q+1..r] do R[1..b]. Na końcach podtablic L i R umieszczamy wartowników. Scalanie: Wykonujemy r - p + 1 operacji, które zachowują następujący niezmiennik pętli: i) Na początku każdej iteracji pętli for podtablica A[p..k-1] zawiera k - p najmniejszych elementów tablic L[1..a+1] oraz R[1..b+1], w kolejności posortowanej. ii) L[i] oraz R[j] są najmniejszymi elementami swoich tablic, które nie zostały jeszcze skopiowane z powrotem do A. (Wykład 2) Sortowanie przez scalanie 12 marca / 17
34 Scalanie - niezmiennik pętli - poprawność algorytmu Inicjowanie: (Wykład 2) Sortowanie przez scalanie 12 marca / 17
35 Scalanie - niezmiennik pętli - poprawność algorytmu Inicjowanie: Przed pierwszą iteracją pętli k = p, podtablica A[p..k-1] jest pusta. Zawiera k p = 0 najmniejszych elementów tablic L i R. (Wykład 2) Sortowanie przez scalanie 12 marca / 17
36 Scalanie - niezmiennik pętli - poprawność algorytmu Inicjowanie: Przed pierwszą iteracją pętli k = p, podtablica A[p..k-1] jest pusta. Zawiera k p = 0 najmniejszych elementów tablic L i R. i = j = 1, czyli L[i] oraz R[j] są najmniejszymi elementami tablic, które nie zostały jeszcze skopiowane z powrotem do A. (Wykład 2) Sortowanie przez scalanie 12 marca / 17
37 Scalanie - niezmiennik pętli - poprawność algorytmu Inicjowanie: Przed pierwszą iteracją pętli k = p, podtablica A[p..k-1] jest pusta. Zawiera k p = 0 najmniejszych elementów tablic L i R. i = j = 1, czyli L[i] oraz R[j] są najmniejszymi elementami tablic, które nie zostały jeszcze skopiowane z powrotem do A. Utrzymanie: Każda iteracja zachowuje niezmiennik pętli. (Wykład 2) Sortowanie przez scalanie 12 marca / 17
38 Scalanie - niezmiennik pętli - poprawność algorytmu Inicjowanie: Przed pierwszą iteracją pętli k = p, podtablica A[p..k-1] jest pusta. Zawiera k p = 0 najmniejszych elementów tablic L i R. i = j = 1, czyli L[i] oraz R[j] są najmniejszymi elementami tablic, które nie zostały jeszcze skopiowane z powrotem do A. Utrzymanie: Każda iteracja zachowuje niezmiennik pętli. Jeżeli L[i] R[j] to L[i] jest najmniejszym elementem nie skopiowanym jeszcze z powrotem do A. (Wykład 2) Sortowanie przez scalanie 12 marca / 17
39 Scalanie - niezmiennik pętli - poprawność algorytmu Inicjowanie: Przed pierwszą iteracją pętli k = p, podtablica A[p..k-1] jest pusta. Zawiera k p = 0 najmniejszych elementów tablic L i R. i = j = 1, czyli L[i] oraz R[j] są najmniejszymi elementami tablic, które nie zostały jeszcze skopiowane z powrotem do A. Utrzymanie: Każda iteracja zachowuje niezmiennik pętli. Jeżeli L[i] R[j] to L[i] jest najmniejszym elementem nie skopiowanym jeszcze z powrotem do A. Podtablica A[p..k-1] zawiera k p najmniejszych elementów, zatem po skopiowaniu w wierszu 14 elementu L[i] do A[k] podtablica A[p..k] będzie zawierać k p + 1 najmniejszych elementów. (Wykład 2) Sortowanie przez scalanie 12 marca / 17
40 Scalanie - niezmiennik pętli - poprawność algorytmu Inicjowanie: Przed pierwszą iteracją pętli k = p, podtablica A[p..k-1] jest pusta. Zawiera k p = 0 najmniejszych elementów tablic L i R. i = j = 1, czyli L[i] oraz R[j] są najmniejszymi elementami tablic, które nie zostały jeszcze skopiowane z powrotem do A. Utrzymanie: Każda iteracja zachowuje niezmiennik pętli. Jeżeli L[i] R[j] to L[i] jest najmniejszym elementem nie skopiowanym jeszcze z powrotem do A. Podtablica A[p..k-1] zawiera k p najmniejszych elementów, zatem po skopiowaniu w wierszu 14 elementu L[i] do A[k] podtablica A[p..k] będzie zawierać k p + 1 najmniejszych elementów. Zwiększenie k oraz i powoduje odtworzenie niezmiennika pętli przed następną iteracją. (Wykład 2) Sortowanie przez scalanie 12 marca / 17
41 Scalanie - niezmiennik pętli - poprawność algorytmu Zakończenie: (Wykład 2) Sortowanie przez scalanie 12 marca / 17
42 Scalanie - niezmiennik pętli - poprawność algorytmu Zakończenie: Gdy pętla się kończy, to k = r + 1. (Wykład 2) Sortowanie przez scalanie 12 marca / 17
43 Scalanie - niezmiennik pętli - poprawność algorytmu Zakończenie: Gdy pętla się kończy, to k = r + 1. Na mocy niezmiennika pętli podtablica A[p..k-1], czyli A[p..r], zawiera k p = r p + 1 najmniejszych elementów tablic L[1..a+1] oraz R[1..b+1], w kolejności posortowanej. (Wykład 2) Sortowanie przez scalanie 12 marca / 17
44 Scalanie - niezmiennik pętli - poprawność algorytmu Zakończenie: Gdy pętla się kończy, to k = r + 1. Na mocy niezmiennika pętli podtablica A[p..k-1], czyli A[p..r], zawiera k p = r p + 1 najmniejszych elementów tablic L[1..a+1] oraz R[1..b+1], w kolejności posortowanej. Tablice L i R zawierają łącznie a + b + 2 = r p + 3 elementy. Wszystkie elementy, poza wartownikami zostały skopiowane z powrotem do A. (Wykład 2) Sortowanie przez scalanie 12 marca / 17
45 Scalanie - niezmiennik pętli - poprawność algorytmu Zakończenie: Gdy pętla się kończy, to k = r + 1. Na mocy niezmiennika pętli podtablica A[p..k-1], czyli A[p..r], zawiera k p = r p + 1 najmniejszych elementów tablic L[1..a+1] oraz R[1..b+1], w kolejności posortowanej. Tablice L i R zawierają łącznie a + b + 2 = r p + 3 elementy. Wszystkie elementy, poza wartownikami zostały skopiowane z powrotem do A. Algorytm jest poprawny. (Wykład 2) Sortowanie przez scalanie 12 marca / 17
46 Sortowanie przez scalanie - MERGE-SORT(A, p, r) Procedura sortuje elementy w podtablicy A[p...r]. (Wykład 2) Sortowanie przez scalanie 12 marca / 17
47 Sortowanie przez scalanie - MERGE-SORT(A, p, r) Procedura sortuje elementy w podtablicy A[p...r]. Jeżeli p r to podtablica jest posortowana - warunek zakończenia. (Wykład 2) Sortowanie przez scalanie 12 marca / 17
48 Sortowanie przez scalanie - MERGE-SORT(A, p, r) Procedura sortuje elementy w podtablicy A[p...r]. Jeżeli p r to podtablica jest posortowana - warunek zakończenia. W przeciwnym razie znajdujemy q, które dzieli A[p... r] na dwie podtablice: (Wykład 2) Sortowanie przez scalanie 12 marca / 17
49 Sortowanie przez scalanie - MERGE-SORT(A, p, r) Procedura sortuje elementy w podtablicy A[p...r]. Jeżeli p r to podtablica jest posortowana - warunek zakończenia. W przeciwnym razie znajdujemy q, które dzieli A[p... r] na dwie podtablice: a) A[p...q] zawierającą floor(n/2) elementów, (Wykład 2) Sortowanie przez scalanie 12 marca / 17
50 Sortowanie przez scalanie - MERGE-SORT(A, p, r) Procedura sortuje elementy w podtablicy A[p...r]. Jeżeli p r to podtablica jest posortowana - warunek zakończenia. W przeciwnym razie znajdujemy q, które dzieli A[p... r] na dwie podtablice: a) A[p...q] zawierającą floor(n/2) elementów, b) A[q+1...r] zawierającą ceil(n/2) elementów. (Wykład 2) Sortowanie przez scalanie 12 marca / 17
51 Sortowanie przez scalanie - MERGE-SORT(A, p, r) MERGE-SORT(A, p, r) 1: if p < r then( ) p + r 2: q floor 2 3: MERGE-SORT(A, p, q) 4: MERGE-SORT(A, q+1, r) 5: MERGE(A, p, q, r) (Wykład 2) Sortowanie przez scalanie 12 marca / 17
52 Sortowanie przez scalanie - MERGE-SORT(A, p, r) MERGE-SORT(A, p, r) 1: if p < r then( ) p + r 2: q floor 2 3: MERGE-SORT(A, p, q) 4: MERGE-SORT(A, q+1, r) 5: MERGE(A, p, q, r) Przykład (Wykład 2) Sortowanie przez scalanie 12 marca / 17
53 Sortowanie przez scalanie - drzewo wywołań rekurencyjnych MS(1,6) MS(1,3) MS(4,6) M(1,3,6) MS(1,2) MS(3,3) M(1,2,3) MS(4,5) MS(6,6) M(4,5,6) MS(1,1) MS(2,2) M(1,1,2) MS(4,4) MS(5,5) M(4,4,5) (Wykład 2) Sortowanie przez scalanie 12 marca / 17
54 Sortowanie przez scalanie - złożoność czasowa Sortowanie przez scalanie: (Wykład 2) Sortowanie przez scalanie 12 marca / 17
55 Sortowanie przez scalanie - złożoność czasowa Sortowanie przez scalanie: i) Dziel: Znajdujemy środek przedziału D(n) = Θ(1). (Wykład 2) Sortowanie przez scalanie 12 marca / 17
56 Sortowanie przez scalanie - złożoność czasowa Sortowanie przez scalanie: i) Dziel: Znajdujemy środek przedziału D(n) = Θ(1). ii) Zwyciężaj: Rozwiązujemy rekurencyjne dwa problemy, każdy o rozmiarze n 2, (Wykład 2) Sortowanie przez scalanie 12 marca / 17
57 Sortowanie przez scalanie - złożoność czasowa Sortowanie przez scalanie: i) Dziel: Znajdujemy środek przedziału D(n) = Θ(1). ii) Zwyciężaj: Rozwiązujemy rekurencyjne dwa problemy, każdy o rozmiarze n 2, czas działania: T (n) = 2T ( n 2 ), iii) Połącz: Procedura MERGE działa w czasie P(n) = Θ(n). (Wykład 2) Sortowanie przez scalanie 12 marca / 17
58 Sortowanie przez scalanie - złożoność czasowa Sortowanie przez scalanie: i) Dziel: Znajdujemy środek przedziału D(n) = Θ(1). ii) Zwyciężaj: Rozwiązujemy rekurencyjne dwa problemy, każdy o rozmiarze n 2, czas działania: T (n) = 2T ( n 2 ), iii) Połącz: Procedura MERGE działa w czasie P(n) = Θ(n). Złożoność obliczeniowa sortowanie przez scalanie - równanie rekurencyjne: { Θ(1), jeżeli n = 1, T (n) = ( n ) 2T + Θ(n), jeżeli n > 1. 2 (Wykład 2) Sortowanie przez scalanie 12 marca / 17
59 Sortowanie przez scalanie - złożoność czasowa Sortowanie przez scalanie: i) Dziel: Znajdujemy środek przedziału D(n) = Θ(1). ii) Zwyciężaj: Rozwiązujemy rekurencyjne dwa problemy, każdy o rozmiarze n 2, czas działania: T (n) = 2T ( n 2 ), iii) Połącz: Procedura MERGE działa w czasie P(n) = Θ(n). Złożoność obliczeniowa sortowanie przez scalanie - równanie rekurencyjne: { Θ(1), jeżeli n = 1, T (n) = ( n ) 2T + Θ(n), jeżeli n > 1. 2 Złożoność obliczeniowa sortowanie przez scalanie - korzystając z twierdzenia o rekurencji uniwersalnej: T (n) = Θ(n log 2 (n)). (Wykład 2) Sortowanie przez scalanie 12 marca / 17
60 Sortowanie przez scalanie Dell Precision 5820: Intel(R) Xeon(R) W-2155 CPU 3.30GHz T MS (n) - czas sortowania [sekundy] MERGE-SORT T MS (n)=58.07*10-10 *n*log 2 (n) [sekundy] INSERTION-SORT T IS (n)=8.65*10-14 *n 2 [godziny] T IS (n)=2.97*10-10 *n 2 [sekundy] T IS (n) - czas sortowania [godziny] 0 0 1x10 6 2x10 6 3x10 6 4x10 6 5x10 6 6x10 6 7x10 6 8x10 6 9x10 6 1x10 70 n - rozmiar tablicy (Wykład 2) Sortowanie przez scalanie 12 marca / 17
61 Sortowanie przez scalanie - podsumowanie Złożoność obliczeniowa: (Wykład 2) Sortowanie przez scalanie 12 marca / 17
62 Sortowanie przez scalanie - podsumowanie Złożoność obliczeniowa: T o (n) = Ω(n log(n)), (Wykład 2) Sortowanie przez scalanie 12 marca / 17
63 Sortowanie przez scalanie - podsumowanie Złożoność obliczeniowa: T o (n) = Ω(n log(n)), T sr (n) = Θ(n log(n)), (Wykład 2) Sortowanie przez scalanie 12 marca / 17
64 Sortowanie przez scalanie - podsumowanie Złożoność obliczeniowa: T o (n) = Ω(n log(n)), T sr (n) = Θ(n log(n)), T p (n) = O(n log(n)). (Wykład 2) Sortowanie przez scalanie 12 marca / 17
65 Sortowanie przez scalanie - podsumowanie Złożoność obliczeniowa: T o (n) = Ω(n log(n)), T sr (n) = Θ(n log(n)), T p (n) = O(n log(n)). Złożoność pamięciowa: nie działa w miejscu, wymaga O(n) dodatkowej pamięci, (Wykład 2) Sortowanie przez scalanie 12 marca / 17
66 Sortowanie przez scalanie - podsumowanie Złożoność obliczeniowa: T o (n) = Ω(n log(n)), T sr (n) = Θ(n log(n)), T p (n) = O(n log(n)). Złożoność pamięciowa: nie działa w miejscu, wymaga O(n) dodatkowej pamięci, Typowa implementacja: rekurencyjna. (Wykład 2) Sortowanie przez scalanie 12 marca / 17
67 Sortowanie przez scalanie - podsumowanie Złożoność obliczeniowa: T o (n) = Ω(n log(n)), T sr (n) = Θ(n log(n)), T p (n) = O(n log(n)). Złożoność pamięciowa: nie działa w miejscu, wymaga O(n) dodatkowej pamięci, Typowa implementacja: rekurencyjna. Stabilność sortowania: stabilne - nie zmiennia względnego porządku pomiędzy jednakowymi elementami tablicy. (Wykład 2) Sortowanie przez scalanie 12 marca / 17
68 Sortowanie przez scalanie - podsumowanie Złożoność obliczeniowa: T o (n) = Ω(n log(n)), T sr (n) = Θ(n log(n)), T p (n) = O(n log(n)). Złożoność pamięciowa: nie działa w miejscu, wymaga O(n) dodatkowej pamięci, Typowa implementacja: rekurencyjna. Stabilność sortowania: stabilne - nie zmiennia względnego porządku pomiędzy jednakowymi elementami tablicy. Łatwy do zrównoleglenia. (Wykład 2) Sortowanie przez scalanie 12 marca / 17
69 Sortowanie przez scalanie - podsumowanie Złożoność obliczeniowa: T o (n) = Ω(n log(n)), T sr (n) = Θ(n log(n)), T p (n) = O(n log(n)). Złożoność pamięciowa: nie działa w miejscu, wymaga O(n) dodatkowej pamięci, Typowa implementacja: rekurencyjna. Stabilność sortowania: stabilne - nie zmiennia względnego porządku pomiędzy jednakowymi elementami tablicy. Łatwy do zrównoleglenia. Timsort - stabilny algorytm sortowania będący hybrydą sortowania przez scalanie i przez wstawianie - standardowy algorytm sortowania dla języka Python, platformy Android, Google Chrome. (Wykład 2) Sortowanie przez scalanie 12 marca / 17
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
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
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
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.
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ą
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
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
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
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,
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
Sortowanie danych. Jolanta Bachan. Podstawy programowania
Sortowanie danych Podstawy programowania 2013-06-06 Sortowanie przez wybieranie 9 9 9 9 9 9 10 7 7 7 7 7 10 9 1 3 3 4 10 7 7 10 10 10 10 4 4 4 4 4 4 3 3 3 3 2 2 2 2 2 2 2 3 1 1 1 1 1 1 Gurbiel et al. 2000
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
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
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
[12] Metody projektowania algorytmów (dziel i rządź, programowanie dynamiczne i algorytmy zachłanne).
[12] Metody projektowania algorytmów (dziel i rządź, programowanie dynamiczne i algorytmy zachłanne). Tworzenie projektów informatycznych opiera się w dużej mierze na formułowaniu i implementacji algorytmów,
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
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
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
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
Problemy porządkowe zadania
Problemy porządkowe Problemy porządkowe zadania Problemy porządkowe to zbiór różnych zadań obliczeniowych związanych z porządkowaniem zbioru danych i wyszukiwaniem informacji na takim zbiorze. Rodzaje
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
Rekurencje. Jeśli algorytm zawiera wywołanie samego siebie, jego czas działania moŝe być określony rekurencją. Przykład: sortowanie przez scalanie:
Rekurencje Jeśli algorytm zawiera wywołanie samego siebie, jego czas działania moŝe być określony rekurencją. Przykład: sortowanie przez scalanie: T(n) = Θ(1) (dla n = 1) T(n) = 2 T(n/2) + Θ(n) (dla n
Laboratoria nr 1. Sortowanie
Laboratoria nr 1 Sortowanie 1. Sortowanie bąbelkowe (BbS) 2. Sortowanie przez wstawianie (IS) 3. Sortowanie przez wybieranie (SS) 4. Sortowanie przez zliczanie (CS) 5. Sortowanie kubełkowe (BS) 6. Sortowanie
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
Programowanie dynamiczne cz. 2
Programowanie dynamiczne cz. 2 Wykład 7 16 kwietnia 2019 (Wykład 7) Programowanie dynamiczne cz. 2 16 kwietnia 2019 1 / 19 Outline 1 Mnożenie ciągu macierzy Konstruowanie optymalnego rozwiązania 2 Podstawy
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:
Wstęp do programowania. Dziel i rządź. Piotr Chrząstowski-Wachtel
Wstęp do programowania Dziel i rządź Piotr Chrząstowski-Wachtel Divide et impera Starożytni Rzymianie znali tę zasadę Łatwiej się rządzi, jeśli poddani są podzieleni Nie chodziło im jednak bynajmniej o
Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 9. Karol Tarnowski A-1 p.
Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy Wykład 9 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan prezentacji Zasada dziel i zwyciężaj Przykłady znajdowanie
Techniki konstruowania algorytmów. Metoda dziel i zwyciężaj
Techniki konstruowania algorytmów Metoda dziel i zwyciężaj Technika dziel i zwyciężaj Aby rozwiązać problem techniką dziel i zwyciężaj musi on wykazywać własność podstruktury rozwiązanie problemu można
TEORETYCZNE PODSTAWY INFORMATYKI
1 TEORETYCZNE PODSTAWY INFORMATYKI WFAiS UJ, Informatyka Stosowana I rok studiów, I stopień Wykład 5 część I 2 Iteracja Rekurencja Indukcja Iteracja Rekurencja Indukcja Algorytmy sortujące Rozwiazywanie
REKURENCJA W JĘZYKU HASKELL. Autor: Walczak Michał
REKURENCJA W JĘZYKU HASKELL Autor: Walczak Michał CZYM JEST REKURENCJA? Rekurencja zwana rekursją, polega na wywołaniu przez funkcję samej siebie. Algorytmy rekurencyjne zastępują w pewnym sensie iteracje.
Podstawy algorytmiki i programowania - wykład 6 Sortowanie- algorytmy
1 Podstawy algorytmiki i programowania - wykład 6 Sortowanie- algorytmy Treści prezentowane w wykładzie zostały oparte o: S. Prata, Język C++. Szkoła programowania. Wydanie VI, Helion, 2012 www.cplusplus.com
Informatyka A. Algorytmy
Informatyka A Algorytmy Spis algorytmów 1 Algorytm Euklidesa....................................... 2 2 Rozszerzony algorytm Euklidesa................................ 2 3 Wyszukiwanie min w tablicy..................................
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
Struktury Danych i Złożoność Obliczeniowa
Struktury Danych i Złożoność Obliczeniowa Zajęcia 2 Algorytmy wyszukiwania, sortowania i selekcji Sortowanie bąbelkowe Jedna z prostszych metod sortowania, sortowanie w miejscu? Sortowanie bąbelkowe Pierwsze
Algorytmy i struktury danych Sortowanie IS/IO, WIMiIP
Algorytmy i struktury danych Sortowanie IS/IO, WIMiIP Danuta Szeliga AGH Kraków Spis treści I 1 Wstęp 2 Metody proste 3 Szybkie metody sortowania 4 Algorytmy hybrydowe Sortowanie hybrydowe Sortowanie introspektywne
Wykład 4: Iteracja, indukcja i rekurencja
Teoretyczne podstawy informatyki Wykład 4: Iteracja, indukcja i rekurencja Prof. dr hab. Elżbieta Richter-Wąs 1 Słowem wstępu Iteracja, indukcja i rekurencja to podstawowe zagadnienia pojawiające się przy
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
Sortowanie - wybrane algorytmy
Sortowanie - wybrane algorytmy Aleksandra Wilkowska Wydział Matematyki - Katedra Matematyki Stosowanej Politechika Wrocławska 2 maja 2018 1 / 39 Plan prezentacji Złożoność obliczeniowa Sortowanie bąbelkowe
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
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ę
Programowanie dynamiczne i algorytmy zachłanne
Programowanie dynamiczne i algorytmy zachłanne Tomasz Głowacki tglowacki@cs.put.poznan.pl Zajęcia finansowane z projektu "Rozwój i doskonalenie kształcenia na Politechnice Poznańskiej w zakresie technologii
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
Sortowanie przez wstawianie Insertion Sort
Sortowanie przez wstawianie Insertion Sort Algorytm sortowania przez wstawianie można porównać do sposobu układania kart pobieranych z talii. Najpierw bierzemy pierwszą kartę. Następnie pobieramy kolejne,
wstęp do informatyki i programowania część testowa (25 pyt. / 60 min.)
egzamin podstawowy 7 lutego 2017 r. wstęp do informatyki i programowania część testowa (25 pyt. / 60 min.) Instytut Informatyki Uniwersytetu Wrocławskiego Paweł Rzechonek imię, nazwisko i nr indeksu:..............................................................
Sortowanie w czasie liniowym
Sortowanie w czasie liniowym 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 Po co sortować? Podstawowy problem
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
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
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)
Laboratoria nr 1. Sortowanie
Laboratoria nr 1 Sortowanie 1. Sortowanie bąbelkowe (BbS) 2. Sortowanie przez wstawianie (IS) 3. Sortowanie przez wybieranie (SS) 4. Sortowanie przez zliczanie (CS) 5. Sortowanie kubełkowe (BS) 6. Sortowanie
Wstęp do Programowania potok funkcyjny
Wstęp do Programowania potok funkcyjny Marcin Kubica 2010/2011 Outline Zasada dziel i rządź i analiza złożoności 1 Zasada dziel i rządź i analiza złożoności Definition : Zbiór wartości: nieograniczonej
Twój wynik: 4 punktów na 6 możliwych do uzyskania (66,67 %).
Powrót Twój wynik: 4 punktów na 6 możliwych do uzyskania (6667 %). Nr Opcja Punkty Poprawna Odpowiedź Rozważmy algorytm AVLSequence postaci: 1 Niech drzewo będzie rezultatem działania algorytmu AVLSequence
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
Algorytmy i str ruktury danych. Metody algorytmiczne. Bartman Jacek
Algorytmy i str ruktury danych Metody algorytmiczne Bartman Jacek jbartman@univ.rzeszow.pl Metody algorytmiczne - wprowadzenia Znamy strukturę algorytmów Trudność tkwi natomiast w podaniu metod służących
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łóż
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)
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
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
Sortowanie. LABORKA Piotr Ciskowski
Sortowanie LABORKA Piotr Ciskowski main Zaimplementuj metody sortowania przedstawione w następnych zadaniach Dla każdej metody osobna funkcja Nagłówek funkcji wg uznania ale wszystkie razem powinny być
1. Analiza algorytmów przypomnienie
1. Analiza algorytmów przypomnienie T.H. Cormen, C.E. Leiserson, R.L. Rivest, C. Stein Wprowadzenie do algorytmów, rozdziały 1-4 Wydawnictwa naukowo-techniczne (2004) Jak mierzyć efektywność algorytmu?
Algorytmy sortujące 1
Algorytmy sortujące 1 Sortowanie Jeden z najczęściej występujących, rozwiązywanych i stosowanych problemów. Ułożyć elementy listy (przyjmujemy: tablicy) w rosnącym porządku Sortowanie może być oparte na
Wstęp do Programowania potok funkcyjny
i programowanie dynamiczne Wstęp do Programowania potok funkcyjny Marcin Kubica 2010/2011 i programowanie dynamiczne Outline 1 i programowanie dynamiczne i programowanie dynamiczne Rekurencyjny zapis rozwiązania
Teoretyczne podstawy informatyki
Teoretyczne podstawy informatyki Wykład 4: Iteracja, indukcja i rekurencja http://kiwi.if.uj.edu.pl/~erichter/dydaktyka2010/tpi-2010 Prof. dr hab. Elżbieta Richter-Wąs 1 Słowem wstępu Iteracja, indukcja
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ł
Programowanie dynamiczne (optymalizacja dynamiczna).
Programowanie dynamiczne (optymalizacja dynamiczna). W wielu przypadkach zadania, których złożoność wynikająca z pełnego przeglądu jest duża (zwykle wyk ładnicza) można rozwiązać w czasie wielomianowym
Rekurencja. Przykład. Rozważmy ciąg
Rekurencja Definicje rekurencyjne Definicja: Mówimy, iż ciąg jest zdefiniowany rekurencyjnie, jeżeli: (P) Określony jest pewien skończony zbiór wyrazów tego ciągu, zwykle jest to pierwszy wyraz tego ciągu
Wstęp do programowania
Wstęp do programowania Algorytmy na tablicach Paweł Daniluk Wydział Fizyki Jesień 2013 P. Daniluk (Wydział Fizyki) WP w. III Jesień 2013 1 / 23 Dwadzieścia pytań Zasady 1 Osoba 1 wymyśla hasło z ustalonej
TEORETYCZNE PODSTAWY INFORMATYKI
1 TEORETYCZNE PODSTAWY INFORMATYKI WFAiS UJ, Informatyka Stosowana I rok studiów, I stopień Wykład 2 2 Problemy algorytmiczne Klasy problemów algorytmicznych Liczby Fibonacciego Przeszukiwanie tablic Największy
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
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;
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
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
prowadzący dr ADRIAN HORZYK /~horzyk e-mail: horzyk@agh tel.: 012-617 Konsultacje paw. D-13/325
PODSTAWY INFORMATYKI WYKŁAD 8. prowadzący dr ADRIAN HORZYK http://home home.agh.edu.pl/~ /~horzyk e-mail: horzyk@agh agh.edu.pl tel.: 012-617 617-4319 Konsultacje paw. D-13/325 DRZEWA Drzewa to rodzaj
Algorytmy i Struktury Danych.
Algorytmy i Struktury Danych. Problem Sortowania. Metoda Dziel i zwyciężaj - cd. dr hab. 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
PODSTAWY INFORMATYKI wykład 5.
PODSTAWY INFORMATYKI wykład 5. Adrian Horzyk Web: http://home.agh.edu.pl/~horzyk/ E-mail: horzyk@agh.edu.pl Google: Adrian Horzyk Gabinet: paw. D13 p. 325 Akademia Górniczo-Hutnicza w Krakowie WEAIiE,
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
Rekurencja/rekursja. Iluzja istnienia wielu kopii tego samego algorytmu (aktywacji) Tylko jedna aktywacja jest aktywna w danej chwili
rekurencja 1 Rekurencja/rekursja Alternatywny dla pętli sposób powtarzania pewnych czynności; kolejny etap podzadanie poprzedniego Rekursja może być zamieniona na iteracje Cechy rekurencji Rozłożenie problemu
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
Programowanie proceduralne INP001210WL rok akademicki 2017/18 semestr letni. Wykład 3. Karol Tarnowski A-1 p.
Programowanie proceduralne INP001210WL rok akademicki 2017/18 semestr letni Wykład 3 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan prezentacji (1) Co to jest algorytm? Zapis algorytmów Algorytmy
WSTĘP DO INFORMATYKI WPROWADZENIE DO ALGORYTMIKI
Akademia Górniczo-Hutnicza Wydział Elektrotechniki, Automatyki, Informatyki i Inżynierii Biomedycznej WSTĘP DO INFORMATYKI Adrian Horzyk WPROWADZENIE DO ALGORYTMIKI www.agh.edu.pl ALGORYTMIKA Algorytmika
Uwaga: Funkcja zamień(a[j],a[j+s]) zamienia miejscami wartości A[j] oraz A[j+s].
Zadanie 1. Wiązka zadań Od szczegółu do ogółu Rozważmy następujący algorytm: Dane: Algorytm 1: k liczba naturalna, A[1...2 k ] tablica liczb całkowitych. n 1 dla i=1,2,,k wykonuj n 2n s 1 dopóki s
Sylabus modułu: Matematyczne podstawy informatyki (kod modułu:03-mo2n-12-mpln)
Uniwersytet Śląski w Katowicach str. 1 Kierunek i poziom studiów: Matematyka, studia II stopnia, rok 1 Sylabus modułu: Matematyczne podstawy informatyki (kod modułu:03-mo2n-12-mpln) 1. Informacje ogólne
koordynator modułu dr hab. Michał Baczyński rok akademicki 2012/2013
Uniwersytet Śląski w Katowicach str. 1 Kierunek i poziom studiów: Matematyka, studia II stopnia, rok 1 Sylabus modułu: Matematyczne podstawy informatyki (03-MO2S-12-MPIn) 1. Informacje ogólne koordynator
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
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
5. Podstawowe algorytmy i ich cechy.
23 5. Podstawowe algorytmy i ich cechy. 5.1. Wyszukiwanie liniowe i binarne 5.1.1. Wyszukiwanie liniowe Wyszukiwanie jest jedną z najczęściej wykonywanych operacji na strukturach danych i dotyczy wszystkich,
Algorytmy i struktury danych
Algorytmy i struktury danych ĆWICZENIE 2 - WYBRANE ZŁOŻONE STRUKTURY DANYCH - (12.3.212) Prowadząca: dr hab. inż. Małgorzata Sterna Informatyka i3, poniedziałek godz. 11:45 Adam Matuszewski, nr 1655 Oliver
EGZAMIN MATURALNY W ROKU SZKOLNYM 2017/2018 INFORMATYKA
EGZAMIN MATURALNY W ROKU SZKOLNYM 2017/2018 INFORMATYKA POZIOM ROZSZERZONY FORMUŁA OD 2015 ( NOWA MATURA ) ZASADY OCENIANIA ROZWIĄZAŃ ZADAŃ ARKUSZ MIN-R1,R2 MAJ 2018 Uwaga: Akceptowane są wszystkie odpowiedzi
Kolejka priorytetowa. Często rozważa się kolejki priorytetowe, w których poszukuje się elementu minimalnego zamiast maksymalnego.
Kolejki Kolejka priorytetowa Kolejka priorytetowa (ang. priority queue) to struktura danych pozwalająca efektywnie realizować następujące operacje na zbiorze dynamicznym, którego elementy pochodzą z określonego
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ę
Algorytmy. Programowanie Proceduralne 1
Algorytmy Programowanie Proceduralne 1 Przepis Warzenie piwa Brunświckiego Programowanie Proceduralne 2 Przepis Warzenie piwa Brunświckiego składniki (dane wejściowe): woda, słód, itd. wynik: beczka piwa
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
Klasa 2 INFORMATYKA. dla szkół ponadgimnazjalnych zakres rozszerzony. Założone osiągnięcia ucznia wymagania edukacyjne na. poszczególne oceny
Klasa 2 INFORMATYKA dla szkół ponadgimnazjalnych zakres rozszerzony Założone osiągnięcia ucznia wymagania edukacyjne na poszczególne oceny Algorytmy 2 3 4 5 6 Wie, co to jest algorytm. Wymienia przykłady
Wykład 5: Iteracja, indukcja i rekurencja Sortowanie
Teoretyczne podstawy informatyki Wykład 5: Iteracja, indukcja i rekurencja Sortowanie Prof. dr hab. Elżbieta Richter-Wąs 1 30.10.2012 Słowem wstępu Iteracja, indukcja i rekurencja to podstawowe zagadnienia
Sortowanie bąbelkowe
1/98 Sortowanie bąbelkowe (Bubble sort) prosty i nieefektywny algorytm sortowania wielokrotnie przeglądamy listę elementów, porównując dwa sąsiadujące i zamieniając je miejscami, jeśli znajdują się w złym
Algorytmy i złożoności. Wykład 3. Listy jednokierunkowe
Algorytmy i złożoności Wykład 3. Listy jednokierunkowe Wstęp. Lista jednokierunkowa jest strukturą pozwalającą na pamiętanie danych w postaci uporzadkowanej, a także na bardzo szybkie wstawianie i usuwanie
Jeszcze o algorytmach
Jeszcze o algorytmach Przykłady różnych, podstawowych algorytmów 11.01.2018 M. Rad Plan Powtórka Znajdowanie najmniejszego elementu Segregowanie Poszukiwanie przez połowienie Wstawianie Inne algorytmy
Wykład 1_2 Algorytmy sortowania tablic Sortowanie bąbelkowe
I. Struktury sterujące.bezpośrednie następstwo (A,B-czynności) Wykład _2 Algorytmy sortowania tablic Sortowanie bąbelkowe Elementy języka stosowanego do opisu algorytmu Elementy Poziom koncepcji Poziom
Rekurencja. Rekurencja zwana także rekursją jest jedną z najważniejszych metod konstruowania rozwiązań i algorytmów.
Rekurencja Rekurencja zwana także rekursją jest jedną z najważniejszych metod konstruowania rozwiązań i algorytmów. Zgodnie ze znaczeniem informatycznym algorytm rekurencyjny to taki który korzysta z samego
Wyszukiwanie. Wyszukiwanie binarne
Wyszukiwanie Wejście: posortowana, n-elementowa tablica liczbowa T oraz liczba p. Wyjście: liczba naturalna, określająca pozycję elementu p w tablicy T, bądź 1, jeŝeli element w tablicy nie występuje.