Efektywność algorytmów

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

Technologie Informacyjne

Podstawy Informatyki. Sprawność algorytmów

Wprowadzenie do złożoności obliczeniowej

Zasady analizy algorytmów

TEORETYCZNE PODSTAWY INFORMATYKI

Projektowanie i Analiza Algorytmów

TEORETYCZNE PODSTAWY INFORMATYKI

Matematyczne Podstawy Informatyki

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

Zaawansowane algorytmy i struktury danych

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

Grzegorz Mazur. Zak lad Metod Obliczeniowych Chemii UJ. 14 marca 2007

Teoretyczne podstawy informatyki

Złożoność algorytmów. Wstęp do Informatyki

Podstawy Programowania Algorytmy i programowanie

Definicje. Algorytm to:

Algorytmy i struktury danych Matematyka III sem.

Algorytm. Krótka historia algorytmów

Algorytmy, reprezentacja algorytmów.

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

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

INFORMATYKA SORTOWANIE DANYCH.

SCENARIUSZ LEKCJI. Streszczenie. Czas realizacji. Podstawa programowa

Złożoność Obliczeniowa Algorytmów

Metodyki i techniki programowania

Algorytmy i Struktury Danych.

Algorytmy i Struktury Danych

O ALGORYTMACH I MASZYNACH TURINGA

Matematyka dyskretna. Andrzej Łachwa, UJ, /14

Programowanie proceduralne INP001210WL rok akademicki 2017/18 semestr letni. Wykład 3. Karol Tarnowski A-1 p.

Programowanie komputerów

Efektywna metoda sortowania sortowanie przez scalanie

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

Rozkład materiału do nauczania informatyki w liceum ogólnokształcącym Wersja I

Metodyki i techniki programowania

Rozkład materiału do nauczania informatyki w liceum ogólnokształcącym Wersja II

O ISTOTNYCH OGRANICZENIACH METODY

Algorytmy i schematy blokowe

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

Sortowanie - wybrane algorytmy

Algorytm. a programowanie -

Klasa 2 INFORMATYKA. dla szkół ponadgimnazjalnych zakres rozszerzony. Założone osiągnięcia ucznia wymagania edukacyjne na. poszczególne oceny

Teraz bajty. Informatyka dla szkół ponadpodstawowych. Zakres rozszerzony. Część 1.

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

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

Metody numeryczne w przykładach

Podyplomowe Studium Informatyki

Sortowanie przez wstawianie

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

WYŻSZA SZKOŁA INFORMATYKI STOSOWANEJ I ZARZĄDZANIA

Wykład 2. Poprawność algorytmów

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

M T E O T D O ZI Z E E A LG L O G R O Y R TM

KARTA MODUŁU KSZTAŁCENIA

Algorytmy i struktury danych

Jeśli czas działania algorytmu zależy nie tylko od rozmiaru danych wejściowych i przyjmuje różne wartości dla różnych danych o tym samym rozmiarze,

Złożoność obliczeniowa zadania, zestaw 2

1 Wprowadzenie do algorytmiki

Podstawy Programowania. Złożoność obliczeniowa

Wstęp do programowania

Algorytm - pojęcie algorytmu, sposób zapisu, poziom szczegółowości, czynności proste i strukturalne. Pojęcie procedury i funkcji.

Algorytmy komputerowe. dr inż. Jarosław Forenc

Teoria obliczeń i złożoność obliczeniowa

Algorytm. Krótka historia algorytmów

Elżbieta Kula - wprowadzenie do Turbo Pascala i algorytmiki

Algorytm. Algorytmy Marek Pudełko

KONSPEKT ZAJĘĆ KOŁA INFORMATYCZNEGO LUB MATEMATYCZNEGO W KLASIE III GIMNAZJUM LUB I LICEUM ( 2 GODZ.)

Język ludzki kod maszynowy

Sylabus modułu: Matematyczne podstawy informatyki (kod modułu:03-mo2n-12-mpln)

9.9 Algorytmy przeglądu

koordynator modułu dr hab. Michał Baczyński rok akademicki 2012/2013

Algorytm. Słowo algorytm pochodzi od perskiego matematyka Mohammed ibn Musa al-kowarizimi (Algorismus - łacina) z IX w. ne.

Wymagania edukacyjne niezbędne do uzyskania poszczególnych śródrocznych ocen klasyfikacyjnych z Informatyki. Kl. III (oddział gimnazjalny)

Zadanie 1. Potęgi (14 pkt)

zna metody matematyczne w zakresie niezbędnym do formalnego i ilościowego opisu, zrozumienia i modelowania problemów z różnych

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

Teoretyczne podstawy informatyki

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

Heurystyki. Strategie poszukiwań

Informacja w perspektywie obliczeniowej. Informacje, liczby i obliczenia

Analiza i projektowanie oprogramowania. Analiza i projektowanie oprogramowania 1/32

Modele Obliczeń. Wykład 1 - Wprowadzenie. Marcin Szczuka. Instytut Matematyki, Uniwersytet Warszawski

Sortowanie przez wstawianie Insertion Sort

Algorytmika i pseudoprogramowanie

Algorytmy komputerowe. dr inŝ. Jarosław Forenc

Rekurencje. Jeśli algorytm zawiera wywołanie samego siebie, jego czas działania moŝe być określony rekurencją. Przykład: sortowanie przez scalanie:

PROLOG WSTĘP DO INFORMATYKI. Akademia Górniczo-Hutnicza. Wydział Elektrotechniki, Automatyki, Informatyki i Inżynierii Biomedycznej.

Obliczenia inspirowane Naturą

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

Twój wynik: 4 punktów na 6 możliwych do uzyskania (66,67 %).

Program nauczania informatyki w gimnazjum Informatyka dla Ciebie. Modyfikacja programu klasy w cyklu 2 godzinnym

Technologia informacyjna Algorytm Janusz Uriasz

ANALIZA ALGORYTMÓW. Analiza algorytmów polega między innymi na odpowiedzi na pytania:

Teoretyczne podstawy informatyki

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

Informatyka 1. Złożoność obliczeniowa

POLITECHNIKA OPOLSKA

Wykład 1 Wprowadzenie do algorytmów. Zawartość wykładu 1. Wstęp do algorytmów i struktur danych 2. Algorytmy z rozgałęzieniami.

ALGORYTMY I STRUKTURY DANYCH

Transkrypt:

Efektywność algorytmów

Algorytmika Algorytmika to dział informatyki zajmujący się poszukiwaniem, konstruowaniem i badaniem własności algorytmów, w kontekście ich przydatności do rozwiązywania problemów obliczeniowych za pomocą komputerów. Nazwa ta została wprowadzona przez izraelskiego informatyka Davida Harela w tytule jego książki o algorytmach: Algorithmics. The Spirit of Computing. Zadania algorytmiki: projektowanie algorytmów i szacowanie ich złożoności obliczeniowej; tworzenie ogólnych metod rozwiązujących pewne grupy zadań obliczeniowych; badanie właściwości pewnych klas problemów obliczeniowych; projektowanie struktur danych i operacji na tych strukturach; analizowanie stanu po modyfikacjach struktur danych; badanie złożoności obliczeniowej operacji na strukturach danych.

Od zadania do rozwiązania Analiza zadania Zaprojektowanie algorytmu Szacowanie złożoności Optymalizacja Implementacja i kompilacja Przygotowanie danych Uruchomienie i odczytanie wyników

Zadanie obliczeniowe Problem obliczeniowy to zadanie, które może być rozwiązane za pomocą komputera lub innej maszyny liczącej. Specyfikacja zadania: zbiór danych wyjściowych warunki jakie ma spełniać wynik zasoby komputerowe do dyspozycji obliczeń (czas, pamięć, komunikacja, itp) Problem obliczeniowy to funkcja, która przekształca zbiór danych wejściowych na zbiór danych wyjściowych.

Algorytm Algorytm to sposób na rozwiązanie zadania obliczeniowego (precyzyjnie zdefiniowany ciąg czynności, koniecznych do przeprowadzenia systemu z określonego stanu początkowego do zadanego stanu końcowego). Słowo "algorytm" pochodzi od nazwy "Algoritmi" zlatynizowanej wersji nazwiska Abu Abdullaha Muhammada ibn Musy al-chuwarizmiego, matematyka perskiego z IX wieku. Może istnieć wiele algorytmów rozwiązujących jeden problem obliczeniowy. Zapis algorytmu: wskazówka lista kroków schemat blokowy pesudokod

Złożoność obliczeniowa algorytmu Złożoność obliczeniowa algorytmu to jego zapotrzebowanie na pamięć w zapotrzebowanie na zasoby komputerowe (czas, pamięć, komunikacja, itp) potrzebne realizacji obliczeń. Złożoność obliczeniową algorytmu szacujemy od góry: ile zasobów z najgorszym przypadku wystarczy do przeprowadzenia obliczeń? Złożoność obliczeniową problemu szacujemy z dołu: ile zasobów zużyje dowolny algorytm rozwiązujący określony problem w najgorszym przypadku? Złożoność obliczeniowa jest funkcją rozmiaru danych wejściowych.

Złożoność obliczeniowa algorytmu Złożoność pamięciowa to zapotrzebowanie algorytmu na pamięć, którą liczymy w komórkach: dane wejściowe dostarczone do algorytmu nie wchodzą do kosztów pamięciowych; wywołania funkcji generują koszty pamięciowe w szczególności wywołania rekurencyjne. Złożoność czasowa to zapotrzebowanie algorytmu na czas, którą liczymy za pomocą operacji dominujących: operacja dominująca to proste obliczenie, działające w czasie stałym, które ma najistotniejszy wpływ na liczbę kroków algorytmu.

Złożoność obliczeniowa algorytmu Złożoność obliczeniowa zwykle nie zależy wyłącznie od rozmiaru danych, ale może się znacznie różnić dla danych wejściowych o identycznym rozmiarze. Często stosowanymi kryteriami są: złożoność pesymistyczna rozpatrywanie przypadków najgorszych; złożoność oczekiwana zastosowanie określonego sposobu uśrednienia wszystkich możliwych przypadków; złożoność optymistyczna rozpatrywanie przypadków najprostszych (rzadko stosowane kryterium).

Asymptotyka Złożoność obliczeniowa jest zwykle bardzo skomplikowaną funkcją, dlatego szacuje się ją z dokładnością do pewnego stałego czynnika (czasem z dokładnością do nieistotnego składnika) za pomocą operatorów asymptotycznych. Założenia: rozpatrujemy funkcje N R + funkcja graniczna to g(n) Notacja dużego O, Ω i Θ została zaproponowana po raz pierwszy w roku 1894 przez niemieckiego matematyka Paula Bachmanna. W późniejszych latach spopularyzował ją w swoich pracach Edmund Landau, niemiecki matematyk, stąd czasem nazywana jest notacją Landaua.

Asymptotyka Ograniczenie górne wyznaczone przez funkcję g(n): O(g(n)) = { f(n) : Ǝ c>0 Ǝ n 0 n n 0 : f(n) c g(n) } Ograniczenie dolne wyznaczone przez funkcję g(n): Ω (g(n)) = { f(n) : Ǝ c>0 Ǝ n 0 n n 0 : c g(n) f(n) } Ograniczenie dokładne wyznaczone przez funkcję g(n): ϴ (g(n)) = O(g(n)) Ω (g(n)) Asymptotyczna równość funkcji f(n) ~ g(n):