Wioletta Karpińska Wydział Matematyki i Informatyki Uniwersytet Łódzki Zajęcia na DUM I w 2017

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

Matematyczne Podstawy Informatyki

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

Algorytm. Krótka historia algorytmów

Efektywność algorytmów

Algorytm. Algorytmy Marek Pudełko

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

Projektowanie i Analiza Algorytmów

Podstawy Programowania Algorytmy i programowanie

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

Technologie Informacyjne

1. Analiza algorytmów przypomnienie

Zaawansowane algorytmy. Wojciech Horzelski

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

KARTA PRZEDMIOTU. 1. Informacje ogólne. 2. Ogólna charakterystyka przedmiotu. Algorytmy i struktury danych, C3

Algorytm. Krótka historia algorytmów

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

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

Zaawansowane algorytmy i struktury danych

KARTA PRZEDMIOTU. Algorytmy i struktury danych, C4

Podstawy Informatyki. Sprawność algorytmów

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

Programowanie komputerów

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

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

TEORETYCZNE PODSTAWY INFORMATYKI

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

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

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

Podstawy Informatyki. Inżynieria Ciepła, I rok. Wykład 7 Algorytmy

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

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

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

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

Struktury danych i złozoność obliczeniowa. Prof. dr hab. inż. Jan Magott

Wprowadzenie do algorytmiki

Informacja w perspektywie obliczeniowej. Informacje, liczby i obliczenia

Informatyka 1. Złożoność obliczeniowa

PRZEWODNIK PO PRZEDMIOCIE

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

Technologie informacyjne - wykład 12 -

Wprowadzenie do złożoności obliczeniowej

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

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

operacje porównania, a jeśli jest to konieczne ze względu na złe uporządkowanie porównywanych liczb zmieniamy ich kolejność, czyli przestawiamy je.

Algorytmy i Struktury Danych

Algorytmy, reprezentacja algorytmów.

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

Algorytmy i struktury danych. dr inż. Sławomir Samolej D108 A, tel: , WWW: ssamolej.prz-rzeszow.

O LICZBACH NIEOBLICZALNYCH I ICH ZWIĄZKACH Z INFORMATYKĄ

REPREZENTACJA LICZBY, BŁĘDY, ALGORYTMY W OBLICZENIACH

Podstawy Informatyki. Podstawy Informatyki. Warunki zaliczenia. Program wykładów. Metalurgia, I rok. Czym jest informatyka? Z czego się uczyć?

Algorytm. a programowanie -

Wykład I Cyfrowa reprezentacja informacji Algorytmy metody prezentacji i zapisu

INFORMATYKA. Algorytmy.

PRZEWODNIK PO PRZEDMIOCIE

TEORETYCZNE PODSTAWY INFORMATYKI

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

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

Podstawy Informatyki

Zał nr 4 do ZW. Dla grupy kursów zaznaczyć kurs końcowy. Liczba punktów ECTS charakterze praktycznym (P)

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

INFORMATYKA SORTOWANIE DANYCH.

Wykład IV Algorytmy metody prezentacji i zapisu Rzut oka na język PASCAL

Algorytmy i schematy blokowe

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

Luty 2001 Algorytmy (7) 2000/2001

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,

Związek między problemem, algorytmem a programem komputerowym. Klasa 2 Lekcja 3

Technologie cyfrowe. Artur Kalinowski. Zakład Cząstek i Oddziaływań Fundamentalnych Pasteura 5, pokój 4.15

Jeszcze o algorytmach

Algorytmy i struktury danych. Wykład 4

Elżbieta Kula - wprowadzenie do Turbo Pascala i algorytmiki

Język ludzki kod maszynowy

KARTA MODUŁU KSZTAŁCENIA

KOŁO MATEMATYCZNE LUB INFORMATYCZNE - klasa III gimnazjum, I LO

1 Wprowadzenie do algorytmiki

Definicje. Algorytm to:

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

Elementy Teorii Obliczeń

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

Zadanie 1. Potęgi (14 pkt)

Technologia informacyjna Algorytm Janusz Uriasz

Wybrane wymagania dla informatyki w gimnazjum i liceum z podstawy programowej

ROZKŁAD MATERIAŁU NAUCZANIA KLASA 1, ZAKRES PODSTAWOWY

PROBLEMY NIEROZSTRZYGALNE

REPREZENTACJA LICZBY, BŁĘDY, ALGORYTMY W OBLICZENIACH

Metodyki i techniki programowania

1. Informatyka - dyscyplina naukowa i techniczna zajmująca się przetwarzaniem informacji.

Algorytmy i Struktury Danych.

Sortowanie przez wstawianie

O ALGORYTMACH I MASZYNACH TURINGA

Teoretyczne Podstawy Informatyki

Algorytmy i Struktury Danych

Technologie informacyjne Wykład VII-IX

KARTA MODUŁU KSZTAŁCENIA

Dydaktyka matematyki III-IV etap edukacyjny (wykłady) Wykład nr 6: Nauczanie algorytmów w szkole Semestr zimowy 2018/2019

Metodyki i techniki programowania

Sortowanie - wybrane algorytmy

Dr inż. Grażyna KRUPIŃSKA. D-10 pokój 227 WYKŁAD 1 WSTĘP DO INFORMATYKI

Transkrypt:

Wioletta Karpińska Wydział Matematyki i Informatyki Uniwersytet Łódzki Zajęcia na DUM I w 2017

Strona: http://www.math.uni.lodz.pl/~karpinw Zaliczenie: do ustalenia. Programowanie: http://www.instalki.pl/programy/download/ Windows/srodowiska_programistyczne/Dev -C_5.html DevC++ jest w pełni funkcjonalnym darmowym środowiskiem programistycznym C/C++ zawierającym wielookienkowy edytor kodu źródłowego z podświetlaniem składni, kompilator, debbuger, linker. Środowisko posiada także narzędzie do tworzenia pakietów instalacyjnych napisanych programów. Instalacja jest prosta i ogranicza się do postępowania zgodnie z instrukcjami.

Banachowski L., Kreczmar A.: Elementy analizy algorytmów. Banachowski L., Diks K., Rytter W.: Algorytmy i struktury danych. Cormen T.H., Leiserson Ch.E., Rivest R.L.: Wprowadzenie do algorytmów. Ross K.A., Wright Ch.R.B.: Matematyka dyskretna. Sedgewick R.: Algorytmy w C++. Sedgewick R., Flajolet P.: An Introduction to the Analysis of Algorithms.

Ogólnie o algorytmach Podstawowe narzędzia matematyczne Poprawność algorytmów Wybrane algorytmy sortowania Algorytmy rekurencyjne Złożoność obliczeniowa i pamięciowa Struktury danych Algorytmy przeszukiwania Algorytmy numeryczne

Algorytm w matematyce oraz informatyce skończony, uporządkowany ciąg jasno zdefiniowanych czynności, koniecznych do wykonania pewnego rodzaju zadań. Słowo "algorytm" pochodzi od starego angielskiego słowa algorism, oznaczającego wykonywanie działań przy pomocy liczb arabskich (w odróżnieniu od abacism - przy pomocy abakusa), które z kolei wzięło się od nazwiska أبو عبد هللا محمد بن موسى ( Alchwarizmi Muhammed ibn Musa. [1] wieku matematykaالخوارزمي perskiego z IX ) Źródło: Wikipedia

Algorytm -opis czynności składających się na proces przetwarzania zadanych obiektów początkowych (wejściowych) w celu otrzymania obiektów wynikowych (wyjściowych). Algorytm możemy również traktować jako sposób rozwiązywania konkretnego problemu. Postawienie problemu polega na sprecyzowaniu wymagań dotyczących relacji między danymi wejściowymi i wyjściowymi, a algorytm opisuje właściwą procedurę, która zapewnia, że ta relacja zostanie osiągnięta.

Warunek dyskretności skończona ilość operacji potrzebnych do rozwiązania Warunek uniwersalności możliwość stosowania metody do całej klasy zagadnień Istnieje określony stan początkowy Algorytm metoda rozwiązywania danego problemu, która spełnia warunki: Istnieje wyróżniony koniec Warunek jednoznaczności - jednoznaczna interpretacja poszczególnych kroków metody Warunek efektywności cel musi być osiągany w pewnym skończonym i możliwym do przyjęcia przez użytkownika czasie

Dowolny wykonawca algorytmu (w szczególności komputer) Sprzęt Język opisu algorytmu Dowolny, zrozumiały dla wykonawcy Możliwe do wykonania przez wykonawcę Operacje składowe algorytmu Schemat przetwarzania Obiekty wejściowe Algorytm Obiekty wyjściowe

Dane wejściowe 22 dag twardej czekolady półsłodkiej, 2 łyżki wody, 1/4 filiżanki cukru pudru, 6 jajek,.... Dane wyjściowe bity krem czekoladowy (kuchnia francuska) Opis algorytmu Włóż czekoladę z dwiema łyżkami wody do garnka o podwójnym dnie. Kiedy czekolada się rozpuści domieszaj cukier puder; dodaj po trochu masło. Odstaw. Ubijaj żółtka około 5 minut, aż staną się gęste i nabiorą koloru cytrynowego. Delikatnie dołóż czekoladę. Ponownie lekko podgrzej, aby rozpuścić czekoladę, jeśli to będzie konieczne. Domieszaj rum i wanilię. Ubijaj białka aż do spienienia. Ubijając dodaj dwie łyżki cukru i ubijaj dalej, aż utworzą się sztywne pagórki. Delikatnie połącz białka z masą czekoladowo-żółtkową. Wylej do oddzielnych naczyń, które będą podane na stół. Ochładzaj przez co najmniej 4 godziny. Wedle życzenia, podawaj z bitą śmietaną. Wyjdzie z tego 6 do 8 porcji.

Dane wejściowe 1 kg świeżych węgierek, 10 dag suszonych śliwek bez pestek, 3 dag rodzynków, laska wanilii, 50 dag cukru, po pół litra spirytusu i wódki Dane wyjściowe śliwowica (kuchnia polska) Opis algorytmu Owoce umyć, osuszyć, wypestkować (1/10 zostawić) i wraz z umytymi rodzynkami, suszonymi śliwkami i odłożonymi pestkami włożyć do słoja. Zasypać owoce cukrem, a gdy puszczą sok, zalać spirytusem i odstawić na 3 tygodnie. Od czasu do czasu potrząsać słojem. Zlać alkohol do pustego słoja, zamknąć i odstawić. Do naczynia z owocami wlać wódkę, włożyć wanilię, zamknąć go i odstawić. Po 2 tygodniach zlać nalew, osączając owoce. Wymieszać oba nalewy, starannie przefiltrować, rozlać do butelek, zakorkować i odstawić na 6 miesięcy w zaciemnione chłodne miejsce.

Podstawowe koncepcje algorytmiczne: sekwencje czynności warunkowe wykonanie powtarzanie, aż zajdzie warunek zestawy czynności zdefiniowane wcześniej poziom szczegółowości CZAS!

Dane wejściowe a, b liczby naturalne większe od 1 Dane wyjściowe c=nwd(a,b) Opis algorytmu Wypisz czynniki pierwsze liczby a, powstaje lista A={a 1,a 2,...,a n } (mogą wystąpić powtórzenia) Wypisz czynniki pierwsze liczby b, powstaje lista B={b 1,b 2,...,b m } (mogą wystąpić powtórzenia) Utwórz C jako listę wspólnych elementów list A i B (też z ewentualnymi powtórzeniami) Oblicz c jako iloczyn wszystkich elementów z C (jeśli C jest pusta to c=1) Wypisz c i zatrzymaj się.

Widać, jak algorytm działa dla małych liczb. Dla dużych: Jak znajdować dzielniki? Jak obliczać część wspólną list? Rozwiązanie problemu: Algorytm Euklidesa ćw.

Dane wejściowe lista ankiet osobowych (nazwisko, płaca, inne) Dane wyjściowe suma zarobków wszystkich osób Opis algorytmu zanotuj na boku liczbę 0 przewertuj kolejno ankiety dodając zarobki każdej osoby do liczby na boku kiedy osiągniesz koniec listy przedstaw wartość liczby na boku jako wynik

Ważna cecha przykładu: Wielkość programu taka sama dla dowolnie długich list

Problem zatrzymania algorytm ma orzekać, czy dany program komputerowy kiedykolwiek wykona wszystkie procedury i zatrzyma się Dane wejściowe Program komputerowy Dane wejściowe dla tego programu Dane wyjściowe Odpowiedź TAK (program zatrzyma się po wykonaniu wszystkich zawartych w nim poleceń) Lub odpowiedź NIE (program nie zatrzyma się) Rozwiązanie Nie istnieje algorytm, który w skończonym czasie orzeknie, czy dany program dla określonych danych wejściowych zapętli się czy nie.

IV w. p.n.e. Euklides: znajdowanie największego wspólnego dzielnika VIII/IX w. n.e.: Muhammed Alchwarizmi: dodawanie, odejmowanie, mnożenie, dzielenie liczb dziesiętnych (Algorismus nazwisko po łacinie) 1822 Charles Babbage: projekt maszyny różnicowej, mechaniczny kalkulator (budowa niedokończona)

1849 Babbage: maszyna analityczna - projekt mechanicznego komputera, sterowanego kartami Jacquarda (zrealizowany ostatecznie w 1991 w Science Museum, Londyn), czyli maszyny wykonującej dowolne programy 1850 Ada Augusta hrabina Lovelace: programy dla maszyny analitycznej Babbage a 1930-te Alan Turing, Kurt Goedel, Emil Post, Alonzo Church, Stephen Kleene, Andriej Markow : teoria algorytmów, możliwości i ograniczenia algorytmiki

1937 maszyna MARK 1 pierwsza działająca maszyna ze sterowaniem sekwencyjnym (przekaźniki elektromagnetyczne), sterowana za pomocą taśmy papierowej, 200 op./sek. 1946 Maszyna Einiac pierwsza maszyna elektroniczna (lampy elektronowe) 6 tys. op./sek. 1958 maszyny tranzystorowe, 20 tys. op./sek.

1964 maszyny mikroukładowe (układy scalone), 100 tys. op/sek 1970 maszyny na zintegrowanych elementach scalonych, 10 mln. op/sek 1970-te do dzisiaj: rozkwit algorytmiki

Uniwersalne urządzenie do wykonywania algorytmów związanych z przetwarzaniem informacji Komputer = sprzęt + oprogramowanie Obiekty przetwarzane przez program: Dane Dane +algorytm = wyniki Zapis algorytmu zrozumiały dla komputera w Języku programowania U nas C++ Algorytmy zrozumiałe dla komputera: Programy

Dział informatyki teoretycznej zajmujący się poszukiwaniem najlepszych i najbardziej efektywnych algorytmów do zadań komputerowych. Efektywny algorytm: Najszybszy? Wymagający najmniejszych zasobów pamięci? Prostota algorytmu? To zależy m.in. od przeznaczenia i oczekiwań użytkowników.

Inne Czas działania Zasoby potrzebne do wykonania algorytmu Szerokość kanału komunikacyjnego Pamięć

Nie możemy precyzyjnie przewidzieć ilości zasobów zbyt dużo zmiennych czynników. Wyodrębniamy główne parametry i poddajemy je analizie. Pomijamy wiele szczegółów analiza jest przybliżona. Cel osiągamy obiektywne porównanie różnych algorytmów rozwiązania tego samego problemu i wybranie najlepszego.

Badamy problem Czy możliwe jest rozwiązanie go na komputerze w skończonym i możliwym do zaakceptowania czasie Czy już istnieje algorytm rozwiązujący problem Czy mamy jeszcze czego szukać, czy już mamy algorytm optymalny Jeśli nie, to pracujemy nad lepszym rozwiązaniem Pytanie: Czy algorytm przez nas zaproponowany jest poprawny?

Poprawny jest, gdy: Dla każdego zestawu danych wejściowych zatrzymuje się i daje dobry wynik. Poprawność dokładniej zostanie omówiona na oddzielnym wykładzie. Intuicja

Złożoność obliczeniowa podstawowa wielkość stanowiąca miarę przydatności algorytmu. Obejmuje problemy związane z implementacją i efektywnością algorytmu.

Złożoność obliczeniowa funkcja zależna od danych wejściowych, a dokładnie od rozmiaru danych wejściowych. Rozmiar danych wejściowych liczba pojedynczych danych wchodzących w skład całego zestawu danych wejściowych. Przykład: Problem Wyznaczenie wartości wielomianu w punkcie Wyznaczenie n-tej potęgi liczby rzeczywistej Mnożenie dwóch liczb całkowitych Sortowanie ciągu elementów Zagadnienie przechodzenia przez drzewo Rozmiar danych wejściowych Stopień wielomianu Wykładnik potęgi Całkowita liczba bitów potrzebnych do reprezentacji tych liczb w postaci binarnej Liczba wyrazów ciągu Liczba węzłów drzewa

Zależność odwrotnie proporcjonalna Złożoność pamięciowa P(n) pamięć, przestrzeń. (Jaka ilość zasobów pamięci potrzebna jest do realizacji liczba i rodzaj zmiennych, rodzaj danych) Złożoność czasowa T(n)- czas. (Zależy od liczby operacji wykonanych podczas działania algorytmu) Złożoność obliczeniowa algorytmu

Miara szybkości algorytmu powinna być: Niezależna od oprogramowania Niezależna od sprzętu Niezależna od umiejętności programisty Powinna to być cecha samego algorytmu!

Problem Wyznaczenie wartości wielomianu w danym punkcie Sortowanie Przeglądanie drzewa Operacje dominujące Operacje arytmetyczne Porównanie elementów ciągu wejściowego (czasem także przestawienie elementów ciągu) Przejście między węzłami w drzewie

Liczbę operacji dominujących zwykle szacujemy z dokładnością do stałego czynnika. Dla małych rozmiarów danych wejściowych najlepsze są najprostsze rozwiązania nie ma problemu. Jak zachowuje się algorytm, gdy rozmiar danych wejściowych dąży do nieskończoności? Podajemy najprostszą funkcję charakteryzującą rząd wielkości T(n). Np.: T(n)=n 2 dla 2n 2 +50, T(n)=n dla 100n W pierwszym przypadku algorytm jest wolniejszy, bo dla dużego n funkcja kwadratowa rośnie szybciej niż liniowa.

Asymptotyczny czas działania czas działania algorytmu dla danych wejściowych, których rozmiar dąży do nieskończoności.

Większość algorytmów ma złożoność czasową (asymptotyczny czas działania) proporcjonalną do jednej z podanych poniżej funkcji:

Przykład. Tabelka przedstawiająca czas potrzebny do realizacji algorytmu, który wykonuje 2 n operacji dominujących (dla danych wejściowych rozmiaru n) przez dwa komputery, przy założeniu, że jedna operacja na każdym z nich zajmuje odpowiednio 10-6 i 10-9 sekund.

Mając algorytm, pytamy, czy możemy szybciej osiągnąć cel, czy też złożoność czasowa już osiągnęła wartość najmniejszą z możliwych. Zakres (przedział) czasów działania przedział między teoretycznym dolnym oszacowaniem a najlepszym znanym algorytmem

Algorytmy sortowania oparte na porównywaniu elementów mają teoretyczne dolne oszacowanie liczby operacji dominujących rzędu nlgn, a trywialne dolne oszacowanie rzędu n. Problem mnożenia dwóch macierzy wymiaru n x n ma trywialne dolne oszacowanie rzędu kwadratowego.

Dla niektórych ważnych problemów teoretyczne dolne oszacowanie nie zostało jeszcze wyznaczone. W takim przypadku bierzemy pod uwagę najszybszy istniejący algorytm rozwiązujący dany problem.