Zadania do wykładu ALGORYTMY I STRUKTURY DANYCH

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

Download "Zadania do wykładu ALGORYTMY I STRUKTURY DANYCH"

Transkrypt

1 Zadania do wykładu ALGORYTMY I STRUKTURY DANYCH Szacowanie tempa wzrostu funkcji Wprowadzenie: Do szacowania złożoności obliczeniowej algorytmów wykorzystuje się następujące pojęcia analizy matematycznej: Mówimy, że funkcja f(n) określona na liczbach naturalnych o wartościach nieujemnych jest asymptotycznie ograniczona z góry przez funkcję g(n), jeśli istnieje stała C taka, że f(n) C g(n) dla prawie wszystkich n. Piszemy wówczas lub f(n) = O(g(n)) lub f(n) g(n). Mówimy, że funkcja f(n) jest asymptotycznie równa funkcji g(n), jeśli f(n) = O(g(n)) oraz g(n) = O(f(n)). Piszemy wówczas f(n) = Θ(g(n)). Piszemy też f(n) g(n), jeśli f(n) g(n), ale nieprawda, że g(n) f(n). W przypadku funkcji rosnących używamy określeń rośnie: nie szybciej niż, nie wolniej niż, ma takie samo tempo wzrostu. Bardziej formalnie O(g) definiujemy jako klasę wszystkich funkcji f g, a zapis f = O(g) traktujemy jako nieformalny zapis f O(g). Określamy ponadto log (k) n = log log... log n, gdzie logarytmowanie wykonywane jest k razy. (Przez log rozumiemy zawsze logarytm przy podstawie 2, jeśli nie jest powiedziane inaczej). 1. Wykazać, że a k n k + a k 1 n k a 0 = Θ(n k ), jeśli a k > Wykazać, że z warunek limf(n)/g(n) = 0 implikuje f(n) g(n). Wykorzystać to, do uzasadnienia, zachodzą następujące zależności (dla jakich k i c?): 1 log (k) n log (k 1) n n n k n k+1 c n (c + 1) n n n... n! Wykazać, że relacje i są przechodnie. 4. Pokazać, że dla dowolnych podstaw r, s > 1 zachodzi log r n log s n. Wywnioskować stąd, że w zapisie O(log n) podstawa jest nieistotna. 5. Znajdź wzór na długość zapisów dziesiętnego i binarnego liczby naturalnej n i wywnioskuj, że w obu przypadkach jest to Θ(log n). Oszacować proporcję długości zapisu dziesiętnego do długości zapisu binarnego liczby naturalnej n. 6. Wykazać, że jeśli f = O(g), to O(g) + O(f) = O(g + f) = O(g). 7. Znaleźć wzory na sumy (a) n (b) n 2 i umiejscowć te funkcje w hierarchii zadania Udowodnić, że ogólnie dla k 1: n i=1 i k = 1 k + 1 nk+1 + O(n k ) = O(n k+1 ) 9. *Skonstruuj ( sztuczną ) funkcję, która nie da się umieścić w liniowej hierarchii zadania 2 (czyli pokaż, że porządek nie jest bynajmniej porządkiem liniowym na zbiorze wszystkich klas funkcji asymptotycznie równych).

2 Zbiory dynamiczne, listy, kolejki, stosy 10. Zaimplementuj listę z wartownikiem (tzn. napisz operacje Search, Insert i Delete dla tego typu list). 11. Przy pomocy tablicy jednowymiarowej zaimplementuj kolejkę (procedury Enqueue, Dequeue) 12. Przy pomocy tablicy jednowymiarowej zaimplementuj stos (procedury Push, Pop oraz Stack- Empty). 13. Przy pomocy listy jednokierunkowej zaimplementuj kolejkę oraz stos. 14. Napisać algorytm odwracania elementów listy jednokierunkowej (możliwie efektywny). 15. Odwróć stos S mając do dyspozycji puste stosy S 1 i S Odwróć stos S mając do dyspozycji pusty stos T i kilka zmiennych. 17. Uporządkuj kolejkę Q (według kluczy) mając do dyspozycji stos i kilka zmiennych. 18. Uporządkuj kolejkę 100-elementową mając do dyspozycji kilka zmiennych (czyli w stałej pamięci ; znana jest z góry długość kolejki). Binarne drzewa wyszukiwań 19. Jaka jest minimalna wysokość drzewa k-arnego zawierającego n wierzchołków. Udowodnij. 20. Ile jest wierzchołków w drzewie binarnym pełnym na poziomie h? Ile jest wierzchołków rozpoczynających poddrzewo wysokości h? (Te same pytanie dla drzew pełnych k-arnych). Binarne drzewo wyszukiwań (BST) to takie drzewo, w którym dla każdego wierzchołka v klucze elementów w lewym poddrzewie mniejsze są od klucza v, a klucze elementów w prawym poddrzewie są większe od klucza v. Zakładając, że operacje wstawiania i usuwania elementów są losowe, można przyjąć, że drzewo jest mniej więcej zrównoważone, a oczekiwana wysokość (pesymistyczny czas wyszukiwania) wynosi O(log n). 21. Napisz algorytm wstawiania nowego elementu do BST. Oszacuj czas działania. 22. Napisz algorytm usuwania elementu z BST. Oszacuj czas działania. 23. Czy usuwanie elementów z BST jest przemienne? To znaczy, czy usuwając najpierw element x a potem y otrzymamy to samo drzewo co usuwając najpierw element y a potem x? 24. Napisz algorytm wypisania wszystkich elementów BST w kolejności porządku liniowego wyznaczonego przez klucze oraz oszacuj jego złożoność. (Wskazówka: zastosuj procedurę rekurencyjną wypisując najpierw elementy lewego podrzewa, a potem elementy prawego podrzewa). szacuj czas działania. 25. * Rozważ, które operacje się komplikują przy założeniu, że różne elementy w BST mogą mieć jednakowe klucze. 26. Udowodnij, że dla elementu, który ma dwóch synów, jego następnik (w porządku liniowym) nie ma lewego syna, a jego poprzednik nie ma prawego syna. 27. Wykorzystując procedurę wypisywania wszystkich elementów drzewa BST, dla dowolnego drzewa z jednokierunkowymi dowiązaniami, zaprojektuj procedurę odnajdywania ojca. 2

3 Sortowanie 28. Zaimplementować sortowanie przez scalanie (Merge-Sort) na tablicy (z użyciem dodatkowej tablicy). 29. Opisać algorytm sortowania przez bąbelkowanie (Bubble-Sort). Jaki jest jego czas działania? 30. Ile razy trzeba podzielić daną liczbę n na kolejne połowy, żeby otrzymać liczbę nie większą niż 1. Zakładamy, że przy dzieleniu liczby nieparzystej wybieramy większą połowę, tzn. sufit z podzielenia liczby przez dwa. Odpowiedź udowodnij. 31. Tablicę A[1..n] różnych liczb 1,..., n traktujemy jako permutację. Każdą parę liczb i < j, taką że A[i] > A[j] nazywamy inwersją. Zaprojektuj algorytm liczący ilość inwersji działający w czasie O(n log n) (wzorując się na algorytmie Merge-Sort). Rekurencja 32. Wzór rekurencyjny F n = F n 1 + F n 2 z warunkiem F 0 = F 1 = 1 definiuje tzw. liczby Fibbonaciego. Udowodnić przez indukcję wzór: ( ) ( F n = ) n ( ) ( ) n Który ze wzorów lepiej nadaje się do zastosowań komputerowych? metodę obliczania liczb Fibonacciego. Opisać najefektywniejszą Schemat Hornera 33. Omów algorytm obliczania wartości wielomianu w danym punkcie za pomocą schematu Hornera. Pokaż jak można wykorzystać schemat Hornera do obliczania wartości liczby danej w zapisie szesnastkowym. Przykładowo, jaka liczba ma szesnastkowy zapis 2EF 5A7? 34. Opisz możliwie efektywny algorytm znajdowania zapisu szestnastkowego liczb (czy można wykorzystać tu schemat Hornera?) 35. Opisz algorytmy szybkiego potęgowania oparty na idei schematu Hornera oraz na idei znajdowania zapisu binarnego od prawej do lewej. 36. Zastosuj algorytmy szybkiego potęgowania dla wykładników m = 15, 23, 48 (to znaczy pokaż jak szybko obliczyć potęgi x 15, x 23, x 48 przy pomocy tych algorytmów). Czy można te potęgi obliczyć szybciej (w mniejszej ilości mnożeń)? Przechodzenie drzew 37. Poniższe wyrażenia przedstaw w notacji polskiej i odwrotnej polskiej: a) ab + (c(d + e + f) g h/a) b) ((p q) (q r)) (p r) 38. Oblicz wartości wyrażeń zapisanych w notacji odwrotnej polskiej, gdzie symbolami końcowymi są pojedyncze cyfry: a) b) Narysuj drzewa wyrażeń z dwóch poprzednich zadań. Czy były one potrzebne do rozwiązania tych zdań? 3

4 40. Zapisać prawa łączności mnożenia i rozdzielności mnożenia względem dodawania w odwrotnej notacji polskiej. 41. Załóżmy, że wyrażeniu w zapisie infiksowym używamy tylko jednego działania binarnego, którego argumenty ujmujemy w nawiasy (bez symbolu działania; jak dla mnożenia). Napisz procedurę zapisującą takie wyrażenie w notacji prefiksowej. Przekonaj się, o ile trudniejsze jest zadanie odwrotne. 42. Opisz procedurę sprawdzania poprawności zapisu w postaci infiksowej (prefiksowej). 43. Opisz procedurę tworzenia drzewa wyrażenia w zapisie infiksowym. Wynik ma być dany w formie tablicy reprezentującej drzewo binarne. 44. Opisz procedurę przekształcania zapisu w notacji polskiej na zapis w odwrotnej notacji polskiej. Kopce 45. Udowodnić, że jeśli węzły drzewa binarnego prawie pełnego ponumerować poziomami od góry w dół, to dla każdego węzła, jeśli ma on numer i, to jego lewy syn i prawy syn mają, odpowiednio, numery 2i oraz 2i Jaki jest numer pierwszego elementu rozpoczynającego ciąg liści w tablicy reprezentującej drzewo binarne zrównoważone (prawie pełne)? 47. Czy tablica A = (23, 17, 14, 6, 13, 10, 1, 5, 7, 12) jest kopcem? 48. Na powyższej tablicy zademonstrować procedury budowania kopca i sortowania przez kopcowanie. 49. Dla kopca n elementowego, ile maksymalnie i ile minimalnie elementów zawierają lewe i prawe poddrzewo korzenia? 50. Jaki jest czas działania algorytmu heap-sort na tablicy juz posortowanej (rosnąco, malejaco)? 51. Zaimplementuj kolejkę priorytetową przy użyciu kopca (procedury Extract-Max, Insert. 52. Napisz algorytm przekształcania listy uporządkowanej w kopiec i oszacuj czas działania. Czy algorytm warto zmienić w zależności od sposobu posortowania? Opis algorytmów 53. Opisz algorytm Euklidesa znajdowania NWD liczb na dwa sposoby: jako algorytm iteracyjny i algorytm rekurencyjny. Uzasadnij jego poprawność. 54. Oszacuj czas działania algorytmu Euklidesa. Ile maksymalnie dzieleń trzeba w nim wykonać? (Wskazówka: Rozważ zmianę pary (a, b) i zauważ, że co dwa kroki algorytmu, drugi element tej pary zmniejsza co najmniej o połowę). 55. Napisz najprostszy algorytm testowania czy liczba naturalna n jest pierwsza. Jaki jest jego czas działania? Podać wynik względem wielkości liczby n oraz wynik względem długości zapisu liczby n. Który z nich jest proporcjonalny do rzeczywistego czasu obliczeń na komputerze? 56. Załóżmy, że operacja sprawdzania czy liczba n podzielna jest przez liczbę d wykonywana jest w czasie stałym i wymaga (przy odpowiedniej implementacji) nie więcej niż operacji podstawowych (cykli) procesora. Załóżmy że obliczenia wykonujemy na procesorze 4 GHz. Jak duże liczby jesteśmy w stanie testować, czy są pierwsze, przy pomocy powyższego prostego algorytmu? 4

5 57. Gdybyśmy chcieli testować pierwszość liczb dłuższych niż 64 bity (long long int, jak należałoby zaimplementować algorytm. Podaj jedynie idee. Czy sprawdzanie podzielności może być wykonywane w czasie stałym? Jaki jest czas działania algorytmu? 58. Opisz rekurencyjny algorytm generowania wszystkich słów długości k nad alfabetem n-elementowym (przez formalne słowo rozumiemy dowolny ciąg liter). 59. Ustal porządek liniowy, w jakim generowane są słowa w poprzednim algorytmie (ewentualnie zmień algorytm tak, żeby był to porządek słownikowy-licznikowy). Napisz procedurę Next, która generuje następne słowo na podstawie poprzedniego i użyj jej do zaprojektowania algorytmu generującego wszystkie słowa. (Taki algorytm ma tę zaletę, że działa używając stałej pamięci). 60. Zdefiniuj porządek leksykograficzny (alfabetyczny) i porządek standardowy na słowach. (W porządku standardowym słowa krótsze poprzedzają dłuższe, a gdy długości są równe decyduje porządek alfabetyczny). Słowo a 1... a n jest mniejsze od słowa b 1... b m, jeśli Opisz algorytm generowania wszystkich permutacji zbioru n-elementowego. Jaki jest jego czas działania? 62. *Opisz algorytm generowania kolejnych permutacji zbioru n-elementowego, który używa stałej pamięci. Wieże w Hanoi W indyjskim mieście Benares, w samym środku ziemi na początku świata Brahma nasadził na diamentowy pręcik 64 szczerozłote krążki, których średnice rosną od góry do dołu. Używając drugiego, pomocniczego pręcika kapłani mają za zadanie przełożyć tę piramidę z krążków na trzeci pręcik, przy czym ich ruchy muszą polegać na zdjęciu jednego krążka z jednego pręcika i nasadzeniu go na inny pręcik, a na każdym pręciku krążki muszą zawsze leżeć mniejszy na większym. Kiedy na trzeciej pałeczce znajdą się wszystkie 64 krążki, nastąpi koniec świata. Tyle hinduska legenda. Oszacuj, kiedy będzie koniec świata. 63. Opisz naturalny algorytm rekurencyjny rozwiązujący problem wież Hanoi. Wykaż jego poprawność. 64. Zastosuj ten algorytm do przypadku n = 5 symulując mechaniczne działanie kompilatora. (Kompilator wchodząc z kolejne wywołanie procedury rekurencyjnej zapamiętuje na stosie aktualne parametry i numer aktualnie wykonywanej instrukcji żeby wiadomo było, którą instrukcję wykonać po powrocie i z jakimi parametrami. Na końcu procedury rekurencyjnej musi być znacznik końca informujący kompilator, że procedura została zakończona i należy wrócić do wykonywania procedury na wyższym poziomie pobierając dane ze stosu.) 65. Jaka jest minimalna ilość przesunięć potrzebna do przestawienia n krążków. Udowodnij odpowiedź. 66. Znajdź przepis pokazujący jaki należy wykonać ruch w danej sytuacji (algorytm on-line). Wskazówka: przyjrzyj się jak poruszają się krążki w procedurze rekurencyjnej i spróbuj dać możliwie prostą receptę na kolejne ruchy. Sortowanie 67. Zilustruj działanie procedury Partition dla tablicy A = (13, 19, 9, 5, 12, 8, 7, 4, 11, 2, 6, 21). 68. Jaką wartość q zwraca procedura Partition, gdy wszystkie elementy w tablicy są równe. Jak zmodyfikować procedurę żeby zwracała wartość środkową? Jaki jest czas działania procedury Quicksort w tym przypadku. 5

6 69. Załóżmy, że w ciągu miesiąca spływają dane o zrealizowanych czekach, po kilku czekach na dzień, i numery czeków są posortowane z dokładnością do dnia (w danym dniu dane mogą spłynąć w nieprawidłowej kolejności. Uzasadnij, że dla takich danych procedura Insert-sort działa szybciej niż Quicksort 70. Jak zmodyfikować procedurę Quicksort, żeby sortowała w porządku nierosnącym? 71. Ile porównań potrzeba, żeby wyznaczyć minimum dla danego zbioru liczb? Zaprojektuj algorytm, który wyznacza jednocześnie minimum i maksimum w danym zbiorze. Ile porównań potrzeba? 72. Używając procedury Partition zaprojektuj algorytm wyznaczający i-ty element zbioru liczb. Oszacuj czas działania. 73. Zaprojektuj szczegóły algorytmu Counting-Sort sortującego n kluczy-liczb całkowitych z przedziału 1, m, opartego na pomyśle zliczenia najpierw w osobnej tablicy P [i] ile jest kluczy równych i, a następnie ile jest kluczy nie większych od i i w ten sposób wyznaczenie właściwego miejsca tablicy wynikowej dla klucza równego i. Oszacuj czas działania. 74. Zilustruj działanie procedury Counting-Sort na tablicy A = (6, 0, 2, 0, 1, 3, 4, 6, 1, 3, 2). Czy procedura ta sortuje stabilnie. 75. Zaprojektuj algorytm, który dla danych n liczb z przedziału < 0, k > wykonuje wstępne obliczenia w czasie O(n + k), a następnie na ich podstawie w stałym czasie pozwala określić ile spośród n liczb leży w przedziale < a, b >. 76. Zilustruj działanie procedury sortowania kubełkowego z zastosowaniem sortowania przez wstawianie kolejnych list dla tablicy A = (0.79, 0.13, 0.16, 0.64, 0.39, 0.20, 0.89, 0.53, 0.71, 0.42). 77. Metodę sortowania nazywamy stabilną, jeśli nie zmienia ona kolejności elementów o równych kluczach. Które ze znanych algorytmów sortowania są stabilne? 78. Udowodnij przez indukcję poprawność sortowania pozycyjnego. Haszowanie i programowanie dynamiczne 79. Zilustruj ciąg wstawień elementów o kluczach 5, 28, 19, 15, 20, 33, 12, 17, 10 do tablicy z haszowaniem, wykorzystując do rozwiązywania kolizji metodę łańcuchową. Przyjmujemy, że tablica zawiera 9 pozycji, a h(k) = k mod 9 jest funkcja haszującą. 80. Zilustruj ciąg wstawień elementów o tych samych kluczach do tablicy 12 elementowej przy pomocy adresowania otwartego liniowego. 81. Zilustruj działanie algorytmu programowania dynamicznego (PD) znajdowania minimalnej ilości mnożeń skalarnych potrzebnych do pomnożenia czterech macierzy o kolejnych wymiarach: 21, 15, 7, 15, Opisz algorytm wyznaczania optymalnego nawiasowania dla pomnożenia n macierzy. 83. Wyznacz optymalne nawiasowanie iloczynu ciągu macierzy o wymiarach 5, 10, 3, 17, 5, 50, Opisz algorytm (oparty na metodzie PD) wyznaczania najdłuższego wspólnego podciągu (NWP) dwóch ciągów i oszacuj jego czas działania. 85. Znajdź NWP ciągów i *Zmodyfikuj algorytm znajdywania długości NWP dwóch ciągów długości m i n, tak żeby działał w czasie O(m + n). Czy możliwe to jest w przypadku wyznaczania NWP? 87. Zaprojektuj algorytm wyznaczania najdłuższego niemalejącego podciągu ciągu n liczb całkowitych działający w czasie O(n 2 ). 6

7 88. *Jak poprawić poprzedni algorytm tak żeby działał w czasie O(n log n). Algorytmy grafowe 89. (Graf eulerowski) Udowodnij, że spójny graf ma zamkniętą drogę Eulera wtedy i tylko gdy każdy wierzchołek ma stopień parzysty. 90. (Graf półeulerowski) Udowodnij, że spójny nieeulerowski graf ma drogę Eulera (niekoniecznie zamkniętą) wtedy i tylko gdy ma dokładnie dwa wierzchołki stopnia nieparzystego. 91. Przedstaw efektywny algorytm wyznaczania drogi Eulera w grafie. 92. Zaprojektuj dwa algorytmy tworzenia drzewa rozpinającego w grafie prostym spójnym: (a) rozpoczynający od zbioru pustego T dodający kolejne krawędzie do T, aż do otrzymania drzewa rozpinającego (b) rozpoczynający od zbioru wszystkich krawędzi i usuwający kolejne krawędzie, aż do otrzymania drzewa Uzasadnij poprawność tych algorytmów. 93. Jednocześnie z przeszukiwaniem grafu skonstruować drzewo rozpinające grafu 94. Opisz procedurę wyznaczania najkrótszej drogi między wierzchołkami w grafie a) prostym; b) skierowanym. 95. Opisz procedury sprawdzania w czasie O(n + m), że graf jest a) spójny; b) acykliczny. Jakiej reprezentacji musimy użyć? Jak sprawa się zmienia, gdy rozważymy wersje skierowane tych zagadnień? 96. Pokazać na przykładzie konkretnego grafu, że DFS iteracyjny (z bezpośrednim użyciem stosu) i DFS rekurencyjny wyznaczają różne drzewa i mogą wyznaczać nawet drzewa różnej wysokości. 97. * Czy da się tak zaprojektować DFS iteracyjny tak, żeby kolorował wierzchołki grafu (na biało, szaro i czarno) dokładnie tak samo jak DFS rekurencyjny. 98. (Problem chińskiego listonosza) Wskazać sposoby obliczania najkrótszej drogi zamkniętej w grafach ważonych eulerowskich i półeulerowskich. Odpowiedź uzasadnić. 99. Zaprojektować algorytm znajdowania krótkiej ścieżki pomiędzy wierzchołkami oparty na strategii zachłannej (w każdym wierzchołku wybieramy najkrótszą nieodwiedzoną krawędź). Pokazać, że w tym przypadku strategia zachłanna nie jest optymalna Rozważyć wersję algorytmu Kruskala polegającą na usuwaniu kolejnych krawędzi o możliwie największej wadze rozpoczynając od zbioru wszystkich krawędzi (Algorytm Prima) Zaprezentować algorytm wyznaczania minimalnego drzewa rozpinającego (MST) w grafir ważonym oparty na zasadzie dołączania kolejnych krawędzi do spójnego acyklicznego podgrafu o możliwie najmniejszej wadze (Backtracking) Zaprojektować iteracyjny algorytm numerujący wierzchołki drzewa w numeracji preorder. 7

wstęp do informatyki i programowania część testowa (25 pyt. / 60 min.)

wstęp do informatyki i programowania część testowa (25 pyt. / 60 min.) egzamin podstawowy 7 lutego 2017 r. wstęp do informatyki i programowania część testowa (25 pyt. / 60 min.) Instytut Informatyki Uniwersytetu Wrocławskiego Paweł Rzechonek imię, nazwisko i nr indeksu:..............................................................

Bardziej szczegółowo

Wykład 3. Złożoność i realizowalność algorytmów Elementarne struktury danych: stosy, kolejki, listy

Wykład 3. Złożoność i realizowalność algorytmów Elementarne struktury danych: stosy, kolejki, listy Wykład 3 Złożoność i realizowalność algorytmów Elementarne struktury danych: stosy, kolejki, listy Dynamiczne struktury danych Lista jest to liniowo uporządkowany zbiór elementów, z których dowolny element

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

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

Egzamin, AISDI, I termin, 18 czerwca 2015 r.

Egzamin, AISDI, I termin, 18 czerwca 2015 r. Egzamin, AISDI, I termin, 18 czerwca 2015 r. 1 W czasie niezależnym do danych wejściowych działają algorytmy A. sortowanie bąbelkowego i Shella B. sortowanie szybkiego i przez prosty wybór C. przez podział

Bardziej szczegółowo

Zofia Kruczkiewicz, Algorytmu i struktury danych, Wykład 14, 1

Zofia Kruczkiewicz, Algorytmu i struktury danych, Wykład 14, 1 Wykład Algorytmy grafowe metoda zachłanna. Właściwości algorytmu zachłannego:. W przeciwieństwie do metody programowania dynamicznego nie występuje etap dzielenia na mniejsze realizacje z wykorzystaniem

Bardziej szczegółowo

Algorytmy i Struktury Danych, 9. ćwiczenia

Algorytmy i Struktury Danych, 9. ćwiczenia Algorytmy i Struktury Danych, 9. ćwiczenia 206-2-09 Plan zajęć usuwanie z B-drzew join i split na 2-3-4 drzewach drzepce adresowanie otwarte w haszowaniu z analizą 2 B-drzewa definicja każdy węzeł ma następujące

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

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

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

Kolejka priorytetowa. Często rozważa się kolejki priorytetowe, w których poszukuje się elementu minimalnego zamiast maksymalnego.

Kolejka priorytetowa. Często rozważa się kolejki priorytetowe, w których poszukuje się elementu minimalnego zamiast maksymalnego. Kolejki Kolejka priorytetowa Kolejka priorytetowa (ang. priority queue) to struktura danych pozwalająca efektywnie realizować następujące operacje na zbiorze dynamicznym, którego elementy pochodzą z określonego

Bardziej szczegółowo

a) 7 b) 19 c) 21 d) 34

a) 7 b) 19 c) 21 d) 34 Zadanie 1. Pytania testowe dotyczące podstawowych własności grafów. Zadanie 2. Przy każdym z zadań może się pojawić polecenie krótkiej charakterystyki algorytmu. Zadanie 3. W zadanym grafie sprawdzenie

Bardziej szczegółowo

Wysokość drzewa Głębokość węzła

Wysokość drzewa Głębokość węzła Drzewa Drzewa Drzewo (ang. tree) zbiór węzłów powiązanych wskaźnikami, spójny i bez cykli. Drzewo posiada wyróżniony węzeł początkowy nazywany korzeniem (ang. root). Drzewo ukorzenione jest strukturą hierarchiczną.

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 programowania

Wstęp do programowania Wstęp do programowania Stosy, kolejki, drzewa Paweł Daniluk Wydział Fizyki Jesień 2013 P. Daniluk(Wydział Fizyki) WP w. VII Jesień 2013 1 / 25 Listy Lista jest uporządkowanym zbiorem elementów. W Pythonie

Bardziej szczegółowo

Matematyka dyskretna - 7.Drzewa

Matematyka dyskretna - 7.Drzewa Matematyka dyskretna - 7.Drzewa W tym rozdziale zajmiemy się drzewami: specjalnym przypadkiem grafów. Są one szczególnie przydatne do przechowywania informacji, umożliwiającego szybki dostęp do nich. Definicja

Bardziej szczegółowo

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

Struktury danych i złożoność obliczeniowa Wykład 5. Prof. dr hab. inż. Jan Magott Struktury danych i złożoność obliczeniowa Wykład. Prof. dr hab. inż. Jan Magott Algorytmy grafowe: podstawowe pojęcia, reprezentacja grafów, metody przeszukiwania, minimalne drzewa rozpinające, problemy

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

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 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

Wykład 8. Drzewo rozpinające (minimum spanning tree)

Wykład 8. Drzewo rozpinające (minimum spanning tree) Wykład 8 Drzewo rozpinające (minimum spanning tree) 1 Minimalne drzewo rozpinające - przegląd Definicja problemu Własności minimalnych drzew rozpinających Algorytm Kruskala Algorytm Prima Literatura Cormen,

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

Algorytmy i struktury danych. Wykład 4

Algorytmy i struktury danych. Wykład 4 Wykład 4 Różne algorytmy - obliczenia 1. Obliczanie wartości wielomianu 2. Szybkie potęgowanie 3. Algorytm Euklidesa, liczby pierwsze, faktoryzacja liczby naturalnej 2017-11-24 Algorytmy i struktury danych

Bardziej szczegółowo

Podstawy Informatyki. Sprawność algorytmów

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

Bardziej szczegółowo

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

Drzewo. Drzewo uporządkowane ma ponumerowanych (oznaczonych) następników. Drzewo uporządkowane składa się z węzłów, które zawierają następujące pola:

Drzewo. Drzewo uporządkowane ma ponumerowanych (oznaczonych) następników. Drzewo uporządkowane składa się z węzłów, które zawierają następujące pola: Drzewa Drzewa Drzewo (ang. tree) zbiór węzłów powiązanych wskaźnikami, spójny i bez cykli. Drzewo posiada wyróżniony węzeł początkowy nazywany korzeniem (ang. root). Drzewo ukorzenione jest strukturą hierarchiczną.

Bardziej szczegółowo

Algorytmiczna teoria grafów

Algorytmiczna teoria grafów Przedmiot fakultatywny 20h wykładu + 20h ćwiczeń 21 lutego 2014 Zasady zaliczenia 1 ćwiczenia (ocena): kolokwium, zadania programistyczne (implementacje algorytmów), praca na ćwiczeniach. 2 Wykład (egzamin)

Bardziej szczegółowo

Listy, kolejki, stosy

Listy, kolejki, stosy Listy, kolejki, stosy abc Lista O Struktura danych składa się z węzłów, gdzie mamy informacje (dane) i wskaźniki do następnych węzłów. Zajmuje tyle miejsca w pamięci ile mamy węzłów O Gdzie można wykorzystać:

Bardziej szczegółowo

Wprowadzenie do algorytmów / Thomas H. Cormen [et al.]. - wyd. 7. Warszawa, Spis treści. Wprowadzenie 2

Wprowadzenie do algorytmów / Thomas H. Cormen [et al.]. - wyd. 7. Warszawa, Spis treści. Wprowadzenie 2 Wprowadzenie do algorytmów / Thomas H. Cormen [et al.]. - wyd. 7. Warszawa, 2012 Spis treści Przedmowa XIII Część I Podstawy Wprowadzenie 2 1. Rola algorytmów w obliczeniach 4 1.1. Algorytmy 4 1.2. Algorytmy

Bardziej szczegółowo

Algorytmy i struktury danych. Wykład 4 Tablice nieporządkowane i uporządkowane

Algorytmy i struktury danych. Wykład 4 Tablice nieporządkowane i uporządkowane Algorytmy i struktury danych Wykład 4 Tablice nieporządkowane i uporządkowane Tablice uporządkowane Szukanie binarne Szukanie interpolacyjne Tablice uporządkowane Szukanie binarne O(log N) Szukanie interpolacyjne

Bardziej szczegółowo

Analiza algorytmów zadania podstawowe

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

Bardziej szczegółowo

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

Dynamiczny przydział pamięci w języku C. Dynamiczne struktury danych. dr inż. Jarosław Forenc. Metoda 1 (wektor N M-elementowy)

Dynamiczny przydział pamięci w języku C. Dynamiczne struktury danych. dr inż. Jarosław Forenc. Metoda 1 (wektor N M-elementowy) Rok akademicki 2012/2013, Wykład nr 2 2/25 Plan wykładu nr 2 Informatyka 2 Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr III, studia niestacjonarne I stopnia Rok akademicki 2012/2013

Bardziej szczegółowo

Drzewa poszukiwań binarnych

Drzewa poszukiwań binarnych 1 Cel ćwiczenia Algorytmy i struktury danych Instytut Sterowania i Systemów Informatycznych Wydział Elektrotechniki, Informatyki i Telekomunikacji Uniwersytet ielonogórski Drzewa poszukiwań binarnych Ćwiczenie

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

Sortowanie - wybrane algorytmy

Sortowanie - wybrane algorytmy Sortowanie - wybrane algorytmy Aleksandra Wilkowska Wydział Matematyki - Katedra Matematyki Stosowanej Politechika Wrocławska 2 maja 2018 1 / 39 Plan prezentacji Złożoność obliczeniowa Sortowanie bąbelkowe

Bardziej szczegółowo

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

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

Bardziej szczegółowo

Przypomnij sobie krótki wstęp do teorii grafów przedstawiony na początku semestru.

Przypomnij sobie krótki wstęp do teorii grafów przedstawiony na początku semestru. Spis treści 1 Drzewa 1.1 Drzewa binarne 1.1.1 Zadanie 1.1.2 Drzewo BST (Binary Search Tree) 1.1.2.1 Zadanie 1 1.1.2.2 Zadanie 2 1.1.2.3 Zadanie 3 1.1.2.4 Usuwanie węzła w drzewie BST 1.1.2.5 Zadanie 4

Bardziej szczegółowo

Tablice z haszowaniem

Tablice z haszowaniem Tablice z haszowaniem - efektywna metoda reprezentacji słowników (zbiorów dynamicznych, na których zdefiniowane są operacje Insert, Search i Delete) - jest uogólnieniem zwykłej tablicy - przyspiesza operacje

Bardziej szczegółowo

Klasa 2 INFORMATYKA. dla szkół ponadgimnazjalnych zakres rozszerzony. Założone osiągnięcia ucznia wymagania edukacyjne na. poszczególne oceny

Klasa 2 INFORMATYKA. dla szkół ponadgimnazjalnych zakres rozszerzony. Założone osiągnięcia ucznia wymagania edukacyjne na. poszczególne oceny 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ółowo

Zasady analizy algorytmów

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

Bardziej szczegółowo

Egzaminy i inne zadania. Semestr II.

Egzaminy i inne zadania. Semestr II. Egzaminy i inne zadania. Semestr II. Poniższe zadania są wyborem zadań ze Wstępu do Informatyki z egzaminów jakie przeprowadziłem w ciągu ostatnich lat. Ponadto dołączyłem szereg zadań, które pojawiały

Bardziej szczegółowo

Algorytmy Równoległe i Rozproszone Część V - Model PRAM II

Algorytmy Równoległe i Rozproszone Część V - Model PRAM II Algorytmy Równoległe i Rozproszone Część V - Model PRAM II Łukasz Kuszner pokój 209, WETI http://www.sphere.pl/ kuszner/ kuszner@sphere.pl Oficjalna strona wykładu http://www.sphere.pl/ kuszner/arir/ 2005/06

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

Algorytmy i struktury danych. Wykład 6 Tablice rozproszone cz. 2

Algorytmy i struktury danych. Wykład 6 Tablice rozproszone cz. 2 Algorytmy i struktury danych Wykład 6 Tablice rozproszone cz. 2 Na poprzednim wykładzie Wiele problemów wymaga dynamicznych zbiorów danych, na których można wykonywać operacje: wstawiania (Insert) szukania

Bardziej szczegółowo

Sortowanie. Kolejki priorytetowe i algorytm Heapsort Dynamiczny problem sortowania:

Sortowanie. Kolejki priorytetowe i algorytm Heapsort Dynamiczny problem sortowania: Sortowanie Kolejki priorytetowe i algorytm Heapsort Dynamiczny problem sortowania: podać strukturę danych dla elementów dynamicznego skończonego multi-zbioru S, względem którego są wykonywane następujące

Bardziej szczegółowo

Algorytmy i struktury danych.

Algorytmy i struktury danych. Kod przedmiotu: ASD Rodzaj przedmiotu: Wydział: Informatyki Kierunek: Informatyka Specjalność (specjalizacja): - Algorytmy i struktury danych. kierunkowy ; obowiązkowy Poziom studiów: pierwszego stopnia

Bardziej szczegółowo

Uniwersytet Zielonogórski Instytut Sterowania i Systemów Informatycznych. Algorytmy i struktury danych Laboratorium 7. 2 Drzewa poszukiwań binarnych

Uniwersytet Zielonogórski Instytut Sterowania i Systemów Informatycznych. Algorytmy i struktury danych Laboratorium 7. 2 Drzewa poszukiwań binarnych Uniwersytet Zielonogórski Instytut Sterowania i Systemów Informatycznych Algorytmy i struktury danych Laboratorium Drzewa poszukiwań binarnych 1 Cel ćwiczenia Ćwiczenie ma na celu zapoznanie studentów

Bardziej szczegółowo

Algorytmika i pseudoprogramowanie

Algorytmika i pseudoprogramowanie Przedmiotowy system oceniania Zawód: Technik Informatyk Nr programu: 312[ 01] /T,SP/MENiS/ 2004.06.14 Przedmiot: Programowanie Strukturalne i Obiektowe Klasa: druga Dział Dopuszczający Dostateczny Dobry

Bardziej szczegółowo

2 Arytmetyka. d r 2 r + d r 1 2 r 1...d d 0 2 0,

2 Arytmetyka. d r 2 r + d r 1 2 r 1...d d 0 2 0, 2 Arytmetyka Niech b = d r d r 1 d 1 d 0 będzie zapisem liczby w systemie dwójkowym Zamiana zapisu liczby b na system dziesiętny odbywa się poprzez wykonanie dodawania d r 2 r + d r 1 2 r 1 d 1 2 1 + d

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

Złożoność obliczeniowa klasycznych problemów grafowych

Złożoność obliczeniowa klasycznych problemów grafowych Złożoność obliczeniowa klasycznych problemów grafowych Oznaczenia: G graf, V liczba wierzchołków, E liczba krawędzi 1. Spójność grafu Graf jest spójny jeżeli istnieje ścieżka łącząca każdą parę jego wierzchołków.

Bardziej szczegółowo

ZASADY PROGRAMOWANIA KOMPUTERÓW ZAP zima 2014/2015. Drzewa BST c.d., równoważenie drzew, kopce.

ZASADY PROGRAMOWANIA KOMPUTERÓW ZAP zima 2014/2015. Drzewa BST c.d., równoważenie drzew, kopce. POLITECHNIKA WARSZAWSKA Instytut Automatyki i Robotyki ZASADY PROGRAMOWANIA KOMPUTERÓW ZAP zima 204/205 Język programowania: Środowisko programistyczne: C/C++ Qt Wykład 2 : Drzewa BST c.d., równoważenie

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

WSTĘP DO INFORMATYKI. Drzewa i struktury drzewiaste

WSTĘP DO INFORMATYKI. Drzewa i struktury drzewiaste Akademia Górniczo-Hutnicza Wydział Elektrotechniki, Automatyki, Informatyki i Inżynierii Biomedycznej WSTĘP DO INFORMATYKI Adrian Horzyk Drzewa i struktury drzewiaste www.agh.edu.pl DEFINICJA DRZEWA Drzewo

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

Struktury danych: stos, kolejka, lista, drzewo

Struktury danych: stos, kolejka, lista, drzewo Struktury danych: stos, kolejka, lista, drzewo Wykład: dane w strukturze, funkcje i rodzaje struktur, LIFO, last in first out, kolejka FIFO, first in first out, push, pop, size, empty, głowa, ogon, implementacja

Bardziej szczegółowo

Matematyka dyskretna - 8. Egzaminy próbne. Uwaga! Niektórych z tych zadań nie obejmuje program dla studiów zaocznych - proszę się tym nie niepokoić -

Matematyka dyskretna - 8. Egzaminy próbne. Uwaga! Niektórych z tych zadań nie obejmuje program dla studiów zaocznych - proszę się tym nie niepokoić - Matematyka dyskretna - 8. Egzaminy próbne. Uwaga! Niektórych z tych zadań nie obejmuje program dla studiów zaocznych - proszę się tym nie niepokoić - takie zadania pojawią się tylko na egzaminach dla studentów

Bardziej szczegółowo

Tablice z haszowaniem

Tablice z haszowaniem Tablice z haszowaniem - efektywna metoda reprezentacji słowników (zbiorów dynamicznych, na których zdefiniowane są operacje Insert, Search i Delete) - jest uogólnieniem zwykłej tablicy - przyspiesza operacje

Bardziej szczegółowo

Zadanie 1. Zmiana systemów. Zadanie 2. Szyfr Cezara. Zadanie 3. Czy liczba jest doskonała. Zadanie 4. Rozkład liczby na czynniki pierwsze Zadanie 5.

Zadanie 1. Zmiana systemów. Zadanie 2. Szyfr Cezara. Zadanie 3. Czy liczba jest doskonała. Zadanie 4. Rozkład liczby na czynniki pierwsze Zadanie 5. Zadanie 1. Zmiana systemów. Zadanie 2. Szyfr Cezara. Zadanie 3. Czy liczba jest doskonała. Zadanie 4. Rozkład liczby na czynniki pierwsze Zadanie 5. Schemat Hornera. Wyjaśnienie: Zadanie 1. Pozycyjne reprezentacje

Bardziej szczegółowo

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

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

Bardziej szczegółowo

dodatkowe operacje dla kopca binarnego: typu min oraz typu max:

dodatkowe operacje dla kopca binarnego: typu min oraz typu max: ASD - ćwiczenia IX Kopce binarne własność porządku kopca gdzie dla każdej trójki wierzchołków kopca (X, Y, Z) porządek etykiet elem jest następujący X.elem Y.elem oraz Z.elem Y.elem w przypadku kopca typu

Bardziej szczegółowo

Algorytmy i Struktury Danych, 2. ćwiczenia

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

Bardziej szczegółowo

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

TEORETYCZNE PODSTAWY INFORMATYKI

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

Bardziej szczegółowo

Wykład 2. Drzewa zbalansowane AVL i 2-3-4

Wykład 2. Drzewa zbalansowane AVL i 2-3-4 Wykład Drzewa zbalansowane AVL i -3-4 Drzewa AVL Wprowadzenie Drzewa AVL Definicja drzewa AVL Operacje wstawiania i usuwania Złożoność obliczeniowa Drzewa -3-4 Definicja drzewa -3-4 Operacje wstawiania

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

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 złożoności Wykład 5. Haszowanie (hashowanie, mieszanie)

Algorytmy i złożoności Wykład 5. Haszowanie (hashowanie, mieszanie) Algorytmy i złożoności Wykład 5. Haszowanie (hashowanie, mieszanie) Wprowadzenie Haszowanie jest to pewna technika rozwiązywania ogólnego problemu słownika. Przez problem słownika rozumiemy tutaj takie

Bardziej szczegółowo

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

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

Bardziej szczegółowo

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

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

Matematyczne Podstawy Informatyki

Matematyczne Podstawy Informatyki Matematyczne Podstawy Informatyki dr inż. Andrzej Grosser Instytut Informatyki Teoretycznej i Stosowanej Politechnika Częstochowska Rok akademicki 03/0 Przeszukiwanie w głąb i wszerz I Przeszukiwanie metodą

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

Podstawy Informatyki. Metody dostępu do danych

Podstawy Informatyki. Metody dostępu do danych Podstawy Informatyki c.d. alina.momot@polsl.pl http://zti.polsl.pl/amomot/pi Plan wykładu 1 Bazy danych Struktury danych Średni czas odszukania rekordu Drzewa binarne w pamięci dyskowej 2 Sformułowanie

Bardziej szczegółowo

Sortowanie. Bartman Jacek Algorytmy i struktury

Sortowanie. Bartman Jacek Algorytmy i struktury Sortowanie Bartman Jacek jbartman@univ.rzeszow.pl Algorytmy i struktury danych Sortowanie przez proste wstawianie przykład 41 56 17 39 88 24 03 72 41 56 17 39 88 24 03 72 17 41 56 39 88 24 03 72 17 39

Bardziej szczegółowo

Luty 2001 Algorytmy (7) 2000/2001 s-rg@siwy.il.pw.edu.pl

Luty 2001 Algorytmy (7) 2000/2001 s-rg@siwy.il.pw.edu.pl System dziesiętny 7 * 10 4 + 3 * 10 3 + 0 * 10 2 + 5 *10 1 + 1 * 10 0 = 73051 Liczba 10 w tym zapisie nazywa się podstawą systemu liczenia. Jeśli liczba 73051 byłaby zapisana w systemie ósemkowym, co powinniśmy

Bardziej szczegółowo

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

WYŻSZA SZKOŁA INFORMATYKI STOSOWANEJ I ZARZĄDZANIA DROGI i CYKLE w grafach Dla grafu (nieskierowanego) G = ( V, E ) drogą z wierzchołka v 0 V do v t V nazywamy ciąg (naprzemienny) wierzchołków i krawędzi grafu: ( v 0, e, v, e,..., v t, e t, v t ), spełniający

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 14c 2 Definicje indukcyjne Twierdzenia dowodzone przez indukcje Definicje indukcyjne Definicja drzewa

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

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

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

Zadania do samodzielnego rozwiązania

Zadania do samodzielnego rozwiązania Zadania do samodzielnego rozwiązania I. Podzielność liczb całkowitych 1. Pewna liczba sześciocyfrowa a kończy się cyfrą 5. Jeśli tę cyfrę przestawimy na miejsce pierwsze ze strony lewej, to otrzymamy nową

Bardziej szczegółowo

Algorytmy i struktury danych. wykład 5

Algorytmy i struktury danych. wykład 5 Plan wykładu: Wskaźniki. : listy, drzewa, kopce. Wskaźniki - wskaźniki Wskaźnik jest to liczba lub symbol który w ogólności wskazuje adres komórki pamięci. W językach wysokiego poziomu wskaźniki mogą również

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

Drzewa BST i AVL. Drzewa poszukiwań binarnych (BST)

Drzewa BST i AVL. Drzewa poszukiwań binarnych (BST) Drzewa ST i VL Drzewa poszukiwań binarnych (ST) Drzewo ST to dynamiczna struktura danych (w formie drzewa binarnego), która ma tą właściwość, że dla każdego elementu wszystkie elementy w jego prawym poddrzewie

Bardziej szczegółowo

operacje porównania, a jeśli jest to konieczne ze względu na złe uporządkowanie porównywanych liczb zmieniamy ich kolejność, czyli przestawiamy je.

operacje porównania, a jeśli jest to konieczne ze względu na złe uporządkowanie porównywanych liczb zmieniamy ich kolejność, czyli przestawiamy je. Problem porządkowania zwanego również sortowaniem jest jednym z najważniejszych i najpopularniejszych zagadnień informatycznych. Dane: Liczba naturalna n i ciąg n liczb x 1, x 2,, x n. Wynik: Uporządkowanie

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

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

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

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

Zadanie 1. Potęgi (14 pkt)

Zadanie 1. Potęgi (14 pkt) 2 Egzamin maturalny z informatyki Zadanie 1. otęgi (14 pkt) W poniższej tabelce podane są wartości kolejnych potęg liczby 2: k 0 1 2 3 4 5 6 7 8 9 10 2 k 1 2 4 8 16 32 64 128 256 512 1024 Ciąg a=(a 0,

Bardziej szczegółowo

0-0000, 1-0001, 2-0010, 3-0011 itd... 9-1001.

0-0000, 1-0001, 2-0010, 3-0011 itd... 9-1001. KODOWANIE Jednym z problemów, z którymi spotykamy się w informatyce, jest problem właściwego wykorzystania pamięci. Konstruując algorytm staramy się zwykle nie tylko o zminimalizowanie kosztów czasowych

Bardziej szczegółowo

Czy istnieje zamknięta droga spaceru przechodząca przez wszystkie mosty w Królewcu dokładnie jeden raz?

Czy istnieje zamknięta droga spaceru przechodząca przez wszystkie mosty w Królewcu dokładnie jeden raz? DROGI i CYKLE EULERA w grafach Czy istnieje zamknięta droga spaceru przechodząca przez wszystkie mosty w Królewcu dokładnie jeden raz? Czy można narysować podaną figurę nie odrywając ołówka od papieru

Bardziej szczegółowo

Kompletna dokumentacja kontenera C++ vector w - http://www.cplusplus.com/reference/stl/vector/

Kompletna dokumentacja kontenera C++ vector w - http://www.cplusplus.com/reference/stl/vector/ STL, czyli o co tyle hałasu W świecie programowania C++, hasło STL pojawia się nieustannie i zawsze jest o nim głośno... często początkujące osoby, które nie znają STL-a pytają się co to jest i czemu go

Bardziej szczegółowo

Teoretyczne podstawy informatyki

Teoretyczne podstawy informatyki Teoretyczne podstawy informatyki Wykład 6a Model danych oparty na drzewach 1 Model danych oparty na drzewach Istnieje wiele sytuacji w których przetwarzane informacje mają strukturę hierarchiczną lub zagnieżdżoną,

Bardziej szczegółowo

PODSTAWY INFORMATYKI wykład 10.

PODSTAWY INFORMATYKI wykład 10. PODSTAWY INFORMATYKI wykład 10. 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-Hutniacza w Krakowie WEAIiE,

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

Porównanie algorytmów wyszukiwania najkrótszych ścieżek międz. grafu. Daniel Golubiewski. 22 listopada Instytut Informatyki

Porównanie algorytmów wyszukiwania najkrótszych ścieżek międz. grafu. Daniel Golubiewski. 22 listopada Instytut Informatyki Porównanie algorytmów wyszukiwania najkrótszych ścieżek między wierzchołkami grafu. Instytut Informatyki 22 listopada 2015 Algorytm DFS w głąb Algorytm przejścia/przeszukiwania w głąb (ang. Depth First

Bardziej szczegółowo

ALGORYTMY I STRUKTURY DANYCH

ALGORYTMY I STRUKTURY DANYCH LGORTM I STRUKTUR DNH Temat 6: Drzewa ST, VL Wykładowca: dr inż. bigniew TRPT e-mail: bigniew.tarapata@isi.wat.edu.pl http://www.tarapata.strefa.pl/p_algorytmy_i_struktury_danych/ Współautorami wykładu

Bardziej szczegółowo