Wykład 4 O algorytmach.

Slides:



Advertisements
Podobne prezentacje
Sortowanie przez scalanie
Advertisements

Instrukcje - wprowadzenie
Wprowadzenie do informatyki Wykład 6
POWIAT MYŚLENICKI Tytuł Projektu: Poprawa płynności ruchu w centrum Myślenic poprzez przebudowę skrzyżowań dróg powiatowych K 1935 i K 1967na rondo.
Grażyna Mirkowska PJWSTK 15 listopad 2000
Algorytmy – różne przykłady
Domy Na Wodzie - metoda na wlasne M
PROGRAMOWANIE STRUKTURALNE
PROGRAMOWANIE STRUKTURALNE
ALGORYTM Co to jest algorytm?
PODSUMOWANIE.
Materiały pochodzą z Platformy Edukacyjnej Portalu
Materiały pochodzą z Platformy Edukacyjnej Portalu
Materiały pochodzą z Platformy Edukacyjnej Portalu Wszelkie treści i zasoby edukacyjne publikowane na łamach Portalu
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.
Algorytmika w drugim arkuszu maturalnym. Standardy wymagań I. WIADOMOŚCI I ROZUMIENIE I. WIADOMOŚCI I ROZUMIENIE II.KORZYSTANIE Z INFORMACJI II.KORZYSTANIE.
Algorytmy i algorytmika Opracowanie: Teresa Szczygieł
Wstęp do interpretacji algorytmów
Dr Anna Kwiatkowska Instytut Informatyki
Algorytmy Marek Pudełko
Algorytmy Marek Pudełko
Algorytmy i algorytmika Opracowanie: Maciej Karanowski
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.
Jak wypadliśmy na maturze z matematyki w 2010 roku?
Agata Łysakowska Klasa III „n”
Podstawy programowania
POJĘCIE ALGORYTMU Pojęcie algorytmu Etapy rozwiązywania zadań
Algorytmy.
Programowanie strukturalne i obiektowe
20 września 2003r. Centrum Kształcenia Ustawicznego im. St. Staszica w Koszalinie Wstęp do algorytmiki Autor: Marek Magiera.
© A. Jędryczkowski – 2006 r. © A. Jędryczkowski – 2006 r.
Wyrażenia algebraiczne
Algorytmy i struktury danych
ALGORYTMY.
KOLEKTOR ZASOBNIK 2 ZASOBNIK 1 POMPA P2 POMPA P1 30°C Zasada działanie instalacji solarnej.
EGZAMIN GIMNAZJALNY W SUWAŁKACH 2009 Liczba uczniów przystępująca do egzaminu gimnazjalnego w 2009r. Lp.GimnazjumLiczba uczniów 1Gimnazjum Nr 1 w Zespole.
Elżbieta Fiedziukiewicz
Na wysokościach myślenia jest sfera,
Ogólna struktura programu w TP
EcoCondens Kompakt BBK 7-22 E.
User experience studio Użyteczna biblioteka Teraźniejszość i przyszłość informacji naukowej.
ZAPIS BLOKOWY ALGORYTMÓW
Algorytmy.
Algorytmika.
szeregowe, z rozgałęzieniami, zawierające pętle
Obliczalność czyli co da się policzyć i jak Model obliczeń sieci liczące dr Kamila Barylska.
Treści multimedialne - kodowanie, przetwarzanie, prezentacja Odtwarzanie treści multimedialnych Andrzej Majkowski informatyka +
Testogranie TESTOGRANIE Bogdana Berezy.
KINDERMAT 2014 „Matematyka to uniwersalny język, za pomocą którego opisany jest świat”
Jak Jaś parował skarpetki Andrzej Majkowski 1 informatyka +
Zapis blokowy algorytmów
Wyznaczniki, równania liniowe, przestrzenie liniowe Algebra 1
Współrzędnościowe maszyny pomiarowe
Algorytmy- Wprowadzenie do programowania
Elementy geometryczne i relacje
Strategia pomiaru.
opracowała: Anna Mikuć
Algorytmy.
Wstęp do interpretacji algorytmów
Algorytmy. Co to jest algorytm? Przepis prowadzący do rozwiązania zadania.
Co to jest algorytm? Uporządkowany i uściślony sposób rozwiązania danego problemu, zawierzający szczegółowy opis wykonywanych czynności w skończonej.
Algorytmy, sposoby ich zapisu.1 Algorytm to uporządkowany opis postępowania przy rozwiązywaniu problemu z uwzględnieniem opisu danych oraz opisu kolejnych.
Algorytmy i algorytmika Opracowanie: Teresa Szczygieł
Zrozumieć, przeanalizować i rozwiązać
POJĘCIE ALGORYTMU Wstęp do informatyki Pojęcie algorytmu
Zapis prezentacji:

Wykład 4 O algorytmach

Część I. ALGORYTMY

Uczyć algorytmów? TAK! JAK? nawet wtedy gdy nie zamierzamy uczyć programowania (przecież w arkuszach kalkulacyjnych, bazach danych a nawet w edytorze tekstu wykonywanie kolejnych czynności jest właśnie programowaniem). JAK? jako coś normalnego i zwyczajnego; algorytmy wielokrotnie wykonujemy przez całe życie; nawet nie zdajemy sobie sprawy z tego, że stosujemy algorytmy.

Jak uczyć? Przykłady Pojęcie Cechy Implementacja Analiza

Przykłady przykładów... Algorytmy działań pisemnych Naprawa przedziurawionej dętki Montaż szafy z gotowych elementów Robienie swetra na drutach Zaprogramowanie wideo lub DVD Wprowadzenie numeru telefonu do komórki

Algorytm to opis czynności prowadzących do określonego celu. Pojęcie algorytmu Algorytm to opis czynności prowadzących do określonego celu.

Wyjaśnienie pojęcia Algorytm zadaje czynności, które składają się na proces. Pieczenie ciasta z rodzynkami: to proces wykonywany ze składników przez piekarza za pomocą pieca (i innych narzędzi: trzepaczka, talerz etc.) według przepisu. Składniki = dane wejściowe, Gotowe ciasto = dane wyjściowe, Piec, przybory, piekarz = sprzęt (hardware), Przepis = algorytm.

Cechy algorytmów Problem algorytmiczny precyzyjne określenie relacji między danymi wejściowymi i wyjściowymi Opis właściwej procedury obliczeniowej uwzględnienie wszystkich możliwych przypadków i reakcja na nie Poziom szczegółowości repertuar czynności, które „są znane” – czyli nie muszą być opisane algorytmem

Poprawność algorytmów Dla każdych danych spełniających warunki określone przez problem algorytmiczny algorytm zatrzymuje się, dane wyjściowe spełniają warunki problemu (algorytm daje dobry wynik).

Przykłady algorytmów (1) Wydawanie reszty w sklepie Mycie zębów Ubieranie się mężczyzny w garnitur Wiązanie krawata Wiązanie sznurowadła w kokardkę Otwieranie, za pomocą kluczy, drzwi mających dwa zamki Wieszanie zasłon okiennych w pokoju Pisanie liter (według zasad kaligrafii) Temperowanie ołówka Rysowanie okręgu o danym promieniu za pomocą cyrkla Jedzenie orzecha włoskiego Obieranie pomarańczy Instalowanie gry komputerowej Wypełnianie deklaracji podatkowej PIT Wykonywanie badań okresowych

Przykłady algorytmów (2) Binarna reprezentacja liczby naturalnej Schemat Hornera Wyszukiwanie w ciągu elementu najmniejszego Przeszukiwanie struktury danych (plik, tablica, kolejka, drzewa, stos) Algorytm Euklidesa Wyznaczanie wartości przybliżonej pierwiastka kwadratowego Ciąg Fibonacciego Interpolacja funkcji Obliczanie pierwiastków równania kwadratowego Generowania kwadratów kolejnych liczb ale bez mnożenia Przeszukiwanie listy dwukierunkowej Sortowanie Obliczanie wyznacznika macierzy Wyznaczanie miejsc zerowych funkcji, Sito Erastostenesa Znajdowanie wartości całki oznaczonej lista z książki „Elementy informatyki – podręcznik metodyczny dla nauczyciela” pod redakcją M.Sysły

Zapisywanie algorytmów Algorytmy trzeba zapisywać Metody zapisu algorytmów opis słowny schemat blokowy pseudokod

Zapisywanie algorytmów (1) Opis słowny w języku potocznym Dobry sposób na początek lub w początkowej fazie projektowania Mało precyzyjny Trudny do implementacji

Opis słowny Opis kolejnych czynności w punktach (numerowanych!) Tryb rozkazujący Przykład: Pobierz dwie liczby. Jeżeli są równe to wypisz jedną z nich i koniec. Większą zamień na różnicę większej i mniejszej. Wróć do punktu 2.

Zapisywanie algorytmów (2) Schematy blokowe Bardzo poglądowy („Obraz wart 1000 słów”) Dobry do prostych algorytmów Łatwy w nauczeniu się i stosowaniu Trudny do implementacji

Schematy blokowe Pudełka połączone liniami czytaj: a Operacja (prostokąt) – jedno wejście i jedno wyjście Warunek (romb) – jedno wejście, dwa wyjścia Start (owal) – jedno wyjście bez wejścia (tylko jedno w algorytmie) Stop (owal) – jedno wejście bez wyjścia Input, output (równoległobok) – jedno wejście i jedno wyjście czytaj: a

Schematy blokowe

Zapisywanie algorytmów (3) Pseudokod Odpowiednio precyzyjny Bliski implementacji Trudny, bo trzeba się go nauczyć

Pseudokod Przykład: Konwencje (do ustalenia) Stały repertuar słów kluczowych – słowa kluczowe wyróżnione Symbol operacji podstawienia Stosowanie nawiasów syntaktycznych i separatorów instrukcji Dopuszczalne operacje wejścia/wyjścia Sposób pisania komentarzy Przykład: { algorytm Euklidesa } pobierz(a); pobierz(b); dopóki a < > b jeżeli a > b to a  a – b w.p.p. b  b – a wypisz(”NWD=”,a)

Od czego zacząć? Od wykonania prostego algorytmu Nauczyciel „dyktuje” kroki algorytmu, uczniowie wykonują Algorytm powinien być ciekawy, zabawny, zaskakujący Algorytm powinien mieć wyraźne wszystkie cechy dobrego algorytmu

Od czego zacząć – przykład (1) Proszę wziąć przygotowane kwadratowe kartki... 1. Zginamy kartkę wzdłuż przekątnych 2. Formułujemy trójkąt wciskając do wewnątrz boki (tak aby punkty A i B pokryły się z X)

Od czego zacząć – przykład (1) Mocno zaprasowujemy wszystkie zgięcia... 1. Zginamy kartkę wzdłuż przekątnych 2. Formułujemy trójkąt wciskając do wewnątrz boki (tak aby punkty A i B pokryły się z X) 3. Zaginamy wolny róg trójkąta tak aby pokrył się z wierzchołkiem trójkąta

Od czego zacząć – przykład (1) Proszę wziąć przygotowane kwadratowe kartki... 1. Zginamy kartkę wzdłuż przekątnych 2. Formułujemy trójkąt wciskając do wewnątrz boki (tak aby punkty A i B pokryły się z X) 3. Zaginamy wolny róg trójkąta tak aby pokrył się z wierzchołkiem trójkąta 4. Zaginamy i rozprostowujemy utworzony trójkąt według czerwonych linii

Od czego zacząć – przykład (1) Proszę wziąć przygotowane kwadratowe kartki... 1. Zginamy kartkę wzdłuż przekątnych 2. Formułujemy trójkąt wciskając do wewnątrz boki (tak aby punkty A i B pokryły się z X) 3. Zaginamy wolny róg trójkąta tak aby pokrył się z wierzchołkiem trójkąta 4. Zaginamy i rozprostowujemy utworzony trójkąt według czerwonych linii 5. Formułujemy „uchwyt” i zaprasowujemy

Od czego zacząć – przykład (1) Proszę wziąć przygotowane kwadratowe kartki... 1. Zginamy kartkę wzdłuż przekątnych 2. Formułujemy trójkąt wciskając do wewnątrz boki (tak aby punkty A i B pokryły się z X) 3. Zaginamy wolny róg trójkąta tak aby pokrył się z wierzchołkiem trójkąta 4. Zaginamy i rozprostowujemy utworzony trójkąt według czerwonych linii 5. Formułujemy „uchwyt” i zaprasowujemy 6. Powtarzamy czynności 3-5 dla wszystkich rogów

Od czego zacząć – przykład (1) Proszę wziąć przygotowane kwadratowe kartki... 1. Zginamy kartkę wzdłuż przekątnych 2. Formułujemy trójkąt wciskając do wewnątrz boki (tak aby punkty A i B pokryły się z X) 3. Zaginamy wolny róg trójkąta tak aby pokrył się z wierzchołkiem trójkąta 4. Zaginamy i rozprostowujemy utworzony trójkąt według czerwonych linii 5. Formułujemy „uchwyt” i zaprasowujemy 6. Powtarzamy czynności 3-5 dla wszystkich rogów 7. Energicznie dmuchamy w otwór trzymając za dwa sąsiednie uchwyty

Czy to uzyskaliście?

Od czego zacząć - przykład (2) Proszę przygotować kartki i ołówki... narysuj dwa trójkąty na górze drugiego kształtu narysuj kolisty kształt narysuj mniejszy kolisty kształt nieco z boku pierwszego kształtu ale zachodzący na pierwszy narysuj dwa małe kółeczka w środku trzeciego kształtu narysuj cztery owale na dole pierwszego kształtu narysuj mały kolisty kształt w środku drugiego kształtu narysuj mały świderek z drugiego boku pierwszego kształtu narysuj dwie kropki nad trzecim kształtem obok siebie zetrzyj niepotrzebne linie, (dorysuj uśmiech na zakończenie)

Czy to uzyskaliście?

Co dalej? Dalej naturalne przykłady algorytmów Nauczyciel podaje kilka Uczniowie sami wymyślają Przykłady mają być prawdziwe Przykłady mają być użyteczne Przykłady mają być wykorzystywane w życiu

Jeszcze dalej ... Budowa algorytmów Określenie danych początkowych i wyniku Pełny zapis Sprawdzenie poprawności Analiza warunków zakończenia pracy Może obliczenie złożoności (liczby operacji w najgorszym przypadku)

Forma lekcji Nauczyciel podaje jeden przykład tak jakby sam rozwiązywał problem Nauczyciel zadaje proste przykłady uczniom w klasie i trudniejsze jako pracę domową W czasie lekcji wspólne tworzenie algorytmu wraz z dyskusją

Dalej niż dalej... Implementacja algorytmu realizacja algorytmu w jakimś języku programowania wymaga umiejętności programowania realizacja algorytmu za pomocą jakiegoś specjalnego narzędzia edukacyjnego realizacja algorytmu za pomocą jakiegoś modelu

Narzędzia edukacyjne Program ELI (Elbox Laboratorium Informatyki) budowa algorytmu w postaci schematu blokowego z klocków testowanie poprawności algorytmu badanie złożoności (liczby operacji podstawowych) algorytmu Środek dydaktyczny zalecany przez MEN Przykład: algorytm Euklidesa

Narzędzia edukacyjne Program Baltie (Soukup Graphic Programing) budowa sceny z gotowych elementów interakcyjne sterowanie programem graficzne tworzenie programów Przeznaczenie dla dzieci (od 4 lat do…)

Przykład: algorytm Euklidesa

Dla zainteresowanych Algorytmy równoważne Metody budowania algorytmów rozwiązanie tego samego problemu algorytmicznego w różny sposób Metody budowania algorytmów konstrukcja algorytmów złożonych z modułów metoda „z góry na dół” lub „z dołu do góry” metoda „dziel i rządź” Czy wszystko można zalgorytmizować?

Nie na wszystko jest algorytm Problemy, których nie można rozwiązać algorytmicznie: Problem „stopu” Rozwiązywanie równań diofantycznych Problem domina

„Problem stopu” Nie istnieje uniwersalny algorytm, który dla dowolnego algorytmu i dowolnych poprawnych danych dla tego algorytmu zatrzymuje się z wynikiem TAK – gdy dany program na podanych danych wejściowych zatrzymuje się NIE – gdy dany program na podanych danych wejściowych nie zatrzymuje się

Dowód „problemu stopu” Oznaczenia: algorytm R na danych X nie zatrzymuje się: R(X), algorytm R na danych X zatrzymuje się: R(X). Problem stopu: Nie istnieje algorytm Q, który zawsze zatrzymuje się, taki, że Q(R#X)=”TAK” wtedy i tylko wtedy gdy R(X) Q(R#X)=”NIE” wtedy i tylko wtedy gdy R(X)

Dowód „problemu stopu” cd. Gdyby istniał taki algorytm Q to budujemy algorytm S: Dane wejściowe algorytm i dane do algorytmu Początek: Q(R#R) Jeżeli Q(R#R)=”TAK” to pętla nieskończona Jeżeli Q(R#R)=”NIE” to stop (wynik nieważny). Badamy S(S). Jeżeli S(S) to Q(S#S)=”NIE” i wtedy zgodnie z konstrukcją S(S) Jeżeli S(S)  to Q(S#S)=”TAK” i wtedy zgodnie z konstrukcją S(S) Sprzeczność

„Problem domina” Dane dla algorytmu: kwadratowe karty podzielone przekątnymi na 4 części każda część pomalowana jakimś kolorem (daną jest opis kilku typów kart). Pytanie: czy można pokryć dowolną skończoną powierzchnię kartami opisanych typów (kart nie można przekręcać) mając do dyspozycji dowolną liczbę kart każdego typu?

„Problem domina” – przykład Następującym zestawem płytek można pokryć dowolny fragment płaszczyzny

„Problem domina” - przykład Następującym zestawem płytek nie można pokryć płaszczyzny

Część II. Rekurencja

Przykład rozumowania Zadanie: 1 + 2 + 3 + 4 + 5 + ... + n = ? znaleźć wzór na sumę kolejnych liczb naturalnych: 1 + 2 + 3 + 4 + 5 + ... + n = ?

Najpierw ilustracja

Potem hipoteza

No i dowód

Przykład problemu Narysować Drzewo Pitagorasa Pień – dowolny kwadrat Gałęzie – dwa kwadraty, których suma pól daje pień umieszczone nad pniem tak aby boki stanowiły trójkąt prostokątny Gałązki – następne kwadraty „wyrastające” z gałęzi według tej samej zasady Gałązeczki – wyrastają z gałązek tak jak gałązki na gałęziach Itd...

Drzewo Pitagorasa

Drzewo Pitagorasa

Własności problemu Można rozłożyć na takie same problemy ale mniejsze

Własności problemów Rozwiązanie całego problemu możemy zestawić z rozwiązań mniejszych problemów

Własności problemów Podział prowadzi do problemów, które można rozwiązać bezpośrednio

Problemy „rekurencyjne” Możliwy rozkład na takie same ale mniejsze problemy Rozkład prowadzi do problemów mających bezpośrednie rozwiązanie Z rozwiązań problemów mniejszych można zestawić rozwiązanie problemu głównego

Ogólna postać rozwiązania problemu rekurencyjnego PROCEDURE ROZWIĄŻ(przypadek); BEGIN IF przypadek jest prosty THEN Rozwiązanie bezpośrednie ELSE Podziel przypadek na przypadki p1,p2, ...; ROZWIĄŻ(p1);ROZWIĄŻ(p2);...; Zbuduj rozwiązanie ze składowych END END;

Istota rekurencji Każde wywołanie procedury rekurencyjnej pamięta swój stan. To znaczy: Ma własne kopie wszystkich zmiennych lokalnych Nie widzi zmian dokonywanych na zmiennych lokalnych przez dalsze wywołania Czeka na zakończenie wszystkich dalszych wywołań

Przykład Odwracanie ciągu: Wejście, np. Wyjście: ABCDEFGH Wyjście: HGFEDCBA Nie znamy długości ciągu – zakończenie ‘.’

Przykład (cd) Rozwiązanie iteracyjne Trzeba wczytać i zapamiętać wszystkie elementy ciągu Po zakończeniu wczytywania trzeba wyświetlić od końca Wada: trzeba zorganizować strukturę danych Tablica? Nie bo ma stały rozmiar Stos? Tak Każdy wczytany umieszczany jest na górze stosu Wypisujemy stos od góry

Przykład (cd) Rozwiązanie rekurencyjne procedure odwroc(); var c:char; begin readln(c); if c<>’.’ then odwroc(); write(c); end;

Przykład (cd) Dlaczego działa? Wejście: A Wejście: B Wejście: C Różne od ‘.’ – wywołujemy odwroc ale pamiętamy swój stan czyli moją zmienną c Wejście: B Różne od ‘.’ – wywołujemy odwroc ale pamiętamy swój stan czyli moją zmienną c, która jest inną zmienną niż poprzednie c Wejście: C Różne od ‘.’ – wywołujemy odwroc ale pamiętamy swój stan czyli moją zmienną c, która jest inną zmienną niż wszystkie poprzednie c Wejście: ‘.’ Wypisujemy moją zmienną c, a więc literę C i koniec – powrót do poprzedniego wywołania Poprzednie wywołanie czekało, a więc może działać teraz dalej – czyli wypisuje swoją zmienną c czyli literę B i koniec – powrót do poprzedniego wywołania ...

Jak zdobyć stówę?

Jak zdobbyć tę stówę?

Czy tak można w nieskończoność?

Przykłady Obliczanie reszty z dzielenia danej liczby przez inną. Obliczanie n-tej potęgi liczby Obliczanie silni danej liczby Mnożenie dwóch liczb Wypisywanie wszystkich wierzchołków drzewa binarnego Konstrukcja (siłowa) kwadratu magicznego Rozstawienie 8 hetmanów na planszy tak aby się nie szachowali Znajdowanie drogi skoczka szachowego po całej szachownicy

Przykłady Przechodzenie przez labirynt Wydawanie reszty Wyszukiwanie w ciągu uporządkowanym Rysowanie fraktali Obliczanie wyrazów ciągów geometrycznego i arytmetycznego Szukanie pierwiastków równania (dowolnego) Obliczanie pierwiastka kwadratowego ze wzoru Newtona-Raphsona (x1-a/2, xn=(xn-1+a/xn-1)/2)