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 (NSI) Rodzaj przedmiotu: Instytut/ Katedra: Semestr: Prowadzący przedmiot: Prowadzący zajęcia: Wykład: Widuch Ćwiczenia: Wojdyła Laboratorium: Projekt: Seminarium: dr inŝ. Jacek KIERUNKOWY INFORMATYKI IV dr inŝ. Jacek Widuch Liczba godzin Wykład: 30 Ćwiczenia: 30 Laboratorium: mgr inŝ. Tomasz Projekt: Seminarium: Liczba pkt ECTS: 6 Powiązanie ze standardami i cel kształcenia Celem jest wprowadzenie słuchacza w zagadnienie algorytmów i struktur danych. Prezentowane są zagadnienia złoŝoności obliczeniowej oraz podstawowe algorytmy dla wybranych problemów obliczeniowych, np. sortowanie, wyszukiwanie, wybrane algorytmy grafowe, algorytmy zachłanne i geometryczne, programowanie dynamiczne, wyszukiwanie wyczerpujące, funkcje mieszające, generowanie obiektów kombinatorycznych. Ponadto omawiane są wybrane struktury danych takie, jak drzewa binarne, kopce, kolejki priorytetowe. Studenci nabywają umiejętności analizy złoŝoności, oceny algorytmów, a takŝe umiejętności konstruowania algorytmów z uŝyciem podstawowych technik algorytmicznych. Omawiane zagadnienia ilustrowane są licznymi przykładami.
2/1 Przedmioty wprowadzające oraz wymagania wstępne Przedmiotami wprowadzającymi do niniejszego przedmiotu są: 1. Analiza Matematyczna i Algebra Liniowa 2. Programowanie Komputerów 3. Podstawy Informatyki Zakłada się, Ŝe słuchacz wykazuje znajomość materiału prezentowanego w ramach wymienionych przedmiotów.
3/1 Treść wykładów: 1. ZłoŜoność obliczeniowa algorytmów: operacje elementarne; operacje dominujące; złoŝoność pamięciowa; złoŝoność czasowa średnia i pesymistyczna; typowe funkcje złoŝoności; miara wraŝliwości średniej i pesymistycznej. 2. Szacowanie złoŝoności obliczeniowej algorytmów: definicja i własności O-notacji; definicja notacji Ω; definicja notacji Θ. 3. Kopce: definicja kopca; implementacja kopca za pomocą tablicy; przemieszczanie elementu w górę (wersja procedury bez wartownika i z wartownikiem); przemieszczanie elementu w dół. 4. Kolejki priorytetowe: definicja kolejki priorytetowej; implementacja kolejki za pomocą kopca; operacje na kolejkach priorytetowych (zerowanie, wstawianie nowego elementu, usuwanie minimum). 5. Sortowanie przez kopcowanie: definicja kopca o odwróconym porządku; algorytm sortowania; wyznaczanie k ekstremalnych wartości. 6. Kres dolny złoŝoności pesymistycznej sortowania wewnętrznego: drzewo decyzyjne sortowania; permutacja sortująca; wzór Stirlinga. 7. Sortowanie przy uwzględnieniu szczególnych własności kluczy: sortowanie przez zliczanie; sortowanie kubełkowe; sortowanie pozycyjne; sortowanie dat. 8. Wyszukiwanie liniowe oraz binarne. 9. Wyszukiwanie wzorca w tekście: algorytm "naiwny"; algorytm Knutha, Morrisa i Prata; wyszukiwanie niezgodnościowe; algorytm Boyera i Moore'a; algorytm Rabina i Karpa. 10. Wyznaczanie wartości współczynników dwumianowych: algorytm według metody "dziel i zwycięŝaj"; algorytm według programowania dynamicznego. 11. Sortowanie plików sekwencyjnych: sortowanie przez łączenie naturalne; sortowanie przez łączenie proste. 12. Algorytmy grafowe: przeszukiwanie grafu w głąb i wszerz; wyszukiwanie składowych spójności; wyznaczania najkrótszej ścieŝki w grafie; wyznaczanie cykli podstawowych (fundamentalnych); wyznaczanie minimalnego drzewa rozpinającego graf (algorytm Kruskala, algorytm Prima-Dijkstry); wyznaczanie cykli Eulera. 13. Algorytmy zachłanne: problem wydawania reszty; problem komiwojaŝera (algorytm dokładny, algorytm zachłanny "najkrótsze krawędzie", algorytm zachłanny "najbliŝszy sąsiad"); kolorowanie wierzchołków grafu; kolorowanie krawędzi grafu. 14. Algorytmy geometryczne: wypukła otoczka, algorytm Grahama; algorytm Jarvisa.
4/1 Treść/Tematy: Ćw./L./P./Sem. Tematy ćwiczeń: 1. Metody wyznaczania niektórych typów równań. 2. Wyznaczanie złoŝoności algorytmów. 3. Proste algorytmy sortowania. 4. Sortowanie szybkie oraz wyznaczanie k-tego co do wielkości elementu. 5. Programowanie dynamiczne. 6. Struktury drzewiaste. 7. Wyszukiwanie wyczerpujące. 8. Algorytmy grafowe. 9. Funkcje mieszające. 10. Generowanie obiektów kombinatorycznych. Metody dydaktyczne Wykład i ćwiczenia tradycyjne: kreda + tablica, uzupełnione wydrukami pseudokodów omawianych algorytmów. Wymienione materiały dostępne na stronie przedmiotu znajdującej się na Platformie Zdalnej Edukacji pod adresem: http://platforma.polsl.pl/rau2/. Dostępny jest takŝe skrypt uczelniany nr 2400 zawierający treści wszystkich tematów omawianych podczas ćwiczeń. Forma egzaminu/zaliczenia przedmiotu Zaliczenie ćwiczeń udzielane jest na podstawie dwóch kolokwiów zaliczeniowych w formie pisemnej. Kolokwia składają się z części zadaniowej. Zaliczenie przedmiotu udzielane jest na podstawie egzaminu w formie pisemnej i oceny z ćwiczeń. Egzamin składa się z dwóch części: teoretycznej i zadaniowej obejmującej materiał przedstawiony w trakcie wykładu i ćwiczeń. Minimalne wymagania do egzaminu /zaliczenia Warunkiem uzyskania zaliczenia przedmiotu jest otrzymanie z egzaminu oceny co najmniej 3.0. Na podstawie średniej ocen uzyskanych z kolokwiów zaliczeniowych student moŝe uzyskać zwolnienie z egzaminu. Zwolnienie jest udzielane według następujących reguł: Ocena z kolokwium Ocena z egzaminu [3.75; 4.25) 4.0 [4.25; 4.5] 4.5 (4.5; 5.0] 5.0 Ocena końcowa jest wystawiana na podstawie średniej ocen: oceny z egzaminu i oceny z kolokwium zaliczeniowego.
5/1 Literatura 1. Z. Czech, S. Deorowicz, P. Fabian: Algorytmy i struktury danych. Wybrane zagadnienia, Skrypty uczelniane nr 2400, Wydawnictwo Politechniki Śląskiej, Gliwice 2007 2. E. M. Reingold, J. Nievergelt, N. Deo: Algorytmy kombinatoryczne, PWN, Warszawa 1985 3. T. H. Cormen, Ch. E. Leiserson, R. L. Rivest: Wprowadzenie do algorytmów, WNT, Warszawa 1997 4. J. Bentley: Perełki oprogramowania, WNT, Warszawa 1992 5. D. Harel: Rzecz o istocie informatyki: algorytmika, WNT, Warszawa 1992 6. R. Sedgewick, Algorytmy w C++, Wydawnictwo RM Sp. z O. O., Warszawa 1999 7. N. Wirth: Algorytmy + struktury danych = programy, WNT, Warszawa 2000 8. L. Banachowski, K. Diks, W. Rytter: Algorytmy i struktury danych, WNT, Warszawa 1996 9. D. E. Knuth: Sztuka programowania, WNT, Warszawa 2002 10. M. Sysło, N. Deo, J. Kowalik: Algorytmy optymalizacji dyskretnej z programami w języku Pascal, PWN, Warszawa 1995 11. W. Lipski: Kombinatoryka dla programistów, WNT, Warszawa 1989 12. L. Banachowski, A. Kreczmar, W. Rytter: Analiza algorytmów i struktur danych, WNT, Warszawa 1989 13. A. V. Aho, J. E. Hopcroft, J. D. Ullman: Projektowanie i analiza algorytmów, Wydawnictwo Helion, Gliwice 2003. (data i podpis prowadzącego) Zatwierdzono: (data i podpis Dyrektora Instytutu/Kierownika Katedry)