Zestawienie algorytmów

advertisement
Zestawienie najpopularniejszych algorytmów
Algorytm 1. Otrzymywanie binarnej reprezentacji liczby naturalnej i tworzenie na tej podstawie binarnych
reprezentacji liczb całkowitych w komputerze (rozdz. I.5). Uogólnienie tych algorytmów na dowolną podstawę
systemu liczbowego, np. 8 i 16 (zad.I.1 – I.4)- Dalszym uogólnieniem jest tworzenie stałopozycyjnej i
zmiennopozycyjnej reprezentacji liczb rzeczywistych (p. I5.1.8 i I5.1.9 oraz p. II.1.3.3
i II.2.3).
Problemy: korzystanie z komputerowych reprezentacji liczb w algorytmach (np. przy szybkim potęgowaniu,
patrz p.I.5.1.5), tworzenie własnych reprezentacji liczb (zad. II.4.2), zakresy reprezentacji liczb i
niedokładności pojawiające się w obliczeniach (p. II.2.3).
Pojęcia: pozycyjny system reprezentacji liczb, nadmiar reprezentacji liczb całkowitych, nadmiar
i niedomiar w reprezentacjach liczb rzeczywistych, błędy zaokrągleń w reprezentacjach liczb rzeczywistych.
Metody: iteracja algorytmu dzielenia liczby całkowitej z resztą, schemat Hornera (patrz Algorytm 2).
Algorytm 2. Schemat Homera obliczania wartości wielomianu (p. I.7.1.1).
Problemy: wszystkie problemy, w których jest obliczana wartość wielomianu; takim problemem jest na
przykład obliczanie dziesiętnej wartości liczby, która jest przedstawiona w postaci rozwinięcia binarnego;
szybkie potęgowanie, gdy wykładnik w reprezentacji binarnej jest przedstawiony w postaci schematu Homera.
Pojęcia: iteracja, liczba działań wykonywanych przez algorytm - złożoność obliczeniowa, algorytm
optymalny.
Metody: iteracja, rekurencja (p.I.1.11.1).
Algorytm 3. Szybkie potęgowanie, w którym jest wykorzystywane binarne rozwiniecie wykładnika potęgi
(p.I.5.1.5, zad.I.5.9; zad.I.5.11)
Problemy: algorytm szyfrowania i deszyfrowania metodą RSA.
Pojęcia: reprezentacja binarna liczby naturalnej, schemat Homera, rekurencja.
Metody: wykorzystanie binarnej reprezentacji wykładnika i zastosowanie do niego schematu Homera.
Algorytm 4. Obliczanie pierwiastków równania kwadratowego metodą informatycznie poprawną, czyli
metodą stabilną, która jest połączeniem algorytmu delty i wzorów Viete'a (p. II.2.4 i II.3.2).
Problemy:
rozwiązywanie
zadań
z
matematyki
i
fizyki,
które
sprowadzają
do rozwiązania równania kwadratowego.
Pojęcia: utrata dokładności w obliczeniach komputerowych, błędy zaokrągleń, algorytm stabilny.
Metody: szkolny algorytm delty w powiązaniu z wzorami Viete'a.
się
Algorytm 5. Obliczanie wartości pierwiastków układu dwóch równań liniowych metodą wyznaczników (p.
II.2.5).
Problemy: rozwiązywanie układów równań liniowych, znajdowanie punktu przecięcia się prostych.
Pojęcia: wyznacznik i jego wartość, dokładność obliczeń, algorytm stabilny, złe uwarunkowanie zadania.
Metody: metoda wyznaczników.
Algorytm 6. Znajdowanie elementu najmniejszego lub największego w ciągu (p. I.1.7.2). Znajdowanie w
ciągu elementu o wyróżnionej własności lub wartości, a ogólniej - poszukiwanie informacji w zbiorze
(p.I.1.10).
Problemy: znajdowanie w ciągu wyróżnionych elementów, np. o zadanej wartości lub określonej własności.
Pojęcia: przeszukiwanie liniowe, iteracja.
Metody: liniowe przeszukiwanie ciągu elementów, czyli przeszukiwanie ciągu od jednego do drugiego
końca.
Algorytm 7. Znajdowanie w ciągu uporządkowanym elementu o danej wartości metodą przeszukiwania
binarnego (p. I.1.10).
Problemy: przeszukiwanie ciągu uporządkowanego, wstawianie elementu do ciągu uporządkowanego,
porządkowanie ciągu metodą binarnego wstawiania elementów.
Pojęcia: przeszukiwanie binarne, metoda dziel i zwyciężaj.
Metody: przeszukiwanie binarne, znane również jako przeszukiwanie przez połowienie.
Algorytm 8. Jednoczesne znajdowanie w ciągu najmniejszego i największego elementu (p.I.1.8).
Problemy: jednoczesne znajdowanie minimum i maksimum.
Pojęcia: metoda dziel i zwyciężaj.
Metody: metoda dziel i zwyciężaj, zrealizowana iteracyjnie (p.I.1.8) lub rekurencyjnie (zad. I.1.19)).
Algorytm 9. Porządkowanie ciągu metodą przez wybór (p. 1.1.9).
Problemy: porządkowanie.
Pojęcia: iteracja, znajdowanie najmniejszego elementu, porządkowanie
Metody: iteracja innego algorytmu (szukania minimum) i zamiana.
Algorytm10. Scalanie (łączenie) dwóch ciągów uporządkowanych w jeden ciąg uporządkowany
(p.I.1.11.2).
Problemy: scalanie ciągów i plików (zad.I.7.4), porządkowanie przez scalanie.
Pojęcia: scalanie (łączenie).
Metody: scalanie (łączenie) dwóch ciągów lub plików w jeden przez przeglądanie obu ciągów od ich
początków i porównywanie elementów znajdujących się na początku.
Algorytm 11. Porządkowanie ciągu metodą przez scalanie (p.I.1.11.2).
Problemy: porządkowanie.
Pojęcia: scalanie, metoda dziel i zwyciężaj, porządkowanie.
Metody: dziel i zwyciężaj, rekurencyjne zastosowanie scalania.
Algorytm 12. Porządkowanie ciągu metodą przez wstawianie (zad.I.1.16).
Problemy: porządkowanie.
Pojęcia: przeszukiwanie, porządkowanie.
Metody: iteracja i wstawianie elementu w ciąg uporządkowany - miejsce dla wstawianego elementu można
znaleźć, stosując metodę przeszukiwania liniowego lub binarnego (patrz Algorytm 7).
Algorytm 13. Porządkowanie ciągu metodą bąbelkową (p.II.3.10).
Problemy: porządkowanie.
Pojęcia: elementarne zamiany elementów, porządkowanie.
Metody: iteracja przestawiania elementów sąsiednich, które są w niewłaściwej kolejności.
Algorytm 14. Porządkowanie pozycyjne metodą koszykową (p.I.7.1.1).
Problemy: porządkowanie obiektów nieliczbowych i rekordów, czyli obiektów złożonych z niejednorodnych
elementów, np. słów, dat, a także liczb jako ciągów cyfr.
Pojęcia: porządek leksykograficzny (słownikowy), reprezentacja pozycyjna obiektów, rekord Metody:
metoda koszykowa.
Algorytm 15. Znajdowanie największego wspólnego dzielnika dwóch liczb naturalnych (p.II.1.4).
Problemy: znajdowanie największego wspólnego dzielnika dwóch liczb, wykonywanie działań na ułamkach
(zad. II.1.10), znajdowanie najmniejszej wspólnej wielokrotności dwóch liczb (zad. II.1.2).
Pojęcia: dzielenie liczb całkowitych, największy wspólny dzielnik, algorytm Euklidesa, rekurencja. Metody:
algorytm Euklidesa w realizacji iteracyjnej lub rekurencyjnej.
Algorytm 16. Generowanie kolejnych liczb Fibonacciego (p.I.1.11.3, II.1.9).
Problemy: realizacja w postaci iteracji obliczeń zdefiniowanych zależnością rekurencyjną; liczby Fibonacciego
w przyrodzie i w sztuce.
Pojęcia: liczby Fibonacciego, zależność rekurencyjna, rekurencja a iteracja, złoty podział.
Metody: rekurencyjna lub iteracyjna realizacja zależności rekurencyjnej definiującej liczby Fibonacciego (p.
II.1.9).
Algorytm 17. Przeszukiwanie drzew binarnych (p. II.1.13).
Problemy: obliczanie wartości wyrażeń reprezentowanych za pomocą drzew, wyznaczanie beznawiasowej
postaci wyrażenia (p.II.1.13).
Pojęcia: drzewo binarne, metody przeszukiwania drzewa binarnego: przedrostkowa (ang. preorder),
wrostkowa (ang. inorder) i przyrostkowa (ang. postorder), nieliniowe metody przeszukiwania, rekurencja.
Metody: metody przeszukiwania drzew.
Algorytm 18. Zamiana wyrażenia na postać ONP i obliczanie wartości wyrażenia danego w postaci ONP (p.
II.1.11.2, zad.II.1.16, p. II.3.9, zad. II.3.1).
Problemy: obliczanie wartości wyrażeń w programach przez translatory, kompilatory i interpretery.
Pojęcia: beznawiasowa postać wyrażenia (postać ONP), drzewo binarne, drzewo wyrażenia, rekurencja, stos.
Metody: analiza postaci wyrażenia z wykorzystaniem stosu.
Algorytm 19. Algorytm Huffmana (p.I.7.2.2).
Problemy: wyznaczanie średnio najkrótszych kodów prefiksowych, dalsze zastosowania: szybkie automaty,
szybkie scalanie wielu plików.
Pojęcia: kod prefiksowy, drzewo binarne.
Metody: zastosowanie binarnego drzewa Huffmana do generowania odpowiedniego kodu.
Algorytm 20. Szyfr RSA (p. I.7.3.5).
Problemy: szyfrowanie informacji z kluczem publicznym, podpis elektroniczny.
Pojęcia: kryptografia z kluczem publicznym, klucz asymetryczny, liczby pierwsze, szybkie potęgowanie,
arytmetyka reszt (modularna), podpis elektroniczny.
Metody: szybkie potęgowania.
Algorytm 21. Wydawanie reszty za pomocą najmniejszej liczby nominałów ( p. II.4.3.4).
Problemy: minimalizacja nominałów w sumie pieniędzy; dalsze zastosowanie podejścia zachłannego to np.
dobór najlepszej zawartości plecaka.
Pojęcia: problem reszty, problem plecakowy, algorytm zachłanny.
Metody: algorytm zachłanny.
Algorytm 22. Szukanie najkrótszej drogi w siatce dróg (p. II.4.3.5)
Problemy: znajdowanie możliwie najlepszej trajektorii ruchu (po drogach, w czasie wspinaczki, w locie
samolotem).
Pojęcia: najkrótsza droga, optymalizacja, programowanie dynamiczne,
Metody: programowanie dynamiczne (oba etapy, I i II).
Algorytm 23. Wyznaczanie przybliżonej wartości pierwiastka kwadratowego z nieujemnej liczby
rzeczywistej (p. II.2.2).
Problemy: pierwiastkowanie liczb, które nie są kwadratami liczb naturalnych.
Pojęcia: metoda iteracyjna, przybliżanie wartości dokładnej, algorytm Newtona--Raphsona.
Metody: algorytm Newtona-Raphsona.
Algorytm 24. Wyznaczanie miejsca zerowego funkcji (p. II.2.6).
Problemy: obliczanie miejsc zerowych funkcji.
Pojęcia: zero (miejsce zerowe) funkcji, metoda iteracyjna, przybliżanie wartości
dokładnej, metoda połowienia, metoda siecznych, algorytm Newtona.
Metody: metoda połowienia przedziału, metoda siecznych, algorytm Newtona.
Algorytm 25. Znajdowanie wartości całki oznaczonej, czyli kwadratura (p. II.2.7).
Problemy: Obliczanie wartości całki oznaczonej, czyli obliczanie wartości pewnej wielkości geometrycznej (np.
pola, długości krzywej, objętości).
Pojęcia: kwadratura, czyli wartość całki oznaczonej, przybliżanie.
Metody: przybliżanie dokładnej wartości całki oznaczonej, czyli np. wielkości
pewnego pola, sumą pól figur prostszych, w przybliżeniu wypełniających to pole.
Uwaga:
Na liście znajdują się algorytmy dobrze znane w informatyce. Pominięto algorytmy odnoszące się
do problemów bardziej szczegółowych.
(wg. Informatyka – Poradnik dla nauczycieli Ewa Gurbiel, Maciej Sysło.... WSIP)
Download