Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Struktury danych dr Anna Kwiatkowska Instytut Informatyki.

Podobne prezentacje


Prezentacja na temat: "Struktury danych dr Anna Kwiatkowska Instytut Informatyki."— Zapis prezentacji:

1 Struktury danych dr Anna Kwiatkowska Instytut Informatyki

2 Struktury danych każdy algorytm, każdy program, operuje na różnorodnych 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 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 do ich przechowywania i dalszej obróbki potrzebne jest ich zapamiętanie ich zapamiętanie stworzenie dodatkowych algorytmów zapewniających stworzenie dodatkowych algorytmów zapewniających dostęp do wszystkich elementów dostęp do wszystkich elementów umożliwiających modyfikację zawartości zbioru umożliwiających modyfikację zawartości zbioru

3 Struktury danych struktury danych, są zaawansowanymi pojemnikami na dane, które gromadzą je i układają w odpowiedni sposób 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 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 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 są one fundamentalnym narzędziem programisty i ich znajomość jest niezbędna

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

5 Podstawowe struktury danych 1. Stosy 2. Kolejki 3. Listy 4. Drzewa 5. Grafy

6 STOS – Last In First Out liniowa struktura danych, w której dostęp jest tylko do wierzchołka stosu 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 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

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

8 Stos pusty dno

9 Stos

10 Stos

11 Stos

12 Stos

13 Stos

14 Stos

15 Stos PEŁNY!

16 Stos Co tu jest???

17 Stos

18 Stos

19 Stos

20 Stos ?

21 Stos

22 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 Nie wymaga ona używania w wyrażeniach nawiasów Sprawia to, że obliczenia w ONP stają się bardzo łatwe do przeprowadzania na komputerze.

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

24 / * 5 / 6 - ONP

25 / / * 5+ 3

26 / / * 5+ 3

27 / / * 5+ 3

28 / /6 - 7* 5 5

29 / /6 - 7* 5 5

30 / /6 - 7* 5 5

31 / /

32 / /6 - ONP 7 25

33 / /6 - ONP 7 25

34 / /6 ONP 18

35 / ONP 18 6

36 / ONP 18 6

37 ONP 3

38 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 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 dostęp do danych jest w takiej kolejności, w jakiej zostały zapisane

39 FIFO

40 FIFO

41 FIFO

42 FIFO

43 FIFO

44 FIFO

45 FIFO

46 FIFO

47 FIFO ODJECHAL I!!!

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

49 Rodzaje kolejek kolejka priorytetowa – każda ze znajdujących się w niej danych dodatkowo ma przypisany priorytet, który modyfikuje kolejność późniejszego wykonania 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. 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.

50 Kolejka priorytetowa 31 5 procesor

51 Kolejka priorytetowa 31 5 procesor

52 Kolejka priorytetowa 31 procesor

53 Kolejka priorytetowa 1 procesor

54 Kolejka cykliczna Kolejka cykliczna pierwszy element tablicy o indeksie 0 uważany jest za następny w stosunku do elementu ostatniego 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 generalnie następnym w stosunku do elementu o indeksie N jest element o indeksie (N+1) mod NumAllocated gdzie NumAllocated jest wielkością tablicy

55 Kolejka cykliczna początek kolejki

56 Kolejka cykliczna początek kolejki

57 Kolejka cykliczna początek kolejki

58 Kolejka cykliczna początek kolejki

59 Kolejka cykliczna początek kolejki

60 Kolejka cykliczna początek kolejki

61 Kolejka cykliczna początek kolejki

62 Kolejka cykliczna początek kolejki

63 Kolejka cykliczna początek kolejki

64 Kolejka cykliczna początek kolejki

65 Kolejka cykliczna początek kolejki

66 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 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

67 Dodawanie elementu do listy KR A

68 A KR B

69 A K R B

70 A K R B

71 A KR B

72 A KR B

73 Usuwanie elementu z listy A KR

74 A K R

75 A K R

76 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: 1. Istnieje jedne wyróżniony węzeł zwany korzeniem drzewa. 2. Pozostałe węzły są podzielone na m 0 rozłącznych zbiorów T 1, …, T m, z których każdy jest drzewem. Drzewa T 1, …, T m nazywane są poddrzewami korzenia

77 Drzewa Pierwszy obiekt zwany jest korzeniem, kolejne obiekty są jego potomstwem i nazywane są węzłami 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. 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. Droga w drzewie – sekwencja węzłów w drzewie odpowiadających przejściu w kierunku od korzenia do liścia.

78 Drzewa każdy węzeł y leżący na ścieżce z korzenia do węzła x nazywamy przodkiem węzła x 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 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 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 bezpośredni potomkowie nazywani są jego synami węzeł zaś jest ojcem

79 Drzewa Długość ścieżki od korzenia do węzła x nazywamy głębokością węzła x w drzewie T 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 Największa głębokość węzła w drzewie T jest wysokością drzewa T

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

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

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

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

84 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 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 jeżeli y jest węzłem w prawym poddrzewie węzła x, wtedy y> x

85 Przykład drzewa BST korzeń Liście: 10, 40, 50, 70

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

87 Grafy chodziło mu o to, co dzisiaj nazywamy teorią grafów 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 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

88 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

89 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)}

90 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

91 Grafy wierzchołki grafu zwykle są numerowane i mogą stanowić reprezentację jakichś obiektów rzeczywistych 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ę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ę krawędź może posiadać także wagę, to znaczy liczbę, która reprezentuje jakąś informację

92 Grafy wszystkie drogi w tym grafie są proste nie ma cykli wszystkie drogi w tym grafie są proste nie ma cykli istnieją dwie drogi o długości 4 istnieją dwie drogi o długości

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

94 Kos, 15 zł Lis, 6.50 zł Lis, 13 zł Kruk, 21 zł Kot, 12 zł Kot, 6 zł droga1= = 36 zł droga2= = zł droga3= =34 zł droga4= = zł Zatem zatrudniono: Kos w godz. 9-12, Lis w godz Kot w godz


Pobierz ppt "Struktury danych dr Anna Kwiatkowska Instytut Informatyki."

Podobne prezentacje


Reklamy Google