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

Podobne dokumenty
Struktury danych: stos, kolejka, lista, drzewo

Sortowanie. Kolejki priorytetowe i algorytm Heapsort Dynamiczny problem sortowania:

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

Algorytmy i Struktury Danych

Podstawowe struktury danych

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

dr inż. Paweł Myszkowski Wykład nr 11 ( )

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

Sortowanie. Bartman Jacek Algorytmy i struktury

ALGORYTMY I STRUKTURY DANYCH

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

Porządek symetryczny: right(x)

Struktury Danych i Złożoność Obliczeniowa

Abstrakcyjne struktury danych - stos, lista, drzewo

Stos LIFO Last In First Out

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

Sortowanie - wybrane algorytmy

0-0000, , , itd

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:

Listy, kolejki, stosy

Lista liniowa dwukierunkowa

E: Rekonstrukcja ewolucji. Algorytmy filogenetyczne

Programowanie obiektowe

Programowanie obiektowe

Algorytmy i struktury danych. wykład 5

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

Laboratorium z przedmiotu Programowanie obiektowe - zestaw 04

Algorytmiczna teoria grafów

Algorytmy i struktury danych

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

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

Programowanie obiektowe

ALGORYTMY I STRUKTURY DANYCH

Tadeusz Pankowski

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

Kurs II, zajęcia 1. Tomasz Kulczyński, Błażej Osiński, Wojciech Śmietanka. Stos, kolejka i lista. Stos. Kolejka. Lista dwukierunkowa

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

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

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

Wstęp do programowania

Algorytmy i Struktury Danych. Co dziś? Drzewo decyzyjne. Wykład IV Sortowania cd. Elementarne struktury danych

Algorytmy i Struktury Danych

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

PODSTAWY INFORMATYKI wykład 6.

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

WSTĘP DO INFORMATYKI. Drzewa i struktury drzewiaste

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

Struktury Danych i Złożoność Obliczeniowa

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

Grafy (3): drzewa. Wykłady z matematyki dyskretnej dla informatyków i teleinformatyków. UTP Bydgoszcz

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

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

WSTĘP DO INFORMATYKI. Struktury liniowe

Teoretyczne podstawy informatyki

Podstawy Informatyki. Metody dostępu do danych

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

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

Algorytm Dijkstry znajdowania najkrótszej ścieżki w grafie

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

Podstawy Informatyki. Wykład 6. Struktury danych

Drzewa poszukiwań binarnych

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

Drzewa czerwono-czarne.

Teoretyczne podstawy informatyki

Struktura danych. Sposób uporządkowania informacji w komputerze. Na strukturach danych operują algorytmy. Przykładowe struktury danych:

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

Algorytmy przeszukiwania

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

Przykładowe B+ drzewo

Sztuczna Inteligencja i Systemy Doradcze

Laboratoria nr 1. Sortowanie

Sortowanie bąbelkowe

ALGORYTMY I STRUKTURY DANYCH

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

Algorytmy grafowe. Wykład 1 Podstawy teorii grafów Reprezentacje grafów. Tomasz Tyksiński CDV

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.

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

Drzewa poszukiwań binarnych

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

Egzaminy i inne zadania. Semestr II.

INFORMATYKA DANE.

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

Algorytmy i Struktury Danych.

WSTĘP DO INFORMATYKI. Złożoność obliczeniowa, efektywność i 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.

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

Kompresja danych Streszczenie Studia Dzienne Wykład 10,

Jeszcze o algorytmach

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

Wstęp do programowania. Listy. Piotr Chrząstowski-Wachtel

Algorytmy i str ruktury danych. Metody algorytmiczne. Bartman Jacek

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

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

Algorytmy i Struktury Danych.

< K (2) = ( Adams, John ), P (2) = adres bloku 2 > < K (1) = ( Aaron, Ed ), P (1) = adres bloku 1 >

KARTA KURSU. Algorytmy, struktury danych i techniki programowania. Algorithms, Data Structures and Programming Techniques

Algorytmy i struktury danych

Politechnika Krakowska im. Tadeusza Kościuszki. Karta przedmiotu. obowiązuje w roku akademickim 2012/2013. Algorytmy i struktury danych

Transkrypt:

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 można usunąć oraz dodać w dowolnym miejscu. Pierwszy i ostatni element listy nazywamy końcami listy. Szczególnym przypadkiem listy jest: stos (pobrać, odczytać i wstawić element można tylko na końcu listy), kolejka (pobrać i odczytać element można tylko na początku listy, a dodać na końcu). Listy mogą być posortowane (najmniejszy element jest w korzeniu).

Lista jednokierunkowa posortowana Aby dodać element do listy posortowanej należy sprawdzić, w którym miejscu powinien się znajdować. Sprawdzamy od korzenia, schodząc w dół, jeśli element, który chcemy dodać jest większy od badanego węzła i mniejszy od jego następnika, to należy umieścić go między nimi. Wskaźnik aktualnego węzła ustawia się na dodawany element, a wskaźnik tego elementu na następnik. Ponieważ jest to lista jednokierunkowa, przeszukiwanie jej należy zawsze zaczynać od korzenia. Dodając pierwszy element do pustej listy należy zapamiętać jego wskaźnik, by później móc się do niego przenieść.

W przeciwieństwie do stosu i kolejki listy mogą zawierać dwa wskaźniki. Listy dwukierunkowe Oto schemat listy dwukierunkowej:

Kolejka jest strukturą liniowo uporządkowanych danych, w której dołączać nowe dane można jedynie na koniec kolejki a usuwać z początku. Procedura usunięcia danych z końca kolejki jest taka sama, jak w przypadku stosu, z tą różnicą, że usuwamy dane od początku a nie od końca. Pierwszy element (a dokładniej wskaźnik do jego miejsca w pamięci) musi zostać zapamiętany, by możliwe było usuwanie pierwszego elementu w czasie stałym O(1). Gdybyśmy tego nie zrobili, aby dotrzeć do pierwszego elementu należałoby przejść wszystkie od elementu aktualnego (czyli ostatniego), co wymaga czasu O(n). Działanie na kolejce jest intuicyjnie jasne, gdy skojarzymy ją z kolejką ludzi np. w sklepie. Każdy nowy klient staje na jej końcu, obsługa odbywa się jedynie na początku.

Schemat kolejki wygląda następująco:

Stos jest strukturą liniowo uporządkowanych danych, z których jedynie ostatni element, zwany wierzchołkiem, jest w danym momencie dostępny. W wierzchołku odbywa się dołączanie nowych elementów, również jedynie wierzchołek można usunąć. Działanie na stosie jest często porównywane do stosu talerzy: nie można usunąć talerza znajdującego się na dnie stosu nie usuwając wcześniej wszystkich innych. nie można także dodać nowego talerza gdzieś indziej, niż na samą górę.

Oto schemat stosu:

Drzewo jest bardziej skomplikowaną strukturą niż poprzednie. Dla każdego drzewa wyróżniony jest jeden, charakterystyczny element- korzeń. Korzeń jest jedynym elementem drzewa, który nie posiada elementów poprzednich. Dla każdego innego elementu określony jest dokładnie jeden element poprzedni. Dla każdego elementu oprócz ostatnich, tzw. liści istnieje co najmniej 1 element następny. Jeżeli liczba następnych elementów wynosi dokładnie 2 to drzewo nazywamy binarnym. Drzewo można zdefiniować, jako acykliczny graf.

U Dla każdego drzewa można określić: długość drogi u (głębokość) - liczba wierzchołków, przez które należy przejść od korzenia do wierzchołka u wysokość u - maksymalna liczba wierzchołków na drodze od u do pewnego liścia wysokość drzewa = głębokość = wysokość korzenia +1 ścieżka z u do v - zbiór wierzchołków, przez które należy przejść z wierzchołka u do v droga - ścieżka skierowana stopień wierzchołka - liczba jego bezpośrednich następników stopień drzewa - maksymalny stopień wierzchołka

Kopiec inaczej zwany stogiem jest szczególnym przypadkiem drzewa binarnego, które spełnia tzw.warunek kopca tzn. każdy następnik jest niewiększy od swego poprzednika. Z warunku tego wynikają szczególne własności kopca: w korzeniu kopca znajduje się największy element, na ścieżkach (połączeniach między węzłami), od korzenia do liścia, elementy są posortowane nierosnąco Oto przykładowy kopiec: Szczególne własności kopców zostały wykorzystane do stworzenia algorytmy do sortowania zwanego HeapSort.