STRUKTURY DANYCH.

Slides:



Advertisements
Podobne prezentacje
ALGORYTMY I STRUKTURY DANYCH
Advertisements

Wstawianie i wyszukiwanie kluczy w tablicach i drzewach binarnych
PRAM.
Sortowanie przez scalanie
Algorytmy sortowania i porządkowania
Zaawansowane techniki algorytmiczne
ALGORYTMY GRAFOWE.
Dynamiczne struktury danych Listy, Kolejki, Stosy
Grażyna Mirkowska PJWSTK 15 listopad 2000
Minimalne drzewa rozpinające
PROGRAMOWANIE STRUKTURALNE
ALGORYTMY I STRUKTURY DANYCH
Elementarne struktury danych Piotr Prokopowicz
Współprogramy III Ten wykład ma na celu pokazanie kolejnej ciekawej możliwości, którą oferują współprogramy. Wspólprogramy reprezentujące wyrażenia regularne.
Współprogramy II W tym wykładzie pogłębimy naszą znajomość z współprogramami. Omówimy współpracę procedur rekurencyjnych i współprogramów, wprowadzimy.
pseudokody algorytmów
ZŁOŻONOŚĆ OBLICZENIOWA
ALGORYTMY GEOMETRYCZNE.
Turbo pascal – instrukcje warunkowe, iteracyjne,…
Materiały do zajęć z przedmiotu: Narzędzia i języki programowania Programowanie w języku PASCAL Część 8: Wykorzystanie procedur i funkcji © Jan Kaczmarek.
Rekurencja Copyright, 2000 © Jerzy R. Nawrocki Wprowadzenie do informatyki Wykład.
Rekurencja Copyright, 2001 © Jerzy R. Nawrocki Wprowadzenie do informatyki Wykład.
Rekursja Copyright, 2004 © Jerzy R. Nawrocki Teoretyczne podstawy informatyki.
Kurs Pascala – spis treści
WYZWALACZE (TRIGGERY) Wyzwalacz jest specjalnym rodzajem procedury składowanej, która może być wykonana w odpowiedzi na jedną z trzech sytuacji: UPDATE.
Dynamiczne struktury danych 1
22 listopada 2000Regula konkatenacji II1 Dziedziczenie (cd.) Reguła konkatenacji II przykład - heapsort Reguła konkatenacji III.
Algorytmika w drugim arkuszu maturalnym. Standardy wymagań I. WIADOMOŚCI I ROZUMIENIE I. WIADOMOŚCI I ROZUMIENIE II.KORZYSTANIE Z INFORMACJI II.KORZYSTANIE.
Typy wskaźnikowe, dynamiczne struktury danych
Podprogramy.
FP-Growth Adam Pieśkiewicz Kamil Niezręcki Krzysztof Grześkowiak
FP-Growth Adam Pieśkiewicz Kamil Niezręcki Krzysztof Grześkowiak Michał Kucal
FP-Growth Adam Pieśkiewicz Kamil Niezręcki Krzysztof Grześkowiak Michał Kucal
Algorytmy i struktury danych
Algorytmy i struktury danych
Podstawy programowania II
Algorytmy i Struktury Danych Sortowanie
Pliki tekstowe. Operacje na plikach. mgr inż. Agata Pacek.
Operacje na strukturach listowych
Sortowanie przez kopcowanie
DRZEWA BINARNE Emilia Krukowska.
Wyrażenia w Turbo Pascalu.
Algorytmy i struktury danych
Procedury i funkcje.
Materiały pochodzą z Platformy Edukacyjnej Portalu
Zbiory i rekordy mgr inż. Agata Pacek. Deklaracja typu zbiorowego (określa ilość elementów w zbiorze) type biegi=set of 0..6; Definiowanie zmiennej typu.
Instrukcja warunkowa i wyboru
Informatyka MZT1 Wykład 6 Iteracje while i repeat Tablice Rekordy
Dynamiczne struktury danych
Ogólna struktura programu w TP
Algorytmy i Struktury Danych
Powtórzenie wyk ł adu 10 Fizyczna organizacja danych w bazie danych. Indeksy.
Algorytmy i Struktury Danych Struktury Danych
Algorytmy i Struktury Danych Drzewa BTS, AVL
Algorytmy grafowe Minimalne drzewa rozpinające
Algorytmy równoległe Algorytm równoległy pozwala na wykonywanie w danej chwili więcej niż jednej operacji. EREW - wyłączny odczyt i wyłączny zapis; CREW.
Sortowanie: kopce Parent(i)
Teoretyczne Podstawy Informatyki - Rok I - kierunek IS w IFAiIS UJ – 2006/ /11/2006Prof. dr hab. Elżbieta Richter-Wąs Wykład 6 Model danych oparty.
Zbiory dynamiczne.
ALGORYTMY I STRUKTURY DANYCH
Projektowanie systemów cyfrowych z wykorzystaniem języka VHDL Układy sekwencyjne.
Indeksy drzewiaste. ISAM ISAM - INDEXED SEQUENTIAL ACCESS METHOD Problem: –Dany jest plik uporządkowany – w jaki sposób zrealizować efektywnie zapytanie.
Kolejka priorytetowa.
Drzewa.
ALGORYTMY I STRUKTURY DANYCH
Współprogramy IV.
Współprogramy II W tym wykładzie pogłębimy naszą znajomość z współprogramami. Omówimy współpracę procedur rekurencyjnych i współprogramów, wprowadzimy.
Algorytmy i struktury danych
Algorytmy i struktury danych
ALGORYTMY I STRUKTURY DANYCH
Zapis prezentacji:

STRUKTURY DANYCH

DRZEWA BINARNE

PEŁNE DRZEWO BINARNE T ilość węzłów = 15 ( n = 15 ) wysokość = 3 ( hT = 3 ) h = log2n , n - ilość węzłów w pełnym drzewie binarnym n = 20 + 21 + 22 + … + 2h = 2h+1 - 1

METODY PRZEGLĄDANIA DRZEWA BINARNEGO * + - a d / * e f b c metoda pre-order (wzdłużna) - notacja przedrostkowa metoda in-order ( poprzeczna) - notacja powszechnie stosowana metoda post-order (wsteczna ) - notacja przyrostkowa

* + - a d / * e f b c metoda in-order : a + b/c * d - e * f

IMPLEMENTACJA W PASCALU type wsk= ^wezel; wezel = record lewe: wsk; klucz : integer; prawe: wsk end ; var drzewo : wsk ;

ZNAJDOWANIE W DRZEWIE POSZUKIWAŃ BINARNYCH ELEMENTU O PODANYM KLUCZU drzewo

DAJE W WYNIKU LISTĘ POSORTOWANYCH KLUCZY PRZECHOWYWANYCH W WĘZŁACH PRZEGLĄDANIE BST METODĄ "IN-ORDER" DAJE W WYNIKU LISTĘ POSORTOWANYCH KLUCZY PRZECHOWYWANYCH W WĘZŁACH A D E G H K L M N O P T V

WSTAWIANIE DO DRZEWA BST ELEMENTU O PODANYM KLUCZU klucz = 21 drzewo

PROCEDURA WSTAWIANIA ELEMENTU O KLUCZU Z DO DRZEWA POSZUKIWAŃ BINARNYCH TREE-INSERT (T,z) begin y:= NIL; x:= root(T); {korzeń drzewa T} while x  NIL do y := x; if key(z) < key(x) then x := left(x) else x:= right(x); end; p(z) := y; { p(z) - ojciec węzła z} if y = NIL then root(T) := z else if key(z) < key(y) then left(y) := z else right(y) := z;

KOPCE BINARNE

 ( klucz(v)  klucz(PARENT(v) ) vV(T) v  r 20 JAKO PRAWIE PEŁNE DRZEWO BINARNE Tr :  ( klucz(v)  klucz(PARENT(v) ) vV(T) v  r 20 17 15 10 9 12 8 6 2 5  ( klucz(left(v))  klucz(v) and klucz(right(v))  klucz(v) ) vV(T)

 ( A[i]  A[ PARENT (i) ] ) JAKO TABLICA A[ 1..n ] , n > 0 20 17 15 10 12 9 8 6 2 5  ( A[i]  A[ PARENT (i) ] ) 2  i  n PARENT (i) return  i/2  ; LEFT (i) RIHGT (i) return 2*i; return 2*i +1;

OPERACJE NA KOPCACH BINARNYCH BUILD-HEAP EXTRACT -MAX INSERT

TWORZENIE KOPCA BINARNEGO BUILD-HEAP(A,n); begin hsize(A) := n; for i:= n/2 downto 1 do HEAPIFY (A, i ); end;

PRZYWRACANIE WŁASNOŚCI KOPCA BINARNEGO HEAPIFY (A, hsize,i) ; begin lewy := 2*i; prawy := 2*i+1; if lewy <= hsize then naj := indeks elementu większego spośród elementów: A[lewy], A[i]; if prawy <= hsize elementów: A[prawy], A[naj] if naj <> i then zamień A[i] z A[naj]; HEAPIFY (A, naj) end;

HEAP-EXTRACT-MAX (A, hsize ) begin if hsize < 1 then error; max := A[1]; A[1] := A[hsize]; hsize := hsize - 1; HEAPIFY (A, 1); return max; end;

HEAP-INSERT (A, klucz, hsize); begin hsize := hsize + 1; i := hsize; while i > 1 and A[PARENT(i)] < klucz do begin A[i] := A[PARENT(i)] ; i:= PARENT(i); end; A[i] := klucz;

HEAPSORT (A, n); begin hsize := n; BUILD-HEAP (A); SORTOWANIE PRZEZ KOPCOWANIE HEAPSORT (A, n); begin hsize := n; BUILD-HEAP (A); for i := n downto 2 do zamień A[1] z A[i]; hsize := hsize -1; HEAPIFY (A,1); end;

DLA ZBIORÓW ROZŁĄCZNYCH STRUKTURY DANYCH DLA ZBIORÓW ROZŁĄCZNYCH

X = {x1, ..., xn} S = { S1, S2, ..., Sk } - rodzina zbiorów parami rozłącznych, Si  X, i =1,...,k  (wyróżniamy element x  Si - reprezentant zbioru Si ) SiS Oznaczenie : Sx - zbiór z rodziny S o reprezentancie x

OPERACJE NA RODZINIE S : MAKE-SET(x) x S1 S2  ...  Sk - tworzy jednoelementowy zbiór zawierający x, którego reprezentantem jest x UNION(x,y) - dodaje do rodziny S zbiór Sz = Sx  Sy , gdzie z jest dowolnym elementem ze zbioru Sx  Sy , usuwa zbiory Sx , Sy z S FIND - SET(x) - znajduje reprezentanta zbioru zawierającego element x

PRZYKŁADY ZASTOSOWANIA STRUKTUR DANYCH DLA ZBIORÓW ROZŁĄCZNYCH : rozpoznawanie spójnych składowych w grafie niezorientownym algorytm Kruskala

LISTY DRZEWA REPREZENTACJE ZBIORÓW ROZŁĄCZNYCH : MAKE-SET(x) O(1) O(1) UNION(x,y) O(|Sx|) O(1) FIND - SET(x) O(1) O(|Sx|)