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

Slides:



Advertisements
Podobne prezentacje
Znaki informacyjne.
Advertisements

Instrukcje - wprowadzenie
Wprowadzenie do informatyki Wykład 6
Obserwowalność System ciągły System dyskretny
Imperatywne modele obliczeń Copyright, 2000 © Jerzy R. Nawrocki Wprowadzenie do.
Algorytmy – różne przykłady
Ludwik Antal - Numeryczna analiza pól elektromagnetycznych –W10
Liczby pierwsze.
Domy Na Wodzie - metoda na wlasne M
PROGRAMOWANIE STRUKTURALNE
1 mgr inż. Sylwester Laskowski Opiekun Naukowy: prof. dr hab. inż. Andrzej P. Wierzbicki.
1 Stan rozwoju Systemu Analiz Samorządowych czerwiec 2009 Dr Tomasz Potkański Z-ca Dyrektora Biura Związku Miast Polskich Warszawa,
Liczby Pierwsze - algorytmy
Ksantypa2: Architektura
Systemy operacyjne Copyright, 2000 © Jerzy R. Nawrocki Wprowadzenie do informatyki.
Systemy operacyjne Copyright, 2000 © Jerzy R. Nawrocki Wprowadzenie do informatyki.
ZBIÓR LICZB NATURALNYCH, DZIAŁANIA W ZBIORZE N
Podstawy informatyki Wirtotechnologia – Funkcje Grupa: 1A
PREPARATYWNA CHROMATOGRAFIA CIECZOWA.
Wstęp do interpretacji algorytmów
Zapis informacji Dr Anna Kwiatkowska.
UKŁADY SZEREGOWO-RÓWNOLEGŁE
Klasyfikacja systemów
Transformacja Z (13.6).
Kolejność wykonywania działań
Pytania konkursowe.
Algorytmy.
Iluzje matematyczne.
Wykonawcy:Magdalena Bęczkowska Łukasz Maliszewski Piotr Kwiatek Piotr Litwiniuk Paweł Głębocki.
POJĘCIE ALGORYTMU Pojęcie algorytmu Etapy rozwiązywania zadań
Technika Mikroprocesorowa 1
Technika Mikroprocesorowa 1
Wyrażenia algebraiczne
Raport z badań termowizyjnych – RECTICEL Rys. 1a. Rozdzielnia RS14 Temperatura maksymalna 35,27 o C Rys. 1b. Rozdzielnia RS14 (wizyjny) 3.
Wskazówki konkursowe.
Modele obliczeń i granice obliczalności Copyright, 1999 © Jerzy R. Nawrocki Wprowadzenie.
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.
Języki i automaty część 3.
Analiza wpływu regulatora na jakość regulacji (1)
Wskazówki konkursowe.
Dekompozycja Kalmana systemów niesterowalnych i nieobserwowalnych
1. Pomyśl sobie liczbę dwucyfrową (Na przykład: 62)
1. ŁATWOŚĆ ZADANIA (umiejętności) 2. ŁATWOŚĆ ZESTAWU ZADAŃ (ARKUSZA)
Obserwowalność i odtwarzalność
-17 Oczekiwania gospodarcze – Europa Wrzesień 2013 Wskaźnik > +20 Wskaźnik 0 a +20 Wskaźnik 0 a -20 Wskaźnik < -20 Unia Europejska ogółem: +6 Wskaźnik.
EcoCondens Kompakt BBK 7-22 E.
EcoCondens BBS 2,9-28 E.
Prezentacja Multimedialna
W2 Modelowanie fenomenologiczne I
Reprezentacja liczb w systemie binarnym ułamki i liczby ujemne
User experience studio Użyteczna biblioteka Teraźniejszość i przyszłość informacji naukowej.
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.
Obliczalność czyli co da się policzyć i jak Model obliczeń maszyna licznikowa dr Kamila Barylska.
Jak Jaś parował skarpetki Andrzej Majkowski 1 informatyka +
ZOSTAŃ SPORTOWYM KOKSEM SP 11 TYM KTÓRY OCZARUJE KOMISJĘ SĘDZIOWSKĄ.
Systemy dynamiczne 2014/2015Obserwowalno ść i odtwarzalno ść  Kazimierz Duzinkiewicz, dr hab. in ż. Katedra In ż ynierii Systemów Sterowania 1 Obserwowalność.
Działania w systemie binarnym
Kalendarz 2020.
Współrzędnościowe maszyny pomiarowe
Elementy geometryczne i relacje
Strategia pomiaru.
Wstęp do interpretacji algorytmów
Wstęp do programowania Wykład 1
Algorytmy, sposoby ich zapisu.1 Algorytm to uporządkowany opis postępowania przy rozwiązywaniu problemu z uwzględnieniem opisu danych oraz opisu kolejnych.
Rzecz o matematycznych początkach informatyki
POJĘCIE ALGORYTMU Wstęp do informatyki Pojęcie algorytmu
Zapis prezentacji:

Obliczalność czyli co da się policzyć i jak Nieobliczalność Model obliczeń :maszyna Turinga 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.

Problemy nieobliczalne Naukowcy badający pojęcie obliczalności: Kurt Gödel, Emil Post i Alan Turing dostrzegli problemy, których „nie da się rozwiązać” a dokładniej: „nie sposób rozwiązać algorytmicznie, za pomocą algorytmów dla maszyn cyfrowych”. Takie właśnie problemy nazywamy problemami nieobliczalnymi.

Problem stopu Jednym z najważniejszych zagadnień nieobliczalnych jest tzw. problem stopu czyli pytanie: „Czy istnieje uniwersalny algorytm-wyrocznia, który analizując symboliczne zapisy innych algorytmów oraz ich dane wejściowe, byłby w stanie odpowiedzieć jednoznacznie, i to w każdym analizowanym przypadku, CZY DANY ALGORYTM dla podanych danych wejściowych ZATRZYMA SIĘ, czy też będzie przetwarzał dane w nieskończoność?”. Alan Turing udowodnił, że nie istnieje taki algorytm. Problem stopu jest jednym z najbardziej znanych problemów nieobliczalnych.

„Trudne” problemy obliczalne Istnieje bardzo liczna grupa zagadnień, które mogą zostać rozwiązane, bo istnieją dla nich algorytmy, jednak w praktyce rozwiązanie tych problemów zajmuje astronomicznie dużo czasu. Czas potrzebny do wykonania algorytmu rośnie wykładniczo lub silniowo w stosunku do rozmiaru danych wejściowych.

„Trudne” problemy obliczalne – Algorytm Euklidesa Problem (NWD) Dla danych dwóch liczb naturalnych a i b znaleźć największą liczbę naturalną c, która dzieli bez reszty liczbę a i dzieli bez reszty liczbę b.   Rozwiązanie: Algorytm Euklidesa Wejście: a, b – liczby naturalne, których NWD poszukujemy Wyjście: NWD liczb a i b Lista kroków: K01: Dopóki a ≠ b wykonuj krok K02   K02: Jeśli a < b, to b := b – a w przeciwnym przypadku  a := a - b K03: Wypisz a K04: Zakończ

„Trudne” problemy obliczalne – Algorytm Euklidesa Analiza algorytmu: Ile razy nasz algorytm wykona główną pętlę? Załóżmy, że dane wejściowe nie przekraczają 230. Superkomputer wykonuje jeden obrót pętli w czasie jednej dziesięciomiliardowej sekundy. To daje 315361013 obrotów pętli rocznie. Przyjmijmy wariant pesymistyczny: a=1030, b=1. Pamiętając, że od Wielkiego Wybuchu minęło niespełna 14 miliardów lat, gdyby nasz komputer włączyć na początku Wszechświata i uruchomić tak napisany program na tych pesymistycznych danych… … do dziś wykonałby niespełna jedną dwudziestą niezbędnych obliczeń.

Q jest skończonym zbiorem stanów Maszyna Turinga Maszyną Turinga nazywamy siódemkę uporządkowaną MT = (Q, , , , q0, qACC, qREJ ), gdzie: Q jest skończonym zbiorem stanów  jest alfabetem wejściowym (nie zawierającym specjalnego symbolu pustego )  jest alfabetem taśmy ( oraz )  : Q ×   Q ×  × {L, R, S} jest funkcją przejścia q0 jest wyróżnionym stanem początkowym qACC jest wyróżnionym stanem akceptującym qREJ jest wyróżnionym stanem odrzucającym (qACC  qREJ )

Maszyna Turinga - mniej formalnie … pamięć nieskończona (obustronnie) głowica może poruszać się w prawo (R), lewo (L) lub stać w miejscu (S) q0 aktualny stan świadomości

Maszyna Turinga – działanie (obliczanie funkcji) … Wprowadzamy dane na taśmę (wszystkie pozostałe komórki pamięci są „wyblankowane”). f(x)=0

Maszyna Turinga – działanie (obliczanie funkcji) … 1 Wprowadzamy dane na taśmę (wszystkie pozostałe komórki pamięci są „wyblankowane”). f(x)=0

Maszyna Turinga – działanie (obliczanie funkcji) …  1 Wprowadzamy dane na taśmę (wszystkie pozostałe komórki pamięci są „wyblankowane”). f(x)=0

Maszyna Turinga – działanie (obliczanie funkcji) … 1 Wprowadzamy dane na taśmę (wszystkie pozostałe komórki pamięci są „wyblankowane”). f(x)=0

Maszyna Turinga – działanie (obliczanie funkcji) … 1 Wprowadzamy dane na taśmę (wszystkie pozostałe komórki pamięci są „wyblankowane”). Głowica wskazuje na początek danych wejściowych. f(x)=0

Maszyna Turinga – działanie (obliczanie funkcji) … 1 Wprowadzamy dane na taśmę (wszystkie pozostałe komórki pamięci są „wyblankowane”). Głowica wskazuje na początek danych wejściowych. Wykonujemy instrukcje programu. f(x)=0

Maszyna Turinga – działanie (obliczanie funkcji) … Wprowadzamy dane na taśmę (wszystkie pozostałe komórki pamięci są „wyblankowane”). Głowica wskazuje na początek danych wejściowych. Wykonujemy instrukcje programu. Na taśmie pozostaje tylko wynik. f(x)=0

Maszyna Turinga – działanie (obliczanie funkcji) … Wprowadzamy dane na taśmę (wszystkie pozostałe komórki pamięci są „wyblankowane”). Głowica wskazuje na początek danych wejściowych. Wykonujemy instrukcje programu. Na taśmie pozostaje tylko wynik. Głowica wskazuje na początek wyniku. f(x)=0

Maszyna Turinga – działanie (akceptowanie słowa) … Wprowadzamy dane na taśmę (wszystkie pozostałe komórki pamięci są „wyblankowane”). PALINDROMY

Maszyna Turinga – działanie (akceptowanie słowa) … a b Wprowadzamy dane na taśmę (wszystkie pozostałe komórki pamięci są „wyblankowane”). PALINDROMY

Maszyna Turinga – działanie (akceptowanie słowa) … a b Wprowadzamy dane na taśmę (wszystkie pozostałe komórki pamięci są „wyblankowane”). Głowica wskazuje na początek danych wejściowych. PALINDROMY

Maszyna Turinga – działanie (akceptowanie słowa) … a b Wprowadzamy dane na taśmę (wszystkie pozostałe komórki pamięci są „wyblankowane”). Głowica wskazuje na początek danych wejściowych. Wykonujemy instrukcje programu. PALINDROMY

Maszyna Turinga – działanie (akceptowanie słowa) … Wprowadzamy dane na taśmę (wszystkie pozostałe komórki pamięci są „wyblankowane”). Głowica wskazuje na początek danych wejściowych. Wykonujemy instrukcje programu. Taśma pozostaje pusta, zaś maszyna znajduje się w stanie akceptującym, gdy słowo należy do języka. PALINDROMY

Maszyna Turinga – działanie (akceptowanie słowa) … Wprowadzamy dane na taśmę (wszystkie pozostałe komórki pamięci są „wyblankowane”). Głowica wskazuje na początek danych wejściowych. Wykonujemy instrukcje programu. Taśma pozostaje pusta, zaś maszyna znajduje się w stanie akceptującym, gdy słowo należy do języka. Maszyna znajduje się w stanie odrzucającym, gdy słowo nie należy do języka. PALINDROMY

Problem stopu dla maszyny Turinga Pytanie: Czy możliwe jest stworzenie narzędzia, które dla dowolnego opisu maszyny Turinga M podanego na wejściu potrafi rozstrzygnąć, czy maszyna ta akceptuje ustalone dane wejściowe x? Założenie: Potrafimy skonstruować maszynę Turinga MR rozstrzygająca powyższy problem: MR(M,x) = {akceptuj jeśli M akceptuje x {odrzucaj jeśli M nie akceptuje x

Problem stopu dla maszyny Turinga Używając maszyny MR zdefiniujemy maszynę MO zwracającą wynik przeciwny niż maszyna MR MO(M,x) = {akceptuj jeśli MR odrzuca x {odrzucaj jeśli MR akceptuje x MO(M,x) = {akceptuj jeśli M nie akceptuje x {odrzucaj jeśli M akceptuje x Jak zachowa się maszyna MO na własnym kodzie? MO(MO,x) = {akceptuj jeśli MO nie akceptuje x {odrzucaj jeśli MO akceptuje x SPRZECZNOŚĆ!!! Nie da się skonstruować maszyny MR!

Maszyna Turinga, która liczy funkcję f(x)=2x+1. Przykład Maszyna Turinga, która liczy funkcję f(x)=2x+1. q0 0  qACC 1 S q0 1   q1 1 R q1 0   q1  0 R q1 1   q1  1 R q1    q2  1 L q2 0   q2  0 L q2 1   q2  1 L q2   qACC  R

Maszyna Turinga, która liczy funkcję f(x)=2x+1. Przykład Maszyna Turinga, która liczy funkcję f(x)=2x+1. q0 0  qACC 1 S q0 1   q1 1 R q1 0   q1  0 R q1 1   q1  1 R q1    q2  1 L q2 0   q2  0 L q2 1   q2  1 L q2   qACC  R … q0

Maszyna Turinga, która liczy funkcję f(x)=2x+1. Przykład Maszyna Turinga, która liczy funkcję f(x)=2x+1. q0 0  qACC 1 S q0 1   q1 1 R q1 0   q1  0 R q1 1   q1  1 R q1    q2  1 L q2 0   q2  0 L q2 1   q2  1 L q2   qACC  R … 1 q0

Maszyna Turinga, która liczy funkcję f(x)=2x+1. Przykład Maszyna Turinga, która liczy funkcję f(x)=2x+1. q0 0  qACC 1 S q0 1   q1 1 R q1 0   q1  0 R q1 1   q1  1 R q1    q2  1 L q2 0   q2  0 L q2 1   q2  1 L q2   qACC  R … 1 q0

Maszyna Turinga, która liczy funkcję f(x)=2x+1. Przykład Maszyna Turinga, która liczy funkcję f(x)=2x+1. q0 0  qACC 1 S q0 1   q1 1 R q1 0   q1  0 R q1 1   q1  1 R q1    q2  1 L q2 0   q2  0 L q2 1   q2  1 L q2   qACC  R … 1 q1

Maszyna Turinga, która liczy funkcję f(x)=2x+1. Przykład Maszyna Turinga, która liczy funkcję f(x)=2x+1. q0 0  qACC 1 S q0 1   q1 1 R q1 0   q1  0 R q1 1   q1  1 R q1    q2  1 L q2 0   q2  0 L q2 1   q2  1 L q2   qACC  R … 1 q1

Maszyna Turinga, która liczy funkcję f(x)=2x+1. Przykład Maszyna Turinga, która liczy funkcję f(x)=2x+1. q0 0  qACC 1 S q0 1   q1 1 R q1 0   q1  0 R q1 1   q1  1 R q1    q2  1 L q2 0   q2  0 L q2 1   q2  1 L q2   qACC  R … 1 q1

Maszyna Turinga, która liczy funkcję f(x)=2x+1. Przykład Maszyna Turinga, która liczy funkcję f(x)=2x+1. q0 0  qACC 1 S q0 1   q1 1 R q1 0   q1  0 R q1 1   q1  1 R q1    q2  1 L q2 0   q2  0 L q2 1   q2  1 L q2   qACC  R … 1 q1

Maszyna Turinga, która liczy funkcję f(x)=2x+1. Przykład Maszyna Turinga, która liczy funkcję f(x)=2x+1. q0 0  qACC 1 S q0 1   q1 1 R q1 0   q1  0 R q1 1   q1  1 R q1    q2  1 L q2 0   q2  0 L q2 1   q2  1 L q2   qACC  R … 1 q1

Maszyna Turinga, która liczy funkcję f(x)=2x+1. Przykład Maszyna Turinga, która liczy funkcję f(x)=2x+1. q0 0  qACC 1 S q0 1   q1 1 R q1 0   q1  0 R q1 1   q1  1 R q1    q2  1 L q2 0   q2  0 L q2 1   q2  1 L q2   qACC  R … 1 q1

Maszyna Turinga, która liczy funkcję f(x)=2x+1. Przykład Maszyna Turinga, która liczy funkcję f(x)=2x+1. q0 0  qACC 1 S q0 1   q1 1 R q1 0   q1  0 R q1 1   q1  1 R q1    q2  1 L q2 0   q2  0 L q2 1   q2  1 L q2   qACC  R … 1 q1

Maszyna Turinga, która liczy funkcję f(x)=2x+1. Przykład Maszyna Turinga, która liczy funkcję f(x)=2x+1. q0 0  qACC 1 S q0 1   q1 1 R q1 0   q1  0 R q1 1   q1  1 R q1    q2  1 L q2 0   q2  0 L q2 1   q2  1 L q2   qACC  R … 1 q1

Maszyna Turinga, która liczy funkcję f(x)=2x+1. Przykład Maszyna Turinga, która liczy funkcję f(x)=2x+1. q0 0  qACC 1 S q0 1   q1 1 R q1 0   q1  0 R q1 1   q1  1 R q1    q2  1 L q2 0   q2  0 L q2 1   q2  1 L q2   qACC  R … 1 q2

Maszyna Turinga, która liczy funkcję f(x)=2x+1. Przykład Maszyna Turinga, która liczy funkcję f(x)=2x+1. q0 0  qACC 1 S q0 1   q1 1 R q1 0   q1  0 R q1 1   q1  1 R q1    q2  1 L q2 0   q2  0 L q2 1   q2  1 L q2   qACC  R … 1 q2

Maszyna Turinga, która liczy funkcję f(x)=2x+1. Przykład Maszyna Turinga, która liczy funkcję f(x)=2x+1. q0 0  qACC 1 S q0 1   q1 1 R q1 0   q1  0 R q1 1   q1  1 R q1    q2  1 L q2 0   q2  0 L q2 1   q2  1 L q2   qACC  R … 1 q2

Maszyna Turinga, która liczy funkcję f(x)=2x+1. Przykład Maszyna Turinga, która liczy funkcję f(x)=2x+1. q0 0  qACC 1 S q0 1   q1 1 R q1 0   q1  0 R q1 1   q1  1 R q1    q2  1 L q2 0   q2  0 L q2 1   q2  1 L q2   qACC  R … 1 q2

Maszyna Turinga, która liczy funkcję f(x)=2x+1. Przykład Maszyna Turinga, która liczy funkcję f(x)=2x+1. q0 0  qACC 1 S q0 1   q1 1 R q1 0   q1  0 R q1 1   q1  1 R q1    q2  1 L q2 0   q2  0 L q2 1   q2  1 L q2   qACC  R … 1 q2

Maszyna Turinga, która liczy funkcję f(x)=2x+1. Przykład Maszyna Turinga, która liczy funkcję f(x)=2x+1. q0 0  qACC 1 S q0 1   q1 1 R q1 0   q1  0 R q1 1   q1  1 R q1    q2  1 L q2 0   q2  0 L q2 1   q2  1 L q2   qACC  R … 1 q2

Maszyna Turinga, która liczy funkcję f(x)=2x+1. Przykład Maszyna Turinga, która liczy funkcję f(x)=2x+1. q0 0  qACC 1 S q0 1   q1 1 R q1 0   q1  0 R q1 1   q1  1 R q1    q2  1 L q2 0   q2  0 L q2 1   q2  1 L q2   qACC  R … 1 q2

Maszyna Turinga, która liczy funkcję f(x)=2x+1. Przykład Maszyna Turinga, która liczy funkcję f(x)=2x+1. q0 0  qACC 1 S q0 1   q1 1 R q1 0   q1  0 R q1 1   q1  1 R q1    q2  1 L q2 0   q2  0 L q2 1   q2  1 L q2   qACC  R … 1 q2

Maszyna Turinga, która liczy funkcję f(x)=2x+1. Przykład Maszyna Turinga, która liczy funkcję f(x)=2x+1. q0 0  qACC 1 S q0 1   q1 1 R q1 0   q1  0 R q1 1   q1  1 R q1    q2  1 L q2 0   q2  0 L q2 1   q2  1 L q2   qACC  R … 1 q2

Maszyna Turinga, która liczy funkcję f(x)=2x+1. Przykład Maszyna Turinga, która liczy funkcję f(x)=2x+1. q0 0  qACC 1 S q0 1   q1 1 R q1 0   q1  0 R q1 1   q1  1 R q1    q2  1 L q2 0   q2  0 L q2 1   q2  1 L q2   qACC  R … 1 q2

Maszyna Turinga, która liczy funkcję f(x)=2x+1. Przykład Maszyna Turinga, która liczy funkcję f(x)=2x+1. q0 0  qACC 1 S q0 1   q1 1 R q1 0   q1  0 R q1 1   q1  1 R q1    q2  1 L q2 0   q2  0 L q2 1   q2  1 L q2   qACC  R … 1 qACC

Zadania Zadanie 1 Skonstruuj maszynę Turinga, która prawidłowo oblicza funkcję f(x) = 2x (kod argumentów – binarny; alfabet = {0,1}).   Zadanie 2 Skonstruuj maszynę Turinga, która prawidłowo oblicza funkcję f(x) = x + 1 Zadanie 3 Skonstruuj maszynę Turinga, która prawidłowo oblicza poniższe funkcje (kod argumentów – unarny; alfabet = {1}) f(x) = 0 f(x) = x+1 f(x,y) = x f(x,y) = x+y .

Zadania Zadanie 4 Napisz program na maszynę Turinga, który zastępuje w dowolnym tekście zbudowanym z liter A, B, C i D wszystkie literki A literką C. Na przykład, z tekstu BACA ma powstać BCCC. Zadanie 5 Napisz program na maszynę Turinga, który przenosi pierwszą literkę wyrazu zbudowanego z liter A, B, C i D z początku na koniec. Na przykład, z tekstu DAB ma powstać ABD. Zadanie 6 Napisz program na maszynę Turinga, który zbada czy wczytane słowo jest palindromem. (Palindrom – słowo brzmiące tak samo czytane od lewej do prawej i od prawej do lewej.)

Zadania Zadania dodatkowe:   Skonstruuj maszynę Turinga, która prawidłowo oblicza funkcję f(x) = 0 (kod argumentów – binarny; alfabet = {0,1}). Napisz program na maszynę Turinga, który podwaja każdy bit wejściowej liczby binarnej. Na przykład, z liczby 101 powinniśmy otrzymać 110011. Napisz program na maszynę Turinga, który odwróci kolejność bitów dowolnej liczby binarnej, tzn. z liczby 101100111 ma powstać 111001101.