WSTĘP DO INFORMATYKI. Struktury liniowe
|
|
- Czesław Kalinowski
- 6 lat temu
- Przeglądów:
Transkrypt
1 Akademia Górniczo-Hutnicza Wydział Elektrotechniki, Automatyki, Informatyki i Inżynierii Biomedycznej WSTĘP DO INFORMATYKI Adrian Horzyk Struktury liniowe
2 STRUKTURY LINIOWE SEKWENCJE Struktury liniowe (sekwencje) to takie struktury danych, których każdy element poza pierwszym i ostatnim posiada swojego poprzednika i następnika. Ostatni element nie posiada następnika, a pierwszy nie posiada poprzednika. Struktury liniowe różnią się: możliwością dynamicznego zwiększania lub zmniejszania swojej struktury, sposobem i szybkością dostępu do elementów struktury, zajętością pamięci niezbędnej do przechowywania elementów struktury. Każda struktura liniowa w Pythonie składa się z elementów, a każdy element w Pythonie jest obiektem, a każdy obiekt jest klasą, która może dziedziczyć z dowolnego typu. Do podstawowych struktur liniowych (kolekcji) zaliczamy: tablice stosy kolejki listy krotki słowniki zbiory Wszystkie struktury liniowe w Pythonie są wysoce zoptymalizowane pod kątem szybkości sortowania i przeszukiwania. Implementacja tych struktur oparta jest o tablice.
3 STRUKTURY LINIOWE w PYTHONIE Struktury liniowe (sekwencyjne) w Pythonie: Listy (list) to tablice o zmiennej liczbie elementów z możliwością ich dodawania, usuwania i podmiany. [typ zmienny mutable] Krotki (tuple) to tablice o stałej liczbie elementów bez możliwości ich dodawania, usuwania i podmiany. [typ niezmienny immutable] Łańcuchy i napisy (string) to tablice o stałej długości zawierające dowolne znaki, po których można iterować, lecz nie można ich zmieniać. [typ niezmienny immutable] Słowniki (dictionary) to struktury nieuporządkowane w postaci tablic asocjacyjnych, tzw. map, przyporządkowujące kluczom pewne wartości, gdzie klucze muszą być typami niezmiennymi (obiektami haszowalnymi posiadającymi metodę hash ()), umożliwiającymi zdefiniowanie funkcji haszującej w celu ich szybkiego odnajdywania. [typ zmienny mutable] Zbiory (set lub frozenset) to tablice asocjacyjne, których elementy muszą być typami niezmiennymi (obiektami haszowalnymi posiadającymi metodę hash ()), umożliwiającymi zdefiniowanie funkcji haszującej w celu ich szybkiego odnajdywania. [typ zmienny mutable albo typ niezmienny immutable w zależności od typu zbioru] Stosy (stack, FILO first in last out) i kolejki (queue, FIFO first in fistout) w Pythonie implementowane są z wykorzystaniem list, których są szczególnym przypadkiem. W Pythonie wszystkie te kolekcje są implementowane z wykorzystaniem tablic (bez wskaźników), wykorzystując naturalną strukturę sekwencyjnych pamięci RAM, które są tablicami komórek, zwykle tzw. słów, składających się z bajtów.
4 TABLICE I TABELE Tablica to jednorodna, zwarta struktura danych o niezmiennej długości składająca się z komórek zawierających dane tego samego typu. Tablice mogą być: jednowymiarowe (wektory), dwuwymiarowe (macierze) lub wielowymiarowe. Tabele to tablice rekordów, mogące zawierać dane różnych typów, lecz wszystkie rekordy tabel zawierają dane tych samych typów, które nazywamy atrybutami, cechami lub parametrami obiektów. Ponadto dane rekordów w tablicach są uporządkowane względem tych atrybutów tworząc kolumny danych tego samego typu.
5 LISTY Lista to dynamiczna, liniowa struktura danych składająca się z elementów powiązanych ze sobą w taki sposób, iż można z łatwością dodawać, usuwać, modyfikować lub podmieniać poszczególne elementy. Listy są wobec tego zwykle implementowane z wykorzystaniem wskaźników, które wiążą ze sobą rekordy (obiekty, klasy), zawierające w sobie dane oraz wskaźniki lub indeksy wskazujące poprzedni oraz następny rekord w liście, za wyjątkiem elementu pierwszego i ostatniego, których odpowiednie wskaźniki nie są ustawione. Lista posiada dwa wyróżnione wskaźniki, zwane głową (head) i ogonem (tail), które wskazują odpowiednio na początek i koniec listy, czyli pierwszy i ostatni element listy. Wszystkie operacje na liście, tj. dodawanie, usuwanie, modyfikowanie i podmienianie elementów, mogą być wykonywane w dowolnym miejscu listy. Powiązanie poszczególnych elementów w listach może być: jednokierunkowe lub dwukierunkowe, aczkolwiek zwykle przyjmuje się powiązania dwukierunkowe, które umożliwiają swobodę w poruszaniu się po elementach listy w obu kierunkach, co niestety odbywa się kosztem dodatkowej pamięci związanej z przechowywaniem dwóch wskaźników lub indeksów w zależności od sposobu implementacji listy w pamięci.
6 STOSY Stos to dynamiczna, liniowa struktura danych składająca się z elementów powiązanych ze sobą w taki sposób, iż elementy można dodawać lub usuwać tylko z góry stosu. Stos to szczególny przypadek listy, ograniczający operacje na niej. Powiązanie poszczególnych elementów w stosie jest jednokierunkowe. Stos posiada jeden wyróżniony wskaźnik, zwany górą stosu, która wskazuje na element na jego wierzchu. Tylko na tym elemencie można położyć kolejny albo go zdjąć ze stosu. W Pythonie stos implementujemy z wykorzystaniem listy.
7 KOLEJKI Kolejka to dynamiczna, liniowa struktura danych składająca się z elementów powiązanych ze sobą w taki sposób, iż elementy można z dodawać tylko na końcu kolejki, a usuwać je tylko z jej początku. Kolejka to szczególny przypadek listy, ograniczający operacje na niej. Powiązanie poszczególnych elementów w kolejce jest jednokierunkowe. Dodawanie nowego elementu na końcu kolejki wiąże się ze zmianą wskaźnika końca kolejki i dotychczas ostatniego elementu kolejki, ustawiając je na nowo dodanym elemencie. Usuwanie elementu z przodu kolejki powoduje przesunięcie wskaźnika początku kolejki na następny element. Kolejki mogą być priorytetowe, wtedy elementy dodawane są na końcu kolejki, a usuwane są według największego priorytetu, więc są często implementowane za pomocą stogu, czyli kopca zupełnego, który w czasie logarytmicznym pozwala wykonać te operacje. W Pythonie kolejkę implementujemy z wykorzystaniem listy.
8 OPERACJE NA LISTACH Dodawanie elementu do listy w dowolnym jej miejscu: Usuwanie elementu z listy w dowolnym wskazanym miejscu:
9 POZYTYWNE I NEGATYWNE CECHY LIST I TABLIC Klasyczna lista jest strukturą w pełni dynamiczną z punktu widzenia każdego jej elementu. A więc umożliwia łatwe dodawanie, usuwanie, podmianę i przemieszczanie elementów. Nie można jednak w szybki sposób jej przeglądać (np. w czasie logarytmicznym ani stałym), lecz niezbędne jest przeszukiwanie elementów po kolei, idąc po kolejnych wskaźnikach. Niestety również taka implementacja listy zajmuje sporo więcej miejsca w pamięci, gdyż każdy jej element wymaga dwóch wskaźników oraz struktury, która zawiera te wskaźniki razem z danymi właściwymi przechowywanymi wewnątrz każdego jej elementu. Tablice pod względem szybkości dostępu do dowolnego jej elementu są bezkonkurencyjne, gdyż indeks elementu jednoznacznie wskazuje miejsce elementu w pamięci, które może zostać bardzo szybko i w czasie stałym wyznaczone. Z punktu widzenia efektywności wykorzystania pamięci są również bezkonkurencyjne, gdyż nie wymagają ekstra pamięci na powiązanie poszczególnych elementów tablicy ze sobą. Niestety w odniesieniu do operacji dodawania, usuwania i przemieszczania jej elementów z sekwencji tablice są bardzo kosztownym rozwiązaniem, szczególnie jeśli trzeba dokonywać tych operacji blisko jej początku. Podobnie sprawa ma się z możliwością zwiększanie lub zmniejszania jej rozmiaru, wymagając przekopiowania wszystkich jej elementów do nowej tablicy.
10 WYKORZYSTANIE POZYTYWNYCH CECH Powstaje więc pytanie, czy można wykorzystać pozytywne i wyeliminować negatywne cechy list i tablic, tworząc inny, nowy rodzaj struktury danych, bez ograniczeń i kosztu wykonywania nieefektywnych operacji na klasycznej tablicy i liście? Odpowiedź na te pytania muszą zadawać sobie twórcy nowych języków programowania oraz kompilatorów w tym również Pythona, którzy wyraźnie postawili na szybkość. Żeby osiągnąć szybkość dostępu i oszczędność pamięci należałoby wykorzystać tablice, jeśli zaś łatwość dodawania, usuwania i przemieszczenia elementów właściwości list. Pewnym kompromisem w stosunku dla braku możliwości rozszerzania tablic jest wykorzystanie tablicy nieco większej niż szacowana jej wielkość, a jeśli powiększenie to nie będzie przekraczało kosztu pamięciowego wskaźników listy, będzie rozwiązaniem dobrym. To jednak nie rozwiązuje problemu nieefektywności wstawiania, usuwania i przemieszczania elementów w tablicy. Poszukano więc pewnych rozwiązań kompromisowych łączących pozytywne cechy obu struktur danych, tworząc tablico-listę (ArrayList), która jest w zasadzie listą tablic o znanej wielkości, przyspieszającą operacje przeszukiwania listy stosującą indeksy, które umożliwiają wyznaczenie, w której tablicy znajduje się poszukiwany element:
11 WYKORZYSTANIE POZYTYWNYCH CECH Tablico-listy nie muszą jednak operować na tablicach tej samej wielkości, co w przeciwnym przypadku nie eliminowałoby problemu przesuwania elementów w tablicach przy próbie ich dodania, usunięcia lub przemieszczenia, lecz jeśli zastosujemy zmienną ilość elementów w tablicy, wtedy podmianie będą podlegały tylko pewne części całej struktury. Takie rozwiązanie jednak komplikuje kwestię indeksowania i wyznaczania tablicy, w której znajduje się poszukiwany element.
12 WYKORZYSTANIE POZYTYWNYCH CECH Tablico-listy nie muszą jednak operować na tablicach tej samej wielkości, co w przeciwnym przypadku nie eliminowałoby problemu przesuwania elementów w tablicach przy próbie ich dodania, usunięcia lub przemieszczenia, lecz jeśli zastosujemy zmienną ilość elementów w tablicy, wtedy podmianie będą podlegały tylko pewne części całej struktury. Takie rozwiązanie jednak komplikuje kwestię indeksowania i wyznaczania tablicy, w której znajduje się poszukiwany element. Można jednak zastosować dodatkową tablicę zawierającą zarówno ilości przechowywanych elementów w poszczególnych tablicach, jak również wskaźniki do nich, co umożliwia w miarę szybkie wyznaczenie tablicy, w której znajduje się element o podanym indeksie, jak również wykorzystanie wskaźnika, żeby bezpośrednio przejść do tej tablicy: albo
13 WYKORZYSTANIE POZYTYWNYCH CECH Przeszukiwanie dodatkowej tablicy ilości indeksów ze wskaźnikami również można przyspieszyć stosując w miejsce takiej tablicy wyważone drzewo binarne zawierające ilości elementów w tablicach danych oraz sumy elementów w poszczególnych poddrzewach tych tablic, co przyspiesza do czasu logarytmicznego względem ilości sum elementów w tablicach indeksów wyznaczenie tablicy docelowej, indeksu w niej poszukiwanego elementu oraz odnalezienie wskaźnika prowadzącego do takiej tablicy, szczególnie jeśli operujemy na dużych kolekcjach danych. Powstają więc drzewa list tablic, które przy doborze odpowiedniej wielkości tablic danych umożliwiają bardzo szybkie wykonywanie wszystkich operacji na nich, stanowiąc pewien kompromis pomiędzy tablicami, listami i drzewami:
14 EFEKTYWNE WYSZUKIWANIE W SŁOWNIKU Słownik jest standardowo strukturą liniową, ale czasami można skorzystać ze szczególnych właściwości kluczy stosowanych w słownikach w celu optymalizacji dostępu do wartości. Wyobraźmy sobie, iż kluczami słownika są słowa języka polskiego czy angielskiego. Zależy nam na szybkim dostępie do opisu tego słowa lub jego tłumaczenia na inny język. Możemy więc skorzystać z standardowej struktury słownika opartej o wyszukiwanie za pośrednictwem funkcji haszujące w Pythonie lub często stosowane wyszukiwanie połówkowe w innych językach programowania albo wykorzystać tą właściwość kluczy, zoptymalizować sposób ich przechowywania i dodatkowo zapewnić możliwość odnajdywania dowolnych wartości w czasie stałym:
15 BIBLIOGRAFIA I LITERATURA UZUPEŁNIAJĄCA 1. L. Banachowski, K. Diks, W. Rytter: Algorytmy i struktury danych, WNT, Warszawa, M. Sysło: Elementy Informatyki. 3. A. Szepietowski: Podstawy Informatyki. 4. R. Tadeusiewicz, P. Moszner, A. Szydełko: Teoretyczne podstawy informatyki. 5. W. M. Turski: Propedeutyka informatyki. 6. N. Wirth: Wstęp do programowania systematycznego. 7. N. Wirth: ALGORYTMY + STRUKTURY DANYCH = PROGRAMY.
prowadzący dr ADRIAN HORZYK /~horzyk e-mail: horzyk@agh tel.: 012-617 Konsultacje paw. D-13/325
PODSTAWY INFORMATYKI WYKŁAD 8. prowadzący dr ADRIAN HORZYK http://home home.agh.edu.pl/~ /~horzyk e-mail: horzyk@agh agh.edu.pl tel.: 012-617 617-4319 Konsultacje paw. D-13/325 DRZEWA Drzewa to rodzaj
WSTĘP DO INFORMATYKI. Drzewa i struktury drzewiaste
Akademia Górniczo-Hutnicza Wydział Elektrotechniki, Automatyki, Informatyki i Inżynierii Biomedycznej WSTĘP DO INFORMATYKI Adrian Horzyk Drzewa i struktury drzewiaste www.agh.edu.pl DEFINICJA DRZEWA Drzewo
Dynamiczny przydział pamięci w języku C. Dynamiczne struktury danych. dr inż. Jarosław Forenc. Metoda 1 (wektor N M-elementowy)
Rok akademicki 2012/2013, Wykład nr 2 2/25 Plan wykładu nr 2 Informatyka 2 Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr III, studia niestacjonarne I stopnia Rok akademicki 2012/2013
WSTĘP DO INFORMATYKI WPROWADZENIE DO ALGORYTMIKI
Akademia Górniczo-Hutnicza Wydział Elektrotechniki, Automatyki, Informatyki i Inżynierii Biomedycznej WSTĘP DO INFORMATYKI Adrian Horzyk WPROWADZENIE DO ALGORYTMIKI www.agh.edu.pl ALGORYTMIKA Algorytmika
PODSTAWY INFORMATYKI wykład 5.
PODSTAWY INFORMATYKI wykład 5. Adrian Horzyk Web: http://home.agh.edu.pl/~horzyk/ E-mail: horzyk@agh.edu.pl Google: Adrian Horzyk Gabinet: paw. D13 p. 325 Akademia Górniczo-Hutnicza w Krakowie WEAIiE,
Algorytmy i struktury danych. Wykład 4 Tablice nieporządkowane i uporządkowane
Algorytmy i struktury danych Wykład 4 Tablice nieporządkowane i uporządkowane Tablice uporządkowane Szukanie binarne Szukanie interpolacyjne Tablice uporządkowane Szukanie binarne O(log N) Szukanie interpolacyjne
Wykład 5 Wybrane zagadnienia programowania w C++ (c.d.)
Wykład 5 Wybrane zagadnienia programowania w C++ (c.d.) Kontenery - - wektor vector - - lista list - - kolejka queue - - stos stack Kontener asocjacyjny map 2016-01-08 Bazy danych-1 W5 1 Kontenery W programowaniu
PODSTAWY INFORMATYKI wykład 10.
PODSTAWY INFORMATYKI wykład 10. Adrian Horzyk Web: http://home.agh.edu.pl/~horzyk/ E-mail: horzyk@agh.edu.pl Google: Adrian Horzyk Gabinet: paw. D13 p. 325 Akademia Górniczo-Hutniacza w Krakowie WEAIiE,
Listy, kolejki, stosy
Listy, kolejki, stosy abc Lista O Struktura danych składa się z węzłów, gdzie mamy informacje (dane) i wskaźniki do następnych węzłów. Zajmuje tyle miejsca w pamięci ile mamy węzłów O Gdzie można wykorzystać:
java.util.* :Kolekcje Tomasz Borzyszkowski
java.util.* :Kolekcje Tomasz Borzyszkowski Wstęp Kolekcje w Java dają programiście pewien standardowy sposób radzenia sobie z przetwarzaniem grup obiektów. Implementacja kolekcji w Java składa się z następujących
PROLOG WSTĘP DO INFORMATYKI. Akademia Górniczo-Hutnicza. Wydział Elektrotechniki, Automatyki, Informatyki i Inżynierii Biomedycznej.
Akademia Górniczo-Hutnicza Wydział Elektrotechniki, Automatyki, Informatyki i Inżynierii Biomedycznej WSTĘP DO INFORMATYKI Adrian Horzyk PROLOG www.agh.edu.pl Pewnego dnia przyszedł na świat komputer Komputery
Struktury danych (I): kolejka, stos itp.
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
Struktura danych. Sposób uporządkowania informacji w komputerze. Na strukturach danych operują algorytmy. Przykładowe struktury danych:
Struktura danych Sposób uporządkowania informacji w komputerze. Na strukturach danych operują algorytmy. Przykładowe struktury danych: rekord tablica lista stos kolejka drzewo i jego odmiany (np. drzewo
Laboratorium z przedmiotu Programowanie obiektowe - zestaw 04
Laboratorium z przedmiotu Programowanie obiektowe - zestaw 04 Cel zajęć. Celem zajęć jest zapoznanie się ze sposobem działania popularnych kolekcji. Wprowadzenie teoretyczne. Rozważana w ramach niniejszych
Wykład 3. Złożoność i realizowalność algorytmów Elementarne struktury danych: stosy, kolejki, listy
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
Programowanie w C++ Wykład 6. Katarzyna Grzelak. 1 kwietnia K.Grzelak (Wykład 6) Programowanie w C++ 1 / 43
Programowanie w C++ Wykład 6 Katarzyna Grzelak 1 kwietnia 2019 K.Grzelak (Wykład 6) Programowanie w C++ 1 / 43 Pojęcia z poprzednich wykładów Tablica to ciag obiektów tego samego typu, zajmujacy ciagły
Programowanie obiektowe
Laboratorium z przedmiotu Programowanie obiektowe - zestaw 04 Cel zajęć. Celem zajęć jest zapoznanie się ze sposobem działania popularnych. Wprowadzenie teoretyczne. Rozważana w ramach niniejszych zajęć
Struktury danych: stos, kolejka, lista, drzewo
Struktury danych: stos, kolejka, lista, drzewo Wykład: dane w strukturze, funkcje i rodzaje struktur, LIFO, last in first out, kolejka FIFO, first in first out, push, pop, size, empty, głowa, ogon, implementacja
Lista, Stos, Kolejka, Tablica Asocjacyjna
Lista, Stos, Kolejka, Tablica Asocjacyjna Listy Lista zbiór elementów tego samego typu może dynamicznie zmieniać rozmiar, pozwala na dostęp do poszczególnych elementów Typowo dwie implementacje: tablicowa,
Struktury Danych i Złożoność Obliczeniowa
Struktury Danych i Złożoność Obliczeniowa Zajęcia 1 Podstawowe struktury danych Tablica Najprostsza metoda przechowywania serii danych, zalety: prostota, wady: musimy wiedzieć, ile elementów chcemy przechowywać
Abstrakcyjne struktury danych - stos, lista, drzewo
Sprawozdanie Podstawy Informatyki Laboratoria Abstrakcyjne struktury danych - stos, lista, drzewo Maciej Tarkowski maciek@akom.pl grupa VII 1/8 1. Stos Stos (ang. Stack) jest podstawową liniową strukturą
Kompletna dokumentacja kontenera C++ vector w - http://www.cplusplus.com/reference/stl/vector/
STL, czyli o co tyle hałasu W świecie programowania C++, hasło STL pojawia się nieustannie i zawsze jest o nim głośno... często początkujące osoby, które nie znają STL-a pytają się co to jest i czemu go
WSTĘP DO INFORMATYKI. Złożoność obliczeniowa, efektywność i algorytmy sortowania
Akademia Górniczo-Hutnicza Wydział Elektrotechniki, Automatyki, Informatyki i Inżynierii Biomedycznej WSTĘP DO INFORMATYKI Adrian Horzyk Złożoność obliczeniowa, efektywność i algorytmy sortowania www.agh.edu.pl
Tadeusz Pankowski www.put.poznan.pl/~tadeusz.pankowski
: idea Indeksowanie: Drzewo decyzyjne, przeszukiwania binarnego: F = {5, 7, 10, 12, 13, 15, 17, 30, 34, 35, 37, 40, 45, 50, 60} 30 12 40 7 15 35 50 Tadeusz Pankowski www.put.poznan.pl/~tadeusz.pankowski
sprowadza się od razu kilka stron!
Bazy danych Strona 1 Struktura fizyczna 29 stycznia 2010 10:29 Model fizyczny bazy danych jest oparty na pojęciu pliku i rekordu. Plikskłada się z rekordów w tym samym formacie. Format rekordujest listą
Podstawy Informatyki. Wykład 6. Struktury danych
Podstawy Informatyki Wykład 6 Struktury danych Stałe i zmienne Podstawowymi obiektami występującymi w programie są stałe i zmienne. Ich znaczenie jest takie samo jak w matematyce. Stałe i zmienne muszą
System plików warstwa fizyczna
System plików warstwa fizyczna Dariusz Wawrzyniak Przydział miejsca na dysku Przydział ciągły (ang. contiguous allocation) cały plik zajmuje ciąg kolejnych bloków Przydział listowy (łańcuchowy, ang. linked
System plików warstwa fizyczna
System plików warstwa fizyczna Dariusz Wawrzyniak Plan wykładu Przydział miejsca na dysku Zarządzanie wolną przestrzenią Implementacja katalogu Przechowywanie podręczne Integralność systemu plików Semantyka
System plików warstwa fizyczna
System plików warstwa fizyczna Dariusz Wawrzyniak Przydział miejsca na dysku Zarządzanie wolną przestrzenią Implementacja katalogu Przechowywanie podręczne Integralność systemu plików Semantyka spójności
PODSTAWY INFORMATYKI wykład 6.
PODSTAWY INFORMATYKI wykład 6. Adrian Horzyk Web: http://home.agh.edu.pl/~horzyk/ E-mail: horzyk@agh.edu.pl Google: Adrian Horzyk Gabinet: paw. D13 p. 325 Akademia Górniczo-Hutnicza w Krakowie WEAIiE,
METODY INŻYNIERII WIEDZY
METODY INŻYNIERII WIEDZY Metoda K Najbliższych Sąsiadów K-Nearest Neighbours (KNN) ĆWICZENIA Adrian Horzyk Akademia Górniczo-Hutnicza Wydział Elektrotechniki, Automatyki, Informatyki i Inżynierii Biomedycznej
Dynamiczne struktury danych
Listy Zbiór dynamiczny Zbiór dynamiczny to zbiór wartości pochodzących z pewnego określonego uniwersum, którego zawartość zmienia się w trakcie działania programu. Elementy zbioru dynamicznego musimy co
Podstawy Informatyki. Metody dostępu do danych
Podstawy Informatyki c.d. alina.momot@polsl.pl http://zti.polsl.pl/amomot/pi Plan wykładu 1 Bazy danych Struktury danych Średni czas odszukania rekordu Drzewa binarne w pamięci dyskowej 2 Sformułowanie
Programowanie w C++ Wykład 7. Katarzyna Grzelak. 23 kwietnia K.Grzelak (Wykład 7) Programowanie w C++ 1 / 40
Programowanie w C++ Wykład 7 Katarzyna Grzelak 23 kwietnia 2018 K.Grzelak (Wykład 7) Programowanie w C++ 1 / 40 Standard Template Library (STL) K.Grzelak (Wykład 7) Programowanie w C++ 2 / 40 C++ Templates
WYŻSZA SZKOŁA INFORMATYKI STOSOWANEJ I ZARZĄDZANIA
Rekurencja - zdolność podprogramu (procedury) do wywoływania samego (samej) siebie Wieże Hanoi dane wejściowe - trzy kołki i N krążków o różniących się średnicach wynik - sekwencja ruchów przenosząca krążki
Wstęp do programowania
Wstęp do programowania Stosy, kolejki, drzewa Paweł Daniluk Wydział Fizyki Jesień 2013 P. Daniluk(Wydział Fizyki) WP w. VII Jesień 2013 1 / 25 Listy Lista jest uporządkowanym zbiorem elementów. W Pythonie
Plan wykładu. Klucz wyszukiwania. Pojęcie indeksu BAZY DANYCH. Pojęcie indeksu - rodzaje indeksów Metody implementacji indeksów.
Plan wykładu 2 BAZY DANYCH Wykład 4: Indeksy. Pojęcie indeksu - rodzaje indeksów Metody implementacji indeksów struktury statyczne struktury dynamiczne Małgorzata Krętowska Wydział Informatyki PB Pojęcie
Metody getter https://www.python-course.eu/python3_object_oriented_programming.php 0_class http://interactivepython.org/runestone/static/pythonds/index.html https://www.cs.auckland.ac.nz/compsci105s1c/lectures/
Tabela wewnętrzna - definicja
ABAP/4 Tabela wewnętrzna - definicja Temporalna tabela przechowywana w pamięci operacyjnej serwera aplikacji Tworzona, wypełniana i modyfikowana jest przez program podczas jego wykonywania i usuwana, gdy
INFORMATYKA W SZKOLE. Podyplomowe Studia Pedagogiczne. Dr inż. Grażyna KRUPIŃSKA. D-10 pokój 227
INFORMATYKA W SZKOLE Dr inż. Grażyna KRUPIŃSKA grazyna@fis.agh.edu.pl D-10 pokój 227 Podyplomowe Studia Pedagogiczne Sortowanie Dane wejściowe : trzy liczby w dowolnym porządku Dane wyjściowe: trzy liczby
Algorytmy i struktury danych. wykład 5
Plan wykładu: Wskaźniki. : listy, drzewa, kopce. Wskaźniki - wskaźniki Wskaźnik jest to liczba lub symbol który w ogólności wskazuje adres komórki pamięci. W językach wysokiego poziomu wskaźniki mogą również
METODY INŻYNIERII WIEDZY
METODY INŻYNIERII WIEDZY Metoda K Najbliższych Sąsiadów K-Nearest Neighbours (KNN) ĆWICZENIA Adrian Horzyk Akademia Górniczo-Hutnicza Wydział Elektrotechniki, Automatyki, Informatyki i Inżynierii Biomedycznej
Podstawowe struktury danych
Podstawowe struktury danych 1) Listy Lista to skończony ciąg elementów: q=[x 1, x 2,..., x n ]. Skrajne elementy x 1 i x n nazywamy końcami listy, a wielkość q = n długością (rozmiarem) listy. Szczególnym
BAZY DANYCH. Microsoft Access. Adrian Horzyk OPTYMALIZACJA BAZY DANYCH I TWORZENIE INDEKSÓW. Akademia Górniczo-Hutnicza
BAZY DANYCH Microsoft Access OPTYMALIZACJA BAZY DANYCH I TWORZENIE INDEKSÓW Adrian Horzyk Akademia Górniczo-Hutnicza Wydział Elektrotechniki, Automatyki, Informatyki i Inżynierii Biomedycznej Katedra Automatyki
Algorytmy i struktury danych
Algorytmy i struktury danych ĆWICZENIE 2 - WYBRANE ZŁOŻONE STRUKTURY DANYCH - (12.3.212) Prowadząca: dr hab. inż. Małgorzata Sterna Informatyka i3, poniedziałek godz. 11:45 Adam Matuszewski, nr 1655 Oliver
Teoretyczne podstawy informatyki
Teoretyczne podstawy informatyki Wykład 5b: Model danych oparty na listach http://kiwi.if.uj.edu.pl/~erichter/dydaktyka2010/tpi-2010 Prof. dr hab. Elżbieta Richter-Wąs 1 Słowem wstępu Listy należą do najbardziej
Haszowanie (adresowanie rozpraszające, mieszające)
Haszowanie (adresowanie rozpraszające, mieszające) Tadeusz Pankowski H. Garcia-Molina, J.D. Ullman, J. Widom, Implementacja systemów baz danych, WNT, Warszawa, Haszowanie W adresowaniu haszującym wyróżniamy
BAZY DANYCH. Microsoft Access. Adrian Horzyk OPTYMALIZACJA BAZY DANYCH I TWORZENIE INDEKSÓW. Akademia Górniczo-Hutnicza
BAZY DANYCH Microsoft Access OPTYMALIZACJA BAZY DANYCH I TWORZENIE INDEKSÓW Adrian Horzyk Akademia Górniczo-Hutnicza Wydział Elektrotechniki, Automatyki, Informatyki i Inżynierii Biomedycznej Katedra Automatyki
INFORMATYKA DANE.
INFORMATYKA DANE http://www.infoceram.agh.edu.pl DANE Dane to zbiory liczb, znaków, sygnałów, wykresów, tekstów, itp., które mogą być przetwarzane. Pojęcie danych jest relatywne i istnieje tylko razem
Kontenery i iteratory. Wykorzystanie kontenerów w praktyce.
Instrukcja laboratoryjna nr 2 Programowanie w języku C 2 (C++ poziom zaawansowany) Kontenery i iteratory. Wykorzystanie kontenerów w praktyce. dr inż. Jacek Wilk-Jakubowski mgr inż. Maciej Lasota dr inż.
BAZY DANYCH NORMALIZACJA BAZ DANYCH. Microsoft Access. Adrian Horzyk. Akademia Górniczo-Hutnicza
BAZY DANYCH Microsoft Access NORMALIZACJA BAZ DANYCH Adrian Horzyk Akademia Górniczo-Hutnicza Wydział Elektrotechniki, Automatyki, Informatyki i Inżynierii Biomedycznej Katedra Automatyki i Inżynierii
METODY INŻYNIERII WIEDZY
METODY INŻYNIERII WIEDZY WALIDACJA KRZYŻOWA dla ZAAWANSOWANEGO KLASYFIKATORA KNN ĆWICZENIA Adrian Horzyk Akademia Górniczo-Hutnicza Wydział Elektrotechniki, Automatyki, Informatyki i Inżynierii Biomedycznej
Algorytmy i struktury danych.
Kod przedmiotu: ASD Rodzaj przedmiotu: Wydział: Informatyki Kierunek: Informatyka Specjalność (specjalizacja): - Algorytmy i struktury danych. kierunkowy ; obowiązkowy Poziom studiów: pierwszego stopnia
IZ2ZSD2 Złożone struktury danych Advanced data structures. Informatyka II stopień ogólnoakademicki niestacjonarne
KARTA MODUŁU / KARTA PRZEDMIOTU Załącznik nr 7 do Zarządzenia Rektora nr 10/12 z dnia 21 lutego 2012r. Kod modułu Nazwa modułu Nazwa modułu w języku angielskim Obowiązuje od roku akademickiego 2012/2013
Algorytmy i Struktury Danych
Algorytmy i Struktury Danych Kopce Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 11 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych Wykład 11 1 / 69 Plan wykładu
Heurystyki. Strategie poszukiwań
Sztuczna inteligencja Heurystyki. Strategie poszukiwań Jacek Bartman Zakład Elektrotechniki i Informatyki Instytut Techniki Uniwersytet Rzeszowski DLACZEGO METODY PRZESZUKIWANIA? Sztuczna Inteligencja
< K (2) = ( Adams, John ), P (2) = adres bloku 2 > < K (1) = ( Aaron, Ed ), P (1) = adres bloku 1 >
Typy indeksów Indeks jest zakładany na atrybucie relacji atrybucie indeksowym (ang. indexing field). Indeks zawiera wartości atrybutu indeksowego wraz ze wskaźnikami do wszystkich bloków dyskowych zawierających
Zaawansowane algorytmy i struktury danych
Zaawansowane algorytmy i struktury danych u dr Barbary Marszał-Paszek Opracowanie pytań teoretycznych z egzaminów. Strona 1 z 12 Pytania teoretyczne z egzaminu pisemnego z 25 czerwca 2014 (studia dzienne)
Złożoność obliczeniowa zadania, zestaw 2
Złożoność obliczeniowa zadania, zestaw 2 Określanie złożoności obliczeniowej algorytmów, obliczanie pesymistycznej i oczekiwanej złożoności obliczeniowej 1. Dana jest tablica jednowymiarowa A o rozmiarze
INFORMATYKA. Podstawy programowania w języku C. (Wykład) Copyright (C) 2005 by Sergiusz Sienkowski IME Zielona Góra
INFORMATYKA Podstawy programowania w języku C (Wykład) Copyright (C) 2005 by Sergiusz Sienkowski IME Zielona Góra INFORMATYKA Temat: Struktury dynamiczne Wykład 7 Struktury dynamiczne lista jednokierunkowa,
Podstawy programowania. Wykład 7 Tablice wielowymiarowe, SOA, AOS, itp. Krzysztof Banaś Podstawy programowania 1
Podstawy programowania. Wykład 7 Tablice wielowymiarowe, SOA, AOS, itp. Krzysztof Banaś Podstawy programowania 1 Tablice wielowymiarowe C umożliwia definiowanie tablic wielowymiarowych najczęściej stosowane
ID2ZSD2 Złożone struktury danych Advanced data structures. Informatyka II stopień ogólnoakademicki stacjonarne
Załącznik nr 7 do Zarządzenia Rektora nr 10/12 z dnia 21 lutego 2012r. KARTA MODUŁU / KARTA PRZEDMIOTU Kod modułu Nazwa modułu Nazwa modułu w języku angielskim Obowiązuje od roku akademickiego 2012/2013
dr inż. Paweł Myszkowski Wykład nr 11 ( )
dr inż. Paweł Myszkowski Politechnika Białostocka Wydział Elektryczny Elektronika i Telekomunikacja, semestr II, studia stacjonarne I stopnia Rok akademicki 2015/2016 Wykład nr 11 (11.05.2016) Plan prezentacji:
Wykład 4. Klasa List Kolejki Stosy Słowniki
Wykład 4 Klasa List Kolejki Stosy Słowniki Klasa List Poważną niedogodnością tablic jako kolekcji danych jest fakt, że muszą one mieć stały rozmiar. Programista musi wiedzieć z góry ile miejsca powinien
Przykładowe B+ drzewo
Przykładowe B+ drzewo 3 8 1 3 7 8 12 Jak obliczyć rząd indeksu p Dane: rozmiar klucza V, rozmiar wskaźnika do bloku P, rozmiar bloku B, liczba rekordów w indeksowanym pliku danych r i liczba bloków pliku
Dynamiczne struktury danych
Dynamiczne struktury danych 391 Dynamiczne struktury danych Przez dynamiczne struktury danych rozumiemy proste i złożone struktury danych, którym pamięć jest przydzielana i zwalniana na żądanie w trakcie
INFORMATYKA SORTOWANIE DANYCH.
INFORMATYKA SORTOWANIE DANYCH http://www.infoceram.agh.edu.pl SORTOWANIE Jest to proces ustawiania zbioru obiektów w określonym porządku. Sortowanie stosowane jest w celu ułatwienia późniejszego wyszukania
Sortowanie. Bartman Jacek Algorytmy i struktury
Sortowanie Bartman Jacek jbartman@univ.rzeszow.pl Algorytmy i struktury danych Sortowanie przez proste wstawianie przykład 41 56 17 39 88 24 03 72 41 56 17 39 88 24 03 72 17 41 56 39 88 24 03 72 17 39
Sortowanie bąbelkowe
1/98 Sortowanie bąbelkowe (Bubble sort) prosty i nieefektywny algorytm sortowania wielokrotnie przeglądamy listę elementów, porównując dwa sąsiadujące i zamieniając je miejscami, jeśli znajdują się w złym
Stos LIFO Last In First Out
Stos LIFO Last In First Out Operacje: push - dodanie elementu na stos pop - usunięcie elementu ze stosu empty - sprawdzenie, czy stos jest pusty size - zwrócenie liczby elementów na stosie value (peek)
Algorytmy i struktury danych. Wykład 6 Tablice rozproszone cz. 2
Algorytmy i struktury danych Wykład 6 Tablice rozproszone cz. 2 Na poprzednim wykładzie Wiele problemów wymaga dynamicznych zbiorów danych, na których można wykonywać operacje: wstawiania (Insert) szukania
wykład Organizacja plików Opracował: dr inż. Janusz DUDCZYK
wykład Organizacja plików Opracował: dr inż. Janusz DUDCZYK 1 2 3 Pamięć zewnętrzna Pamięć zewnętrzna organizacja plikowa. Pamięć operacyjna organizacja blokowa. 4 Bufory bazy danych. STRUKTURA PROSTA
Haszowanie. dr inż. Urszula Gałązka
Haszowanie dr inż. Urszula Gałązka Problem Potrzebujemy struktury do Wstawiania usuwania wyszukiwania Liczb, napisów, rekordów w Bazach danych, sieciach komputerowych, innych Rozwiązanie Tablice z haszowaniem
Struktura danych. Sposób uporządkowania informacji w komputerze. Na strukturach danych operują algorytmy. Przykładowe struktury danych:
Struktura danych Sposób uporządkowania informacji w komputerze. Na strukturach danych operują algorytmy. Przykładowe struktury danych: rekord tablica lista stos kolejka drzewo i jego odmiany (np. drzewo
ang. file) Pojęcie pliku (ang( Typy plików Atrybuty pliku Fragmentacja wewnętrzna w systemie plików Struktura pliku
System plików 1. Pojęcie pliku 2. Typy i struktury plików 3. etody dostępu do plików 4. Katalogi 5. Budowa systemu plików Pojęcie pliku (ang( ang. file)! Plik jest abstrakcyjnym obrazem informacji gromadzonej
Kolekcje. Na podstawie:
Kolekcje Na podstawie: http://wazniak.mimuw.edu.pl Kolekcje w Javie Kolekcja (kontener) to po prostu obiekt, który grupuje wiele elementów w jeden twór. Pozwala na zapis, odczyt, korzystanie z danych oraz
Programowanie Komponentowe Zarządzanie obiektami: kontenery
Programowanie Komponentowe Zarządzanie obiektami: kontenery dr inż. Ireneusz Szcześniak jesień 2016 roku Kontenery Kontener w C++ to generyczna struktura danych. Przechowuje elementy jednego dowolnego
Teoretyczne podstawy informatyki
Teoretyczne podstawy informatyki Wykład 6a Model danych oparty na drzewach 1 Model danych oparty na drzewach Istnieje wiele sytuacji w których przetwarzane informacje mają strukturę hierarchiczną lub zagnieżdżoną,
Kolejka priorytetowa. Często rozważa się kolejki priorytetowe, w których poszukuje się elementu minimalnego zamiast maksymalnego.
Kolejki Kolejka priorytetowa Kolejka priorytetowa (ang. priority queue) to struktura danych pozwalająca efektywnie realizować następujące operacje na zbiorze dynamicznym, którego elementy pochodzą z określonego
KARTA MODUŁU KSZTAŁCENIA
KARTA MODUŁU KSZTAŁCENIA I. Informacje ogólne 1 Nazwa modułu kształcenia Algorytmy i struktury danych 2 Nazwa jednostki prowadzącej moduł Instytut Informatyki, Zakład Informatyki Stosowanej 3 Kod modułu
OSTASZEWSKI Paweł (55566) PAWLICKI Piotr (55567) Algorytmy i Struktury Danych PIŁA
OSTASZEWSKI Paweł (55566) PAWLICKI Piotr (55567) 20.11.2002 Algorytmy i Struktury Danych PIŁA ZŁOŻONE STRUKTURY DANYCH C za s tw or ze nia s tr uk tur y (m s ) TWORZENIE ZŁOŻONYCH STRUKTUR DANYCH: 00 0
ZASADY PROGRAMOWANIA KOMPUTERÓW
POLITECHNIKA WARSZAWSKA Instytut Automatyki i i Robotyki ZASADY PROGRAMOWANIA KOMPUTERÓW Język Język programowania: C/C++ Środowisko programistyczne: C++Builder 6 Wykład 9.. Wskaźniki i i zmienne dynamiczne.
Programowanie i struktury danych 1 / 44
Programowanie i struktury danych 1 / 44 Lista dwukierunkowa Lista dwukierunkowa to liniowa struktura danych skªadaj ca si z ci gu elementów, z których ka»dy pami ta swojego nast pnika i poprzednika. Operacje
Algorytmy przeszukiwania
Algorytmy przeszukiwania Przeszukiwanie liniowe Algorytm stosowany do poszukiwania elementu w zbiorze, o którym nic nie wiemy. Aby mieć pewność, że nie pominęliśmy żadnego elementu zbioru przeszukujemy
Podstawy Informatyki Metody dostępu do danych
Podstawy Informatyki Metody dostępu do danych alina.momot@polsl.pl http://zti.polsl.pl/amomot/pi Plan wykładu 1 Wprowadzenie Czym zajmuje się informatyka 2 Wprowadzenie Podstawowe problemy baz danych Struktury
Wykład 2. Drzewa zbalansowane AVL i 2-3-4
Wykład Drzewa zbalansowane AVL i -3-4 Drzewa AVL Wprowadzenie Drzewa AVL Definicja drzewa AVL Operacje wstawiania i usuwania Złożoność obliczeniowa Drzewa -3-4 Definicja drzewa -3-4 Operacje wstawiania
KARTA PRZEDMIOTU. 1. Informacje ogólne. 2. Ogólna charakterystyka przedmiotu. Algorytmy i struktury danych, C3
KARTA PRZEDMIOTU 1. Informacje ogólne Nazwa przedmiotu i kod (wg planu studiów): Nazwa przedmiotu (j. ang.): Kierunek studiów: Specjalność/specjalizacja: Poziom kształcenia: Profil kształcenia: Forma studiów:
BAZY DANYCH NORMALIZACJA BAZ DANYCH. Microsoft Access. Adrian Horzyk. Akademia Górniczo-Hutnicza
BAZY DANYCH Microsoft Access NORMALIZACJA BAZ DANYCH Adrian Horzyk Akademia Górniczo-Hutnicza Wydział Elektrotechniki, Automatyki, Informatyki i Inżynierii Biomedycznej Katedra Automatyki i Inżynierii
Załącznik KARTA PRZEDMIOTU. KARTA PRZEDMIOTU Wydział Automatyki, Elektroniki i Informatyki, Rok akademicki: 2009/2010
1/1 Wydział Automatyki, Elektroniki i Informatyki, Rok akademicki: 2009/2010 Kierunek: INFORMATYKA Specjalność: PRZEDMIOT OBOWIĄZKOWY DLA WSZYSTKICH STUDENTÓW. Tryb studiów: NIESTACJONARNE PIERWSZEGO STOPNIA
Politechnika Krakowska im. Tadeusza Kościuszki. Karta przedmiotu. obowiązuje studentów rozpoczynających studia w roku akademickim 2013/2014
Politechnika Krakowska im. Tadeusza Kościuszki Karta przedmiotu Wydział Mechaniczny obowiązuje studentów rozpoczynających studia w roku akademickim 2013/2014 Kierunek studiów: Informatyka Stosowana Forma
Ogólne zasady projektowania algorytmów i programowania
Ogólne zasady projektowania algorytmów i programowania Pracuj nad właściwie sformułowanym problemem dokładna analiza nawet małego zadania może prowadzić do ogromnych korzyści praktycznych: skrócenia długości
Java Collections Framework
Java Collections Framework Co to jest Java Collections Framework JCF Zunifikowana architektura do reprezentacji i manipulacji kolekcjami danych. Składa się z: Interfejsów Definuje abstrakcyjne typy możliwych
Bazy danych - BD. Indeksy. Wykład przygotował: Robert Wrembel. BD wykład 7 (1)
Indeksy Wykład przygotował: Robert Wrembel BD wykład 7 (1) 1 Plan wykładu Problematyka indeksowania Podział indeksów i ich charakterystyka indeks podstawowy, zgrupowany, wtórny indeks rzadki, gęsty Indeks
PODSTAWY BAZ DANYCH Wykład 6 4. Metody Implementacji Baz Danych
PODSTAWY BAZ DANYCH Wykład 6 4. Metody Implementacji Baz Danych 2005/2006 Wykład "Podstawy baz danych" 1 Statyczny model pamiętania bazy danych 1. Dane przechowywane są w pamięci zewnętrznej podzielonej
Tablice z haszowaniem
Tablice z haszowaniem - efektywna metoda reprezentacji słowników (zbiorów dynamicznych, na których zdefiniowane są operacje Insert, Search i Delete) - jest uogólnieniem zwykłej tablicy - przyspiesza operacje
Kolekcja (kontener) to po prostu obiekt, który grupuje wiele elementów w jeden twór.
Kolekcje Kolekcje w Javie Kolekcja (kontener) to po prostu obiekt, który grupuje wiele elementów w jeden twór. Pozwala na zapis, odczyt, korzystanie z danych oraz ich wzajemną komunikację. Przykład: ręka
Krzysztof Kadowski. PL-E3579, PL-EA0312,
Krzysztof Kadowski PL-E3579, PL-EA0312, kadowski@jkk.edu.pl Bazą danych nazywamy zbiór informacji w postaci tabel oraz narzędzi stosowanych do gromadzenia, przekształcania oraz wyszukiwania danych. Baza
Informatyka 1. Złożoność obliczeniowa
Informatyka 1 Wykład XI Złożoność obliczeniowa Robert Muszyński ZPCiR ICT PWr Zagadnienia: efektywność programów/algorytmów, sposoby zwiększania efektywności algorytmów, zasada 80 20, ocena efektywności