Algorytmy i struktury danych

Podobne dokumenty
OSTASZEWSKI Paweł (55566) PAWLICKI Piotr (55567) Algorytmy i Struktury Danych PIŁA

Twój wynik: 4 punktów na 6 możliwych do uzyskania (66,67 %).

Drzewa poszukiwań binarnych

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

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

INFORMATYKA SORTOWANIE DANYCH.

Zadanie 1 Przygotuj algorytm programu - sortowanie przez wstawianie.

WSTĘP DO INFORMATYKI. Drzewa i struktury drzewiaste

Podstawy Informatyki. Metody dostępu do danych

Struktury Danych i Złożoność Obliczeniowa

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.

Sortowanie bąbelkowe

Lista 0. Kamil Matuszewski 1 marca 2016

Kompletna dokumentacja kontenera C++ vector w -

AiSD zadanie drugie. Gliwiński Jarosław Marek Kruczyński Konrad Marek Grupa dziekańska I5. 10 kwietnia 2008

Struktury Danych i Złożoność Obliczeniowa

Podstawowe struktury danych

prowadzący dr ADRIAN HORZYK /~horzyk tel.: Konsultacje paw. D-13/325

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

Informatyka 1. Złożoność obliczeniowa

Algorytmy i. Wykład 5: Drzewa. Dr inż. Paweł Kasprowski

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

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

Jeszcze o algorytmach

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

ALGORYTMY I STRUKTURY DANYCH

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

Tadeusz Pankowski

Podstawy Programowania. Złożoność obliczeniowa

Podstawy Informatyki. Sprawność algorytmów

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. Bartman Jacek Algorytmy i struktury

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

Sortowanie - wybrane algorytmy

Programowanie w VB Proste algorytmy sortowania

Analiza algorytmów zadania podstawowe

Algorytmy i Struktury Danych

Sortowanie przez scalanie

Algorytmy i struktury danych. wykład 5

Algorytm DIC. Dynamic Itemset Counting. Magdalena Przygórzewska Karolina Stanisławska Aleksander Wieczorek

Algorytmy i Struktury Danych. (c) Marcin Sydow. Sortowanie Selection Sort Insertion Sort Merge Sort. Sortowanie 1. Listy dowiązaniowe.

Algorytm selekcji Hoare a. Łukasz Miemus

Jeśli czas działania algorytmu zależy nie tylko od rozmiaru danych wejściowych i przyjmuje różne wartości dla różnych danych o tym samym rozmiarze,

Kompresja danych Streszczenie Studia Dzienne Wykład 10,

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

Sortowanie. Kolejki priorytetowe i algorytm Heapsort Dynamiczny problem sortowania:

Zadanie projektowe nr 1

Technologie cyfrowe. Artur Kalinowski. Zakład Cząstek i Oddziaływań Fundamentalnych Pasteura 5, pokój 4.15

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

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

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

Struktury Danych i Złożoność Obliczeniowa

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

Wprowadzenie do złożoności obliczeniowej

Java Collections Framework

Bazy danych. Andrzej Łachwa, UJ, /15

BAZY DANYCH. Microsoft Access. Adrian Horzyk OPTYMALIZACJA BAZY DANYCH I TWORZENIE INDEKSÓW. Akademia Górniczo-Hutnicza

Algorytmy równoległe. Rafał Walkowiak Politechnika Poznańska Studia inżynierskie Informatyka 2010

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

Plan wykładu. Klucz wyszukiwania. Pojęcie indeksu BAZY DANYCH. Pojęcie indeksu - rodzaje indeksów Metody implementacji indeksów.

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

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 poszukiwań binarnych

Algorytmy i struktury danych Sortowanie IS/IO, WIMiIP

liniowa - elementy następują jeden za drugim. Graficznie możemy przedstawić to tak:

Algorytmy i Struktury Danych.

Każdy węzeł w drzewie posiada 3 pola: klucz, adres prawego potomka i adres lewego potomka. Pola zawierające adresy mogą być puste.

Teoretyczne podstawy informatyki

Podstawy Programowania

Podstawy Programowania. Złożoność obliczeniowa

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

Strategia "dziel i zwyciężaj"

Sortowanie. Tomasz Żak zak. styczeń Instytut Matematyki i Informatyki, Politechnika Wrocławska

Sprawozdanie do 5. Projektu z Algorytmów i struktur danych 1

PLAN WYKŁADU BAZY DANYCH INDEKSY - DEFINICJE. Indeksy jednopoziomowe Indeksy wielopoziomowe Indeksy z użyciem B-drzew i B + -drzew

Porządek symetryczny: right(x)

BAZY DANYCH. Microsoft Access. Adrian Horzyk OPTYMALIZACJA BAZY DANYCH I TWORZENIE INDEKSÓW. Akademia Górniczo-Hutnicza

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

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

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

Teoretyczne podstawy informatyki

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

Modelowanie hierarchicznych struktur w relacyjnych bazach danych

Drzewa wyszukiwań binarnych (BST)

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

PODSTAWY INFORMATYKI wykład 5.

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

AiSD zadanie trzecie

Def. Kod jednoznacznie definiowalny Def. Kod przedrostkowy Def. Kod optymalny. Przykłady kodów. Kody optymalne

Wykład X. Programowanie. dr inż. Janusz Słupik. Gliwice, Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2016 Janusz Słupik

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

Tablice z haszowaniem

struktury danych dla operacji słownikowych

Michał Kazimierz Kowalczyk rok 1, semestr 2 nr albumu indeksu: Algorytmy i struktury danych. Problem połączeń

Podstawy Programowania

5. Bazy danych Base Okno bazy danych

Struktura drzewa w MySQL. Michał Tyszczenko

Algorytmy sortujące i wyszukujące

Przykładowe sprawozdanie. Jan Pustelnik

Transkrypt:

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 Kostera, nr 16552

1.Tworzenie struktury danych Czas (w sekundach) tworzenia struktury 2 1,8 1,6 1,4 1,2 1,8,6,4,2 cb cl ctr ctb Rozmiar cl ctb cb ctr 5,1,1,1,2 1,1,3,3,5 2,1,5,7,16 3,3,8,11,28 4,2,11,15,41 5,4,12,19,54 6,4,16,23,7 7,6,18,28,81 8,6,22,32 1,6 9,9,25,36 1,9 1,8,28,4 1,39 15,14,42,62 1,78 Najszybciej powstaje lista jednokierunkowa, zdecydowanie najwolniej jako drzewo poszukiwań binarnych TR. Podczas budowy drzewa następuje wiele porównań przez co ma złożoność O(n*log 2 n). Tworzenie listy ma złożoność O(n). Tworzenie drzewa TR trwa dłużej niż tworzenie drzewa TB, ponieważ drzewo TR jest wyższe(oprócz wypadku optymistycznego wtedy jest takie same), a zatem znalezienie miejsc, w które należy wstawić kolejne elementy wymaga większej liczby porównań.

2. Wyszukiwanie w strukturach danych Czas wyszukiwania wszystkich elementów w standardowej tablicy i na liście: 12 1 8 6 4 2 ssb sl Czas (w sekundach) wyszukiwania wszystkich elementów w tablicy połówkowej i drzewach: 2 1,8 1,6 1,4 1,2 1,8,6,4 sbb str stb,2

Rozmiar stb str sbb ssb sl 5,1,2,2 8,3 8,99 1,3,4,3 31,98 42,67 2,9,14,9 128,22 189,27 3,16,25,16 29,2 453,72 4,23,38,26 516,92 812,98 5,3,5,37 89,1 1312,12 6,39,65,55 1166,45 215,37 7,46,81,63 1588,35 2892,59 8,56 1,1,77 275,25 3845,18 9,63 1,9,97 2626,33 4648,45 1,74 1,31 1,15 3243,45 695,72 15,99 1,78 1,9 7298,27 11127,9 Algorytmy wyszukiwania elementu w tablicy i w liście działają na bardzo podobnej zasadzie, porównują kolejne elementy z wartością szukaną, dopóki jej nie znajdą, przez co czas działania wydłuża się. Wyszukiwanie w tablicy okazało się jednak szybsze, być może dlatego że bezpośrednie odwołanie do elementu może zajmować mniej czasu niż odwołanie poprzez poprzedni element na liście. Algorytmy wyszukiwania połówkowego w tablicy i wyszukiwania w drzewie TB również działają na podobnej zasadzie - korzystamy z uporządkowania elementów w strukturze tzn. jeśli bieżący element jest większy(mniejszy) od szukanego elementu, kontynuujemy szukanie tylko dla elementów mniejszych(większych) od bieżącego. Pozwala to na zmniejszenie złożoności do O(n*log 2 n). Wyszukiwanie połówkowe w tablicy przebiega jednak wolniej, gdyż wymaga każdorazowego wyliczania indeksu, pod którym znajdziemy kolejny porównywany element, podczas gdy węzły drzewa zawierają do niego bezpośredni wskaźnik.

3. Wysokość drzew poszukiwań binarnych 5 45 4 35 3 25 2 15 1 5 htb htr Rozmiar htb htr 5 16 111 1 17 11 2 18 128 3 19 139 4 19 265 5 19 195 6 2 283 7 2 144 8 2 38 9 2 255 1 2 434 15 21 413 Wysokość drzewa TR jest znacznie większa niż wysokość drzewa TB. Wprowadzenie danych w kolejności wynikającej z dzielenia połówkowego tablicy posortowanej umożliwia nam stworzenie drzewa o wysokości 1+log 2 n, czyli drzewa wyważonego (TB). Gdybyśmy umieszczali posortowane dane wg tablicy B to drzewo składałoby się z jednej długiej gałęzi. Wysokość takiego drzewa byłaby równa n. W przypadku drzewa TR dane wprowadzane są losowo a jego wysokość zawiera się w przedziale od 1+log 2 n do n. Wysokość jest zależna od danych. Wysokość drzewa poszukiwań binarnych jest bardzo istotna, gdyż reguluje czas wykonywania podstawowych operacji na tej strukturze, takich jak wyszukiwanie bądź dodawanie nowego elementu. Aby np. odszukać w drzewie konkretny element musimy bowiem przejść całą ścieżkę od korzenia, aż do tego elementu, wykonując przy tym tyle porównań ile wynosi długość ścieżki.

Wysokość drzewa będzie więc oznaczała maksymalną liczbę porównań które musimy wykonać żeby znaleźć szukany element. Im niższe drzewo tym mniej porównań, krótszy czas wykonywania operacji i korzystniejsza struktura. 4.Wady i zalety Złożoność pamięciowa wszystkich struktur jest taka sama i jest O(n). Jednak elementy tablicy zawierają jedynie wartość danej, element listy zawiera dane i wskaźnik, zaś element drzewa dane oraz dwa wskaźniki. Tablice: + bezpośredni dostęp do elementów + łatwa implementacja gotowa struktura + szybkie tworzenie (złożoność O(n), wydłuża się dla tablicy posortowanej) + krótki czas wyszukiwania na zasadzie dzielenia połówkowego (wymaga posortowania) + najmniejsze wymagania pamięciowe - najdłuższy czas wyszukiwania elementu (dla prostego wyszukiwania, złożoność O(n)) - niewielka elastyczność (trudno dodać bądź usunąć element, zmienić rozmiar tablicy itp.) Lista jednokierunkowa: + wysoka elastyczność (łatwe dodawanie i usuwanie elementów, zmienianie rozmiaru listy itp.) + łatwa implementacja lecz brak gotowej struktury + najkrótszy czas tworzenia (złożoność O(n)) - długi czas wyszukiwania elementu (złożoność O(n)) - nienaturalny dostęp do elementów - niełatwe sortowanie Drzewa BST: + logarytmiczna złożoność wyszukiwania elementu (w przypadku pesymistycznym degraduje się do O(n)) - średnia elastyczność (dodanie elementu wymaga wielu operacji porównania, usunięcie też może być skomplikowane) - nienaturalny dostęp do elementów - najtrudniejsza implementacja(lecz nadal dość łatwa) - dłuższy czas tworzenia (szczególnie dla posortowanych danych, złożoność od O(n*log 2 n) do nawet O(n 2 )) - duża zależność złożoności operacji od danych wejściowych - największe wymagania pamięciowe