ALGORYTMIKA Wprowadzenie do algorytmów Popularne denicje algorytmu przepis opisuj cy krok po kroku rozwi zanie problemu lub osi gni cie jakiego± celu. (M. Sysªo, Algorytmy, ±ci±lejszej denicji w ksi»ce nie ma i nie b dzie). sko«czony, uporz dkowany ci g jasno zdeniowanych czynno±ci, koniecznych do wykonania pewnego zadania (Wikipedia). uporz dkowany, ±ci±le okre±lony i sko«czony ci g dziaªa«nad okre±lon struktur danych, których wykonanie daje rozwi zanie pewnej klasy problemów. precyzyjny opis sposobu rozwi zania okre±lonego zdania lub osi gni cie jakiego± celu. ci g instrukcji... idea rozwi zania... A wi c: czy opis czy idea? czy program komputerowy jest algorytmem?... ró»nego rodzaju u»ycia sªowa algorytm: na przykªad, algorytm sporz dzania hamburgera w McDonalds. Ameryka«skie: step by step instructions... Czy istnieje formalna denicja (wedªug en.wikipedia.org nie istnieje! ale to jest kolejne nieporozumienie)
Wprowadzenie do algorytmów 2 Algorytm to najkrócej mechaniczna metoda rozwi zywania zadania danego typu. mechaniczna w sensie nie wymagaj ca»adnej inwencji twórczej, mo»liwa do wykonania przez maszyn (komputer); zadanie danego typu to zazwyczaj pewne zadanie z parametrami, nazywane ogólnie problemem obliczeniowym. Dokªadniej: Problem obliczeniowy (lub: zadanie obliczeniowe, ang. problem) wyznaczony jest przez ±cisªe okre±lenie dwóch skªadników: a) Dane: jakie s dopuszczalne parametry zadania (dane wej±ciowe, ang. input), b) Wynik: jakie warunki ma speªnia wynik (dane wyj±ciowe, ang. output), w zale»no±ci od danych wej±ciowych. Dla konkretnych danych problem obliczeniowy staje si zwykªym (pojedynczym) zadaniem; nazywamy je wyst pieniem problemu (lub: egzemplarzem problemu, ang. instance). Algorytm to mechaniczna metoda rozwi zywania problemu obliczeniowego (daj ca si przeksztaªci w program komputerowy). Algorytm stanowi rozwi zanie problemu obliczeniowego, je±li dla wszystkich parametrów dopuszczonych opisem daje prawidªowy wynik. UWAGI: 1. Algorytm to metoda, sposób rozwi zywania danego typu zadania (zadania z parametrami, klasy zada«, problemu obliczeniowego). 2. Algorytm mo»na opisa ró»nymi sposobami, mniej lub bardziej dokªadnie (opis sªowny, ci g instrukcji (kroków), step by step instructions, pseudokod, schemat blokowy, programy komputerowy). Ze wzgl du na wymagany mechaniczny charakter algorytm powinien dopuszcza opis precyzyjny, jak dla maszyny; i powinien da si przeksztaªci w programu komputerowy. 3. Problem obliczeniowy mo»e nie mie nic wspólnego z liczbami! Sªowo obliczanie we wspóªczesnym szerokim rozumieniu oznacza manipulowanie symbolami wedªug ustalonych reguª. Przykªad: problem sortowania.
Wprowadzenie do algorytmów 3 Programy komputerowe. Wspóªcze±nie maszynami realizuj cymi algorytmy s komputery; formalnym opisem algorytmu jest program komputerowy; z punktu widzenia programisty algorytmy s metodami rozwi zywania zada«programistycznych, których typowym celem jest przeksztaªcenie pewnych danych wej±ciowych w okre±lone dane wyj±ciowe. Wi kszo± wykªadów i ksi»ek po±wi conych algorytmom koncentruje si na tych problemach obliczeniowych, które powstaj naturalnie w programistycznej praktyce. Problemy takie maj tendencj do posiadania oczywistych rozwi za«, i gªównym zagadnieniem staje si znalezienie lepszych, bardziej efektywnych algorytmów. Przy przeksztaªcaniu wielkich ilo±ci danych nawet niewielkie ulepszenia algorytmów mog dawa wyra¹ne efekty w dziaªaniu programów. Dlatego takie ksi»ki wiele miejsca po±wi caj algorytmom przetwarzania najbardziej podstawowych, numerycznych i nienumerycznych, struktur danych. St d podstawowy wykªad w tym zakresie nosi nazw Algorytmy i struktury danych. Problem sortowania listy elementów jest tu typowym przykªadem. Istnieje wiele ró»nych algorytmów rozwi zuj cych ten problem, ka»dy maj cy swoje zalety i wady. Matematyków bardziej interesuj problemy obliczeniowe, dla których samo znalezienie rozwi zania jest wyzwaniem matematycznym, lub znalezienie rozwi zania dostatecznie efektywnego. Teoria zªo»ono±ci obliczeniowej zapocz tkowana przez matematyków pozwala dowodzi,»e dla danego problemu obliczeniowego nie istnieje algorytm rozwi zuj cy dany problem obliczeniowy lub»e nie istnieje algorytm o wymaganej efektywno±ci. Dopiero w tej teorii mo»na znale¹ ±cisª, matematyczn denicj algorytmu. W istocie rzeczy matematycy zawsze poszukiwali algorytmów (sposobów oblicze«), tyle»e specjalnego rodzaju, daj cych si zapisa w formie wzoru matematycznego! Poszukiwali te» ogólniejszych metod rozwi zywania ró»nego rodzaju zagadnie«, tyle»e nie kªadli nacisku na mechaniczny charakter. Dopiero rozwój technologii komputerowej sprawiª,»e i w matematyce zacz to wi ksz uwag zwraca na aspekty algorytmiczne zagadnie«. Matematycy opisywali algorytmy wzorami lub sªownie. Praktyka programistyczna sprawiªa, ze dzi± naturalnym sposobem opisu jest pseudokod opis algorytmu w postaci ci gu instrukcji, przy u»yciu mieszaniny sªów kluczowych j zyków programowania i j zyka naturalnego, odzwierciedlaj cy najbardziej ogóln struktur programu.
Wprowadzenie do algorytmów 4 Najprostsze przykªady: 1. Równanie kwadratowe x 1,2 = b ± 2a 2. Wzory rekurencyjne, Liczby Fibonacciego F n = F n 1 + F n 2 ; F 0 = F 1 = 1. ( ) ( ) n ( ) ( ) n 1 + 5 1 + 5 1 5 1 5 F n = 2 5 2 2. 5 2 Przykªady algorytmów w matematyce: algorytm Euklidesa, dzielenie wielomianów, mno»enie i dodawanie liczb wielocyfrowych, algorytm Kroneckera rozkªadu wielomianów nad Q, ró»niczkowanie funkcji elementarnych, metody caªkowania, rozwi zywanie ukªadów równa«, obliczanie rz du macierzy, sprowadzanie macierzy do postaci schodkowej; problemy z teorii grafów i matematyki dyskretnej nowe dziedziny o charakterze algorytmicznym!. Nazwa pochodzi od ªaci«skiej formy nazwiska Muhammad ibn Musa al- Khwarizmi (w polskiej transkrypcji al-chuwarizmi) metody oblicze«w systemie dziesi tnym. Šaci«skie tªumaczenie: Algoritmi de numero Indorum (Algoritmi o liczbach Hindusów Algorytmy o liczbach Hindusów). W informatyce: problemy obliczeniowe, które powstaj naturalnie w praktyce programowania mo»na podzieli na 3 rodzaje: a) 90 % to problemy trywialne, o oczywistych rozwi zaniach; tzw. (klepanie kodu); b) w przetwarzaniu wielkich ilo±ci danych zwykle równie» oczywiste rozwi zania, ale nawet niewielkie ulepszenia zwi kszaj efektywno± (np. problem sortowania); Zagadnienie: poszukiwanie najbardziej efektywnych rozwi za«; c) problemy obliczeniowe, dla których samo znalezienie rozwi zania albo znalezienie rozwi zania dostatecznie efektywnego jest wyzwaniem matematycznym Dwa podstawowe wykªady to: Algorytmy i struktury danych (bardziej praktyczne zagadnienia) oraz Teoria zªo»ono±ci obliczeniowej lub Teoria oblicze«(bardziej teoretyczne zagadnienia).
Wprowadzenie do algorytmów 5 ALGORYTMY algorytm Euklidesa zapis binarny liczby Wie»e Hanoi algorytm Euklidesa (rekurencja). rozwi zywanie równania diofantycznego ax + by = c doprowadzanie macierzy do postaci schodkowej faktoryzacja pierwiastkowanie (analiza numeryczna) dziaªania na liczbach wielocyfrowych (systemy zapisu liczb, Algoritmi) Fibonacci ró»ne algorytmy sortowanie testowanie pierwszo±ci liczby (Primality), sito Erastotenesa algorytmy Hornera, szybkie podnoszenie do pot gi droga Eulera, droga Hamiltona, problem transportowy drzewo rozpinaj ce