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
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ół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ół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ół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ół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ół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ół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ół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ół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ółowoSortowanie 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
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ół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ół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ółowo[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,
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ół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ół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ół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ółowoProblemy 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
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ółowoRekurencje. 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
Bardziej szczegółowoLaboratoria 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
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ółowoProgramowanie 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
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ółowoWstę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
Bardziej szczegółowoWstę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
Bardziej szczegółowoTechniki 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
Bardziej szczegółowoTEORETYCZNE 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
Bardziej szczegółowoREKURENCJA 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.
Bardziej szczegółowoPodstawy 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
Bardziej szczegółowoInformatyka A. Algorytmy
Informatyka A Algorytmy Spis algorytmów 1 Algorytm Euklidesa....................................... 2 2 Rozszerzony algorytm Euklidesa................................ 2 3 Wyszukiwanie min w tablicy..................................
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ółowoStruktury 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
Bardziej szczegółowoAlgorytmy 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
Bardziej szczegółowoWykł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
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ółowoSortowanie - 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
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ół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ółowoProgramowanie 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
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ółowoSortowanie 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,
Bardziej szczegółowowstę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:..............................................................
Bardziej szczegółowoSortowanie 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
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ół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ół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ółowoLaboratoria 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
Bardziej szczegółowoWstę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
Bardziej szczegółowoTwó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
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ółowoAlgorytmy 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
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ół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ół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ół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ółowoSortowanie. 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ć
Bardziej szczegółowo1. 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?
Bardziej szczegółowoAlgorytmy 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
Bardziej szczegółowoWstę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
Bardziej szczegółowoTeoretyczne 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
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ółowoProgramowanie 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
Bardziej szczegółowoRekurencja. 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
Bardziej szczegółowoWstę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
Bardziej szczegółowoTEORETYCZNE 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
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ół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ół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ółowoprowadzą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
Bardziej szczegółowoAlgorytmy 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
Bardziej szczegółowoPODSTAWY 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,
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ółowoRekurencja/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
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ółowoProgramowanie 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
Bardziej szczegółowoWSTĘ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
Bardziej szczegółowoUwaga: 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
Bardziej szczegółowoSylabus 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
Bardziej szczegółowokoordynator 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
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ół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ółowo5. 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,
Bardziej szczegółowoAlgorytmy 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
Bardziej szczegółowoEGZAMIN 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
Bardziej szczegółowoKolejka 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
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ółowoAlgorytmy. 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
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ółowoKlasa 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
Bardziej szczegółowoWykł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
Bardziej szczegółowoSortowanie 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
Bardziej szczegółowoAlgorytmy 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
Bardziej szczegółowoJeszcze 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
Bardziej szczegółowoWykł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
Bardziej szczegółowoRekurencja. 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
Bardziej szczegółowoWyszukiwanie. 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.
Bardziej szczegółowo