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

Podobne dokumenty
Algorytmy i struktury danych

Struktury Danych i Złożoność Obliczeniowa

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

Podstawy Informatyki. Metody dostępu do danych

Porównanie Heap Sort, Counting Sort, Shell Sort, Bubble Sort. Porównanie sortowao: HS, CS, Shs, BS

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

INFORMATYKA SORTOWANIE DANYCH.

Sortowanie. Bartman Jacek Algorytmy i struktury

Drzewa poszukiwań binarnych

Tadeusz Pankowski

Zadanie projektowe nr 1

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

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

Zadanie 1 Przygotuj algorytm programu - sortowanie przez wstawianie.

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

Kompletna dokumentacja kontenera C++ vector w -

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

Sortowanie - wybrane algorytmy

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

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

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

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

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

AiSD zadanie trzecie

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

WSTĘP DO INFORMATYKI. Drzewa i struktury drzewiaste

Zaawansowane algorytmy i struktury danych

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

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

Matematyczne Podstawy Informatyki

Algorytmy i struktury danych. wykład 5

Programowanie w VB Proste algorytmy sortowania

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

Podstawy Informatyki. Sprawność algorytmów

TEORETYCZNE PODSTAWY INFORMATYKI

Podstawowe struktury danych

Porządek symetryczny: right(x)

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 binarne BST. LABORKA Piotr Ciskowski

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

Sortowanie bąbelkowe

Bazy danych. Andrzej Łachwa, UJ, /15

ALGORYTMY I STRUKTURY DANYCH

Algorytmy i Struktury Danych

Informatyka 1. Złożoność obliczeniowa

Wykład 5. Sortowanie w czasie liniowologarytmicznym

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 )

Strategia "dziel i zwyciężaj"

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

Definicja pliku kratowego

Wstęp do programowania

Lista 0. Kamil Matuszewski 1 marca 2016

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

Zaawansowane algorytmy i struktury danych

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

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

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

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

Programowanie obiektowe

KOMPUTEROWE SYSTEMY POMIAROWE

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

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

Sortowanie. Kolejki priorytetowe i algorytm Heapsort Dynamiczny problem sortowania:

ALGORYTMY I STRUKTURY DANYCH

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.

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

Drzewa poszukiwań binarnych

Jeszcze o algorytmach

Wykład 6. Drzewa poszukiwań binarnych (BST)

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

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

Luty 2001 Algorytmy (4) 2000/2001

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

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

Sortowanie danych. Jolanta Bachan. Podstawy programowania

Wstęp do programowania. Drzewa podstawowe techniki. Piotr Chrząstowski-Wachtel

Podstawy Programowania. Złożoność obliczeniowa

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 2018/19 semestr zimowy. Wykład 13. Karol Tarnowski A-1 p.

Matematyka dyskretna - 7.Drzewa

Teoretyczne podstawy informatyki

Haszowanie (adresowanie rozpraszające, mieszające)

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

Podstawy Informatyki Metody dostępu do danych

System plików ReiserFs

Ogólne zasady projektowania algorytmów i programowania

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

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

Wyszukiwanie binarne

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

PODSTAWY INFORMATYKI wykład 10.

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

Sortowanie zewnętrzne

PODSTAWY INFORMATYKI wykład 5.

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

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

Automatyczne tworzenie trójwymiarowego planu pomieszczenia z zastosowaniem metod stereowizyjnych

Efektywność algorytmów

Drzewa rozpinajace, zbiory rozłaczne, czas zamortyzowany

Transkrypt:

OSTASZEWSKI Paweł (55566) PAWLICKI Piotr (55567) 20.11.2002 Algorytmy i Struktury Danych PIŁA ZŁOŻONE STRUKTURY DANYCH

C za s tw or ze nia s tr uk tur y (m s ) TWORZENIE ZŁOŻONYCH STRUKTUR DANYCH: 00 0 100 10 1 3000 5000 7000 9000 1 L iczb a elem en tó w 13000 15000 17000 19000 2 23000 25000 TABLICA LISTA DYNAMICZNA DRZEWO BST 26,379 2,931 2000 105,516 4,885 3000 229,595 6,839 4000 407,409 9,770 5000 635,050 11,724 6000 916,426 14,655 7000 1243,721 17,586 8000 1626,705 21,494 9000 2058,539 23,448 0 2547,039 27,356 1 3102,952 30,287 12000 3721,393 33,218 13000 4392,592 37,126 14000 5079,423 40,057 15000 5885,448 44,942 16000 6789,173 48,850 17000 7808,184 51,781 18000 9011,848 56,666 19000 10408,958 60,574 20000 12009,284 63,505 2 13801,102 67,413 22000 15844,986 72,298 23000 17932,835 76,206 24000 20226,831 80,114 25000 22893,064 83,045 D rzew o B ST L ista D ynam iczna

C za s tw or ze nia s tr uk tur y (m s ) WYSZUKIWANIE W ZŁOŻONYCH STRUKTURACH DANYCH: 0 100 10 1 3000 5000 7000 9000 1 13000 L iczb a elem en tó w 15000 17000 19000 2 23000 25000 D rzew o B ST L ista D ynam iczna TABLICA LISTA DYNAMICZNA DRZEWO BST 77,183 23,689 2000 128,964 27,565 3000 178,791 33,218 4000 232,526 39,334 5000 280,399 50,214 6000 344,881 56,678 7000 379,076 64,978 8000 430,857 74,265 9000 474,822 84,912 0 541,258 91,766 1 614,533 99,654 12000 631,142 110,527 13000 714,187 121,666 14000 801,14 132,743 15000 850,967 144,365 16000 923,265 152,328 17000 1126,481 160,009 18000 1318,950 174,223 19000 1507,511 185,366 20000 1695,095 197,328 2 1909,058 208,357 22000 2088,826 220,478 23000 2292,042 231,256 24000 2534,338 250,369 25000 2556,809 270,109

Cz as tw o rz en ia st ru ktu ry ( ms) USUWANIE ZŁOŻONYCH STRUKTUR DANYCH: 0 100 10 1 3000 5000 7000 9000 1 13000 15000 17000 19000 2 23000 25000 L icz b a e le m e n tó w L ista D yn am icz n a D rz ew o B S T TABLICA LISTA DYNAMICZNA DRZEWO BST 1,954 1,954 2000 7,816 7,816 3000 14,655 14,655 4000 24,425 24,425 5000 36,149 39,080 6000 52,758 62,528 7000 71,321 94,769 8000 91,838 133,849 9000 118,217 182,699 0 150,458 262,813 1 193,446 408,386 12000 242,296 609,648 13000 298,962 893,955 14000 360,513 1210,503 15000 428,903 1583,717 16000 510,971 2029,229 17000 619,418 2509,913 18000 832,404 3082,435 19000 1097,171 3611,969 20000 1431,305 4250,927 2 1829,921 5146,836 22000 2259,801 5624,589 23000 2718,014 6319,236 24000 3227,031 7040,262 25000 3740,933 7936,171

WNIOSKI: Podczas przeprowadzonych pomiarów lista za każdym razem wypadała kiepsko, co było spowodowane właściwościami listy, podczas wyszukiwania elementu na posortowanej liście wykonuje średnio N/2 porównań; w przypadku pesymistycznym, gdy jako ciąg wejściowy podawana jest tablica posortowana algorytm za każdym razem wykonuje N porównań. Operacją, która lista konkuruje z drzewem BST jest - usuwanie. Przebiega dość szybko, że każdorazowo jest usuwany ostatni element i za każdym usunięciem lista staje się krótsza. Niewątpliwą zaletą listy i zarówno możemy to traktować jako przewagę nad drzewem BST jest to, że bardzo proste są algorytmy ją obsługujące. Po zapoznaniu się teoretycznym z zagadnieniem list i drzew BST, nie mieliśmy większych problemów z zaimplementowaniem listy, choć z drzewem BST nie było już tak prosto i oczywiście. Drzewo BST w pomiarach było znacznie szybsze od listy. Przewaga drzewa nad listą najbardziej jest zauważalna podczas wyszukiwania, gdzie czas wyszukiwania w drzewie jest znacznie lepszy. Jest to uwarunkowane tym, że wyszukiwanie w drzewie binarnym odbywa się za pomocą klucza, dzięki któremu maksymalna liczba porównań jest równa wysokości drzewa. W drzewie BST w wysokości drzewa jest pewną pułapką ponieważ jeśli jako ciąg wejściowy zostanie podany ciąg liczb posortowanych (tablica posortowana) lub prawie posortowanych to drzewo będzie listą albo drzewem o bardzo dużych różnicach w wysokościach poszczególnych gałęziach. Wady i zalety listy dynamicznej oraz drzewa BST ze wszystkich typów przeglądania za pomocą różnych struktur najszybsze jest drzewo BST, które ma złożoność czasową O(log 2 n) operacje wykonywane na drzewach BST są kilkakrotnie szybsze od tych wykonywanych na pozostałych strukturach wszystkie podstawowe operacje są wykonywane w czasie 0(h), gdzie h jest wysokością drzewa - ulega ona jednak ciągłym zmianom podczas wstawiania lub usuwania w przypadku drzewa BST liście ułożone są w pewnym określonym porządku - lewa odnoga i jej odnogi mają mniejszą, bądź równą wartość, wartości korzenia, a prawa i jej odnogi mają wartość większą w najgorszym przypadku (jeśli elementy pojawiają w rosnącym lub malejącym porządku) drzewo staje się listą. przeglądanie w liście jest dużo wolniejsze niż w przypadku użycia BST ale z listy możemy łatwiej usunąć dany element co w przypadku BST sprawia pewne trudności BST podobnie jak lista korzysta z pamięci w sposób dynamiczny

BST zużywa więcej pamięci niż lista ale jest najefektywniejszy Podsumowując drzewa wydają się być efektywniejszą strukturą w porównaniu z listą. Wyniki osiągane są często nieporównywalnie większe od wyników osiąganych przez listę dynamiczną, dlatego też drzewa BST są naprawdę godne uwagi, lecz pewna skomplikowaność implementacyjna delikatnie przyćmiewa jego potęgę. Porównanie drzewa BST z drzewem doskonale zrównoważonym Drzewo BST jest szybsze w osiągach od drzewa doskonale wyważonego ale wysokość tego drzewa jest większa W przypadku drzewa doskonale zrównoważonego można wykonywać w 0(log n) jednostkach czasu operacje wstawiania, usuwania i lokalizacji stopień komplikacji wyważania powoduje to, że drzew doskonale zrównoważonych należy używać, gdy pobieranie informacji jest częstsze niż wstawiania wadą tego drzewa jest to iż drzewa doskonale wyważone tracą tą cechę jeśli mamy bardzo dużo elementów usuwanie tak samo jak w przypadku drzewa BST jest skomplikowane i wymaga w najgorszym przypadku wykonania 0(log n) operacji - rzadko spotykane Podsumowując główną zaletą i zarazem skutkiem wyważania drzewa doskonale zrównoważonego jest fakt, że otrzymujemy drzewo o minimalnej wysokości. Efektywność tego rodzaju drzewa ustępuje wyraźnie drzewom BST, dlatego zgodnie z przeprowadzonymi badaniami należy wybrać BST, jeśli chcemy skrócić czas oczekiwania na wyniki działania programu korzystającego z drzew BST. Ogólne wnioski dotyczące doboru struktur danych: Dobór struktury zależy od problemu jaki chcemy rozwiązać. Jeżeli zależy nam na oszczędzaniu pamięci to wybierzemy listę, a jeśli zależy nam dodatkowo na szybkości działania to możemy zdecydować się na drzewo BST. Dzięki temu, że jest najszybszą z metod oszczędzamy na czasie np.: możemy wykorzystać ją w budowie baz danych o dużej liczbie elementów z możliwością szybkiego dostępu do dowolnego interesującego nas elementu. Z kolei, jeśli zależy nam na maksymalnym zoptymalizowaniu programu pod kątem wykorzystania pamięci to proponuję skorzystać z listy, która bardzo oszczędza pamięć.