Za pierwszy niebanalny algorytm uważa się algorytm Euklidesa wyszukiwanie NWD dwóch liczb (400 a 300 rok przed narodzeniem Chrystusa).

Podobne dokumenty
Podstawy Informatyki. Sprawność algorytmów

Efektywność algorytmów

TEORETYCZNE PODSTAWY INFORMATYKI

Wykład 2. Poprawność algorytmów

Wprowadzenie do złożoności obliczeniowej

Matematyka dyskretna. Andrzej Łachwa, UJ, /14

Algorytmy i struktury danych Matematyka III sem.

Zasady analizy algorytmów

TEORETYCZNE PODSTAWY INFORMATYKI

Zaawansowane algorytmy. Wojciech Horzelski

1. Analiza algorytmów przypomnienie

Technologie Informacyjne

INFORMATYKA W SZKOLE. Podyplomowe Studia Pedagogiczne. Dr inż. Grażyna KRUPIŃSKA. D-10 pokój 227

Matematyczne Podstawy Informatyki

Zaliczenie. Egzamin. lub. Wykład. Zaliczenie. Ćwiczenie. 3 zadania. Projekty. Ocena. Na ocenę

Algorytmy i Struktury Danych

Złożoność obliczeniowa algorytmu ilość zasobów komputera jakiej potrzebuje dany algorytm. Pojęcie to

Sortowanie przez wstawianie

Algorytm poprawny jednoznaczny szczegółowy uniwersalny skończoność efektywność (sprawność) zmiennych liniowy warunkowy iteracyjny

Teoretyczne podstawy informatyki

Porównanie czasów działania algorytmów sortowania przez wstawianie i scalanie

i = n = n 1 + n 2 1 i 2 n 1. n(n + 1)(2n + 1) n (n + 1) =

Wykład z Podstaw Informatyki dla I roku BO. Piotr Mika

MATEMATYKA WYMAGANIA EDUKACYJNE DLA KLASY V

Metody numeryczne Technika obliczeniowa i symulacyjna Sem. 2, EiT, 2014/2015

Wykład 4. Określimy teraz pewną ważną klasę pierścieni.

Teoretyczne podstawy informatyki

Projektowanie i Analiza Algorytmów

Struktury danych i złożoność obliczeniowa Wykład 5. Prof. dr hab. inż. Jan Magott

5. Rozwiązywanie układów równań liniowych

Poprawność semantyczna

Macierze. Rozdział Działania na macierzach

Złożoność Obliczeniowa Algorytmów

Algorytm. a programowanie -

Podstawy programowania. Podstawy C# Przykłady algorytmów

1 Wprowadzenie do algorytmiki

Zadanie 1. Test (6 pkt) Zaznacz znakiem X w odpowiedniej kolumnie P lub F, która odpowiedź jest prawdziwa, a która fałszywa.

Zaawansowane algorytmy i struktury danych

Podstawy Informatyki. Algorytmy i ich poprawność

Wstęp do informatyki. Maszyna RAM. Schemat logiczny komputera. Maszyna RAM. RAM: szczegóły. Realizacja algorytmu przez komputer

Podyplomowe Studium Informatyki

Definicje. Algorytm to:

Krzysztof Gniłka. Twierdzenie o rekurencji uniwersalnej

Algorytmy i złożoność obliczeniowa. Wojciech Horzelski

Programowanie Współbieżne. Algorytmy

Dlaczego nie wystarczają liczby wymierne

ALGORYTMY MATEMATYCZNE Ćwiczenie 1 Na podstawie schematu blokowego pewnego algorytmu (rys 1), napisz listę kroków tego algorytmu:

Algorytm i złożoność obliczeniowa algorytmu

Wprowadzenie do algorytmiki

Rozdział 5. Macierze. a 11 a a 1m a 21 a a 2m... a n1 a n2... a nm

1. LICZBY DZIAŁ Z PODRĘCZNIKA L.P. NaCoBeZu kryteria sukcesu w języku ucznia

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 1. Karol Tarnowski A-1 p.

Algorytm. Algorytmy Marek Pudełko

MODELOWANIE RZECZYWISTOŚCI

Struktura danych. Sposób uporządkowania informacji w komputerze.

3. Macierze i Układy Równań Liniowych

Wyszukiwanie. Wyszukiwanie binarne

Algorytmy w teorii liczb

O ISTOTNYCH OGRANICZENIACH METODY

Wykład z Technologii Informacyjnych. Piotr Mika

PLAN KIERUNKOWY. Liczba godzin: 180

Wymagania edukacyjne z matematyki dla klasy VII

Wymagania edukacyjne z matematyki dla uczniów klasy VII szkoły podstawowej

wstęp do informatyki i programowania część testowa (25 pyt. / 60 min.)

Wykład 4. Informatyka Stosowana. Magdalena Alama-Bućko. 25 marca Magdalena Alama-Bućko Wykład 4 25 marca / 25

Wstęp do programowania

Dydaktyka matematyki (II etap edukacyjny) II rok matematyki Semestr letni 2018/2019 Ćwiczenia nr 8

INFORMATYKA SORTOWANIE DANYCH.

Liczby pierwsze - wstęp

WYMAGANIA NA POSZCZEGÓLNE OCENY Z MATEMATYKI DLA KL. 5

Samodzielnie wykonaj następujące operacje: 13 / 2 = 30 / 5 = 73 / 15 = 15 / 23 = 13 % 2 = 30 % 5 = 73 % 15 = 15 % 23 =

Wykład 2. Informatyka Stosowana. 10 października Informatyka Stosowana Wykład 2 10 października / 42

Algorytmy i struktury danych. Wykład 4

Wykład 2. Informatyka Stosowana. 9 października Informatyka Stosowana Wykład 2 9 października / 42

Wymagania na egzamin poprawkowy z matematyki z zakresu klasy pierwszej TECHNIKUM

Algorytmy i Struktury Danych.

SYLABUS DOTYCZY CYKLU KSZTAŁCENIA Realizacja w roku akademickim 2016/17

Wstęp do metod numerycznych Eliminacja Gaussa Równania macierzowe. P. F. Góra

Wymagania edukacyjne z matematyki dla klasy I gimnazjum wg programu Matematyka z plusem

3. Podaj elementy składowe jakie powinna uwzględniać definicja informatyki.

1. Liczby wymierne. x dla x 0 (wartością bezwzględną liczby nieujemnej jest ta sama liczba)

Program edukacyjny wspierający nauczanie matematyki w klasach III - VII

Matematyka, kl. 5. Konieczne umiejętności

Dydaktyka matematyki (II etap edukacyjny) II rok matematyki Semestr letni 2016/2017 Ćwiczenia nr 8

Język ludzki kod maszynowy

Wykłady z dydaktyki matematyki (klasy IV-VIII) III rok matematyki semestr zimowy 2017/2018 ćwiczenia i wykład nr 6

CHARAKTERYSTYKI CZĘSTOTLIWOŚCIOWE

WYMAGANIA KONIECZNE - OCENA DOPUSZCZAJĄCA:

Struktury danych i złożoność obliczeniowa Wykład 7. Prof. dr hab. inż. Jan Magott

(1) Poprawność Algorytmów

Analiza jakościowa testów na wejściu i testów na wyjściu dla uczniów I naboru

EGZAMIN MATURALNY Z INFORMATYKI

Matematyka Matematyka z pomysłem Klasy 4 6

WYMAGANIA EDUKACYJNE NIEZBĘDNE DO UZYSKANIA ŚRÓDROCZNYCH I ROCZNYCH OCEN KLASYFIKACYJNYCH Z MATEMATYKI W KLASIE V

Wstęp do informatyki- wykład 1 Systemy liczbowe

Systemy liczbowe. 1. Przedstawić w postaci sumy wag poszczególnych cyfr liczbę rzeczywistą R = (10).

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 13. Karol Tarnowski A-1 p.

Ocena poziomu rozwoju podstawowych zdolności arytmetycznych w oparciu o baterie testów wydawnictwa PROMATHEMATICA

Zadanie 1. Potęgi (14 pkt)

Wstęp do programowania INP001213Wcl rok akademicki 2018/19 semestr zimowy. Wykład 13. Karol Tarnowski A-1 p.

Transkrypt:

Algorytmy definicja, cechy, złożoność. Algorytmy napotykamy wszędzie, gdziekolwiek się zwrócimy. Rządzą one wieloma codziennymi czynnościami, jak np. wymiana przedziurawionej dętki, montowanie szafy z gotowych elementów, robienie swetra na drutach, dzielenie liczb, wypełnienie formularza podatkowego. Algorytmika jest to dziedzina zajmująca się tworzeniem algorytmów. Jest to więcej niż dział informatyki. Jest ona ważna dla większości nauk matematyczno przyrodniczych, ekonomii, techniki. Algorytm jest to przepis (sposób postępowania), który ma prowadzić do rozwiązania określonego zadania. Przyjmuje się, że przepis ten jest na tyle precyzyjny, że posługiwanie się nim polega wyłącznie na automatycznym wykonywaniu zawartych w nim poleceń. Za pierwszy niebanalny algorytm uważa się algorytm Euklidesa wyszukiwanie NWD dwóch liczb (400 a 300 rok przed narodzeniem Chrystusa). Nazwa algorytm wywodzi się od nazwiska perskiego matematyka Muhammeda Alchwarizmi, który żył w IX w. i któremu przypisuje się podanie reguł dodawania, odejmowania, mnożenia i dzielenia zwykłych liczb dziesietnych. Nazwisko to, pisane po łacinie, przyjęło postać Algorismus. Stąd do słowa algorytm już tylko mały krok.

Cechy algorytmu: wykonalność polecenia zawarte w algorytmie są wykonywalne, tzn. dostępne, a pisząc algorytm wystarczy się nimi tylko posłużyć. posiadanie wejścia i wyjścia wejście oznacza zwykle pewne dane pobierane przez algorytm w celu ich przetworzenia, wyjście odnosi się do wyniku działania algorytmu. skończoność algorytm powinien zakończyć swoje działanie po skończonej liczbie kroków. określoność - każda operacja w algorytmie powinna być sformułowana tak, aby zapewnić jej jednoznaczną interpretację. Zestawienie wymienionych cech algorytmów

Podstawowe pytania pojawiające się w czasie badań nad obliczeniami: Jak dla określonego zadania znaleźć efektywny algorytm? Jeśli algorytm już znaleziono, to jak porównać go z innymi, które rozwiązują podobne zadania? Jak udowodnić poprawność algorytmu? W jakim sensie można wykazać, że pewne algorytmy są najlepszymi z możliwych? Odpowiedzi na te pytania można uzyskać dzięki dziedzinie zwanej analiza algorytmów, której zasadnicze kierunki dotyczą poprawności i złożoności obliczeniowej. Poprawność dotyczy przede wszystkim pojęć i metod związanych z dowodzeniem poprawności algorytmów, takich m.in. jak: własność stopu algorytm musi osiągnąć swój logiczny koniec i zatrzymać się częściowa poprawność program nigdy nie może zatrzymać się ze złymi wynikami metoda niezmienników niezmienniki pozostają prawdziwe bez względu na to, jak często się je osiąga przejście z jednego punktu kontrolnego do drugiego nie narusza żadnych własności niezmienników. Złożoność obliczeniowa koncentruje się na określeniu zasobów (czas obliczeń i pamięć), jakie są potrzebne do wykonania badanego algorytmu.

Złożoność obliczeniowa Oceny złożoności można dokonać według różnych kryteriów. Często stosowana jest metoda polegająca na badaniu, jak zwiększają się zasoby potrzebne do wykonania algorytmu wraz ze wzrostem rozmiaru danych wejściowych. Rozmiar danych wejściowych nazywać będziemy rozmiarem zadania, albo rozmiarem wejścia, przyjmując, że jest to konkretna liczba charakteryzująca objętość danych wejściowych. Jako przykłady rozmiarów wejścia można wymienić: wymiary macierzy w zadaniu mnożenia macierzy liczbę elementów tablicy wejściowej w algorytmach sortowania liczbę n w obliczeniach n! Złożoność czasowa algorytmu czas potrzebny na wykonanie algorytmu w funkcji rozmiaru zadania. Asymptotyczna złożoność czasowa charakter złożoności czasowej przy dążeniu do wartości granicznej wraz ze wzrostem rozmiaru zadania. Złożoność pamięciowa algorytmu pamięć potrzebna na wykonanie algorytmu w funkcji rozmiaru zadania. Asymptotyczna złożoność pamięciowa charakter złożoności pamięciowej przy dążeniu do wartości granicznej wraz ze wzrostem rozmiaru zadania.

Wprowadzenie asymptotycznej złożoności algorytmu jest szczególnie ważne, gdyż przy jej pomocy można określić rozmiar zadań, które mogą być rozwiązane za pomocą tego algorytmu. Jeśli np. algorytm przetwarza wejście o rozmiarze n w czasie cn 2, gdzie c jest pewną stałą, wówczas mówimy, że złożoność czasowa tego jest rzędu cn 2, co zapisujemy jako O(n 2 ) i czytamy duże o od n kwadrat. Pewna nieujemna funkcja f(n) jest O(g(n)), jeśli istnieje taka stała c, że 0 f(n) cg(n) dla wszystkich n oprócz pewnego, być może pustego, zbioru nieujemnych wartości n. Symbol O(g(n)) jest zaliczany do tzw. notacji asymptotycznych, używanych do opisu asymptotycznego czasu działania algorytmów. Na rysunku a) podano interpretację graficzną notacji O. Wynika z niej, że przy pomocy zapisu f(n) = O(g(n)) podaje się górne ograniczenie funkcji z dokładnością do stałego współczynnika. Bardziej precyzyjne zapis ten oznacza, że istnieją dodatnie stałe c i n o takie, że na prawo od n o wartość f(n) jest zawsze nie większa niż cg(n). Interpretacja graficzna

Na rysunkach b) i c) przedstawiono w podobny sposób notacje Θ i Ω, będące także przykładami notacji asymptotycznych. W odróżnieniu od notacji O, która ogranicza funkcję z góry, notacja Ω (rys b) ogranicza funkcję z dołu. Zapis f(n) = Ω(g(n)) oznacza, że istnieją stałe dodatnie c i n o takie, że na prawo od n o wartość funkcji f(n) jest zawsze nie mniejsza od cg(n). Przedstawiona na rys. c) notacja pozwala szacować funkcję z dołu i z góry. Pisząc zatem f(n) = Θ(g(n)) wskazujemy, że istnieją dodatnie stałe c 1, c 2 i n o takie, że na prawo od n o wartość f(n) jest zawsze nie mniejsza od c 1 g(n) i nie większa od c 2 g(n). Kolejny przykład pokazuje, że efektywne algorytmy mogą w sposób nie mniej istotny jak rozwój sprzętu wpływać na wydajność komputerów (mierzoną np. rozmiarem zadania, które mogą rozwiązywać. W dwóch pierwszych kolumnach tabeli zamieszczono pięć przykładowych algorytmów wraz z ich złożonością czasową, rozumianą tutaj jako liczba jednostek czasu potrzebnych do przetworzenia wejścia o rozmiarze n. Jeśli za jednostkę czasu przyjąć 1 milisekundę, to algorytm A 1 może w ciągu sekundy przetworzyć wejście o rozmiarze 1000, natomiast algorytm A 5 wejście o rozmiarze zaledwie 9. Algorytm A 1 A 2 A 3 A 4 A 5 Złożoność Maksymalny rozmiar zadania czasowa 1 sekunda 1 minuta 1 godzina n 1000 6 10 4 3,6 10 6 n lg n 140 4893 2,0 10 5 n 2 31 244 1897 n 3 10 39 153 2 n 9 15 21

W kolejnych kolumnach zamieszczono maksymalne rozmiary jakie mogą być przetworzone przez rozważane algorytmy, jeśli całkowity czas obliczeń przyjąć odpowiednio 1 sekundę, 1 minutę i 1 godzinę. Zakładamy, że prędkość komputerów rośnie 10-krotnie. W kolejnej tabeli pokazano, jak wzrosną rozmiary zadań, które mogą być przetworzone przez algorytmy A 1 do A 5, w wyniku takiego wzrostu szybkości komputerów. Maksymalny rozmiar zadania Algorytm Złożoność czasowa przed zwiększeniem po zwiększeniu A 1 n s 1 10s 1 A 2 n lg n s 2 ok. 10s 2, dla dużych s 2 A 3 n 2 s 3 3,16s 3 A 4 n 3 s 4 2,15s 4 A 5 2 n s 5 s 5 +3,3 Porównajmy teraz efekty zwiększenia szybkości komputerów z efektami zastosowania bardziej efektywnego algorytmu. Zwiększenie prędkości komputera dla algorytmu A 5 powoduje wzrost rozmiaru zadania tylko o 3, a algorytm A 3 ten rozmiar potraja. Zamiana algorytmu A 4 na A 3 (dla 1 minuty) pozwala rozwiązać zadanie 6-krotnie większe, natomiast zamiana A 4 na A 2 zadanie aż 125-krotnie. Powyższe zadanie pokazuje, że zastosowanie bardziej efektywnego algorytmu może znacznie przewyższyć zyski wynikające ze zwiększenia szybkości komputerów.