Efektywność algorytmów

Slides:



Advertisements
Podobne prezentacje
Rekurencja 1 Podprogram lub strukturę danych nazywamy rekurencyjną, (recursive subprogram, recursive data structure) jeżeli częściowo składa się z samej.
Advertisements

METODY ANALIZY PROGRAMÓW
Algorytmika w szkole podstawowej
Techniki konstrukcji algorytmów
ALGORYTM Co to jest algorytm?
Badania operacyjne. Wykład 2
Wykład no 11.
Teoretyczne podstawy informatyki
Złożoność obliczeniowa
Liniowość - kryterium Kryterium Znane jako zasada superpozycji
Metoda węzłowa w SPICE.
Sztuczna Inteligencja 2.1 Metody szukania na ślepo
ZŁOŻONOŚĆ OBLICZENIOWA
Opracowała: Elżbieta Fedko
Praktyka Programowania Semestr I: –wykład - 1 godz. –laboratorium - 1 godz. –projekt - 1 godz.
ALGORYTMY.
Algorytmy.
Analiza kosztu zamortyzowanego
Algorytmy i struktury danych
Matura z informatyki Arkusz I.
Algorytmika w drugim arkuszu maturalnym. Standardy wymagań I. WIADOMOŚCI I ROZUMIENIE I. WIADOMOŚCI I ROZUMIENIE II.KORZYSTANIE Z INFORMACJI II.KORZYSTANIE.
JAKO CZĘŚĆ NASZEGO ŻYCIA
Algorytmy i algorytmika Opracowanie: Teresa Szczygieł
Wstęp do interpretacji algorytmów
Algorytmy Marek Pudełko
Algorytmy i algorytmika Opracowanie: Maciej Karanowski
ALGORYTMY Opracowała: ELŻBIETA SARKOWICZ
ALGORYTMY.
Algorytmy.
ALGORYTMY Martyna K. Luiza K..
POJĘCIE ALGORYTMU Pojęcie algorytmu Etapy rozwiązywania zadań
Algorytmy.
o granicy funkcji przy obliczaniu granic Twierdzenia
PORZĄDEK WŚRÓD INFORMACJI KLUCZEM DO SZYBKIEGO WYSZUKIWANIA
Prowadzący: Dr inż. Jerzy Szczygieł
Ocena przydatności algorytmu – czas działania (złożoność czasowa)
Równania rekurencyjne
ALGORYTMY.
Programowanie strukturalne i obiektowe
Algorytmy.
A. Jędryczkowski – 2007 r.. Algorytmem nazwiemy ścisły przepis postępowania, którego wykonanie gwarantuje otrzymanie danych wynikowych z dostarczonych.
ALGORYTMY I ALGORYTMIKA
Spis treści W świecie algortmów -Budowa algorytmu
MS Excel - wspomaganie decyzji
Algorytmika.
Wprowadzenie do programowania
ALGORYTMY Co to jest algorytm ? Cechy algorytmu Budowa algorytmów
Treści multimedialne - kodowanie, przetwarzanie, prezentacja Odtwarzanie treści multimedialnych Andrzej Majkowski informatyka +
Obliczalność czyli co da się policzyć i jak Model obliczeń maszyna licznikowa dr Kamila Barylska.
Proces tworzenia oprogramowania Proces tworzenia oprogramowania jest zbiorem czynności i związanych z nimi wyników, które prowadzą do powstania produktu.
Algorytmy- Wprowadzenie do programowania
opracowała: Anna Mikuć
Algorytm to przepis prowadzący do osiągnięcia celu lub rozwiązania problemu, opisujący każdy krok. Algorytmika to dziedzina zajmująca się algorytmami (własnościami,
Algorytmy.
Złożoność obliczeniowa algorytmów
Algorytmy – wprowadzenie
XVI Liceum Profilowane CXIII Liceum Ogólnokształcące Technikum nr 11 Zespół Szkół im. Piotra Wysockiego Warszawa ul. Odrowąża.
Wstęp do interpretacji algorytmów
Wstęp do programowania Wykład 4
INFORMATYKA SORTOWANIE DANYCH
Wstęp do programowania Wykład 1
Algorytmy, sposoby ich zapisu.1 Algorytm to uporządkowany opis postępowania przy rozwiązywaniu problemu z uwzględnieniem opisu danych oraz opisu kolejnych.
Programowanie strukturalne i obiektowe Klasa I. Podstawowe pojęcia dotyczące programowania 1. Problem 2. Algorytm 3. Komputer 4. Program komputerowy 5.
Algorytmy i algorytmika Opracowanie: Teresa Szczygieł
Algorytm to przepis prowadzący do osiągnięcia celu lub rozwiązania problemu, opisujący każdy krok. Algorytmika to dziedzina zajmująca się algorytmami (własnościami,
Algorytmy i Struktury Danych Wprowadzenie
ALGORYTMY I STRUKTURY DANYCH
[Nazwa projektu] Analiza zamknięcia
ALGORYTMY I STRUKTURY DANYCH
POJĘCIE ALGORYTMU Wstęp do informatyki Pojęcie algorytmu
Zapis prezentacji:

Efektywność algorytmów

Kontakt z wykładowcą Paweł Rzechonek Mail: pawel.rzechonek@gmail.com Zadania domowe: themis.lo14.wroc.pl/

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 ℕℝ+ 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 Ǝ n0 n ≥ n0 : f(n) ≤ cg(n) } Ograniczenie dolne wyznaczone przez funkcję g(n): Ω (g(n)) = { f(n) : Ǝ c>0 Ǝ n0 n ≥ n0 : 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):

Zadanie 1 Zaimplementuj dwie funkcje liczące n-tą liczbę Fibonacciego: jedna rekurencyjna a druga iteracyjna. Zmierz czas działania obu tych funkcji dla różnych wartości n.