281 likes | 683 Views
ALGORYTMY. Kinga Kołodziej, Marta Trębicka. Co to jest algorytm?. „Algorytm, tym wyrazem oznaczamy zbiór wszystkich znaków używanych w jakimkolwiek rachunku.” Encyklopedia Powszechna Orgelbranda (1859)
E N D
ALGORYTMY Kinga Kołodziej, Marta Trębicka
Co to jest algorytm? • „Algorytm, tym wyrazem oznaczamy zbiór wszystkich znaków używanych w jakimkolwiek rachunku.” Encyklopedia Powszechna Orgelbranda (1859) • „Algorytm, zbiór wszystkich znaków używanych w jakimkolwiek rachunku. Tak mamy algorytm rachunku różniczkowego, algorytm proporcji. Wyraz ten pochodzi od nazwiska matematyka arabskiego Alkaresmi…” Encyklopedia Powszechna Orgelbranda (1898-1912)
„Algorytm oznacza działanie matematyczne; pochodzi od arabskiego imienia Alchwarizmi. Znany jest algorytm Euklidesa dla oznaczenia największego wspólnego dzielnika dwu liczb całkowitych”Encyklopedia Gutenberga • „Algorytm (arab.) matematyczny przepis postępowania, instrukcja mechanicznego, bezmyślnego rozwiązywania typowego zadania matematycznego na podstawie szczegołówego planu kolejnych czynności arytmetycznych, np. algorytm wyciągania pierwiastka kwadratowego […] Wyraz algorytm […] oznaczał w wiekach średnich regułę wykonywania czterech działań arytmetycznych w dziesiętnym systemie numeracji. Ostateczną definicję algorytmu podano dopiero w XX w.” I tom Encyklopedii Powszechnej PWN
Algorytm w procesie powstawania • Algorytm jest przepisem opisującym krok po kroku rozwiązanie problemu lub osiągnięcie jakiegoś celu
Na całościowe rozwiązanie problemu składają się : • wybór metody rozwiązania problemu • plan zastosowania tej metody do rozwiązania problemu • opis czynności wykonywanych podczas realizacji tego planu wraz z opisem ich skutków • ostateczny wynik wykonywanych czynności Czynności służące do rozwiązania zadania (kroki) to :• analiza treści zadania • wykaz danych wejściowych; wiadomych i niewiadomych oraz relacji między nimi • sprawdzenie czy zadanie posiada jednoznaczne rozwiązanie • wybór metody rozwiązania zadania • opis czynności, które należy wykonać z danymi wejściowymi przy zastosowaniu • wybranej metody rozwiązania • sporządzenie i przedstawienie wyników rozwiązania zadania • Urządzenie techniczne, które może realizować algorytm nosi nazwę automatu (żelazko z termoregulatorem, lodówka, pralka automatyczna). Uniwersalnym automatem do realizacji algorytmów z zakresu przetwarzania danych jest komputer.
Trochę historii… • Początkowo słowem algorism nazywano czynności konieczne do wykonywania obliczeń z użyciem dziesiętnego systemy liczbowego. Obecne znaczenie słowa algorytm jako zestawu ścisłych reguł powstało wraz z rozwojem matematyki i techniki. • Najstarszy algorytm – algorytm Euklidesa, ma ponad 2000 lat. • Liczydła – Pierwsze urządzenia pomagające wykonywać obliczenia. Konstruowali je Chińczycy, Rzymianie, Arabowie • Kalkulatory – XVII w, twórcy: Blaise Pascal (1623-1662) i Gottfried W. Leibniz (1646-1716) • Pierwsze komputery – początek wieku XIX, Charles Babbage (1791-1871). • Komputer (w dzisiejszym sensie) – Konrad Zuze (1910-1995), pierwsza maszyna jeszcze przed II WŚ.
Rodzaje algorytmów ALGORYTMY LINIOWE sekwencyjne WARUNKOWE iteracyjne rekurencyjne
Algorytm sekwencyjny • Instrukcje wykonywane są w porządku, w jakim zostały wprowadzone. • Algorytm liniowy (sekwencyjny) — instrukcje wykonywane po kolei 1. Przygotuj jajko, tłuszcz, przyprawy2. Wrzuć tłuszcz na patelnię3. Podgrzej patelnię4. Wbij jajko5. Dodaj przyprawy6. Wymieszaj7. Wyłóż na talerz
Algorytm iteracyjny • rodzaj algorytmu i programu, w których wielokrotnie wykonuje się pewne instrukcje, dopóki nie zostanie spełniony określony warunek, • Algorytm iteracyjny warunkowy (iteratio- powtarzanie, działanie w pętli)Dopóki jest czerwone światło dla pieszych stój i czekaj1. Stój2. Czy świeci się czerwone światło? A. Jeśli TAK to przejdź do kroku 1 B. Jeśli NIE to przejdź do kroku 33. Można przejść przez ulicę zachowując ostrożność
Algorytm rekurencyjny • Algorytm rekurencyjny to taki, który w pewnym kroku zawiera polecenie wykonania siebie samego dla innych danych. • Takie rekurencyjne wywołanie algorytmu wykorzystuje domyślnie stos, na którym zapisywane są aktualne wartości wszystkich wykorzystywanych zmiennych. Są one przywracane w chwili ukończenia rekursywnego wywołania algorytmu. • Przykładem rekurencji jest prosty algorytm o nazwie jedz kaszkę: • 1. Jedz kaszkę (weź łyżkę kaszki i połknij) 2. Jedz kaszkę dalej, aż talerz będzie pusty
Sposoby reprezentacji algorytmu: - Lista kroków (reprezentacja krokowa-w punktach)- reprezentacja graficzna (schemat blokowy, drzewo)Lista kroków- przedstawienia w punktach, - każdy punkt zawiera opis wykonywanej czynności,- kolejność opisywania nie powinna być przypadkowa,tylko ściśle związana z realizacją algorytmu;Reprezentacja graficzna – w schemacie blokowym kolejne operacje z listy kroków algorytmu prezentowane są w postaci odpowiednio połączonych figur geometrycznych (bloki). Kształt i opis bloku wskazuje na rodzaj wykonywanej operacji.
Słowny opis algorytmu • Jest na ogół pierwszym, mało ścisłym opisem algorytmu. • Rozpoczyna się dyskusją jak można rozwiązać postawione zadanie i służy wyrobieniu pewnej intuicji oraz ukierunkowaniu rozważań na właściwe sposoby i techniki przydatne w rozwiązywaniu.
Opis algorytmu w postaci listy kroków • Lista kroków jest jednym z najczęściej stosowanych, dokładnych sposobów opisywania obliczeń oraz ich kolejności. • Przykład: 1. Podejdź do telefonu 2. Podnieś słuchawkę 3. Sprawdź, czy jest sygnał... 4. ... Jest to początek algorytmu wykonania telefonu podany w postaci listy kroków ZAPAMIĘTAJ! by w jednym punkcie (kroku) opisać t y l k o j e d n ą o p e r a c j ę
Algorytm w postaci listy kroków Algorytm obliczania wartości przykładowej funkcji Dane: Dowolna liczba rzeczywista x. Wynik: Wartość funkcji f(x) określonej wzorem: {-1, dla x<0 f(x) = {0, dla x=0 {1, dla x=1 Krok 0. Wczytaj wartość danej x. Krok 1. Jeśli x>0, to f(x)=1. Zakończ algorytm. Krok 2. {W tym przypadku x < 0.} Jeśli x=0, to f(x)=0. Zakończ algorytm. Krok 3. {W tym przypadku x<0.} Mamy f(x)=-1. Zakończ algorytm.
Drzewo algorytmu(drzewo obliczeń) • Szczególny rodzaj schematu blokowego, który przyjmuje postać drzewa. (Każde dwie drogi obliczeń w takim schemacie mogą mieć tylko początkowe fragmenty wspólne, ale po rozejściu już się nie spotykają). • W drzewie algorytmu można wyróżnić: * korzeń – wierzchołek, w którym rozpoczynają się działania algorytmu, * wierzchołki pośrednie – są w nich umieszczone operacje wykonywane w algorytmie, * wierzchołki końcowe (liście) – różne wyniki zakończenia obliczeń w algorytmie.
Schemat blokowy algorytmu • Jest jednym z najbardziej popularnych, graficznych sposobów przedstawiania algorytmów. • Składa się z klatek (są w nich zapisywane operacje, które mają być wykonane) oraz połączeń między nimi (wyznaczają kolejność ich wykonywania). • Można je budować odręcznie, można również konstruować je posługując się oprogramowaniem.
ZASADY BUDOWY SCHEMATU BLOKOWEGO 1) Każda operacja jest umieszczona w skrzynce 2) Schemat ma tylko jedną skrzynkę "początek" i przynajmniej jedną skrzynkę "koniec" 3) Skrzynki są ze sobą połączone. 4) Ze skrzynki wychodzi jedno połączenie; wyjątek stanowią skrzynki: "koniec" (z której nie wychodzą już żądne połączenia) oraz "warunkowa" (z której wychodzą dwa połączenia opisane TAK i NIE - w zależności od tego, czy warunek jest spełniony czy nie, można wyjść jedną z dwóch dróg) 5) W skrzynce "operacyjnej" zamiast znaku "=" pojawia się oznaczenie ":="
Rodzaje sieci działań: • Proste (sekwencyjne) - nie używa się w nich bloków warunkowych. W takiej sieci działań kolejność realizacji poszczególnych operacji jest ściśle określona i żadna z nich nie może być pominięta ani powtórzona. • Z rozwidleniem - zawiera w sobie wybór jednej z kilku możliwych dróg realizacji danego zadania. Istnieje w nim przynajmniej jeden blok warunkowy. • Z pętlą, często w trakcie realizacji danego zadania konieczne jest powtórzenie niektórych operacji różniących się jedynie zestawem danych. Pętla obejmuje tą część bloków, która ma być powtarzana. • Złożone - będące kombinacją powyższych sieci.
Struktury danych • Stos – liniowa struktura danych, w której dane dokładane są na koniec zbioru i z końca zbioru są pobierane (czyli pobierany jest element dodany najpóźniej). Strategia LIFO (ang. Last In, First Out; ostatni na wejściu, pierwszy na wyjściu). • Kolejka – liniowa struktura danych, w której dane pobierane są w kolejności ich dołożenia do zbioru (czyli pobierany jest element dodany najwcześniej). Strategia FIFO (ang. First In, First Out; pierwszy na wejściu, pierwszy na wyjściu). • Lista tablicowa – struktura danych, w której elementy są ułożone w liniowym porządku. Lista zaimplementowana w ten sposób opiera się na tablicy obiektów (lub rekordów) danego typu.
Złożoność i efektywność algorytmów • Złożoność obliczeniowa algorytmu – liczba operacji wykonywanych przez algorytm. • Algorytmy optymalne – bezwzględnie najlepsze algorytmu rozwiązywania problemów • Efektywność algorytmu – złożoność algorytmu w praktycznym sensie. Najczęściej pojawia się w porównaniach różnych metod rozwiązywania tego samego problemu lub w ocenie praktycznej przydatności algorytmów.
Wieże Hanoi Mamy trzy paliki – oznaczamy je A, B i C – oraz pewną liczbę krążków różnej wielkości z otworami,nanizanych na palik A w kolejności od największego do najmniejszego, największy znajduje się na dole. Łamigłówka polega na przeniesieniu wszystkich krążków z palika A na palik B, z możliwością posłużenia się przy tym palikiem C, w taki sposób,że : • Pojedynczy ruch polega na przeniesieniu jednego krążka między dwoma palikami; • W żadnej chwili rozwiązywania łamigłówki większy krążek nie może leżeć na mniejszym. SPRÓBUJ TERAZ ROZWIĄZAĆ TĘ ŁAMIGŁÓWKĘ Z TRZEMA KRĄŻKAMI.
Możliwe rozwiązanie składa się z trzech etapów: • Przenieś n-1 górnych krążków z palika A na palik C, używając B. • Przenieś największy krążek z palika A na palik B. • Przenieś wszystkie krążki z palika C na palik B, używając palika A.
Algorytm rekurencyjny rozwiązywania łamigłówki Wież Hanoi Dane: Trzy paliki A, B i C, oraz n krążków o różnych średnicach, nanizanych od największego do najmniejszego na palik A. Krążki można przenosić między palikami tylko pojedynczo i nigdy nie można położyć większego na mniejszym. Wynik: Krążki nanizane na palik B – do uzyskania tego wyniku można wykonywać jedynie dopuszczalne przenoszenia. Krok 1. Jeśli n=1, to przenieś krążek z palika A na palik B i zakończ algorytm dla n=1. Krok 2. {W tym przypadku liczba krążków na paliku A jest większa od 1.} 2a. Stosując ten algorytm, przenieś n-1 krążków z A na C, używając B. 2b. Przenieś pozostały krążek z A na B. 2c. Stosując ten algorytm, przenieś n-1 krążków z C na B, używając A.
A B C1.poziom rekurencji-krok 2a: A B C2. poziom rekurencji dla kroku 2a – kroki: 2a: 2b: 2c: 1.poziom rekurencji-kroki: 2b: 2c: 2. poziom rekurencji dla kroku 2a – kroki: 2a: 2b: 2c:
koniec DZIĘKUJEMY ZA UWAGĘ !!