dr Anna Kwiatkowska Instytut Informatyki

Slides:



Advertisements
Podobne prezentacje
ALGORYTMY I STRUKTURY DANYCH
Advertisements

TRADYCYJNE METODY PLANOWANIA I ORGANIZACJI PROCESÓW PRODUKCYJNYCH
Wstawianie i wyszukiwanie kluczy w tablicach i drzewach binarnych
ODWROTNA NOTACJA POLSKA
Algorytmy – c.d. złożoność algorytmów struktury danych
Algorytmy – c.d. struktury danych złożoność algorytmów
Grażyna Mirkowska PJWSTK, 10 stycznia 2001
Dynamiczne struktury danych Listy, Kolejki, Stosy
Grażyna Mirkowska PJWSTK 15 listopad 2000
Wykład 10 Metody Analizy Programów Specyfikacja Struktur Danych
Homologia, Rozdział I „Przegląd” Homologia, Rozdział 1.
Wykład 6 Najkrótsza ścieżka w grafie z jednym źródłem
Algorytm Dijkstry (przykład)
PROGRAMOWANIE STRUKTURALNE
ALGORYTMY I STRUKTURY DANYCH
Elementarne struktury danych Piotr Prokopowicz
pseudokody algorytmów
Opracowała: Elżbieta Fedko
WYKŁAD 7. Spójność i rozpięte drzewa
WYKŁAD 8. Siła spójności Wierzchołek v nazywamy wierzchołkiem cięcia grafu G, gdy podgraf G-v ma więcej składowych spójności niż G. Krawędź e nazywamy.
Dariusz Odejewski Krzysztof Wójcik
Dynamiczne struktury danych 1
Algorytmy grafowe Reprezentacja w pamięci
ZARZĄDZANIE PROCESAMI
Zapis informacji Dr Anna Kwiatkowska.
Kolejność wykonywania działań
ALGORYTMY I STRUKTURY DANYCH
WYKŁAD 7. Spójność i rozpięte drzewa Graf jest spójny, gdy dla każdego podziału V na dwa rozłączne podzbiory A i B istnieje krawędź z A do B. Definicja.
Minimalne drzewa rozpinające
Podstawy układów logicznych
Algorytmy i struktury danych
Algorytmy i struktury danych
Zbiór do posortowania mieści się w pamięci
Podstawy programowania II
Operacje na strukturach listowych
Wyrażenia algebraiczne
DRZEWA BINARNE Emilia Krukowska.
Geometria obliczeniowa Wykład 4
Listy, stosy i kolejki..
Rodzaje, przechodzenie grafu
Materiały pochodzą z Platformy Edukacyjnej Portalu
ALGORYTMY ROZWIĄZYWANIA GIER C.D.
Koncepcja procesu Zadanie i proces. Definicja procesu Process – to program w trakcie wykonywania; wykonanie procesu musi przebiegać w sposób sekwencyjny.
Algorytmy.
Dynamiczne struktury danych
Algorytmy i Struktury Danych
Algorytmy i Struktury Danych
Algorytmy i Struktury Danych Struktury Danych
Algorytmy i Struktury Danych Drzewa BTS, AVL
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.
GRA CHOMP. Czym jest chomp? Jest to gra dla dwóch osób, rozgrywana na prostokątnej tablicy, zwanej „tabliczką czekolady”
NP-zupełność Problemy: rozwiązywalne w czasie wielomianowym - O(nk)
INFORMATYKA DANE
Zbiory dynamiczne.
Grafy.
ALGORYTMY I STRUKTURY DANYCH
Pojęcia podstawowe c.d. Rachunek podziałów Elementy teorii grafów
Metody Badań Operacyjnych Michał Suchanek Katedra Ekonomiki i Funkcjonowania Przedsiębiorstw Transportowych.
Algorytmy, sposoby ich zapisu.1 Algorytm to uporządkowany opis postępowania przy rozwiązywaniu problemu z uwzględnieniem opisu danych oraz opisu kolejnych.
Indeksy drzewiaste. ISAM ISAM - INDEXED SEQUENTIAL ACCESS METHOD Problem: –Dany jest plik uporządkowany – w jaki sposób zrealizować efektywnie zapytanie.
Liczbami naturalnymi nazywamy liczby 0,1,2,3,..., 127,... Liczby naturalne poznaliśmy już wcześniej; służą one do liczenia przedmiotów. Zbiór liczb.
Typy wyliczeniowe, kolekcje
Listy.
Kolejka priorytetowa.
Drzewa.
Zbiory rozłączne.
Algorytmy i struktury danych
ALGORYTMY I STRUKTURY DANYCH
ALGORYTMY I STRUKTURY DANYCH
POJĘCIE ALGORYTMU Wstęp do informatyki Pojęcie algorytmu
Zapis prezentacji:

dr Anna Kwiatkowska Instytut Informatyki Struktury danych dr Anna Kwiatkowska Instytut Informatyki

Struktury danych każdy algorytm, każdy program, operuje na różnorodnych danych mają one przeważnie określoną formę zapewniającą mu pożądane właściwości do ich przechowywania i dalszej obróbki potrzebne jest ich zapamiętanie stworzenie dodatkowych algorytmów zapewniających dostęp do wszystkich elementów umożliwiających modyfikację zawartości zbioru

Struktury danych struktury danych, są zaawansowanymi pojemnikami na dane, które gromadzą je i układają w odpowiedni sposób ich różnorodność jest ogromna, a dla każdej znaleziono wiele zastosowań oraz interesujących algorytmów powszechnie spotykane jest używanie jednych struktur danych do przetwarzania informacji zgromadzonych w innych są one fundamentalnym narzędziem programisty i ich znajomość jest niezbędna

To proste stwierdzenie genialnie opisuje istotę problemu: programy = algorytmy + struktury danych Ucząc się algorytmiki nie wolno zapomnieć o strukturach danych informatyk szwajcarski, profesor Niklaus Wirth (twórca języka Pascal i Modula-2)

Podstawowe struktury danych Stosy Kolejki Listy Drzewa Grafy

STOS – Last In First Out liniowa struktura danych, w której dostęp jest tylko do wierzchołka stosu do elementu stosu poniżej wierzchołka jest dostęp tylko po zdjęciu elementów znajdujących się między nim a wierzchołkiem

Stos Możliwe są następujące operacje: push(S,e) = (e, en, en-1, …, e1) odłożenie na stos pop(S) = (en-1, en-2, …, e1) usunięcie ze stosu top(S)=en pobranie ze stosu empty(S)  n=0 sprawdzenie czy stos pusty

Stos pusty dno

Stos

Stos

Stos

Stos

Stos

Stos

Stos PEŁNY!

Stos Co tu jest???

Stos

Stos

Stos

Stos ?

Stos

Zastosowanie stosu - ONP Notacja polska odwrotna jest sposobem zapisu wyrażeń arytmetycznych, w których znak wykonywanej operacji umieszczony jest po operandach (zapis postfiksowy) a nie pomiędzy nimi jak w zapisie algebraicznym (zapis infiksowy) Nie wymaga ona używania w wyrażeniach nawiasów Sprawia to, że obliczenia w ONP stają się bardzo łatwe do przeprowadzania na komputerze.

ONP Zarówno: algorytm konwersji notacji konwencjonalnej na odwrotną notację polską (ang. Reverse Polish Notation - RPA) algorytm obliczania wartości wyrażenia danego w notacji odwrotnej polskiej wykorzystują stos i są stosunkowo łatwe do zaprogramowania. ((2+3)*5-7)/6  2 3 + 5 * 7 – 6 /

2 3 + 5 * ONP 7 - 6 / /

3 + 2 5 * 7 ONP - 6 / /

+ 2 5 3 * 7 ONP - 6 / /

+ 2 5 3 * 7 ONP - 6 / /

5 5 * 7 ONP - 6 / /

5 5 * 7 ONP - 6 / /

* 5 5 7 ONP - 6 / /

25 7 ONP - 6 / /

25 7 ONP - 6 / /

- 25 7 ONP 6 / /

18 ONP 6 / /

18 6 ONP /

/ 18 6 ONP

3 ONP

Kolejka FIFO(First In First Out) liniowa struktura, w której nowe dane dopisywane są na końcu kolejki, a z początku kolejki pobierane są dane do dalszego przetwarzania dostęp do danych jest w takiej kolejności, w jakiej zostały zapisane

FIFO

FIFO

FIFO

FIFO

FIFO

FIFO

FIFO

FIFO

FIFO ODJECHALI!!!

Rodzaje kolejek kolejkę spotyka się przede wszystkim w sytuacjach związanych z różnego rodzaju obsługą zdarzeń w systemach operacyjnych ma zastosowanie kolejka priorytetowa, przydzielająca zasoby sprzętowe uruchomionym procesom

Rodzaje kolejek kolejka priorytetowa – każda ze znajdujących się w niej danych dodatkowo ma przypisany priorytet, który modyfikuje kolejność późniejszego wykonania oznacza to, że pierwsze na wyjściu niekoniecznie pojawią się te dane, które w kolejce oczekują najdłużej, lecz te o największym priorytecie.

Kolejka priorytetowa 5 3 1 procesor

Kolejka priorytetowa 5 3 1 procesor

Kolejka priorytetowa 3 1 procesor

Kolejka priorytetowa 1 procesor

gdzie NumAllocated jest wielkością tablicy Kolejka cykliczna pierwszy element tablicy o indeksie 0 uważany jest za następny w stosunku do elementu ostatniego generalnie następnym w stosunku do elementu o indeksie N jest element o indeksie (N+1) mod NumAllocated gdzie NumAllocated jest wielkością tablicy

Kolejka cykliczna początek kolejki

Kolejka cykliczna początek kolejki

Kolejka cykliczna początek kolejki

Kolejka cykliczna początek kolejki

Kolejka cykliczna początek kolejki

Kolejka cykliczna początek kolejki

Kolejka cykliczna początek kolejki

Kolejka cykliczna początek kolejki

Kolejka cykliczna początek kolejki

Kolejka cykliczna początek kolejki

Kolejka cykliczna początek kolejki

Lista Lista jest to liniowo uporządkowany zbiór elementów, z którego w dowolnym miejscu można usunąć element, jak również dołączyć w dowolne miejsce Rodzaje list: - jednokierunkowa - dwukierunkowa - cykliczna

Dodawanie elementu do listy K R A

Dodawanie elementu do listy B K R A

Dodawanie elementu do listy B R K A

Dodawanie elementu do listy B R K A

Dodawanie elementu do listy B K R A

Dodawanie elementu do listy K R B A

Usuwanie elementu z listy K R A

Usuwanie elementu z listy R K A

Usuwanie elementu z listy R K A

Drzewa Drzewo jest hierarchicznym ułożeniem danych. DEF. Drzewo jest to zbiór T jednego lub więcej elementów zwanych węzłami takich, że: Istnieje jedne wyróżniony węzeł zwany korzeniem drzewa. Pozostałe węzły są podzielone na m0 rozłącznych zbiorów T1, …, Tm, z których każdy jest drzewem. Drzewa T1, …, Tm nazywane są poddrzewami korzenia

Drzewa Pierwszy obiekt zwany jest korzeniem, kolejne obiekty są jego potomstwem i nazywane są węzłami Liście są to węzły nie mające potomstwa. Droga w drzewie – sekwencja węzłów w drzewie odpowiadających przejściu w kierunku od korzenia do liścia.

Drzewa każdy węzeł y leżący na ścieżce z korzenia do węzła x nazywamy przodkiem węzła x węzeł x jest wtedy potomkiem węzła y jeśli xy dodajemy słowo właściwym, gdyż każdy węzeł jest jednocześnie swoim przodkiem i potomkiem bezpośredni potomkowie nazywani są jego synami węzeł zaś jest ojcem

Drzewa Długość ścieżki od korzenia do węzła x nazywamy głębokością węzła x w drzewie T Największa głębokość węzła w drzewie T jest wysokością drzewa T

Drzewa A E B C D F G H I głębokość 1 głębokość 2 głębokość 3 głębokość 4 = wysokość drzewa

Drzewa korzeń gałąź liść węzeł wewnętrzny

Rodzaje drzew Drzewa binarne; BST (Binary Search Tree) – binarne drzewo poszukiwań; Drzewa czerwono-czarne; Drzewa AVL; B – drzewa.

Drzewa binarne drzewo, w którym ojciec może mieć co najwyżej dwóch synów nazywa się drzewem binarnym każdy węzeł może mieć prawego oraz lewego następnika i to położenie ma znaczenie

Drzewo BST Drzewo BST (Binary Search Tree) jest to drzewo binarne o takiej strukturze danych, która pozwala na szybkie wyszukiwanie podanego elementu w drzewie W drzewach BST panuje następujący porządek: jeżeli y jest węzłem w lewym poddrzewie węzła x, wtedy y< x jeżeli y jest węzłem w prawym poddrzewie węzła x, wtedy y> x

Przykład drzewa BST korzeń 45 35 56 49 70 21 40 10 50 Liście: 10, 40, 50, 70

Grafy według jednej z anegdot pewien matematyk po kilku latach wytężonej pracy wybiegł nagle na ulicę bez ubrania krzycząc „EUREKA!!!” gdy nieco ochłonął stwierdził z przejęciem, że wynalazł taką dziedzinę matematyki, która nigdy nie znajdzie praktycznego zastosowania

Graf to system G=(V,E), gdzie: V – zbiór (skończony) wierzchołków G Grafy chodziło mu o to, co dzisiaj nazywamy teorią grafów trudno dziś znaleźć dziedzinę, w której grafy nie mogłyby się okazać przydatne Graf to system G=(V,E), gdzie: V – zbiór (skończony) wierzchołków G E – zbiór krawędzi G

Grafy W grafie skierowanym (zorientowanym) E jest relacją binarną w V W grafie nie skierowanym (niezorientowanym) E jest to zbiór nieuporządkowanych par wierzchołków Zapis (u,v) i (v,u) oznaczają tę samą krawędź W grafie nieskierowanym nie mogą występować pętle

Przykład grafu skierowanego V = {1,2,3,4,5,6} E = {(1,2), (2,2), (2,4), (4,1), (4,5), (5,4), (6,3)} 1 2 3 4 5 6

Przykład grafu nie skierowanego V = {1,2,3,4,5,6} E = {(1,2), (1,5), (2,5), (3,6)} 4 – wierzchołek izolowany 1 2 3 4 5 6

Grafy wierzchołki grafu zwykle są numerowane i mogą stanowić reprezentację jakichś obiektów rzeczywistych krawędzie mogą obrazować połączenia między takimi obiektami krawędź może posiadać także wagę, to znaczy liczbę, która reprezentuje jakąś informację

Grafy wszystkie drogi w tym grafie są proste nie ma cykli istnieją dwie drogi o długości 4 5 1 4 2 6 3 7

Przykład W pewnym przedsiębiorstwie zaistniała potrzeba zabezpieczenia dyżurów na portierni w godz. 9-15 oczywiście po jak najmniejszych kosztach. Zgłosiło się kilku chętnych: Nazwisko wolne godziny cena za godz. Kos 9-12 5 Lis 9-10, 12-14 6.50 Kruk 12-15 7 Kot 10-12, 14-15 6

droga1=15 + 21 = 36 zł droga2= 6. 50 + 12 +13 + 6 = 37 droga1=15 + 21 = 36 zł droga2= 6.50 + 12 +13 + 6 = 37.50 zł droga3= 15 + 13 + 6=34 zł droga4= 6.50 + 12 + 21= 39.50 zł Kruk, 21 zł Kos, 15 zł 14 15 9 10 11 12 13 Kot, 6 zł Lis, 13 zł Kot, 12 zł Lis, 6.50 zł Zatem zatrudniono: Kos w godz. 9-12, Lis w godz. 12-14 Kot w godz. 14-15