Algorytmy i struktury danych 2007/2008

Lista alternatywna:
  • Lista 1 Pewien wykładowca przydzielił studentom na egzaminie numery od 1 do N. Studenci, którzy kończyli pisanie egzaminu (losowa kolejność) odkładali kartki (format A4) na stos znajdujący się na jednej z ławek i wychodzili. Wykładowca po sprawdzeniu każdej z prac odkładał pracę o numerze k na sąsiednie biurko w następujący sposób:
    • jeżeli na biurku nie było prac o numerach k-1 i k+1, to praca o numerze k tworzyła nowy "stos";
    • jeżeli na biurku był stos zaczynający się od pracy nr k+1 (praca nr k+1 leży na wierzchu stosu) i nie było pracy k-1, to pracę o numerze k kładł na pracę o numerze k+1;
    • jeżeli na biurku był stos kończący się na pracy k-1 i nie było pracy nr k+1, to pracę nr k kładł na spód tego stosu;
    • jeżeli na biurku były prace o nr k-1 i k+1, to pracę nr k, kładł na wierzch stosu zaczynającego się od pracy nr k+1, a na nią kładł stos zawierający pracę nr k-1
    Zaimplementuj powyższy algorytm sortowania, sprawdź jaka powinna być powierzchnia biurka, aby w ten sposób sprawdzać 100, 1000, 10 000 prac. Sporządź statystyki: średnia liczba stosów, max liczba stosów. Porównaj wydajność czasową i pamięciową QUICKSortem. Sporządź tabele zawierające wyniki symulacji (dla każdego rozmiaru danych co najmniej 1000 prób)
    Spróbuj znaleźć funkcję opisującą złożoność obliczeniową (dodatkowe)
  • Lista 3 (14 pkt) Niech S będzie zbiorem n punktów na płaszczyźnie. Każdy punkt tego zbioru ma określoną wagę mi - liczbę rzeczywistą określającą rozmiar kropki. Dla każdego punktu p = (x, y) ze zbioru S = {p1, ..., pn} określono funkcję f(p) = f(x, y, m) = m (x+y)2. Dla podzbioru T zawartego w S definiujemy F(T) jako sumę f(pi) po punktach należących do T.

    Zaproponuj i zaimplementuj algorytm, który będzie miał następujące właściwości:
    • będzie wyliczać w czasie O(lg n) wartość funkcji
      F(T(xmin)) = F({pi należą do S : xi >= xmin})
    • Dodawanie i usuwanie punktów do zbioru S będzie wykonywane w czasie O(lg n)
    Podpowiedź: wykorzystaj drzewa czerwono-czarne
  • Lista dodatkowa (5 pkt) Zaimplementuj algorytm obliczający dla podanego zbioru punktów płaszczyzny R2 otoczkę wypukłą w czasie O(n lg n), gdzie n jest liczbą punktów zbioru.
Ocenianie
  • Punkty zdobywa się za osobistą prezentację zadań
  • Punkty za zadania można zdobywać przed upływem "terminu" listy
  • Za każdą listę będzie do zdobycia 10 pkt
  • Zaliczenie - co najmniej 70% punktów
  • Osoby przyłapane na prezentacji niesamodzielnych rozwiązań nie otrzymają zaliczenia