Sld 10. Podsumowanie.2013.ppt
- Количество слайдов: 11
Rozdział 10. Własności algorytmów — podsumowanie
Sld 10. 1. Własności algorytmów — podsumowanie Najważniejsze własności algorytmów to: 1. 2. 3. 4. 5. Dobra określoność. Ogólność (uniwersalność). Poprawność. Skończoność. Efektywność.
Sld 10. 2. Specyfikacja • Algorytm poprawny rozwiązuje problem, dla którego został opracowany. Poprawność algorytmu określamy względem specyfikacji problemu. Każdy algorytm jest opisany w postaci listy kroków, którą poprzedza specyfikacja problemu i względem tej specyfikacji możemy określać wszystkie jego własności, w tym — czy algorytm jest rzeczywiście poprawny. • Specyfikacja jest ścisłą definicją problemu i składa się z danych, wyników oraz opisu związków zachodzących między nimi. Zatem specyfikacja to coś więcej niż tylko dane i wyniki, gdyż podane w niej są: dane i warunek, jaki muszą one spełniać, zwany warunkiem początkowym, oraz wyniki i warunek, zwany warunkiem końcowym, jaki muszą one spełniać. Warunek końcowy określa również związek wyników z danymi.
Sld 10. 3. Poprawność • Algorytm jest poprawny, jeżeli działa zgodnie ze specyfikacją, to znaczy dla każdych poprawnych daje odpowiedni wynik. Algorytm jest całkowicie poprawny względem warunku początkowego i warunku końcowego, gdy dla każdych danych spełniających warunek początkowy obliczenia algorytmu kończą się i wyniki spełniają warunek końcowy. • Algorytm jest częściowo poprawny, jeśli dla każdych obliczeń, które się kończą, wynik jest poprawny względem warunku początkowego i końcowego. Weryfikując częściową poprawność nie musimy wykazać, że obliczenia kończą się dla wszystkich poprawnych danych.
Sld 10. 4. Dobra określoność • Dobra określoność opisu algorytmu oznacza, że wszystkie występujące w opisie polecenia i operacje są zrozumiałe dla czytającego i mogą być przez niego wykonane, oraz kolejność działań w algorytmie nie pozostawia żadnej dowolności co do porządku ich wykonywania. Konsekwencją i sprawdzianem dobrej określoności opisu algorytmu może być możliwość jednoznacznego reprezentowania go w postaci jeszcze bardziej sformalizowanej, np. w w programie zapisanym w dowolnym języku programowania.
Sld 10. 5. Ogólność (uniwersalność) algorytmu • Ogólność czy uniwersalność algorytmu jest jego cechą ściśle związaną z rozwiązywanym problemem: algorytm ma służyć do rozwiązywania klasy zadań, które spełniają specyfikację problemu, a mogą różnić się wartościami danych. Na przykład, jeśli algorytm jest przeznaczony do rozwiązywania równania kwadratowego, to można go zastosować do rozwiązywania równania o dowolnych współczynnikach, jedynie współczynnik przy kwadracie zmiennej powinien być różny od zera, by rzeczywiście było to równanie kwadratowe. Podobnie, z każdego algorytmu porządkowania n liczb można korzystać, chcąc znaleźć porządek wśród dowolnych n liczb, nawet jeśli (n – 1) lub, gdy te liczby są już uporządkowane.
Sld 10. 6. Skończoność • Algorytm można uznać za poprawny, gdy daje rozwiązanie w skończonej liczbie kroków, czyli - gdy jest skuteczny. • Na skończoność algorytmu mają wpływ przede wszystkim iteracje, zwłaszcza warunkowe instrukcje iteracyjne, które powinny zawierać dobrze określony warunek zakończenia. Za iteracje uznajemy również ciąg wywołań rekurencyjnych. • Powodem nie zatrzymywania się algorytmu (programu) może być sprawdzanie spełnienia dokładnych równości wielkości, które w algorytmach mogą przyjmować niedokładne wartości. Swojego działania może nie kończyć również algorytm, taki jak iteracyjne znajdowanie wartości pierwiastka kwadratowego lub znajdowanie zera funkcji metodą połowienia przedziału, gdy chcemy uzyskać zbyt dużą dokładność wyniku (np. większą niż wynosi dokładność arytmetyki komputerowej, w której są wykonywane obliczenia). • Badanie skończoności działania algorytmu może się odbywać w trakcie uruchamiania i testowania programu, gdy chcemy sprawdzić, czy dla danych testowych program zawsze się zatrzymuje.
Sld 10. 7. Problem stopu • Z badaniem skończoności obliczeń jest związany bardzo poważny problem informatyczny, tzw. problem stopu, który polega na stwierdzeniu, czy istnieje jeden algorytm, który mógłby być użyty do sprawdzania skończoności działania każdego algorytmu, również siebie. Dla konkretnego algorytmu i jego poprawnych danych, jeśli algorytm kończy działanie, to dobrze, ale jeśli się nie zatrzymuje, to na ogół nie wiemy, kiedy możemy przerwać oczekiwanie na jego zakończenie. Niestety, problem stopu nie ma rozwiązania, a dokładniej —jest nierozstrzygalny.
Sld 10. 8. Efektywność algorytmów • Nawet jeśli algorytm charakteryzuje się skończonością działania, to może nie być praktyczną metodą rozwiązywania problemu dla dużej liczby danych. I nie ma wówczas znaczenia, czy posługujemy się w tym celu komputerem i jak szybkim. W ostatnich latach znacznie wzrosła moc komputerów, ale nastąpił jeszcze większy wzrost rozmiarów problemów, które człowiek chciałby rozwiązywać. Dlatego nieodłączną cechą dobrego algorytmu stała się jego efektywność, czyli mała złożoność obliczeniowa, gwarantująca jego użyteczność w praktycznych sytuacjach.
Sld 10. 9. Literatura 1. P. Wróblewski. Algorytmy. Struktury danych i techniki programowania. Helion. 2001. 2. K. A. Lambert, D. W. Nance, T. L. Naps. Introduction to Computer Science with C++. Books/Cole, 2000. 3. M. M. Syslo. Algorytmy. Warszawa, WSP, 1997. 4. Wikipedia.
Grupa, Rok, Kierunek studiów: . . . . Nazwisko i imię. . . №. . . . Algorytmy i struktury danych EFEKTY KSZTAŁCENIA - WIEDZA, UMIEJĘTNOŚCI I KOMPETENCJE Efekty W 01: Wyjaśnić pojęcia dotyczące złożoności obliczeniowej algorytmów. Narzędzia _ W 02: Podać matematyczny opis struktur grafowych. OK ! W 03: Scharakteryzować metody projektowania algorytmów OK! Ocena


