Algorytmy i struktury danych 1000-ZiASD
Pojęcie algorytmu i jego złożoności obliczeniowej.- Specyfikacja problemu, (częściowa) poprawność algorytmu.
- Funkcja kosztu.
- Złożoność asymptotyczna, notacje "O", "Omega", "Theta". Własności i przykłady.
Wybrane algorytmy sortowania, ich porównanie i analiza złożoności.
Podstawowe dynamiczne stuktury danych, metody ich implementacji i zastosowania.- Stos. Odwrotna notacja polska.
- Kolejka. Szukanie najkrótszej drogi wyjścia z labiryntu.
- Lista. Problem Flawiusza.
- Lista priorytetowa.
Sortowanie leksykograficzne z zastosowaniem dynamicznych struktur danych.
Elementy teorii grafów.- Grafy i metody ich reprezentacji.
- Przeszukiwanie grafów (DFS, BFS).
- Zastosowanie przeszukiwań grafów. Spójność i spójne składowe, dwudzielność.
- Najkrótsze ścieżki w grafach. Algorytm Dijkstry, algorytm Floyda-Warshalla.
- Drzewa, w tym drzewa rozpinające, kopiec jako przykład drzewa.
- Analiza złożoności algorytmów operujących na grafach.
Metody projektowania algorytmów.- Metoda przyrostowa.
- Dziel i zwyciężaj.
- Metoda zachłanna.
- Programowanie dynamiczne.
- Przykłady zastosowań: problem pakowania plecaka, problem optymalnego nawiasowania ciągu mnożeń macierzy.
Drzewa BST.- Wstawianie, wyszukiwanie, usuwanie węzłów.
- Przeglądanie drzewa: preorder, inorder, postorder.
- Wzmianka o drzewach czerwono-czarnych.
Wyszukiwanie wzorca w tekście.- Algorytm naiwny.
- Metoda haszowania, algorytm Karpa-Rabina (przy okazji - schemat Hornera).
Geometria obliczeniowa.- Wzajemne położenie obiektów geometrycznych.
- Elementy geometrii fraktalnej - fraktale (m.in. trójkąt i dywan Sierpińskiego), iterowane układy funkcyjne i metoda IFS generowania fraktali.
- Geometryczne podejście do numerycznego obliczania pierwiastka kwadratowego z liczby - algorytm Newtona-Rhapsona.
- Otoczka wypukła podzbioru płaszczyzny i algorytmy jej wyznaczania - algorytm Jarvisa, algorytm Grahama, podejście rekurencyjne.
Kompresja.- Współczynnik kompresji. Kompresja stratna i bezstratna.
- Algorytmy słownikowe kompresji.
- Algorytmy statystyczne kompresji - drzewa Huffmana.
- Wzmianka o teorii informacji - entropia.
W trakcie ćwiczeń w laboratoriach studenci implementują zarówno poznane na wykładzie, jak i zaprojektowane przez siebie algorytmy, szacują ich złożoność obliczeniową i analizują ich poprawność.
Całkowity nakład pracy studenta
Efekty uczenia się - wiedza
Efekty uczenia się - umiejętności
Efekty uczenia się - kompetencje społeczne
Metody dydaktyczne
Metody dydaktyczne eksponujące
Metody dydaktyczne podające
Metody dydaktyczne poszukujące
Rodzaj przedmiotu
Wymagania wstępne
Koordynatorzy przedmiotu
W cyklu 2022/23L: | W cyklu 2020/21: | W cyklu 2021/22L: | W cyklu 2024/25Z: |
Kryteria oceniania
Na ocenę z wykładu składają się:
- zadania domowe z części asynchronicznej weryfikujące efekty U2-U4, K1, K2,
- egzamin pisemny weryfikujący efekty W1-W5, U1, K1, K3.
Warunkiem koniecznym jest uzyskanie pozytywnej oceny dla każdego z powyższych elementów. Bardziej szczegółowe zasady mogą znajdować się w informacjach dla zajęć w konkretnym cyklu i będą podane przez prowadzącego wykład.
Zaliczenie laboratoriów na ocenę. Elementami składowymi zaliczenia są:
- kolokwium teoretyczno-praktyczne weryfikujące efekty W2, W4, W5, U1-U5, K1,
- aktywność na zajęciach i samodzielne przygotowanie rozwiązań zadań programistycznych weryfikujące efekty W2, W4, W5, U1-U6, K1-K4.
Warunkiem koniecznym jest uzyskanie pozytywnej oceny dla każdego z powyższych elementów. Bardziej szczegółowe zasady zaliczenia laboratorium mogą znajdować się w informacjach dla zajęć w konkretnym cyklu i będą podane przez prowadzących laboratoria.
Praktyki zawodowe
Nie dotyczy
Literatura
Literatura podstawowa:
1. T. H. Cormen, Ch. E. Leiserson, R. L. Rivest, L. C. Stein, Wprowadzenie do algorytmów, PWN, Warszawa 2018.
2. L. Banachowski, K. Diks, W. Rytter, Algorytmy i struktury danych, PWN, Warszawa 2018.
3. D. Harel, Rzecz o istocie informatyki. Algorytmika, WNT, Warszawa 2008.
Literatura uzupełniająca:
1. R. Sedgewick, K. Wayne, Algorytmy. Wydanie IV, Helion, Warszawa 2017.
2. M. M. Sysło, Algorytmy, Helion, Warszawa 2016.
3. M. M. Sysło, Piramidy, szyszki i inne konstrukcje programistyczne, Helion, Warszawa 2015.
4. N. M. Josuttis, C++ Biblioteka standardowa. Wydanie II, Helion, Warszawa 2014.
5. D. E. Knuth, Sztuka programowania, WNT, Warszawa 2002.
Uwagi
W cyklu 2020/21:
Część wykładów będzie się odbywała w formie zdalnej na platformie MS Teams. Link do zespołu: https://teams.microsoft.com/l/team/19%3ad2c17087f7e04f7ab04f56aecbbf22fb%40thread.tacv2/conversations?groupId=c8848370-8acc-4d7c-bc29-4841d1f5be8f&tenantId=e80a627f-ef94-4aa9-82d6-c7ec9cfca324 Pozostałe wykłady odbywać się będą w formie asynchronicznej na platformie Moodle. Adres kursu: https://plas.mat.umk.pl/moodle/course/view.php?id=1991 Klucz do kursu: algorytm2021 |
Więcej informacji
Dodatkowe informacje (np. o kalendarzu rejestracji, prowadzących zajęcia, lokalizacji i terminach zajęć) mogą być dostępne w serwisie USOSweb: