Algorytmy i Struktury Danych.

Save this PDF as:
 WORD  PNG  TXT  JPG

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

Download "Algorytmy i Struktury Danych."

Transkrypt

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

2 Metoda dziel i zwyciężaj Idea Metoda dziel i zwyciężaj (ang. divide and conquer) jest metoda projektowania algorytmów, w której dany problem jest dzielony na kilka mniejszych podproblemów podobnych do poczatkowego problemu. Problemy te sa rozwiazywane rekurencyjnie, a następnie rozwiazania wszystkich podproblemów sa łaczone w celu utworzenia rozwiazania całego problemu. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 2 / 47

3 Metoda dziel i zwyciężaj W podejściu dziel i zwyciężaj każdy poziom rekursji składa się z następujacych trzech etapów: Dziel: Dzielimy problem na podproblemy. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 3 / 47

4 Metoda dziel i zwyciężaj W podejściu dziel i zwyciężaj każdy poziom rekursji składa się z następujacych trzech etapów: Dziel: Dzielimy problem na podproblemy. Zwyciężaj: Rozwiazujemy podproblemy rekurencyjnie, chyba że sa one małego rozmiaru i już nie wymagaja zastosowania rekursji - używamy wtedy bezpośrednich metod. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 3 / 47

5 Metoda dziel i zwyciężaj W podejściu dziel i zwyciężaj każdy poziom rekursji składa się z następujacych trzech etapów: Dziel: Dzielimy problem na podproblemy. Zwyciężaj: Rozwiazujemy podproblemy rekurencyjnie, chyba że sa one małego rozmiaru i już nie wymagaja zastosowania rekursji - używamy wtedy bezpośrednich metod. Połacz: Łaczymy rozwiazania podproblemów, aby otrzymać rozwiazanie całego problemu. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 3 / 47

6 Dziel i Zwyciężaj - przykłady zastosowań Znajdowanie największego i najmniejszego elementu zbioru. Wyszukiwanie binarne Potęgowanie liczb Sortowanie szybkie Sortowanie przez scalanie Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 4 / 47

7 Element minimalny i maksymalny zbioru Definicja problemu: Dane: n - liczba elementów zbioru a 1, a 2, a 3,...,a n - ciag elementów Szukane: Elementy największy i najmniejszy zbioru. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 5 / 47

8 Element minimalny i maksymalny zbioru Require: tablica A o rozmiarze n {A=[0,...,n-1]} Algorytm: MIN 1: min = 0; 2: for all i = 1 to n do 3: if A[i] < A[min] then 4: min = i; 5: end if 6: i = i + 1; 7: end for 8: return min; Algorytm: MAX 1: max = 0; 2: for all i = 1 to n do 3: if A[i] > A[max] then 4: max = i; 5: end if 6: i = i + 1; 7: end for 8: return max; Naiwne rozwiazanie problemu: Najpierw wyszukujemy element największy metoda bezpośrednia, a potem element najmniejszy. Złożoność obliczeniowa: O(n) Algorytm MAX : n - 1 operacji porównania Algorytm MIN : n - 1 operacji porównania Razem MAX i MIN : 2n - 2 operacji porównania Przykład: porównań Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 6 / 47

9 Element minimalny i maksymalny zbioru Można spróbować usprawnić rozwiazanie naiwne, znajdujac najpierw kandydatów na Min i Max. Takie wyszukanie realizowane jest poprzez porównywanie elementów parami. Następnie stosowany jest algorytm MIN, a potem Max (lub odwrotnie), na odpowiednim zbiorze kandydatów. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 7 / 47

10 Element minimalny i maksymalny zbioru Przykład: Zbiór wejściowy: 2, 5, 3, 1, 8, 9, 1, 5, 4 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 8 / 47

11 Element minimalny i maksymalny zbioru Przykład: Zbiór wejściowy: 2, 5, 3, 1, 8, 9, 1, 5, 4 Porównywanie parami: 2 < 5, 3 < 1, 8 < 9, 1 < 5, 4 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 8 / 47

12 Element minimalny i maksymalny zbioru Przykład: Zbiór wejściowy: 2, 5, 3, 1, 8, 9, 1, 5, 4 Porównywanie parami: 2 < 5, 3 < 1, 8 < 9, 1 < 5, 4 Kandydaci na MIN: 2, 1, 8, 1, 4. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 8 / 47

13 Element minimalny i maksymalny zbioru Przykład: Zbiór wejściowy: 2, 5, 3, 1, 8, 9, 1, 5, 4 Porównywanie parami: 2 < 5, 3 < 1, 8 < 9, 1 < 5, 4 Kandydaci na MIN: 2, 1, 8, 1, 4. Na tym zbiorze stosowany jest algorytm MIN. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 8 / 47

14 Element minimalny i maksymalny zbioru Przykład: Zbiór wejściowy: 2, 5, 3, 1, 8, 9, 1, 5, 4 Porównywanie parami: 2 < 5, 3 < 1, 8 < 9, 1 < 5, 4 Kandydaci na MIN: 2, 1, 8, 1, 4. Na tym zbiorze stosowany jest algorytm MIN. Kandydaci na MAX: 5, 3, 9, 5, 4. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 8 / 47

15 Element minimalny i maksymalny zbioru Przykład: Zbiór wejściowy: 2, 5, 3, 1, 8, 9, 1, 5, 4 Porównywanie parami: 2 < 5, 3 < 1, 8 < 9, 1 < 5, 4 Kandydaci na MIN: 2, 1, 8, 1, 4. Na tym zbiorze stosowany jest algorytm MIN. Kandydaci na MAX: 5, 3, 9, 5, 4. Na tym zbiorze stosowany jest algorytm MAX. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 8 / 47

16 Element minimalny i maksymalny zbioru Przykład: Zbiór wejściowy: 2, 5, 3, 1, 8, 9, 1, 5, 4 Porównywanie parami: 2 < 5, 3 < 1, 8 < 9, 1 < 5, 4 Kandydaci na MIN: 2, 1, 8, 1, 4. Na tym zbiorze stosowany jest algorytm MIN. Kandydaci na MAX: 5, 3, 9, 5, 4. Na tym zbiorze stosowany jest algorytm MAX. Ostatni - nieparzysty element został dodany do obu zbiorów. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 8 / 47

17 Element minimalny i maksymalny zbioru Przykład: Zbiór wejściowy: 2, 5, 3, 1, 8, 9, 1, 5, 4 Porównywanie parami: 2 < 5, 3 < 1, 8 < 9, 1 < 5, 4 Kandydaci na MIN: 2, 1, 8, 1, 4. Na tym zbiorze stosowany jest algorytm MIN. Kandydaci na MAX: 5, 3, 9, 5, 4. Na tym zbiorze stosowany jest algorytm MAX. Ostatni - nieparzysty element został dodany do obu zbiorów. Wykorzystujemy tu własność podziału mówiac a, iż w każdym zbiorze skończonym zawsze znajduje się element największy i element najmniejszy. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 8 / 47

18 Element minimalny i maksymalny zbioru Szacowanie: Przy rozdzielaniu elementów wykonano 4 porównania. Algorytm MIN na zbiorze {2, 1, 8, 1, 4} wykonał 4 porównania i zwrócił wartość 1. Algorytm MAX również na zbiorze {5, 3, 9, 5, 4} wykonał 4 porównania i zwrócił wartość 9. W sumie wykonano = 12 porównań, co oznacza 25% wzrost wydajności w porównaniu z podejściem naiwnym (tam potrzebnych było 16 porównań)! Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 9 / 47

19 Element minimalny i maksymalny zbioru Require: tablica A o rozmiarze n {A = [0,...,n 1]} Algorytm: MIN-MAX 1: min = 0; max = 0; 2: for i = 0 to n 2 do 3: if A[i] < A[i + 1] then 4: if A[i] < A[min] then 5: min = i; 6: end if 7: if A[i + 1] > A[max] then 8: max = i + 1; 9: end if 10: else 11: if A[i + 1] < A[min] then 12: min = i + 1; 13: end if 14: if A[i] > A[max] then 15: max = i; 16: end if 17: end if 18: i = i + 2; 19: end for 20: if n is odd then 21: if A[n 1] < A[min] then 22: min = n 1; 23: end if 24: if A[n 1] > A[max] then 25: max = n 1; 26: end if 27: end if 28: return A[min] and A[max]; Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 10 / 47

20 Wyszukiwanie binarne Wyszukiwanie binarne pozwala na szybkie wyszukiwanie wartości w posortowanych zbiorach (np. tablicy). Skuteczność wyszukiwania binarnego wynika z tego, że zamiast przegladać wszystkie elementy posortowanego zbioru po kolei, wykorzystujemy informację o tym, że jest on uporzadkowany. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 11 / 47

21 Wyszukiwanie binarne Wyszukiwanie binarne pozwala na szybkie wyszukiwanie wartości w posortowanych zbiorach (np. tablicy). Skuteczność wyszukiwania binarnego wynika z tego, że zamiast przegladać wszystkie elementy posortowanego zbioru po kolei, wykorzystujemy informację o tym, że jest on uporzadkowany. Algorytm: Dana jest tablica A oraz poszukiwany element key. Sprawdź środkowy element tablicy. Jeśli jest równy key, to koniec. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 11 / 47

22 Wyszukiwanie binarne Wyszukiwanie binarne pozwala na szybkie wyszukiwanie wartości w posortowanych zbiorach (np. tablicy). Skuteczność wyszukiwania binarnego wynika z tego, że zamiast przegladać wszystkie elementy posortowanego zbioru po kolei, wykorzystujemy informację o tym, że jest on uporzadkowany. Algorytm: Dana jest tablica A oraz poszukiwany element key. Sprawdź środkowy element tablicy. Jeśli jest równy key, to koniec. Jeśli środkowy element jest większy niż key, to poszukiwany element jeśli jest w tablicy, to jest w jej lewej części. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 11 / 47

23 Wyszukiwanie binarne Wyszukiwanie binarne pozwala na szybkie wyszukiwanie wartości w posortowanych zbiorach (np. tablicy). Skuteczność wyszukiwania binarnego wynika z tego, że zamiast przegladać wszystkie elementy posortowanego zbioru po kolei, wykorzystujemy informację o tym, że jest on uporzadkowany. Algorytm: Dana jest tablica A oraz poszukiwany element key. Sprawdź środkowy element tablicy. Jeśli jest równy key, to koniec. Jeśli środkowy element jest większy niż key, to poszukiwany element jeśli jest w tablicy, to jest w jej lewej części. Jeśli środkowy element jest mniejszy niż key, to poszukiwany element jeśli jest w tablicy, to jest w jej prawej części. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 11 / 47

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

25 Twierdzenie 1 Cormen T.H., Leiserson Ch.E., Rivest R.L. Wprowadzenie do algorytmów, Roz. 4 (str. 73) T(n) = a T(n/b)+f(n) n - rozmiar problemu; rozmiar danych wejściowych. a - liczba podproblemów w rekurencji. n/b - rozmiar każdego podproblemu; w zasadzie zakłada się, że wszystkie podproblemy sa tego samego rozmiaru. f(n) - koszt operacji poza rekurencyjnym wywołaniem zawierajacy koszt podziału probelmu na podproblemy i koszt operacji scalenia rozwiazań. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 13 / 47

26 Twierdzenie 1 Cormen T.H., Leiserson Ch.E., Rivest R.L. Wprowadzenie do algorytmów, Roz. 4 (str. 73) T(n) = a T(n/b)+f(n) n - rozmiar problemu; rozmiar danych wejściowych. a - liczba podproblemów w rekurencji. n/b - rozmiar każdego podproblemu; w zasadzie zakłada się, że wszystkie podproblemy sa tego samego rozmiaru. f(n) - koszt operacji poza rekurencyjnym wywołaniem zawierajacy koszt podziału probelmu na podproblemy i koszt operacji scalenia rozwiazań. A. f(n) = O(n logb(a) ǫ ) implikuje, że T(n) = Θ(n logb(a) ) dla pewnegoǫ > 0 B. f(n) = Θ(n logb(a) log2 k (n)) implikuje, że T(n) = Θ(n logb(a) log k+1 2 (n)) dla pewnego k 0. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 13 / 47

27 Wyszukiwanie binarne - złożoność n log b(a) = n log 2(1) = n 0 = 1 (Przypadek2) T(n) = Θ(log 2 (n)) Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 14 / 47

28 Wyszukiwanie binarne - Koszt algorytmu Złożoność pesymistyczna: Operacja dominujaca: porównywanie elementów. Koszt: T(n) = O(log 2 (n)) Złożoność optymistyczna: Operacja dominujaca: porównywanie elementów. Koszt: T(n) = O(log 2 (n)). Złożoność pamięciowa: O(1). Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 15 / 47

29 Wyszukiwanie binarne - implementacja i n t binsearch ( i n t a [ ], i n t n, i n t key ) { i n t l e f t = 0, r i g h t = n 1; while ( l e f t <= r i g h t ) { i n t c u r r = ( l e f t + r i g h t ) / 2; i f ( key == a [ c u r r ] ) { r e t u r n c u r r ; } else i f ( key < a [ c u r r ] ) { r i g h t = c u r r 1; } else { l e f t = c u r r + 1; } } r e t u r n ( 1); } Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 16 / 47

30 Wyszukiwanie binarne Uwagi o przeszukiwaniu liniowym i binarnym Niech n= Algorytm wyszukiwania liniowego czyli przegladaj acy cała tablicę element po elemencie wykona porównań. Algorytm przeszukiwania binarnego wykona tylko log 2 (20000) = 14 porównań. Algorytm wyszukiwania binarnego wymaga jednak przekazania posortowanych danych. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 17 / 47

31 Potęgowanie liczby Problem: Oblicz a n, dla n N. Algorytm naiwny: a n = a a... a }{{} n Złożoność: Θ(n) Algorytm dziel i zwyciężaj: { a n a n/2 a = n/2, gdy n jest parzyste a n 1/2 a n 1/2 a, gdy n jest nieparzyste Złożoność: T(n) = T(n/2)+Θ(1) θ(log 2 (n)) Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 18 / 47

32 Sortowanie szybkie Algorytm sortowania szybkiego (ang. quick sort) opracowany przez C.A.R. Hoarea w Algorytm QuickSortjest typowym algorytmem rekurencyjnym, pracujacym w oparciu o technikę dziel i zwyciężaj. Algorytm zakłada dekompozycję tablicy na mniejsze podtablice, które łatwiej jest posortować. Najczęściej stosowany algorytm sortujacy w praktyce. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 19 / 47

33 Sortowanie szybkie Idea Rozdzielić elementy danego ciagu na dwie części względem pewnego ustalonego elementu, tzw. elementu osiowego (ang. pivot), tak aby na lewo od niego znajdowały się elementy mniejsze, a na prawo elementy większe. x xx x Rekurencyjnie posortować elementy na lewo i na prawo od elementu osiowego. Połaczyć posortowane podtablice. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 20 / 47

34 Sortowanie szybkie - przykład Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 21 / 47

35 Sortowanie szybkie W celu podzielenia tablicy konieczne jest wykonanie dwóch operacji: znalezienie elementu osiowego i podzieleniu tablicy na dwie podtablice. przejrzeniu tablicy w celu umieszczenia jej elementów we właściwych podtablicach. Wybór dobrego elementu osiowego nie jest zadaniem łatwym (obie podtablice powinny mieć zbliżona wielkość). Najczęściej stosowane strategie wyboru elementu osiowego: wybranie pierwszego elementu tablicy. wybranie elementu znajdujacego się pośrodku tablicy. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 22 / 47

36 Sortowanie szybkie - procedura podziału Require: tablica A[p..q] 1: PARTITION(A, p, q) 2: x = A[p]; {element osiowy = A[p]} 3: i = p; 4: for all j = p+1 to q do 5: if A[j] x then 6: i = i + 1; 7: zamien(a[i],a[j]); 8: end if 9: end for 10: zamien (A[p], A[i]); 11: return i Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 23 / 47

37 Sortowanie szybkie - procedura podziału, przykład i j Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 24 / 47

38 Sortowanie szybkie - procedura podziału, przykład i j i j Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 24 / 47

39 Sortowanie szybkie - procedura podziału, przykład i j i j i j Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 24 / 47

40 Sortowanie szybkie - procedura podziału, przykład i j i j i j i j Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 24 / 47

41 Sortowanie szybkie - procedura podziału, przykład i j i j i j i j i j Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 24 / 47

42 Sortowanie szybkie - procedura podziału, przykład i j Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 25 / 47

43 Sortowanie szybkie - procedura podziału, przykład i j i j Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 25 / 47

44 Sortowanie szybkie - procedura podziału, przykład i j i j i j Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 25 / 47

45 Sortowanie szybkie - procedura podziału, przykład i j i j i j i j Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 25 / 47

46 Sortowanie szybkie - procedura podziału, przykład i j i j i j i j i j Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 25 / 47

47 Sortowanie szybkie - procedura podziału, przykład i j Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 26 / 47

48 Sortowanie szybkie - procedura podziału, przykład i j i Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 26 / 47

49 Sortowanie szybkie - algorytm QuickSort (A, p, r) Jeśli p = r, to koniec Jeśli p < r, to q = PARTITION(A, p, r). QuickSort(A, p, q-1). QuickSort(A, q+1, r). Wywołanie: QuickSort(A, 1, n) Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 27 / 47

50 Sortowanie szybkie - Złożoność pesymistyczna: Najgorszy przpadek dla algorytmu sortowania szybkiego to ciag danych już uporzadkowanych w kolejności odwrotnej do pożadanej. Jeśli Split jako medianę wybiera zawsze pierwszy element, to w wyniku rozdzielenia, jedna część młodsza będzie pusta, a druga starsza będzie zawierała o jeden element mniej niż w poprzednim kroku. Koszt Operacji rozdzielania dla n elementowego ciagu wynosi n 1 porównań. T(n) = T(n 1)+cn T(n 1) = T(n 2)+c(n 1) T(n 2) = T(n 3)+c(n 2). T(2) = T(1)+c(2) T(n) = T(1)+c n i=2 i = O(n2 ) Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 28 / 47

51 Sortowanie szybkie - Złożoność optymistyczna: Podział jest zawsze perfekcyjnie zbalansowany. Element osiowy jest zawsze po środku. T(n) QuickSort (A, p, r) Θ(1) Jeśli p = r, to koniec Jeśli p < r, to Θ(n) (1) q = PARTITION(A, p, r). 2 T(n/2) (2) rekurencyjnie posortuj A[p..q 1] i A[q + 1..r]. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 29 / 47

52 Sortowanie szybkie - Złożoność optymistyczna: Podział jest zawsze perfekcyjnie zbalansowany. Element osiowy jest zawsze po środku. T(n) QuickSort (A, p, r) Θ(1) Jeśli p = r, to koniec Jeśli p < r, to Θ(n) (1) q = PARTITION(A, p, r). 2 T(n/2) (2) rekurencyjnie posortuj A[p..q 1] i A[q + 1..r]. { Θ(1) n = 1 T(n) = 2 T(n/2)+Θ(n) n > 1 Na podstawie Twierdzenia 1 można pokazać, że powyższe równanie rekurencyjne ma następujace rozwiazanie: Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 29 / 47

53 Sortowanie szybkie - Złożoność optymistyczna: Podział jest zawsze perfekcyjnie zbalansowany. Element osiowy jest zawsze po środku. T(n) QuickSort (A, p, r) Θ(1) Jeśli p = r, to koniec Jeśli p < r, to Θ(n) (1) q = PARTITION(A, p, r). 2 T(n/2) (2) rekurencyjnie posortuj A[p..q 1] i A[q + 1..r]. { Θ(1) n = 1 T(n) = 2 T(n/2)+Θ(n) n > 1 Na podstawie Twierdzenia 1 można pokazać, że powyższe równanie rekurencyjne ma następujace rozwiazanie: n log b(a) = n log 2(2) = n 1 = n (Przypadek2) T(n) = Θ(n log 2 (n)) Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 29 / 47

54 Sortowanie szybkie - Koszt algorytmu Złożoność pesymistyczna: Operacja dominujaca: porównywanie elementów. Koszt: T(n) = O(n 2 ) Złożoność optymistyczna: Operacja dominujaca: porównywanie elementów. Koszt: T(n) = Θ(n log 2 (n)). Złożoność pamięciowa: O(1). Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 30 / 47

55 Sortowanie szybkie - implementacja void q u icksort ( i n t a [ ], i n t l e f t, i n t r i g h t ) { i f ( l e f t < r i g h t ) { / / p o d z i a ł t a b l i c y i n t m = l e f t ; f o r ( i n t k = l e f t + 1 ; k <= r i g h t ; ++k ) { i f ( a [ k ] < a [ l e f t ] ) swap ( a[++m], a [ k ] ) ; } swap ( a [ l e f t ], a [m] ) ; / / Rekurencja q u icksort ( a, l e f t, m 1 ) ; q u icksort ( a, m + 1, r i g h t ) ; } } void swap ( i n t x, i n t y ) { i n t tmp = x ; x = y ; y = tmp ; } Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 31 / 47

56 Sortowanie przez scalanie Jeden z pierwszych algorytmów sortowania. Autor metody: John von Neumann Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 32 / 47

57 Sortowanie przez scalanie Jeden z pierwszych algorytmów sortowania. Autor metody: John von Neumann Idea: Dzielimy zadanie posortowania całego ciagu na dwa podzadania: posortowania jego lewej i prawej połowy. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 32 / 47

58 Sortowanie przez scalanie Jeden z pierwszych algorytmów sortowania. Autor metody: John von Neumann Idea: Dzielimy zadanie posortowania całego ciagu na dwa podzadania: posortowania jego lewej i prawej połowy. Gdy obie części tworza już ciagi uporzadkowane, wtedy scalamy je otrzymujac rozwiazanie. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 32 / 47

59 Sortowanie przez scalanie - przykład Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 33 / 47

60 Sortowanie przez scalanie - algorytm MergeSort A[1..n] Jeśli n = 1, to koniec Jeśli n 2, rekurencyjnie posortuj A[1..n/2] i A[n/2+1..n]. Scal obie połowy A w jedna posortowana tablicę. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 34 / 47

61 Sortowanie przez scalanie - Operacja scalania Zapamiętujemy pozycje najmniejszego elementu w każdej posortowanej połówce. Wstawiamy najmniejszy z dwóch wskazywanych elementów do tablicy pomocniczej. Operacje powtarzamy dopóty, dopóki nie posortujemy wszystkich elementów Najmniejszy nieprzetworzony: Najmniejszy nieprzetworzony: 8 Minimum z 1 i 8 1 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 35 / 47

62 Sortowanie przez scalanie - Operacja scalania Zapamiętujemy pozycje najmniejszego elementu w każdej posortowanej połówce. Wstawiamy najmniejszy z dwóch wskazywanych elementów do tablicy pomocniczej. Operacje powtarzamy dopóty, dopóki nie posortujemy wszystkich elementów Najmniejszy nieprzetworzony: Najmniejszy nieprzetworzony: 8 Minimum z 7 i Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 36 / 47

63 Sortowanie przez scalanie - Operacja scalania Zapamiętujemy pozycje najmniejszego elementu w każdej posortowanej połówce. Wstawiamy najmniejszy z dwóch wskazywanych elementów do tablicy pomocniczej. Operacje powtarzamy dopóty, dopóki nie posortujemy wszystkich elementów Najmniejszy nieprzetworzony: Najmniejszy nieprzetworzony: 8 Minimum z 11 i Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 37 / 47

64 Sortowanie przez scalanie - Operacja scalania Zapamiętujemy pozycje najmniejszego elementu w każdej posortowanej połówce. Wstawiamy najmniejszy z dwóch wskazywanych elementów do tablicy pomocniczej. Operacje powtarzamy dopóty, dopóki nie posortujemy wszystkich elementów Najmniejszy nieprzetworzony: Najmniejszy nieprzetworzony: 9 Minimum z 11 i Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 38 / 47

65 Sortowanie przez scalanie - Operacja scalania Zapamiętujemy pozycje najmniejszego elementu w każdej posortowanej połówce. Wstawiamy najmniejszy z dwóch wskazywanych elementów do tablicy pomocniczej. Operacje powtarzamy dopóty, dopóki nie posortujemy wszystkich elementów Najmniejszy nieprzetworzony: Najmniejszy nieprzetworzony: 12 Minimum z 11 i Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 39 / 47

66 Sortowanie przez scalanie - Operacja scalania Zapamiętujemy pozycje najmniejszego elementu w każdej posortowanej połówce. Wstawiamy najmniejszy z dwóch wskazywanych elementów do tablicy pomocniczej. Operacje powtarzamy dopóty, dopóki nie posortujemy wszystkich elementów Najmniejszy nieprzetworzony: Najmniejszy nieprzetworzony: 12 Minimum z 14 i Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 40 / 47

67 Sortowanie przez scalanie - Operacja scalania Zapamiętujemy pozycje najmniejszego elementu w każdej posortowanej połówce. Wstawiamy najmniejszy z dwóch wskazywanych elementów do tablicy pomocniczej. Operacje powtarzamy dopóty, dopóki nie posortujemy wszystkich elementów Najmniejszy nieprzetworzony: Najmniejszy nieprzetworzony: 18 Minimum z 14 i Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 41 / 47

68 Sortowanie przez scalanie - Operacja scalania Zapamiętujemy pozycje najmniejszego elementu w każdej posortowanej połówce. Wstawiamy najmniejszy z dwóch wskazywanych elementów do tablicy pomocniczej. Operacje powtarzamy dopóty, dopóki nie posortujemy wszystkich elementów Najmniejszy nieprzetworzony: Najmniejszy nieprzetworzony: 18 Minimum z 16 i Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 42 / 47

69 Sortowanie przez scalanie - Operacja scalania Zapamiętujemy pozycje najmniejszego elementu w każdej posortowanej połówce. Wstawiamy najmniejszy z dwóch wskazywanych elementów do tablicy pomocniczej. Operacje powtarzamy dopóty, dopóki nie posortujemy wszystkich elementów Najmniejszy nieprzetworzony: Nieprzetworzone: 18 i Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 43 / 47

70 Sortowanie przez scalanie - implementacja MergeSort ( i n t A [ ], i n t l e f t, i n t r i g h t ) { i f ( r i g h t > l e f t ) { mid = ( l e f t + r i g h t ) / 2; MergeSort (A, l e f t, mid ) ; MergeSort (A, mid +1, r i g h t ) ; merge (A, l e f t, mid, r i g h t ) } } Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 44 / 47

71 Sortowanie przez scalanie - implementacja void merge (T a, i n t l e f t, i n t mid, i n t r i g h t ) { i n t t = c a l l o c ( r i g h t +1, s i z e o f ( i n t ) ) ; i n t n = r i g h t l e f t + 1 ; i n t i = l e f t, j = mid + 1, k = 0 ; while ( i <= mid && j <= r i g h t ) { i f ( a [ i ] < a [ j ] ) t [ k ++] = a [ i + + ] ; else t [ k ++] = a [ j + + ] ; } while ( i <= mid ) { / / Dolaczanie koncowki p i e rwszej p o d t a b l i c y t [ k ++] = a [ i + + ] ; } while ( j <= r i g h t ) { / / Dolaczanie koncowki d r u g i e j p o d t a b l i c y t [ k ++] = a [ j + + ] ; } / / Kopiowanie t a b l i c y pomocniczej f o r ( k = 0 ; k < n ; ++k ) a [ l e f t + k ] = t [ k ] ; f r e e ( t ) } Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 45 / 47

72 Sortowanie przez scalanie - Koszt algorytmu T(n) MergeSort A[1..n] Θ(1) Jeśli n = 1, to koniec 2 T(n/2) Jeśli n 2, rekurencyjnie posortuj A[1..n/2] i A[n/2+1..n]. Θ(n) Scal obie połowy A w jedna posortowana tablicę. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 46 / 47

73 Sortowanie przez scalanie - Koszt algorytmu T(n) MergeSort A[1..n] Θ(1) Jeśli n = 1, to koniec 2 T(n/2) Jeśli n 2, rekurencyjnie posortuj A[1..n/2] i A[n/2+1..n]. Θ(n) Scal obie połowy A w jedna posortowana tablicę. T(n) = { Θ(1) n = 1 2 T(n/2)+Θ(n) n > 1 Na podstawie Twierdzenia 1 można pokazać, że powyższe równanie rekurencyjne ma następujace rozwiazanie: Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 46 / 47

74 Sortowanie przez scalanie - Koszt algorytmu T(n) MergeSort A[1..n] Θ(1) Jeśli n = 1, to koniec 2 T(n/2) Jeśli n 2, rekurencyjnie posortuj A[1..n/2] i A[n/2+1..n]. Θ(n) Scal obie połowy A w jedna posortowana tablicę. T(n) = { Θ(1) n = 1 2 T(n/2)+Θ(n) n > 1 Na podstawie Twierdzenia 1 można pokazać, że powyższe równanie rekurencyjne ma następujace rozwiazanie: n log b(a) = n log 2(2) = n 1 = n (Przypadek2) T(n) = Θ(n log 2 (n)) Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 46 / 47

75 Sortowanie przez scalanie - Koszt algorytmu Złożoność pesymistyczna: Operacja dominujaca: porównywanie elementów. Koszt: T(n) = Θ(n log 2 (n)) Złożoność optymistyczna: Operacja dominujaca: porównywanie elementów. Koszt: T(n) = Θ(n log 2 (n)). Złożoność pamięciowa: O(1). Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 2 47 / 47

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

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

Bardziej szczegółowo

Strategia "dziel i zwyciężaj"

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

Bardziej szczegółowo

Algorytmy i Struktury Danych.

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

Bardziej szczegółowo

Analiza algorytmów zadania podstawowe

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

Bardziej szczegółowo

Programowanie Proceduralne

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

Bardziej szczegółowo

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

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

Bardziej szczegółowo

Zadanie 1 Przygotuj algorytm programu - sortowanie przez wstawianie.

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

Bardziej szczegółowo

Matematyczne Podstawy Informatyki

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

Bardziej szczegółowo

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

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

Bardziej szczegółowo

Struktury Danych i Złożoność Obliczeniowa

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

Bardziej szczegółowo

Sortowanie danych. Jolanta Bachan. Podstawy programowania

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

Bardziej szczegółowo

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

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

Bardziej szczegółowo

Algorytmy i Struktury Danych

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

Bardziej szczegółowo

Algorytmy i Struktury Danych.

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

Bardziej szczegółowo

Wykład 5. Sortowanie w czasie liniowologarytmicznym

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

Bardziej szczegółowo

Efektywna metoda sortowania sortowanie przez scalanie

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

Bardziej szczegółowo

Programowanie w VB Proste algorytmy sortowania

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

Bardziej szczegółowo

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

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

Bardziej szczegółowo

Wstęp do programowania

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

Bardziej szczegółowo

Wstęp do programowania

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

Bardziej szczegółowo

Algorytmy sortujące i wyszukujące

Algorytmy sortujące i wyszukujące Algorytmy sortujące i wyszukujące Zadaniem algorytmów sortujących jest ułożenie elementów danego zbioru w ściśle określonej kolejności. Najczęściej wykorzystywany jest porządek numeryczny lub leksykograficzny.

Bardziej szczegółowo

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

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

Bardziej szczegółowo

Algorytmy i Struktury Danych.

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

Bardziej szczegółowo

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: 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ółowo

Podstawy Informatyki

Podstawy Informatyki Podstawy Informatyki Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 7 i 8 Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 7 i 8 1 / 44 Struktura danych - tablica

Bardziej szczegółowo

Zaawansowane algorytmy i struktury danych

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

Bardziej szczegółowo

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

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

Bardziej szczegółowo

Laboratorium nr 7 Sortowanie

Laboratorium nr 7 Sortowanie Laboratorium nr 7 Sortowanie 1. Sortowanie bąbelkowe (BbS) 2. Sortowanie przez wstawianie (IS) 3. Sortowanie przez wybieranie (SS) Materiały Wyróżniamy następujące metody sortowania: 1. Przez prostą zamianę

Bardziej szczegółowo

Algorytmy i Struktury Danych, 2. ćwiczenia

Algorytmy i Struktury Danych, 2. ćwiczenia Algorytmy i Struktury Danych, 2. ćwiczenia 2015-10-09 Spis treści 1 Szybkie potęgowanie 1 2 Liczby Fibonacciego 2 3 Dowód, że n 1 porównań jest potrzebne do znajdowania minimum 2 4 Optymalny algorytm do

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). [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ółowo

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

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

Bardziej szczegółowo

Sortowanie. LABORKA Piotr Ciskowski

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ć

Bardziej szczegółowo

TEORETYCZNE PODSTAWY INFORMATYKI

TEORETYCZNE PODSTAWY INFORMATYKI 1 TEORETYCZNE PODSTAWY INFORMATYKI WFAiS UJ, Informatyka Stosowana I rok studiów, I stopień Wykład 5 część I 2 Iteracja Rekurencja Indukcja Iteracja Rekurencja Indukcja Algorytmy sortujące Rozwiazywanie

Bardziej szczegółowo

Uwaga: Funkcja zamień(a[j],a[j+s]) zamienia miejscami wartości A[j] oraz A[j+s].

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

Bardziej szczegółowo

Luty 2001 Algorytmy (4) 2000/2001

Luty 2001 Algorytmy (4) 2000/2001 Mając dany zbiór elementów, chcemy znaleźć w nim element największy (maksimum), bądź najmniejszy (minimum). We wszystkich naturalnych metodach znajdywania najmniejszego i największego elementu obecne jest

Bardziej szczegółowo

Zaawansowane algorytmy i struktury danych

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

Bardziej szczegółowo

Drzewa poszukiwań binarnych

Drzewa poszukiwań binarnych 1 Drzewa poszukiwań binarnych Kacper Pawłowski Streszczenie W tej pracy przedstawię zagadnienia związane z drzewami poszukiwań binarnych. Przytoczę poszczególne operacje na tej strukturze danych oraz ich

Bardziej szczegółowo

Algorytmy i struktury danych Sortowanie IS/IO, WIMiIP

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

Bardziej szczegółowo

Sortowanie bąbelkowe

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

Bardziej szczegółowo

Algorytmy i Struktury Danych.

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

Bardziej szczegółowo

Algorytmy i str ruktury danych. Metody algorytmiczne. Bartman Jacek

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

Bardziej szczegółowo

Algorytmy i Struktury Danych.

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

Bardziej szczegółowo

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

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

Bardziej szczegółowo

Programowanie dynamiczne i algorytmy zachłanne

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

Bardziej szczegółowo

Algorytmy sortujące 1

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

Bardziej szczegółowo

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. 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ółowo

Laboratoria nr 1. Sortowanie

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

Bardziej szczegółowo

INFORMATYKA SORTOWANIE DANYCH.

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

Bardziej szczegółowo

TEORETYCZNE PODSTAWY INFORMATYKI

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

Bardziej szczegółowo

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

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

Bardziej szczegółowo

Wstęp do programowania

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

Bardziej szczegółowo

Algorytmy i Struktury Danych

Algorytmy i Struktury Danych POLITECHNIKA KRAKOWSKA WYDZIAŁ INŻYNIERII ELEKTRYCZNEJ i KOMPUTEROWEJ Katedra Automatyki i Technik Informacyjnych Algorytmy i Struktury Danych www.pk.edu.pl/~zk/aisd_hp.html Wykładowca: dr inż. Zbigniew

Bardziej szczegółowo

WYKŁAD 9. Algorytmy sortowania elementów zbioru (tablic) Programy: c4_1.c... c4_3.c. Tomasz Zieliński

WYKŁAD 9. Algorytmy sortowania elementów zbioru (tablic) Programy: c4_1.c... c4_3.c. Tomasz Zieliński WYKŁAD 9 Algorytmy sortowania elementów zbioru (tablic) Programy: c4_1.c... c4_3.c Tomasz Zieliński /* Przyklad 4.1 - SORTOWANIE TABLIC - metoda najprostsza */ #include #define ROZMIAR 11 void

Bardziej szczegółowo

Zadanie projektowe 1: Struktury danych i złożoność obliczeniowa

Zadanie projektowe 1: Struktury danych i złożoność obliczeniowa Łukasz Przywarty 171018 Data utworzenia: 24.03.2010r. Mariusz Kacała 171058 Prowadzący: prof. dr hab. inż. Adam Janiak oraz dr inż. Tomiasz Krysiak Zadanie projektowe 1: Struktury danych i złożoność obliczeniowa

Bardziej szczegółowo

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

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

Bardziej szczegółowo

Porządek symetryczny: right(x)

Porządek symetryczny: right(x) Porządek symetryczny: x lef t(x) right(x) Własność drzewa BST: W drzewach BST mamy porządek symetryczny. Dla każdego węzła x spełniony jest warunek: jeżeli węzeł y leży w lewym poddrzewie x, to key(y)

Bardziej szczegółowo

Wykład 2. Poprawność algorytmów

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

Bardziej szczegółowo

Drzewa binarne. Drzewo binarne to dowolny obiekt powstały zgodnie z regułami: jest drzewem binarnym Jeśli T 0. jest drzewem binarnym Np.

Drzewa binarne. Drzewo binarne to dowolny obiekt powstały zgodnie z regułami: jest drzewem binarnym Jeśli T 0. jest drzewem binarnym Np. Drzewa binarne Drzewo binarne to dowolny obiekt powstały zgodnie z regułami: jest drzewem binarnym Jeśli T 0 i T 1 są drzewami binarnymi to T 0 T 1 jest drzewem binarnym Np. ( ) ( ( )) Wielkość drzewa

Bardziej szczegółowo

Laboratoria nr 1. Sortowanie

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

Bardziej szczegółowo

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

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

Bardziej szczegółowo

Wstęp do Informatyki

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

Bardziej szczegółowo

Sortowanie przez wstawianie Insertion Sort

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,

Bardziej szczegółowo

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

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

Bardziej szczegółowo

Technologie informacyjne Wykład VII-IX

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

Bardziej szczegółowo

Temat 7. Najlżejsze i najcięższe algorytmy sortowania

Temat 7. Najlżejsze i najcięższe algorytmy sortowania Temat 7 Najlżejsze i najcięższe algorytmy sortowania Streszczenie Komputery są często używane porządkowania różnych danych, na przykład nazwisk (w porządku alfabetycznym), terminów spotkań lub e-maili

Bardziej szczegółowo

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

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

Bardziej szczegółowo

Sylabus modułu: Matematyczne podstawy informatyki (kod modułu:03-mo2n-12-mpln)

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

Bardziej szczegółowo

np. dla p=1 mamy T1(N) N/2 średni czas chybionego wyszukiwania z prawdopodobieństwem q:

np. dla p=1 mamy T1(N) N/2 średni czas chybionego wyszukiwania z prawdopodobieństwem q: Wykład 4 Wyszukiwania w tablicach posortowanych 1. Wyszukiwanie sekwencyjne w tablicy posortowanej 2. Wyszukiwanie binarne bez powtórzeń 3. Wyszukiwanie binarne z powtórzeniami 1 2 3 4 5 6 7 8 9 10 11

Bardziej szczegółowo

Programowanie dynamiczne (optymalizacja dynamiczna).

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

Bardziej szczegółowo

Wstęp do programowania

Wstęp do programowania Wstęp do programowania Programowanie dynamiczne Paweł Daniluk Wydział Fizyki Jesień 2013 P. Daniluk(Wydział Fizyki) WP w. X Jesień 2013 1 / 21 Dziel i zwyciężaj przypomnienie 1 Podział problemu na 2 lub

Bardziej szczegółowo

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

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

Bardziej szczegółowo

Literatura. 1) Pojęcia: złożoność czasowa, rząd funkcji. Aby wyznaczyć pesymistyczną złożoność czasową algorytmu należy:

Literatura. 1) Pojęcia: złożoność czasowa, rząd funkcji. Aby wyznaczyć pesymistyczną złożoność czasową algorytmu należy: Temat: Powtórzenie wiadomości z PODSTAW INFORMATYKI I: Pojęcia: złożoność czasowa algorytmu, rząd funkcji kosztu. Algorytmy. Metody programistyczne. Struktury danych. Literatura. A. V. Aho, J.E. Hopcroft,

Bardziej szczegółowo

Znajdowanie największego i najmniejszego elementu w zbiorze n liczb całkowitych

Znajdowanie największego i najmniejszego elementu w zbiorze n liczb całkowitych 1/12 Opracowała Kozłowska Ewa ekozbelferek@poczta.onet.pl nauczyciel przedmiotów informatycznych Zespół Szkół Technicznych Mielec, ul. Jagiellończyka 3 Znajdowanie największego i najmniejszego elementu

Bardziej szczegółowo

Algorytmy i struktury danych.

Algorytmy i struktury danych. Algorytmy i struktury danych. Wykład 4 Krzysztof M. Ocetkiewicz Krzysztof.Ocetkiewicz@eti.pg.gda.pl Katedra Algorytmów i Modelowania Systemów, WETI, PG Problem plecakowy mamy plecak o określonej pojemności

Bardziej szczegółowo

Wprowadzenie do złożoności obliczeniowej

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

Bardziej szczegółowo

Zaawansowane algorytmy. Wojciech Horzelski

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

Bardziej szczegółowo

WSTĘP DO INFORMATYKI WPROWADZENIE DO ALGORYTMIKI

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

Bardziej szczegółowo

Sortowanie w czasie liniowym

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

Bardziej szczegółowo

Rekurencja. Przykład. Rozważmy ciąg

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

Bardziej szczegółowo

Sortowanie w czasie liniowym

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

Bardziej szczegółowo

ALGORYTMY I STRUKTURY DANYCH

ALGORYTMY I STRUKTURY DANYCH ALGORYTMY I STRUKTURY DANYCH wykład 1 wprowadzenie, struktury sterujace, projektowanie algorytmów dr hab. inż. Andrzej Obuchowicz, prof. UZ Instytut Sterowania i Systemów Informatycznych UZ p. 425 A2 tel.

Bardziej szczegółowo

Wykład 4. Sortowanie

Wykład 4. Sortowanie Wykład 4 Sortowanie 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 dla algorytmiki

Bardziej szczegółowo

Algorytmy komputerowe. dr inŝ. Jarosław Forenc

Algorytmy komputerowe. dr inŝ. Jarosław Forenc Rok akademicki 2009/2010, Wykład nr 8 2/24 Plan wykładu nr 8 Informatyka 1 Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr II, studia niestacjonarne I stopnia Rok akademicki 2009/2010

Bardziej szczegółowo

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

Wykład 1 Wprowadzenie do algorytmów. Zawartość wykładu 1. Wstęp do algorytmów i struktur danych 2. Algorytmy z rozgałęzieniami. Wykład 1 Wprowadzenie do algorytmów Zawartość wykładu 1. Wstęp do algorytmów i struktur danych 2. Algorytmy z rozgałęzieniami Wykaz literatury 1. N. Wirth - Algorytmy+Struktury Danych = Programy, WNT Warszawa

Bardziej szczegółowo

Algorytmy i struktury danych. Drzewa: BST, kopce. Letnie Warsztaty Matematyczno-Informatyczne

Algorytmy i struktury danych. Drzewa: BST, kopce. Letnie Warsztaty Matematyczno-Informatyczne Algorytmy i struktury danych Drzewa: BST, kopce Letnie Warsztaty Matematyczno-Informatyczne Drzewa: BST, kopce Definicja drzewa Drzewo (ang. tree) to nieskierowany, acykliczny, spójny graf. Drzewo może

Bardziej szczegółowo

Wykład 6. Wyszukiwanie wzorca w tekście

Wykład 6. Wyszukiwanie wzorca w tekście Wykład 6 Wyszukiwanie wzorca w tekście 1 Wyszukiwanie wzorca (przegląd) Porównywanie łańcuchów Algorytm podstawowy siłowy (naive algorithm) Jak go zrealizować? Algorytm Rabina-Karpa Inteligentne wykorzystanie

Bardziej szczegółowo

Algorytmy i struktury danych

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

Bardziej szczegółowo

Teoretyczne podstawy informatyki

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

Bardziej szczegółowo

Rekurencja/rekursja. Iluzja istnienia wielu kopii tego samego algorytmu (aktywacji) Tylko jedna aktywacja jest aktywna w danej chwili

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

Bardziej szczegółowo

Metodyki i Techniki Programowania 2

Metodyki i Techniki Programowania 2 Metodyki i Techniki Programowania 2 zajęcia nr 5 algorytmy cz.1: sortowanie Elektronika i Telekomunikacja, semestr III rok akademicki 2009/2010 mgr inż.. Paweł Myszkowski Plan dzisiejszych zajęć 1. Sortowanie

Bardziej szczegółowo

Wstęp do programowania

Wstęp do programowania Wstęp do programowania Algorytmy zachłanne, algoritme Dijkstry Paweł Daniluk Wydział Fizyki Jesień 2013 P. Daniluk(Wydział Fizyki) WP w. XI Jesień 2013 1 / 25 Algorytmy zachłanne Strategia polegająca na

Bardziej szczegółowo

Rekurencja. Przygotowała: Agnieszka Reiter

Rekurencja. Przygotowała: Agnieszka Reiter Rekurencja Przygotowała: Agnieszka Reiter Definicja Charakterystyczną cechą funkcji (procedury) rekurencyjnej jest to, że wywołuje ona samą siebie. Drugą cechą rekursji jest jej dziedzina, którą mogą być

Bardziej szczegółowo

Algorytmy i złożoności. Wykład 3. Listy jednokierunkowe

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

Bardziej szczegółowo

Drzewa wyszukiwań binarnych (BST)

Drzewa wyszukiwań binarnych (BST) Drzewa wyszukiwań binarnych (BST) Krzysztof Grządziel 12 czerwca 2007 roku 1 Drzewa Binarne Drzewa wyszukiwań binarnych, w skrócie BST (od ang. binary search trees), to szczególny przypadek drzew binarnych.

Bardziej szczegółowo

Algorytmy i Struktury Danych.

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

Bardziej szczegółowo

Algorytmy i struktury danych Matematyka III sem.

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

Bardziej szczegółowo

Algorytmy równoległe: ocena efektywności prostych algorytmów dla systemów wielokomputerowych

Algorytmy równoległe: ocena efektywności prostych algorytmów dla systemów wielokomputerowych Algorytmy równoległe: ocena efektywności prostych algorytmów dla systemów wielokomputerowych Rafał Walkowiak Politechnika Poznańska Studia inżynierskie Informatyka 2014/15 Znajdowanie maksimum w zbiorze

Bardziej szczegółowo

Informatyka 1. Złożoność obliczeniowa

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

Bardziej szczegółowo

Podstawy programowania 2. Temat: Drzewa binarne. Przygotował: mgr inż. Tomasz Michno

Podstawy programowania 2. Temat: Drzewa binarne. Przygotował: mgr inż. Tomasz Michno Instrukcja laboratoryjna 5 Podstawy programowania 2 Temat: Drzewa binarne Przygotował: mgr inż. Tomasz Michno 1 Wstęp teoretyczny Drzewa są jedną z częściej wykorzystywanych struktur danych. Reprezentują

Bardziej szczegółowo

prowadzący dr ADRIAN HORZYK /~horzyk e-mail: horzyk@agh tel.: 012-617 Konsultacje paw. D-13/325

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

Bardziej szczegółowo