1 Wykład cz. 2 dyżur: środa 9.00-10.00 czwartek 10.00-11.00 ul. Wieniawskiego 17/19, pok.10 e-mail: joanna.jozefowska@cs.put poznan.pl materiały do wykładów: http://www.cs.put.poznan.pl/jjozefowska/ hasło: w2005 Ćwiczenia cz. 2 dr inż. Grzegorz Waligóra 2 Zaliczenie przedmiotu Zaliczenie ćwiczeń dr Grzegorz Waligóra Sprawdzian 25 stycznia 2006 Zaliczenie ćwiczeń jest warunkiem przystąpienia do egzaminu Egzamin odbędzie się w sesji, zgodnie z harmonogramem 3 1
Zakres wykładów Pojęcie obliczalności Maszyna Turinga Modele obliczeń w logice Rachunek lambda Równoważność modeli obliczeń 4 Literatura Ben Ari M., Logika matematyczna w informatyce, WNT, Warszawa 2005. Błażewicz J., Złożoność obliczeniowa problemów kombinatorycznych, WNT, Warszawa 1988. Davis M., Czym jest obliczanie?, w: Matematyka współczesna - dwanaście esejów pod redakcją Lynna Arthura Steena, WNT, Warszawa 1983. Epstein R. L., Carnielli W. A., Computability, Wadsworth, Belmont 2000. Harel D., Rzecz o istocie informatyki, wyd. 2, WNT Warszawa 2000. Ławrow I. A., Maksimowa Ł. L., Zadania z teorii mnogości, logiki matematycznej i teorii algorytmów, Wydawnictwo Naukowe PWN, Warszawa 2004. Penrose R., Nowy umysł cesarza. O komputerach, umyśle i prawach fizyki, PWN, Warszawa 1996. 5 Literatura Ben Ari M., Logika matematyczna w informatyce, WNT, Warszawa 2005. Błażewicz J., Złożoność obliczeniowa problemów kombinatorycznych, WNT, Warszawa 1988. Davis M., Czym jest obliczanie?, w: Matematyka współczesna - dwanaście esejów pod redakcją Lynna Arthura Steena, WNT, Warszawa 1983. Epstein R. L., Carnielli W. A., Computability, Wadsworth, Belmont 2000. Harel D., Rzecz o istocie informatyki, wyd. 2, WNT Warszawa 2000. Ławrow I. A., Maksimowa Ł. L., Zadania z teorii mnogości, logiki matematycznej i teorii algorytmów, Wydawnictwo Naukowe PWN, Warszawa 2004. Penrose R., Nowy umysł cesarza. O komputerach, umyśle i prawach fizyki, PWN, Warszawa 1996. 6 2
Teoria informatyki i metainformatyka begin Czy to jest program? write(pi*5*5); end. 7 OLNHVVDP)RRG LQGLDQ)RRG PLOG)RRG OLNHVVDP)RRG FKLQHVH)RRG OLNHVVDP)RRG LWDOLDQ)RRG OLNHVVDPFKLSV LQGLDQFXUU\ LQGLDQGDKO LQGLDQWDQGRRUL LQGLDQNXUPD Teoria informatyki i metainformatyka Czy to jest program? PLOGGDKO PLOGWDQGRRUL PLOGNXUPD FKLQHVHFKRZBPHLQ FKLQHVHFKRSBVXH\ FKLQHVHVZHHWBDQGBVRXU Czy to samo można napisać w Pascalu? 8 OLNHVVDP)RRG LQGLDQ)RRG PLOG)RRG OLNHVVDP)RRG FKLQHVH)RRG OLNHVVDP)RRG LWDOLDQ)RRG OLNHVVDPFKLSV LQGLDQFXUU\ LQGLDQGDKO LQGLDQWDQGRRUL LQGLDQNXUPD Teoria informatyki i metainformatyka Czy to jest program? PLOGGDKO PLOGWDQGRRUL PLOGNXUPD FKLQHVHFKRZBPHLQ FKLQHVHFKRSBVXH\ FKLQHVHVZHHWBDQGBVRXU Czy to samo można napisać w Pascalu? 9 3
Start Algorytm S a j i 1 function s(j:integer); real; var i, S: integer; begin S:=a[j]; i:=0; while i <= j do begin S:=S*x; i:=i+1 end; s:=s end. Stop NIE i < j TAK S S*x i i + 1 czy program???? 10 Teoria informatyki i metainformatyka Modele obliczeń Maszyna Turinga Rachunek lambda Rachunek predykatów Funkcje rekurencyjne Algorytmy Języki programowania ADA LISP Pascal... COBOL C++ Fortran PROLOG 11 Teoria informatyki i metainformatyka Modele obliczeń Czy wszystko można obliczyć? Czego nie można obliczyć i dlaczego? Algorytmy Języki programowania Czy wszystkie języki mogą obliczyć to samo? Czy istnieje procedura, która pozwala wykazać, że program działa poprawnie? Czy dane zdanie jest zdaniem tego języka? Skąd się wzięły języki programowania? Dlaczego nie ma jednego uniwersalnego języka programowania? 12 4
Teoria informatyki i metainformatyka Filozofia Metainformatyka Ontologia Modele obliczeń To nie jest informatyka Informatyka Programowanie Obsługa programów Algorytmy Języki programowania Programy 13 Interdyscyplinarny charakter informatyki hardware = sprzęt Elektronika Układy VLSI Automatyka Automaty skończone Architektura komputerów Maszyna von Neumana ALGORYTM software = oprogramowanie Matematyka Teoria obliczeń Maszyna Turinga 14 Kierunki badań hardware = sprzęt software = oprogramowanie systemy wbudowane (embedded systems) sterowanie inteligentnymi obiektami automatyzacja złożonych procesów złożoność obliczeniowa algorytmów sztuczna inteligencja inżynieria oprogramowania 15 5
Obliczanie Profesor Nawrocki powiedział, że nie! Czy wszystko można obliczyć? 16 Wszystko zaczęło się od paradoksów... W pewnej wsi mieszka fryzjer, który goli wszystkich i tylko tych mieszkańców wsi, którzy nie golą się sami. Czy ten fryzjer się goli? 17 Obliczanie Czy wszystko można obliczyć? Co to jest obliczanie? Czy to, co intuicyjnie uznajemy za obliczalne można obliczyć za pomocą mechanicznej procedury? 18 6
Kluczem jest pojęcie algorytmu Jednoznaczny, dobrze (krok po kroku) określony przepis mechanicznego rozwiązania dowolnego konkretnego zadania z pewnej klasy zadań. W rozwiązaniu stosuje się skończoną liczbę reguł postępowania (czyli wykonywania kroków prowadzących do rozwiązania). ax 2 + bx + c = 0 = b2-4ac x = (-b ± )/2a 19 Przykłady algorytmów Obliczanie wielomianu Sprawdzanie, czy liczba jest automorficzna Znajdowanie podzbioru o danej sumie Wyznaczanie elementów ciągu Fibonacciego Obliczanie n! 20 zdefiniowany, aby człowiek mógł go skutecznie wykonać w skończonym czasie). 21 7
zdefiniowany, aby człowiek mógł go skutecznie wykonać w skończonym czasie). 22 zdefiniowany, aby maszyna mogła go skutecznie wykonać w skończonym czasie). 23 Maszyna Turinga elementarne kroki taśma 0 0 0 1 1 1 0 0 0 Odczytanie symbolu Zapisanie symbolu Przesunięcie głowicy Głowica odczytującozapisująca 24 8
zdefiniowany, aby maszyna mogła go skutecznie wykonać w skończonym czasie). 25 Maszyna Turinga Dane wejściowe 0 0 0 1 1 1 0 0 0 26 zdefiniowany, aby maszyna mogła go skutecznie wykonać w skończonym czasie). 27 9
Maszyna Turinga Dane wyjściowe 0 0 0 1 1 0 1 0 0 28 zdefiniowany, aby maszyna mogła go skutecznie wykonać w skończonym czasie). 29 Maszyna Turinga 0 0 0 1 1 1 0 0 0 Skończony alfabet symboli Skończona liczba stanów głowicy Funkcja przejścia dla każdej pary: (przeczytany symbol, stan głowicy) 30 10
Maszyna Turinga 0 0 0 1 1 1 0 0 0 Skończona liczba stanów głowicy, np. Q = {0, 1} Skończony alfabet symboli, np. A = {0, 1} Funkcja przejścia dla każdej pary: (przeczytany symbol, stan głowicy) określa (zapisany symbol, (nowy) stan głowicy, kierunek przesunięcia głowicy) δ: Q x A Q x A x {>, <} 31 zdefiniowany, aby maszyna mogła go skutecznie wykonać w skończonym czasie). 32 Przykład Turing Machine Simulator http://ironphoenix.org/tril/tm/ 33 11
Przykład WE WY 1,_ 1,_,> 1,1 1,1,> 1,- 1,-,> 1,= 2,_,< 2,1 3,=,< 2,- H,_,< 3,1 3,1,< 3,- 4,-,< 4,_ 4,_,< 4,1 1,_,> Q = {1, 2, 3, 4, H} A = {1, -, =, _ } > przesunięcie głowicy w prawo < przesunięcie głowicy w lewo 34 Pojęcie obliczalności Maszyna Turinga, rachunek predykatów, rachunek λ,... Model obliczeń Algorytm kroki, dane: we- i wyjściowe, dobrze określony, skończony, wykonywalny... Pascal, C++, FORTRAN, LISP, PROLOG Język programowania 35 12