Algorytmy, programy Przy opracowywaniu wykładu wykorzystano m.in.:

Slides:



Advertisements
Podobne prezentacje
Przykłady prostych algorytmów opisujących proste czynności życiowe
Advertisements

Instrukcje - wprowadzenie
Rekurencja 1 Podprogram lub strukturę danych nazywamy rekurencyjną, (recursive subprogram, recursive data structure) jeżeli częściowo składa się z samej.
Metody numeryczne część 1. Rozwiązywanie układów równań liniowych.
Algorytmy – c.d. złożoność algorytmów struktury danych
Algorytmy – c.d. struktury danych złożoność algorytmów
Grażyna Mirkowska PJWSTK 15 listopad 2000
Algorytmika w szkole podstawowej
Imperatywne modele obliczeń Copyright, 2000 © Jerzy R. Nawrocki Wprowadzenie do.
PROGRAMOWANIE STRUKTURALNE
ALGORYTM Co to jest algorytm?
ZŁOŻONOŚĆ OBLICZENIOWA
Opracowała: Elżbieta Fedko
Turbo pascal – instrukcje warunkowe, iteracyjne,…
Materiały do zajęć z przedmiotu: Narzędzia i języki programowania Programowanie w języku PASCAL Część 7: Procedury i funkcje © Jan Kaczmarek.
Materiały do zajęć z przedmiotu: Narzędzia i języki programowania Programowanie w języku PASCAL Część 8: Wykorzystanie procedur i funkcji © Jan Kaczmarek.
Programowanie imperatywne i język C Copyright, 2004 © Jerzy R. Nawrocki Wprowadzenie.
ALGORYTMY.
Algorytmy.
Algorytmy i struktury danych
Algorytmika w drugim arkuszu maturalnym. Standardy wymagań I. WIADOMOŚCI I ROZUMIENIE I. WIADOMOŚCI I ROZUMIENIE II.KORZYSTANIE Z INFORMACJI II.KORZYSTANIE.
Kinga Kołodziej, Marta Trębicka
Algorytmy i algorytmika Opracowanie: Teresa Szczygieł
Wstęp do interpretacji algorytmów
CO TO JEST ALGORYTM!.
Algorytmy Marek Pudełko
Algorytmy Marek Pudełko
Algorytmy i algorytmika Opracowanie: Maciej Karanowski
ALGORYTMY Opracowała: ELŻBIETA SARKOWICZ
Schemat Hornera Mgr inż. Michał Szucki.
Budowa algorytmów Algorytm: skończony ciąg operacji wraz z ściśle sprecyzowanym porządkowaniem ich wykonywania, które po realizacji dają rozwiązanie dowolnego.
ALGORYTMY.
Algorytmy.
Agata Łysakowska Klasa III „n”
Algorytmy Opracowanie: Maria Skalska na podstawie „Informatyka 2000” wydawnictwa Czarny Kruk.
ALGORYTMY Martyna K. Luiza K..
Podstawy programowania
Metody przedstawiania algorytmów.
POJĘCIE ALGORYTMU Pojęcie algorytmu Etapy rozwiązywania zadań
Algorytmy.
20 września 2003r. Centrum Kształcenia Ustawicznego im. St. Staszica w Koszalinie Wstęp do algorytmiki Autor: Marek Magiera.
Prowadzący: Dr inż. Jerzy Szczygieł
Budowanie schematu blokowego
GIMNAZJUM nr 1 W BIERUNIU
ALGORYTMY.
Algorytmy.
A. Jędryczkowski – 2007 r.. Algorytmem nazwiemy ścisły przepis postępowania, którego wykonanie gwarantuje otrzymanie danych wynikowych z dostarczonych.
Elżbieta Fiedziukiewicz
Spis treści W świecie algortmów -Budowa algorytmu
ZAPIS BLOKOWY ALGORYTMÓW
Algorytmika.
Wprowadzenie do algorytmiki
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.
Zapis blokowy algorytmów
Algorytmy i struktury danych
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.
Algorytmy – wprowadzenie
Wstęp do interpretacji algorytmów
Algorytmy. Co to jest algorytm? Przepis prowadzący do rozwiązania zadania.
Algorytmy, sposoby ich zapisu.1 Algorytm to uporządkowany opis postępowania przy rozwiązywaniu problemu z uwzględnieniem opisu danych oraz opisu kolejnych.
Liczbami naturalnymi nazywamy liczby 0,1,2,3,..., 127,... Liczby naturalne poznaliśmy już wcześniej; służą one do liczenia przedmiotów. Zbiór liczb.
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,
Efektywność algorytmów
Zrozumieć, przeanalizować i rozwiązać
POJĘCIE ALGORYTMU Wstęp do informatyki Pojęcie algorytmu
Zapis prezentacji:

Algorytmy, programy Przy opracowywaniu wykładu wykorzystano m.in.: http://www.algorytm.org/index.php?option=com_frontpage&Itemid=1 Wstęp do informatyki (materiały Wyższej Szkoły Informatyki) J. Sikorski

Algorytmy Czym różni się komputer od kalkulatora?

Przypomnienie Przepis Składniki Czynności

Algorytmy - geneza Algorytmy w znaczeniu potocznym są listą czynności Przypomnienie Algorytmy - geneza Algorytmy w znaczeniu potocznym są listą czynności przeznaczonych do wykonania przez człowieka (bądź maszynę) na określonych obiektach (składniki przyrządzanej potrawy, współczynniki równania kwadratowego). Rezultatem wykonania tej listy jest wynik (przyrządzona potrawa, rozwiązanie równania). Słowo "algorytm" pochodzi od nazwiska Muhammed ibn Musa Alchwarizmi (أبو عبد الله محمد بن موسى الخوارزمي) matematyka perskiego z IX wieku Al Chuwarizmi, działając w Domu Nauk kalifa Al Mamuna w Bagdadzie, opublikował ważne dzieła matematyczne, wśród nich Hisab al dżabr w'al muqabala – traktat o rozwiązywaniu równań, z którego wzięła nazwę algebra – jeden z głównych działów matematyki. W traktacie tym, poza wprowadzeniem systemu zapisu pozycyjnego, zaczerpniętego od Hindusów, a zwanego arabskim, podał między innymi metody rozwiązywania równań kwadratowych. Metody te odwoływały się do pojęć geometrycznych; utożsamiano wtedy liczby i działania z miarami obiektów geometrycznych. Liczby rzeczywiste to były długości odcinków, dodawanie to było sklejanie odcinków, mnożenie odpowiadało wyliczaniu pola prostokąta o danych bokach, a pierwiastkowanie wyznaczaniu boku kwadratu o zadanym polu. Arabowie, podobnie jak starożytni Grecy, nie znali pojęcia liczby ujemnej, stąd, gdy dziś patrzymy na metody Al Chuwarizmiego, poza oczywistym pięknem, wydają się nam one nieco dziwaczne. Ale cóż – wtedy inaczej po prostu się nie dało.

Algorytmy - geneza U podstaw informatyki leżała arytmetyka. U podstaw algorytmiki logika matematyczna…

(84,36)=(48,36)=(12,36)=(36,12)=(24,12)=(12,12)=(0,12)=(12,0)=12 Algorytmy - geneza Jednym z pierwszych algorytmów był algorytm Euklidesa (znajdowanie największego wspólnego dzielnika). Przykład: (84,36)=(48,36)=(12,36)=(36,12)=(24,12)=(12,12)=(0,12)=(12,0)=12

Algorytmy - geneza Idea Ramona Lull z XIII wieku. Ten franciszkanin, filozof i teolog, podjął próbę stworzenia systemu logicznego, obejmującego wszystkie gałęzie wiedzy. Marzył on o języku, który byłby na tyle precyzyjny i jednoznaczny, by wszelkie zagadnienia w nim rozstrzygać. Początków informatyki należy więc upatrywać w chęci przetwarzania informacji.

Algorytmy - geneza Leibniz w 1680 roku pisał o rozstrzyganiu dysput naukowych za pomocą rachunku - wyobrażał sobie, że filozofowie sprawy sporne zamiast drogą dyskusji rozstrzygać powinni prowadząc obliczenia. Jego główną ideą było stworzenie języka, w którym wszystkie stwierdzenia zredukowane będą do stwierdzeń ściśle prawdziwych lub fałszywych, pozwalając na rozumowanie w oparciu o logikę formalną. Znów jestem na WSB?

Algorytmy - geneza Tan android był fałszywy. W XVIII i XIX w. popularnością cieszyły się marionetki i androidy, cuda mechaniki, piszące, rysujące i grające na pianinie lalki, automaty do gry w szachy i warcaby. Urządzenia te sterowane były skomplikowanymi mechanizmami zegarowymi. Wymienne metalowe płytki, podobnie jak w pianoli wymienne wałki z zapisaną sekwencją naciskania klawiszy, pozwalały na wykonywanie różnych czynności. Płytki te zawierają algorytm ruchów androida. Szczególnie piękne, działające do dzisiejszych czasów, budowali szwajcarscy rzemieślnicy. Stworzony przez nich „Skryba” potrafi pisać (gęsim piórem), „Rysownik” robi portrety kilku postaci, a „Muzyk” gra na instrumencie poruszając przy tym głową i zmieniając wyraz twarzy. Zdarzali się też oszuści, którzy ukrywali ludzi-operatorów, sterujących ruchami „robota”.

Człowiek a logika Niestety logika nie jest naturalnym sposobem rozumowania człowieka… Jest tzw. artefaktem kulturowym, związanym tylko z kulturami, w których rozwinęła się zdolność czytania i pisania. Wniosek Największa trudność w algorytmach polega na znalezieniu formalnego (ścisłego) opisu problemu!

Wracamy do informatyki… Zainteresowania informatyki dotyczą rozwiązywania zadań algorytmicznych, czyli zadań, dla których można znaleźć formalne sposoby postępowania, prowadzące do ich rozwiązania.

Wracamy do informatyki… Niektóre problemy dają się rozwiązać w sposób ścisły. Dla innych nie istnieje, lub trudno jest znaleźć ścisłe rozwiązanie. Dla takich problemów próbuje się znajdować algorytmy heurystyczne. Z takimi rozwiązaniami związane są też zagadnienia tzw. „sztucznej inteligencji”. Heurystyka – w logice umiejętność wykrywania nowych faktów oraz znajdywania związków między faktami, zwłaszcza z wykorzystaniem hipotez. Na podstawie istniejącej wiedzy stawia się hipotezy, których nie trzeba udowadniać. W informatyce metoda znajdowania rozwiązań, dla której nie ma gwarancji znalezienia rozwiązania optymalnego, a często nawet prawidłowego. Rozwiązań tych używa się np. wtedy, gdy pełny algorytm jest z przyczyn technicznych zbyt kosztowny, lub gdy jest nieznany (np. przy przewidywaniu pogody lub przy wykrywaniu niektórych zagrożeń komputerowych, takich jak wirusy lub robaki). Metody używa się też często do znajdowania rozwiązań przybliżonych, na podstawie których później wylicza się ostateczny rezultat pełnym algorytmem. To ostatnie zastosowanie szczególnie dotyczy przypadków, gdy heurystyka jest wykorzystywana do nakierowywania pełnego algorytmu ku optymalnemu rozwiązaniu, aby zmniejszyć czas działania programu w typowym przypadku bez poświęcania jakości rozwiązania (np. algorytm A*).

Zapisujemy algorytmy

Pojęcie zmiennej Zmienna jest symbolem, oznaczającym określoną strukturę danych. W szczególności może to być np. liczba np. X := 100; X := X + 2; Średnikiem oznaczamy tzw. instrukcję, czyli koniec pojedynczej operacji. Znak := w algorytmice oznacza operacje przypisania i nie należy go mylić z matematycznym znakiem = (równość)

Schematy blokowe Algorytmy wygodnie jest zapisywać w postaci diagramów czy schematów blokowych. Takie schematy przedstawiają w formie graficznej każdy krok wykonywanego algorytmu.

Schematy blokowe Schematy blokowe są tzw. metajęzykiem - jest to język ogólny, służy do opisywania algorytmów w taki sposób, by na jego podstawie można było je zaimplementować w każdym języku. Częściami składowymi schematów blokowych są proste figury geometryczne.

Schematy blokowe START STOP Ta figura oznacza początek lub koniec algorytmu. W każdym algorytmie musi się znaleźć dokładnie jedna taka figura z napisem "Start" oznaczająca początek algorytmu oraz dokładnie jedna figura z napisem "Stop" oznaczająca koniec algorytmu.

Proces Jest to figura oznaczająca proces. W jej obrębie umieszczamy wszelkie obliczenia lub podstawienia. To odbywa się więc właściwe przetwarzanie danych.

Warunek Warunki są jednymi z najważniejszych elementów algorytmów Np. Algorytm jedzenia chleba (1) Naszykuj kanapkę. (2) Ugryź kawałek chleba (3) Pogryź (4) Połknij (5) Popij (6) Jeśli masz ochotę na następny kawałek, to przejdź do (2) (7) Gdy nadal jesteś głodny to idź do (1) (8) Posprzątaj – zakończ algorytm. NIE TAK warunek Romb symbolizuje blok decyzyjny. Umieszcza się w nim warunek (np. "x>2"). Z dwóch wierzchołków rombu prowadzą drogi TAK: gdy warunek jest spełniony oraz NIE: gdy warunek nie jest spełniony.

Odczyt / zapis Równoległobok oznacza odczyt lub zapis danych. Oznacza więc tzw. operacje wejścia/wyjścia (np. „Drukuj wynik na ekranie”).

Funkcje, procedury Oznacza proces, który został wcześniej zdefiniowany. Możemy się więc do niego odwołać. W ten sposób oznaczane są np.. Funkcje i procedury.

Łączniki Łącznik, który oznacza punkt do którego prowadzi wiele dróg, które „schodzą” się w tym miejscu.

Złożoność algorytmów

Który algorytm jest „lepszy”? Do danego rozwiązania prowadzi zwykle więcej niż jedna droga. Jak więc oceniać alternatywne sposoby rozwiązania problemu? Podstawowym parametrem algorytmu jest jego złożoność.

Złożoność Złożoność czasowa mówi, ile kroków obliczeniowych trzeba wykonać dla zakończenia algorytmu. Za podstawę określania złożoności przyjmuje się najbardziej operację, której trzeba wykonać najwięcej. Np. mnożenie, dzielenie, pierwiastek… Jest to OPERACJA PODSTAWOWA Złożoność jest to ilość zasobów potrzebnych do działania algorytmu. W zależności od rozważanego zasobu mówimy o złożoności czasowej lub pamięciowej. Ilość potrzebnych zasobów będzie się różnić w zależności od konkretnego przypadku. Złożoność pamięciowa mówi, jaką maksymalnie część danych i wyników pośrednich trzeba w ramach danego algorytmu przechowywać w pamięci operacyjnej.

Złożoność Algorytmy efektywne dają rozwiązania w „rozsądnym” czasie. Co to jest rozsądny czas? Milisekunda, godzina, rok…?

Przykład Na przyjęciu dyplomatycznym bawi się N ambasadorów. Ich uściski rąk są rejestro-wane przez fotografa po kolei. Ile czasu zajmie taka sesja zdjęciowa? Algorytm: Ambasador 1 podaje rękę amba-sadorom 2, 3, 4... aż do N. Ambasador 2 po-daje rękę ambasadorom 3,4,...,N. W ten spo-sób dochodzimy do ambasadorów N-1 i N, którzy jako ostatni wymieniają uścisk. Złożoność czasowa: N(N-1)/2 jednostek (suma ciągu arytmetycznego)

czyli uporządkować rosnąco. Przykład 3 liczby – a, b, c zapisane w trzech komórkach pamięci (zmiennych) x, y, z Zadanie: Przemieścić liczby tak, aby spełnione było (x) <= (y) <= (z) czyli uporządkować rosnąco. Np. (1, 5, 2); (2, 6, 1) itp.

Przykład Jakie są więc wszystkie możliwości uporządkowania? Aby rozwiązać zadanie będą nam potrzebne operacje testu oraz zamiany

Przykład Przedstawmy sekwencje testów, które pozwolą stwierdzić, z jakim przypadkiem mamy do czynienia?

Przykład Teraz, w zależności od konkretnego przypadku, wybieramy odpowiednią sekwencję zamian.

Przykład Ile wykonamy poszczególnych operacji? Najlepiej Najgorzej Testy Zamiany Najlepiej Najgorzej

Przykład Czas wykonania tego zadania zależy więc od ułożenia danych wejściowych. Możemy określić przypadki najgorszego ułożenia i najlepszego ułożenia. Mówi się o pesymistycznej i optymistycznej złożoności. Dla algorytmów najczęściej przyjmuje się tzw. złożoność średnią.

Złożoność Problemy do których rozwiązania potrzebna jest podobna ilość zasobów łączymy w klasy złożoności.

Złożoność Bierzemy pod uwagę asymptotyczne tempo wzrostu, czyli to jak zachowuje się funkcja określająca złożoność dla odpowiednio dużych, granicznych rozmiarów danych wejściowych, ignorując zachowanie dla małych danych. Asymptota funkcja do której coraz bardziej zbliża się dana krzywa, gdy się wzdłuż niej przemieszczamy.

Złożoność W algorytmice najczęściej pojawia się tzw. O-notacja. Mówimy, że badana funkcja f jest co najwyżej rzędu g -> f(x) = O(g) IDEAŁ TO ZŁOŻONOŚĆ LINIOWA                  – funkcja f(x) jest ograniczona                       – funkcja f(x) jest ograniczona przez funkcję logarytmiczną                  – funkcja f(x) jest ograniczona przez funkcję liniową                                           – funkcja f(x) jest ograniczona przez funkcję potęgową lub wielomian                   – funkcja f(x) jest ograniczona przez funkcję wykładniczą                   – funkcja f(x) jest ograniczona przez silnię

Trudne zadania Dla pierwszoklasisty: 7 * 8 = ??? Dla faceta: Jak umówić się z Dodą? Dla studenta: wszystko jest łatwe…

Trudne zadania Czy istnieją zadania trudne dla komputerów? Wiele prostych w sformułowaniu zagadnień należy do zagadnień trudnych, np. „problem wędrującego komiwojażera”: jak znaleźć najkrótszą drogę, łączącą N miast odwiedzając każde tylko jeden raz.

Baaardzo trudne zadania - NP Problem P to problem decyzyjny, dla którego rozwiązanie można znaleźć w czasie wielomianowym. Problem NP to problem decyzyjny, dla którego rozwiązanie można zweryfikować w czasie wielomianowym. (ang. deterministic polynomial - deterministycznie wielomianowy) NP. (niedeterministycznie wielomianowy, ang. nondeterministic polynomial)

Baaardzo trudne zadania - NP Przykłady problemów NP. – układanki 2D (ang. deterministic polynomial - deterministycznie wielomianowy) NP. (niedeterministycznie wielomianowy, ang. nondeterministic polynomial)

Baaardzo trudne zadania - NP Przykłady problemów NP. – problem komiwojażera (ang. deterministic polynomial - deterministycznie wielomianowy) NP. (niedeterministycznie wielomianowy, ang. nondeterministic polynomial)

Baaardzo trudne zadania - NP Przykłady problemów NP. – droga Hamiltona (ang. deterministic polynomial - deterministycznie wielomianowy) NP. (niedeterministycznie wielomianowy, ang. nondeterministic polynomial)

Baaardzo trudne zadania - NP Przykłady problemów NP. – przydział ograniczonego miejsca (ang. deterministic polynomial - deterministycznie wielomianowy) NP. (niedeterministycznie wielomianowy, ang. nondeterministic polynomial)

Baaardzo trudne zadania - NP Pytanie, czy klasa P jest tym samym, co NP jest prawdopodobnie najważniejszym otwartym problemem w całej teorii informatyki. Dla pierwszej osoby, która rozwiąże ten problem przewidziano nagrodę w wysokości miliona dolarów (ang. deterministic polynomial - deterministycznie wielomianowy) NP. (niedeterministycznie wielomianowy, ang. nondeterministic polynomial)

Struktury danych Algorytmy wymagają danych początkowych i tworzą nowe dane.

Co to są dane? Znamy już wstępnie pojęcie tzw. zmiennej… Ogólnie dane są zdefiniowane jako to wszystko co może być przetwarzane umysłowo lub komputerowo. Są to więc informacje, które posiadają określoną strukturę.

Struktury danych Jedna z gałęzi informatyki zajmuje się strukturami danych, czyli organizacją danych różnych typów w logicznie powiązane ze sobą struktury.

Sposoby reprezentacji danych Przykład drzewa Przykład kolejki Dane numeryczne: całkowite, „rzeczywiste” posiadają określony zakres i dokładność Tablice Listy Stosy Kolejki Drzewa Grafy Przykłady list Przykład grafu Przykłady tablic Przykład stosu

Przykłady algorytmów…

Wyszukiwanie najmniejszego elementu w zbiorze

Obliczanie wartości silnia (n!)

Sortowanie bąbelkowe

Pseudokod Czasem algorytmy zapisuje się w języku symbolicznym służącym jedynie do zapisu algorytmów, tzw. pseudokodzie. FOR X = 1 to 10 FOR Y = 1 to 10 IF gameBoard[X][Y] = 0 Do nothing ELSE CALL figureFound(X, Y) increment counter END IF END FOR CASE Title OF Mr : Print "Mister" Mrs : Print "Missus" Miss : Print "Miss" Ms : Print "Mizz" Dr : Print "Doctor" ENDCASEv IF HoursWorked > NormalMax THEN Display overtime message ELSE Display regular time message ENDIF

Podsumowanie, wnioski ?

Stabilność numeryczna Określa ona wrażliwość wyniku końcowego na błędy zaokrągleń w trakcie obliczeń oraz na dokładność danych początkowych. Przykłady: Komputer wykonuje operacje liczbowe ze skończoną precyzją. Może się okazać, że wynik działania 10 000 000 000 + 1 to dalej 10 000 000 000. Podobnie, realizacja dzielenia jako mnożenie przez odwrotność jest mało stabilna numerycznie dla argumentów bliskich zeru.

Problem STOPU Problemem stopu nazywamy sytuację, gdy dla danego algorytmu należy stwierdzić, czy program realizujący dany algorytm zatrzyma się. Pytanie może odnosić się albo do konkretnych danych wejściowych, albo do wszystkich możliwych danych. Jeśli program zatrzymuje się dla wszystkich danych, to mówimy, że ma własność stopu. Problem stopu jest często bardzo trudny do rozstrzygnięcia dla niektórych algorytmów.

Świat nie jest czarno-biały… W latach 60-tych naszego stulecia logikę rozszerzono na pojęcia logiki rozmytej (fuzzy logic) oraz zbiorów przybliżonyc. W obu przypadkach chodzi o opis wiedzy niepewnej, nieprecyzyjnej. W klasycznej teorii zbiorów obiekty należą do zbioru lub nie. W teorii zbiorów rozmytych możliwa jest częściowa przynależność do zbioru, np. zbiór osób określanych jako „wysokie” nie jest precyzyjnie określony i można o kimś powiedzieć, że jest „w pewnym stopniu wysoki”. Wnioski wyciągane w oparciu o logikę rozmytą nie mają takiego stopnia pewności jak wnioski oparte o logikę klasyczną, możliwe jest jednakże rozumowanie w warunkach niepewnej czy nieprecyzyjnie określonej informacji. W oparciu o logikę rozmytą działa coraz więcej urządzeń technicznych. Sposób „rozumowania” tych urządzeń i sposób komunikacji z nimi jest z punktu widzenia człowieka bardziej naturalny, gdyż logika rozmyta oprócz stwierdzeń „tak” i „nie” pozwala na używanie takich określeń, jak „być może”, „chyba tak”, „prawie na pewno”. Teoria zbiorów przybliżonych stworzona została przez profesora Zdzisława Pawlaka.