Obliczalność czyli co da się policzyć i jak Model obliczeń maszyna licznikowa dr Kamila Barylska.

Slides:



Advertisements
Podobne prezentacje
Programowanie w PMC.
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.
Grażyna Mirkowska PJWSTK 15 listopad 2000
Algorytmika w szkole podstawowej
Filip Andrzejewski Remigiusz Chiluta
Techniki konstrukcji algorytmów
PROGRAMOWANIE STRUKTURALNE
ALGORYTM Co to jest algorytm?
Badania operacyjne. Wykład 2
Liczby Pierwsze - algorytmy
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.
Programowanie imperatywne i język C Copyright, 2004 © Jerzy R. Nawrocki Wprowadzenie.
Programowanie imperatywne i język C
Programowanie imperatywne i język C Copyright, 2004 © Jerzy R. Nawrocki Wprowadzenie.
Algorytmy.
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
LICZBY RZECZYWISTE PODZBIORY ZBIORU LICZB RZECZYWISTYCH
Algorytmy i algorytmika Opracowanie: Teresa Szczygieł
Wstęp do interpretacji algorytmów
Dr Anna Kwiatkowska Instytut Informatyki
Algorytmy Marek Pudełko
PODSTAWY PROGRAMOWANIA
ALGORYTMY Opracowała: ELŻBIETA SARKOWICZ
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
POJĘCIE ALGORYTMU Pojęcie algorytmu Etapy rozwiązywania zadań
Algorytmy.
PORZĄDEK WŚRÓD INFORMACJI KLUCZEM DO SZYBKIEGO WYSZUKIWANIA
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ł
Algorytmy i struktury danych
GIMNAZJUM nr 1 W BIERUNIU
Modele obliczeń i granice obliczalności Copyright, 1999 © Jerzy R. Nawrocki Wprowadzenie.
ALGORYTMY.
Jak tworzyć algorytmy.? Sposób krok po kroku..
Programowanie strukturalne i obiektowe
Algorytmy.
Przekazywanie parametrów do funkcji oraz zmienne globalne i lokalne
Lekcja organizacyjna Klasa III.
Na wysokościach myślenia jest sfera,
Algorytmika.
ALGORYTMY Co to jest algorytm ? Cechy algorytmu Budowa algorytmów
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 +
Obliczalność czyli co da się policzyć i jak Nieobliczalność Model obliczeń :maszyna Turinga dr Kamila Barylska.
opracowała: Anna Mikuć
ALGORYTMY-WPROWADZENIE. ALGORYTMY W ŻYCIU CODZIENNYM
Algorytmy – wprowadzenie
Wprowadzenie do programowania w Pascalu mgr inż. Agata Pacek.
Wstęp do interpretacji algorytmów
Wstęp do programowania Wykład 1
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.
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ł
Efektywność algorytmów
Zrozumieć, przeanalizować i rozwiązać
POJĘCIE ALGORYTMU Wstęp do informatyki Pojęcie algorytmu
Zapis prezentacji:

Obliczalność czyli co da się policzyć i jak Model obliczeń maszyna licznikowa dr Kamila Barylska

Wykład 1: Obliczalność. Maszyna licznikowa. Plan zajęć Wykład 1: Obliczalność. Maszyna licznikowa. Ćwiczenia 1: Programy na maszynę licznikową. Wykład 2: Maszyna Turinga. Problemy, których nie da się rozwiązać. Ćwiczenia 2: Programy na maszynę Turinga. Wykład 3: Liczące sieci Petriego. Ćwiczenia 3: Konstruowanie sieci liczących.

przepis = algorytm Co potrafimy policzyć? 2 · x + 3 · y Pytanie: Czy można wyliczyć wartość funkcji f(x,y)=2x+3y dla dowolnych danych wejściowych (czyli dowolnych liczb x i y)? Odpowiedź: Tak! Przepis na obliczenie funkcji f: pomnóż wartość x przez 2 pomnóż wartość y przez 3 dodaj do siebie wyliczone wcześniej wartości 2x oraz 3y 2 · x + 3 · y przepis = algorytm

Algorytm - przepis na sukces - skończony ciąg jasno zdefiniowanych czynności, koniecznych do wykonania pewnego rodzaju zadań. Algorytm ma przeprowadzić system z pewnego stanu początkowego do pożądanego stanu końcowego. Badaniem algorytmów zajmuje się algorytmika. Algorytm może zostać zaimplementowany w postaci programu komputerowego.

Jak radzić sobie z problemami? Etapy rozwiązywania problemów Sformułowanie zadania Określenie danych wejściowych Określenie celu, czyli wyniku Poszukiwanie metody rozwiązania, czyli algorytmu Przedstawienie algorytmu w postaci: opisu słownego listy kroków schematu blokowego języka programowania Analiza poprawności rozwiązania Testowanie rozwiązania dla różnych danych. Ocena efektywności przyjętej metody.

Gotowanie wody na herbatę Sprawdź czy w czajniku jest woda. Jeśli nie, nalej wody do czajnika. Postaw czajnik na ogniu. Czkaj aż woda się zagotuje. Zalej herbatę lista kroków schemat blokowy

Obliczalność Funkcja jest obliczalna, gdy istnieje efektywna metoda (algorytm), za pomocą której można obliczyć jej wartość dla dowolnego ciągu jej argumentów. Uwaga: Istnieją funkcje, które nie są obliczalne!

Obliczalność – teraz i w przyszłości Teza Churcha-Turinga nasze intuicyjne pojęcie obliczalności jest równoważne pojęciu obliczalności definiowanemu w terminach maszyn licznikowych (równoważnie: maszyn Turinga czy inhibitorowych sieci liczących). Co to znaczy? Wszystko co „da się policzyć”, teraz lub w przyszłości i na komputerach, które dopiero powstaną, da się policzyć z użycie maszyny licznikowej (odpowiednio: maszyny Turinga czy inhibitorowej sieci liczącej).

Maszyna licznikowa - wprowadzenie Maszyna licznikowa jest teoretycznym modelem komputera wykonującym programy tworzone w języku przypominającym prosty assembler. Funkcje obliczalne na maszynie licznikowej nazywamy funkcjami ML-obliczalnymi.

Maszyna licznikowa … nieskończona pamięć (składa się z rejestrów) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 nieskończona pamięć (składa się z rejestrów) licznik rozkazów (zawiera numer kolejnej instrukcji do wykonania)

Maszyna licznikowa - rejestry 3 2 5 7 1 4 6 8 9 10 11 12 13 14 15 16 17 18 … 3 2 5 7 … 1 4 6 8 9 10 11 12 13 14 15 16 17 18 rejestr może zawierać dowolnie dużą liczbę naturalną maszyna licznikowa może wykorzystać dowolnie wiele rejestrów wszystkie rejestry, poza skończoną liczbą zawierają wartość 0 zawartość rejestru o numerze n oznaczamy przez z[n] Przykład: z[3]=5

Maszyna licznikowa – lista instrukcji Kod instrukcji Kod adresów Oznaczenie Semantyka Uwagi n Z(n) z[n]:=0 licznik rozkazów zwiększ o 1 1 S(n) z[n]:=z[n]+1 2 (m,n) T(m,n) z[n]:=z[m] 3 (m,n,q) I(m,n,q) if z[m]=z[n] then goto q licznik rozkazów zwiększ o 1 gdy z[m]z[n], w przeciwnym przypadku umieść w nim q (n,m) = 2n(2m+1)-1 (n,m,q) = ((n,m),q)

Maszyna licznikowa – co potrafimy? zerowanie rejestru inkrementowanie (zwiększanie o jeden) zawartości rejestru przepisywanie zawartości jednego rejestru do drugiego porównywanie zawartości dwóch rejestrów i w przypadku zgodności skok do instrukcji o zadanym numerze

Jak wykonać proste operacje? z[1]=x Jak wykonać działanie: x+5? Operacja z[1] x S(1) (x+1) ((x+1)+1) (((x+1)+1)+1) ((((x+1)+1)+1)+1) (((((x+1)+1)+1)+1)+1)

Jak działa program? Przyjęta konwencja: argumenty wstawiamy na taśmę począwszy od rejestru pierwszego program rozpoczyna działanie, podczas którego może modyfikować zawartość dowolnych rejestrów po zakończeniu działania programu wynik znajduje się w rejestrze zerowym x y … 1 2 3 4 5 6 7 8 9 f(x,y) … 1 2 3 4 5 6 7 8 9

Jak wykonać proste operacje? Jak wykonać działanie: x+y? Musimy x razy dodać jedynkę do y (lub y razy dodać jedynkę do x). x+y x x y 0 1 2 3 4 5 6 7

Jak wygląda maszyna licznikowa? 4: T(2,0) x y 0 1 2 3 4 5 6 7

Jaką funkcję liczy następujący program? I(1,2,5) if z[1]=z[2] then goto 5 1 S(2) z[2]:= z[2]+1 2 S(3) z[3]:= z[3]+1 3 4 I(1,1,1) if z[1]=z[1] then goto 1 5 T(3,0) z[0]:= z[3]

Ćwiczenia

Ćwiczenia Ćwiczenie 2 Wykaż, że następujące funkcje są ML-obliczalne:

Ćwiczenia Ćwiczenia dodatkowe Napisz programy na maszynę licznikową obliczające następujące funkcje: f(x,y) = xy f(n) = n5 f(n) = n10 f(a,b,c,d,e,f,x) = ax5+bx4+cx3+dx2+ex+f f(n)=2n