Struktury danych (I): kolejka, stos itp.

Podobne dokumenty
Wykład 5 Wybrane zagadnienia programowania w C++ (c.d.)


Lista, Stos, Kolejka, Tablica Asocjacyjna

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

Programowanie i struktury danych 1 / 44

Struktury danych: stos, kolejka, lista, drzewo

Kompletna dokumentacja kontenera C++ vector w -

Obliczenia na stosie. Wykład 9. Obliczenia na stosie. J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 266 / 303

INFORMATYKA W SZKOLE. Podyplomowe Studia Pedagogiczne. Dr inż. Grażyna KRUPIŃSKA. D-10 pokój 227

WSTĘP DO INFORMATYKI. Struktury liniowe

Programowanie obiektowe

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

Wykład 4. Klasa List Kolejki Stosy Słowniki

Wstęp do programowania. Stosy i kolejki. Piotr Chrząstowski-Wachtel

Wstęp do programowania

Java Collections Framework

Temat: Liniowe uporzdkowane struktury danych: stos, kolejka. Specyfikacja, przykładowe implementacje i zastosowania. Struktura słownika.

Laboratorium z przedmiotu Programowanie obiektowe - zestaw 04

Stos LIFO Last In First Out

Lista 5 Typy dynamiczne kolejka

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

Algorytm. a programowanie -

Dynamiczne struktury danych

Tabela wewnętrzna - definicja

Algorytmy i. Wykład 3: Stosy, kolejki i listy. Dr inż. Paweł Kasprowski. FIFO First In First Out (kolejka) LIFO Last In First Out (stos)

Struktury Danych i Złożoność Obliczeniowa

E S - uniwersum struktury stosu

Algorytmy i Struktury Danych.

Kiedy potrzebne. Struktura (rekord) Struktura w języku C# Tablice struktur. struktura, kolekcja

procesów Współbieżność i synchronizacja procesów Wykład prowadzą: Jerzy Brzeziński Dariusz Wawrzyniak

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

Algorytmy i Struktury Danych.

Sztuczna Inteligencja i Systemy Doradcze

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

Algorytmy przeszukiwania

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

1 Wprowadzenie do algorytmiki

Teoretyczne podstawy informatyki

Sortowanie danych. Jolanta Bachan. Podstawy programowania

TRANSLACJA I TRANSLATORY

struktury danych dla operacji słownikowych

Równoległy algorytm wyznaczania bloków dla cyklicznego problemu przepływowego z przezbrojeniami

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

Haszowanie. dr inż. Urszula Gałązka

Algorytmy i Struktury Danych.

2. Klasy cz. 2 - Konstruktor kopiujący. Pola tworzone statycznie i dynamicznie - Funkcje zaprzyjaźnione - Składowe statyczne

Grafem nazywamy strukturę G = (V, E): V zbiór węzłów lub wierzchołków, Grafy dzielimy na grafy skierowane i nieskierowane:

Metodyki i techniki programowania

Matematyka dyskretna - wykład - część Podstawowe algorytmy kombinatoryczne

Zazwyczaj rozmiar bloku jest większy od rozmiaru rekordu, tak więc. ich efektywna lokalizacja kiedy tylko zachodzi taka potrzeba.

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

Teoretyczne podstawy informatyki

Wstęp do Programowania potok funkcyjny

Wstęp do programowania. Zastosowania stosów i kolejek. Piotr Chrząstowski-Wachtel

KOLEJKA (QUEUE) (lista fifo first in, first out)

Kontenery i iteratory. Wykorzystanie kontenerów w praktyce.

wykład Organizacja plików Opracował: dr inż. Janusz DUDCZYK

Programowanie współbieżne Wykład 2. Iwona Kochańska

Elementy Modelowania Matematycznego

Algorytmy i struktury danych. wykład 9

Sortowanie topologiczne skierowanych grafów acyklicznych

Język programowania: Lista instrukcji (IL Instruction List)

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

Metodyki i techniki programowania

Wstęp do programowania

INFORMATYKA DANE.

ALGORYTMY I STRUKTURY DANYCH

Analiza Algorytmów 2018/2019 (zadania na laboratorium)

Listy, kolejki, stosy

Algorytmy i Struktury Danych

Kolekcje. Na podstawie:

PROLOG WSTĘP DO INFORMATYKI. Akademia Górniczo-Hutnicza. Wydział Elektrotechniki, Automatyki, Informatyki i Inżynierii Biomedycznej.

Informacja w perspektywie obliczeniowej. Informacje, liczby i obliczenia

Tablice z haszowaniem

Algorytmy i złożoności Wykład 5. Haszowanie (hashowanie, mieszanie)

Algorytmy i struktury danych

Kolekcja (kontener) to po prostu obiekt, który grupuje wiele elementów w jeden twór.

Abstrakcyjne struktury danych - stos, lista, drzewo

Podstawowe struktury danych

Microsoft Small Basic

Kryptografia. z elementami kryptografii kwantowej. Ryszard Tanaś Wykład 7

INFORMATYKA W SZKOLE. Podyplomowe Studia Pedagogiczne. Dr inż. Grażyna KRUPIŃSKA. D-10 pokój 227

Programowanie w C++ Wykład 6. Katarzyna Grzelak. 1 kwietnia K.Grzelak (Wykład 6) Programowanie w C++ 1 / 43

Ćwiczenie laboratoryjne. Oprogramowanie i badanie stosu lub kolejki w środowisku Visual Basic 2005

INFORMATYKA. Podstawy programowania w języku C. (Wykład) Copyright (C) 2005 by Sergiusz Sienkowski IME Zielona Góra

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

Kolekcje Zbiory obiektów, rodzaje: tablica o zmiennym rozmiarze (ang. varray) (1) (2) (3) (4) (5) Rozszerzenie obiektowe w SZBD Oracle

Podstawy Informatyki. Wykład 6. Struktury danych

Oracle11g: Wprowadzenie do SQL

WYKŁAD 9. Algorytmy sortowania elementów zbioru (tablic) Programy: c4_1.c... c4_3.c. Tomasz Zieliński

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

Semafor nie jest mechanizmem strukturalnym. Aplikacje pisane z użyciem semaforów są podatne na błędy. Np. brak operacji sem_post blokuje aplikację.

INFORMATYKA W SZKOLE. Podyplomowe Studia Pedagogiczne. Dr inż. Grażyna KRUPIŃSKA. D-10 pokój 227

1. Algorytmy przeszukiwania. Przeszukiwanie wszerz i w głąb.

PoniŜej znajdują się pytania z egzaminów zawodowych teoretycznych. Jest to materiał poglądowy.

Wstęp do programowania 2

Literatura. 1) Pojęcia: złożoność czasowa, rząd funkcji. Aby wyznaczyć pesymistyczną złożoność czasową algorytmu należy:

Notacja RPN. 28 kwietnia wyliczanie i transformacja wyrażeń. Opis został przygotowany przez: Bogdana Kreczmera.

Architektura systemów komputerowych Laboratorium 14 Symulator SMS32 Implementacja algorytmów

Technologie informacyjne - wykład 12 -

Transkrypt:

Letnie Warsztaty Matematyczno-Informatyczne Algorytmy i struktury danych Struktury danych (I): kolejka, stos itp.

Struktury danych (I): kolejka, stos itp. Struktura danych stanowi sposób uporządkowania danych w komputerze. Na strukturach danych możemy wykonywać pewne operacje. Przykładem struktury danych jest tablica, która przechowuje pewną liczbę liczb w ustalonej kolejności. Pozwala na szybki odczyt i modyfikację pojedynczych wartości.

Struktury danych (I): kolejka, stos itp. Abstrakcyjny typ danych Abstrakcyjny typ danych (ang. abstract data type, ADT ) stanowią sposób reprezentacji struktur danych bez zagłębiania się w detale implementacyjne. Na ADT składa się lista operacji, które możemy wykonać na danej strukturze, oraz słowny opis ich działania.

Struktury danych (I): kolejka, stos itp. Stos Stos (ang. stack) działa na zasadzie LIFO (Last In First Out, czyli Ostatni wchodzi, pierwszy wychodzi ).

Struktury danych (I): kolejka, stos itp. Stos ADT Stack: Push(v) umieszcza v na szczycie stosu Top() zwraca wartość na szczycie stosu Pop() zdejmuje wartość ze szczytu stosu Empty?() zwraca prawdę, jeżeli na stosie nie znajdują się żadne elementy

Struktury danych (I): kolejka, stos itp. Maszyna stosowa Stos stanowi podstawę maszyny stosowej. Program maszyny stosowej to ciąg wartości i operacji. Elementy ciągu są przetwarzane po kolei. Wartości umieszczane są na szczycie stosu. Operacje modyfikują szczyt stosu.

Struktury danych (I): kolejka, stos itp. Maszyna stosowa Zdefiniujmy na przykład operacje: 1. mul, która zdejmuje dwie wartości ze szczytu, przemnaża je i umieszcza wynik na szczycie stosu 2. add, podobnie jak wyżej, ale dodawanie Wtedy 2 2 mul 2 add jest programem obliczającym wartość wyrażenia 2 + 2 2.

Struktury danych (I): kolejka, stos itp. Kolejka Kolejka (ang. queue) operuje według zasady FIFO (First In First Out, czyli Pierwszy wchodzi, pierwszy wychodzi ).

Struktury danych (I): kolejka, stos itp. Kolejka ADT Queue: Push(v) umieszcza v na końcu kolejki Top() zwraca wartość z początku kolejki Pop() zdejmuje wartość z początku kolejki Empty?() zwraca prawdę, jeżeli w kolejce nie znajdują się żadne elementy

Struktury danych (I): kolejka, stos itp. Kolejka zdarzeń W programowaniu aplikacji graficznych spotkać się można z kolejką zdarzeń. System operacyjny umieszcza na końcu takiej kolejki zdarzenia, czyli kliknięcia i ruch myszy, wciśnięcia klawiszy klawiatury itp. Aplikacja zdejmuje zdarzenia z przodu kolejki i przetwarza je. Dzięki temu zdarzenia przetwarzane są w takiej kolejności, w jakiej się wydarzyły.

Struktury danych (I): kolejka, stos itp. Kolejka priorytetowa Kolejka priorytetowa (ang. priority queue) jest strukturą podobną do kolejki, jednakże zdejmowany jest z niej nie element, który został na niej umieszczony jako pierwszy, tylko ten, który ma największy priorytet. ADT Priority-Queue: Push(v, p) umieszcza wartość v o priorytecie p na kolejce Top() zwraca wartość elementu o najwyższym priorytecie Extract-Minimum() usuwa z kolejki element o najwyższym priorytecie i zwraca jego wartość Decrease-Priority(v, p) zmniejsza priorytet wartości v na p (opcjonalnie)

Struktury danych (I): kolejka, stos itp. Zbiór Zbiór (ang. set) operuje podobnie do zbioru matematycznego: kolejność elementów ani ich dokładna liczba wystąpień nie ma znaczenia. ADT Set: Add(v) umieszcza v w zbiorze Member?(v) zwraca prawdę, jeżeli v znajduje się w zbiorze Remove(v) usuwa v ze zbioru (opcjonalnie)

Struktury danych (I): kolejka, stos itp. Tablica asocjacyjna Tablica asocjacyjna (inaczej: słownik, mapa; ang. associative array, dictionary, map) struktura podobna do tablicy, z tym że indeksami mogą być nie tylko liczby, ale dowolne wartości.

Letnie Warsztaty Matematyczno-Informatyczne Algorytmy i struktury danych Struktury danych (II): haszowanie

Struktury danych (II): haszowanie Funkcja haszująca Istotą haszowania jest redukcja rozmiaru dziedziny. Funkcja haszująca (funkcja skrótu) przyjmuje wartość z oryginalnej dziedziny (nawet nieskończonej!) i zwraca wartość z dziedziny zredukowanej (skończonej). Taką wartość nazywamy haszem. Idealna funkcja haszująca to taka, w której rozkład haszy jest jednostajny, niezależnie od rozkładu wartości w oryginalnej dziedzinie.

Struktury danych (II): haszowanie Funkcja haszująca Przykładem funkcji haszującej jest: h(x) = x mod 128 Nie jest to jednak dobra funkcja haszująca. W praktyce używa się gotowych rozwiązań, takich jak na przykład Murmur3. Murmur3 pozwala generować wiele różnych funkcji haszujących w krótkim czasie, co jest przydatne.

Struktury danych (II): haszowanie Kryptograficzne funkcje haszujące Funkcji haszujących używanych do konstrukcji omawianych struktur danych nie należy mylić z kryptograficznymi funkcjami skrótu (np. MD5, SHA-1). Takie funkcje wymagają dodatkowych właściwości, jak nieodwracalność czy odporność na kolizje. To spowalnia działanie funkcji haszującej, podczas gdy szybkość jest priorytetowa w algorytmice.

Struktury danych (II): haszowanie Tablica haszująca Tablica haszująca (ang. hash table) jest strukturą danych, dzięki której możemy zaimplementować zbiory i słowniki.

Struktury danych (II): haszowanie Haszowanie kukułcze Haszowanie kukułcze stanowi rozwiązanie problemu kolizji w tablicach haszujących. Potrzebne będą nam 2 (lub więcej) funkcje haszujące: h 1 i h 2. Haszowanie kukułcze gwarantuje, że nasza wartość będzie pod indeksem pierwszego lub drugiego haszu.

Struktury danych (II): haszowanie Haszowanie kukułcze procedure Insert(H, v) if H[H.h 1 (v)].empty? then H[H.h 1 (v)] v else if H[H.h 2 (v)].empty? then H[H.h 2 (v)] v else Cascade-Insert(H, H[H.h 1 (v)]) H[H.h 1 (v)] v end if end procedure

Struktury danych (II): haszowanie Haszowanie kukułcze procedure Cascade-Insert(H, v) if not H[H.h 2 (v)].empty? then Cascade-Insert(H, H[H.h 2 (v)]) end if H[H.h 2 (v)] v end procedure

Struktury danych (II): haszowanie Filtr Blooma Filtr Blooma (ang. Bloom s filter) jest probabilistyczną strukturą danych. Umożliwia zaimplementowanie zbioru, który jednak nie zawsze jest w stanie dać definitywną odpowiedź na pytanie czy dany element znajduje się w zbiorze?