Algorytmy i struktury danych - Informatyka


Zajęcia laboratoryjne kończą się zaliczeniem, na którego ocenę składają się oceny z 5 zadań (programy, sprawozdania, kodowanie na zajęciach). Zadania studenci wykonują w grupach max 2-osobowych.
Za każdy program można uzyskać max. 3 punkty, za sprawozdanie max. 2 punkty. Spóźnienie z oddaniem programu karane jest -0.5 punkta za każdy tydzień, a z oddaniem sprawozdania -0.1 za każdy dzień spóźnienia.
Obie osoby z grupy muszą być obecne przy oddawaniu każdego zadania (wyjątek - usprawiedliwienie lekarskie). Prowadzący wybiera, która osoba będzie odpowiadala na pytania związane z programem lub/i sprawozdaniem.

Plan zajęć

Wymagania do sprawozdań


Zadania zaliczeniowe


Zadanie pierwsze (Algorytmy sortowania)

Termin zaliczenia programu (+ wykresy):; sprawozdanie dostarczone mailem (pdf):

Zaliczenie na zajęciach
Test algorytmów. Dla 10 różnych wartości n utwórz następujące wykresy t=f(n). Wartości n należy dobrać w taki sposób, żeby można było dokonać pomiaru czasu.
Do sprawozdania:Wykresy + odpowiedz na pytania: Jaka jest złożoność badanych algortymów? Czy rozkład danych wejściowych wpływa na działanie algorytmu (najgorsze, najlepsze, średnie przypadki)? Jak zmienia się złożoność algorytmu quick sort (i innych) w zależności od danych wejściowych?

Zadanie drugie (Złożone struktury danych)

Termin zaliczenia programu (+ wykresy): ; sprawozdanie dostarczone mailem (pdf):

Drzewo w Pythonie - kod

Program - oddawanie w trakcie zajęć Testy algorytmów
Wygeneruj n-elementowe posortowane rosnąco ciągi liczb naturalnych (dla 10 różnych wartości n, n dobrane eksperymentalnie tak, aby możliwe było wykonanie pomiaru czasu i czas będzie większy od 0).
Zmierz czasy wykonywania następujących operacji na obu drzewach:

Do sprawozdania: wykonaj 3 wykresy (jeden wykres dla każdej z operacji: tworzenie struktury, wyszukanie maksimum, wypisanie in-order) t=f(n) zależności czasu obliczeń t od liczby n elementów w drzewie. Na każdym wykresie przedstaw 2 krzywe - po jednej krzywej dla BST i AVL. Wykonaj wykres t=f(n) zależności czasu równoważenia (t) od liczby elementów (n) w drzewie BST.

Zadanie trzecie (Algorytmy grafowe)

Termin zaliczenia zadania + wykres - ; sprawozdanie mailem z wykresami (pdf)-
Program Testy algorytmów

W sprawozdaniu, oprócz wykresów:
- dla każdej z badanych reprezentacji grafu podaj złożoność: pamięciową, znalezienia pojedynczej krawędzi oraz znalezienia wszystkich następników wierzchołka
- oszacuj złożoność obliczeniową algorytmów sortowania topologicznego (jak się zmienia w zależności od reprezentacji grafu i z czego to wynika)
- które grafy można sortować topologiczne?


Zadanie czwarte (Algorytmy z powracaniem)

Termin zaliczenia zadania + wykresy ; sprawozdanie mailem (pdf)-
Program Testy algorytmów

W sprawozdaniu, oprócz wykresów:
- uzasadnij wybór reprezentacji grafu
- opisz algorytmy znajdowania cyklu Eulera i hamiltona w kilku zdaniach oraz oszacuj złożoność obliczeniową algorytmu
- przedstaw obserwacje związane z działaniem obu algorytmów w zależności od nasycenia grafu


Zadanie piąte (Problem plecakowy)

Termin zaliczenia zadania (program + wykresy)

Wyjeżdżając na wycieczkę musisz spakować plecak o maksymalnej pojemności C. Do plecaka spakuj takie przedmioty, aby ich wartość była jak największa, a jednocześnie ich objętość nie przekroczyła pojemności plecaka. Wyznacz te elementy za pomocą algorytmu programowania dynamicznego oraz algorytmu brute force.