230 likes | 421 Views
Algorytm Krótka nota M. Muraszkiewicz Instytut Informatyki, Politechnika Warszawska mietek@-n-s.pl http://www.icie.com.pl/lect_pw.htm Warszawa, maj, 2011 r. Wykład jest współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego. Prolog Definicja Złożoność
E N D
Algorytm Krótka nota M. MuraszkiewiczInstytut Informatyki, Politechnika Warszawska mietek@-n-s.pl http://www.icie.com.pl/lect_pw.htm Warszawa, maj, 2011 r. Wykład jest współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
Prolog Definicja Złożoność Problemy Epilog M. Muraszkiewicz
Prolog M. Muraszkiewicz
Etymologia Abu Abdullah Muhammed ibn Musa Al-chwarizmi (أبو عبد الله محمد بن موسى الخوارزمي) Dzięki jego pracom na Bliskim Wschodzie zaczęto stosować pochodzące z Indii dziesiętny system liczenia i pozycyjny system zapisu liczb. Cyfry arabskie wyparły cyfry rzymskie w Europie. Jego prace pozwoliły też wprowadzić i wyjaśnić pojęcia zera, ułamków oraz funkcje trygonometryczne sinus i tangens. Jako pierwszy ułożył tablice funkcji sinus i tangens, wprowadził elementy algebry. Termin algebra pochodzi od tytułu jego dzieła Kitāb al-jabr wa'l-muqābala ("Zasady redukcji i przenoszenia"), zaś algorytm od łacińskiej wersji jego nazwiska. źródło: http://pl.wikipedia.org/wiki/Muhammad_ibn_Musa_al-Chuwarizmi ibn Musa Al-chwarizmi(780 – 850)
Prekursorzy Lady Augusta Ada Lovelace (1815–1852) Charles Babagge(1791- 1871) maszyna różnicowa
Definicja M. Muraszkiewicz
1-sza iteracja Algorytm to opis metody prowadzącej do rozwiązania zadania lub do osiągnięcia zamierzonego celu przy założeniu o tym co lub kto będzie wykonawcą algorytmu. M. Muraszkiewicz
2-ga iteracja Algorytm to jednoznaczny opis metody w przyjętym języku prowadzącej do rozwiązania zadania lub do osiągnięcia zamierzonego celu przez wykonanie skończonej liczby poleceń prostych, przy założeniu o tym co lub kto będzie wykonawcą algorytmu, i że wykonawca jest w stanie interpretować i zrealizować każde wymienione polecenie proste. M. Muraszkiewicz
3-ia iteracja Algorytmto jednoznaczny opis metody, która w skończonym czasie przekształca dane wejściowe w dane wyjściowe. M. Muraszkiewicz
Poprawność algorytmu Algorytm jest poprawny, gdy dla każdego wystąpienia zadania przedłożonego do rozwiązania: Podaje poprawny wynik. Zatrzymuje się. Uwaga na błędy zaokrągleń liczb rzeczywistych M. Muraszkiewicz
Przykład Do najstarszych znanych algorytmów należy, Euklidesa algorytm do znajdowania największego wspólnego dzielnika (NWD) dwóch liczb. Oblicz c jako resztę z dzielenia a przez b. zastąp pozycję a liczbą b, a pozycję b liczbą c. jeżeli pozycja b = 0, to szukane NWD = a, w przeciwnym wypadku przejdź do kroku 1. M. Muraszkiewicz
Języki • język naturalny, np. język polski • grafy skierowane • języki programowania komputerów, np. C#, Java • pseudokody • … • Czy sieć neuronowa jest językiem zapisu algorytmów ? M. Muraszkiewicz
Główne struktury języków • początek, koniec • stałe, zmienne, łańcuchy, tablice • nadawanie wartości • operatory arytmetyczne i logiczne, operatory działające na łańcuchach • funkcje • wyrażenia warunkowe • pętle M. Muraszkiewicz
Złożoność M. Muraszkiewicz
Złożoność Złożoność algorytmu to ilość zasobów niezbędnych do jego wykonania. Złożoność czasowa Liczba operacji wymaganych do wykonania algorytmu w zależności od rozmiaru danych wejściowych. Złożoność pamięciowa Wielkość pamięci, której wymaga wykonanie algorytmu z uwzględnieniem rozmiaru danych wejściowych. M. Muraszkiewicz
Złożoności czasowe n – liniowa log n – logarytmiczna n log n – liniowo-logarytmiczna nl – wielomianowa, l = 2, 3, …, np. n2 stopnia 2, n3 – sześcienna 2n – wykładnicza 2n n! – wykładnicza n! . M. Muraszkiewicz
Klasy złożoności • Klasa złożoności to klasa zagadnień obliczeniowych o podobnej złożoności obliczeniowej. • Klasa P (deterministyczna wielomianowa) - problem (decyzyjny), dla którego rozwiązanie można znaleźć w czasie wielomianowym. • Klasa NP (niedeterministryczna wielomianowa) - problem dla którego rozwiązanie można zweryfikować w czasie wielomianowym. • Wszystkie problemy klasy P są NP, ponieważ można je sprawdzić w czasie wielomianowym P NP. • Nie wiadomo natomiast, czy P różni się od NP, tzn. P ≠ NP lub inaczej czy P NP M. Muraszkiewicz
Problemy M. Muraszkiewicz
Zagadnienia • Analiza algorytmów to działanie w celu określenia zasobów, które są niezbędne do wykonania algorytmu: czasu wykonania, pojemność pamięci, liczby procesorów, szerokości pasma itd. Ponadto: • Jak sprawdzić/dowieść poprawność algorytmu ? • Jak wyznaczyć złożoność algorytmu ? • Jak wybrać język zapisu algorytmu ? • Jak przygotować dane, jak je ustrukturalizować ? • Czy istnieją algorytmy alternatywne ? • … M. Muraszkiewicz
Epilog M. Muraszkiewicz
An algorithm must be seen to be believed. M. Muraszkiewicz
Warto przeczytać: Aho A. V., Hopcroft J. E., Ullman J. D.: Algorytmy i struktury danych, Helion, Gliwice 2003 Banachowski L., Diks K., Rytter W.: Algorytmy i struktury danych, WNT, Warszawa 2003 Heineman G.T., Pollice G., Selkow S.: Algorithms in a Nutshell, O'Reilly Media, 2008 Cormen T.H., Leiserson Ch.E., Rivest R.L.: Wprowadzenie do algorytmów, WNT, Warszawa 2000 Sedgewick R.: Algorithms, Addison-Wesley Professional, 2011 Sysło M.M.: Algorytmy, WSiP, Warszawa 2002 Wirth N.: Algorytmy + struktury danych = programy, WNT, Warszawa 2002 http://pl.wikipedia.org/wiki/Algorytm M. Muraszkiewicz