teorie vy slitelnosti v ta o rekurzi
Download
Skip this Video
Download Presentation
Teorie vyčíslitelnosti – věta o rekurzi

Loading in 2 Seconds...

play fullscreen
1 / 21

Teorie vyčíslitelnosti – věta o rekurzi - PowerPoint PPT Presentation


  • 73 Views
  • Uploaded on

Teorie vyčíslitelnosti – věta o rekurzi. Živé organismy mají schopnost vlastní reprodukce, zatímco u neživých věcí tuto schopnost nepředpokládáme. Jaký je vztah mezi strojem a živým organismem?

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'Teorie vyčíslitelnosti – věta o rekurzi' - orrick


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
teorie vy slitelnosti v ta o rekurzi
Teorie vyčíslitelnosti – věta o rekurzi
  • Živé organismy mají schopnost vlastní reprodukce, zatímco u neživých věcí tuto schopnost nepředpokládáme.
  • Jaký je vztah mezi strojem a živým organismem?
    • Moderní biologie vyznává zásadu, že projevy života u organismů lze vysvětlit na principech mechaniky.
  • Přijmeme-li předpoklady, že
    • Živé organismy jsou stroje
    • Živé organismy jsou schopné reprodukce
    • Stroje nejsou schopné reprodukce
  • dostáváme logický paradox, který se zdá být způsobený první premisou.
teorie vy slitelnosti v ta o rekurzi1
Teorie vyčíslitelnosti – věta o rekurzi
  • Vycházíme z přesvědčení, že stroj nemůže vytvořit sám sebe už proto, že továrna na stroje musí být složitější než stroj, který se zde vyrábí.
    • Továrna vyrábějící auta, roboty či výtahy musí být složitější než její produkt (auto, robot, výtah), protože musí mít nejen plán výroby tohoto produktu, ale současně také zřejmě při jeho výrobě využívá dalších strojů a zařízení (a tedy mít i jejich detailní popis)
  • Takové uvažování ale není správné a ukážeme, že existují stroje, které jsou schopné reprodukce.
  • Pracujeme s Turingovými stroji, a proto vytvoříme Turingův stroj, který vytiskne svůj vlastní popis (kód).
teorie vy slitelnosti v ta o rekurzi2
Teorie vyčíslitelnosti – věta o rekurzi
  • Lemma: Lze vytvořit Turingův stroj Q realizující funkci q: ** tak, že pro libovolné w  *je q(w) je popis Turingova strojePw, který vytiskne w a zastaví se.
  • Stroj Pw tiskne slovo w
  • Stroj Q tiskne popis (kód) stroje Pw

???...

w

Pw

Pw

Q

Keslovuw vytvoř stroj Pw a vypiš jeho kód

w

Pw

teorie vy slitelnosti v ta o rekurzi3
Teorie vyčíslitelnosti – věta o rekurzi
  • Důkaz:
  • K libovolnému řetězci w  *lze sestrojit Turingův stroj Pw, který má w zabudováno ve svém kódu a po spuštění jej vytiskne.
  • Stroj Q je definován následovně:

Q = „Na vstupní slovo w:

1. Sestroj Turingův stroj Pw

Pw = „Na libovolný vstup:

1. Smaž vstupní slovo

2. Napiš na pásku slovo w

3. Zastav“

2. Vypiš .“

teorie vy slitelnosti v ta o rekurzi4
Teorie vyčíslitelnosti – věta o rekurzi
  • Konstrukce stroje „SELF“:
  • Turingův stroj SELF vytvoříme ve dvou krocích jako dva na sebe bezprostředně navazující stroje AaB tak, aby výsledkem práce stroje SELF bylo vytištění vlastního kódu = .
  • Nejprve se spustí stroj A, jehož cílem je vypsat kód stroje B, a naopak potom stroj B vypíše kód stroje A.
  • Vypsáním kódu získáme na pásce kód .
konstrukce stroje self
Konstrukce stroje „SELF“
konstrukce stroje self1
Konstrukce stroje „SELF“
konstrukce stroje self shrnut
Konstrukce stroje „SELF“ - shrnutí
  • Stroj SELF = AB je definován následovně:

A = P

B = „Na vstup , kde M je Turingův stroj:

1. Vytvoř q() % Turingův stroj tisknoucí

2. Zkombinuj q() a do jediného Turingova stroje

3. Vypiš kód výsledného stroje a zastav.“

A

(=P)

A

(=P)

B

B

funkce stroje self
Funkce stroje „SELF“
  • Stroj SELF funguje následujícím způsobem:

1. Nejprve běží stroj A, který vytiskne popis B(to jest ).

2. Zahájí činnost stroj B a přečte si z pásky svůj vlastní kód.

3. Stroj B vytvoří q()=A a zkombinuje jeho kód s kódem do jediného Turingova stroje (= ).

4. Stroj B vypíše výsledný kód a zastaví.

funkce stroje self1
Funkce stroje „SELF“
  • Je to jen teorie, nebo se to dá skutečně naprogramovat?
  • Příklad 1:

Vypiš tuto větu.

  • Řešení:

program ();

begin

listing (program); % vypiš soubor „program“

end

    • Problém: manipuluje se zdrojovým souborem
funkce stroje self2
Funkce stroje „SELF“
  • Příklad 2:

Vypiš tuto větu dvakrát tak, že podruhé bude v uvozovkách:

„Vypiš tuto větu dvakrát tak, že podruhé bude v uvozovkách:“

  • Lépe odpovídá chápání odvolávky kódu na sama sebe
  • Lépe koresponduje i s popsanou konstrukcí stroje SELF

Stroj B:Vypiš tuto větu dvakrát tak, že podruhé bude v uvozovkách:

Stroj A:“Vypiš tuto větu dvakrát tak, že podruhé bude v uvozovkách:“

  • Stroj A nejprve vytiskne popis B ( - věta v uvozovkách) a stroj B svůj vlastní popis zpracuje tak, že jej zkombinuje s již vytištěným textem (vytiskne před text v uvozovkách)
self v praxi
„SELF“ v praxi
  • Quine – počítačový program, který vypíše svůj vlastní kód

(Willard Van OrmanQuine – vlivný americký filozof; pojmenování použil Douglas R. Hofstadter )

program ( );

print(„program ( ); “);

print(„print(„program ( ); “);“);

.....

  • Naivní postup nás vede k nekonečné posloupnosti příkazů
  • Něco se musí vytisknout, k tomu potřebuji příkaz print( ) a potom nutně musím vytisknout tento příkaz print ( ) ...
quine
Quine
  • Řešení: dva stroje, kód v uvozovkách, sebereference, ...
  • Namísto neustálého opakování částí kódu použijeme proměnnou, do níž kód uložíme a potom vytiskneme obsah proměnné (sebereference)

f=„main(); beginprint(‘f=„‘, f, ‘ ”; ‘, f); end.”;

main();

beginprint(‘f=„‘, f, ‘ ”;‘, f);

end.

quine1
Quine
  • Možné technické problémy:
    • uvozovky, apostrofy, ...
      • lze snadno řešit použitím ASCII kódu
    • výsledný program nemá stejnou „strukturu“ (řádkování)
      • lze řešit vhodným použitím příkazů pro odřádkování ("\n")
  • Další info a příklady v mnoha programovacích jazycích:
      • http://www.nyx.net/~gthompso/quine.htm#languages
      • http://rosettacode.org/wiki/Quine
      • http://www.madore.org/~david/computers/quine.html
v ta o rekurzi
Věta o rekurzi
  • Věta (Kleene): Nechť T je Turingův stroj realizující funkci t:*x**. Potom existuje Turingův stroj R realizující funkci r:** tak, že pro každé w  *platí r(w) = t(,w).
  • K vytvoření Turingova stroje R, který si opatří svůj vlastní kód a potom jej využívá při výpočtu, stačí sestrojit stroj T, který dostává popis stroje jako zvláštní vstup.
  • Na základě výše uvedené věty tím získáme stroj R, který funguje stejně jako stroj T, ale již s automaticky doplněným popisem .
v ta o rekurzi1
Věta o rekurzi
  • Důkaz: - analogicky jako při konstrukci stroje SELF
  • Stroj A je definován jako q().Musíme ošetřit, aby tisk kódu nezničil vstupní slovo w, a proto pozměníme stroj A tak, aby tiskl až za slovo w.
  • Po skončení činnosti stroje A bude na pásce w

T

T

w

w

A

(=P)

A

(=P)

B

B

v ta o rekurzi2
Věta o rekurzi
  • Stroj B nyní prozkoumá pásku a aplikuje na ni funkci q. Jelikož q()=A, získáváme jeho kód, zkombinujeme jej s do kódu jediného stroje = .
  • Na pásku se zapíše řetězec wa řízení se předá stroji T.

T

T

w

w

A

(=P)

A

(=P)

B

B

v ta o rekurzi3
Věta o rekurzi
  • Význam věty o rekurzi: Turingův stroj může získat svůj vlastní kód a potom s ním pracovat
  • Užitečná vlastnost pro teorii – získá-li stroj svůj vlastní popis, může nejen vytisknout svůj kód (SELF), ale také zjistit počet stavů, sám sebe simulovat atd.
  • Používá se v důkazech
  • Na konstrukci, která byla použita ve výše uvedených důkazech, mohou být založeny i počítačové viry.
v ta o rekurzi vyu it
Věta o rekurzi - využití
  • Věta:Problém přijetí prázdného slova Turingovým strojem je algoritmicky nerozhodnutelný.
  • Důkaz:předpokládejme, že máme stroj D rozhodující problém přijetí prázdného slova

Sestrojíme stroj M následovně:

M = „Na libovolný vstup w:

1. Smaž vstup w

2. Získej svůj vlastní popis

3. Pusť D na vstup

4. Udělej opačné rozhodnutí než udělal stroj D. Jestliže D skončí

ve stavu accept, potom reject a naopak.“

Spustíme-li nyní M na vstup e, dělá přesný opak toho, než by dělat měl

podle stroje D, čímž dospíváme ke sporu.

v ta o rekurzi vyu it1
Věta o rekurzi - využití
  • Def:Nechť M je Turingův stroj, potom délkou popisu rozumíme počet symbolů potřebných k zapsání M.
  • Def:Mje minimální Turingůvstroj, jestliže neexistuje ekvivalentní Turingův stroj s kratším popisem.
  • Věta:Problém minimálního Turingova stroje je algoritmicky nerozhodnutelný.

MINTM={| M je minimální Turingův stroj}

v ta o rekurzi vyu it2
Věta o rekurzi - využití
  • Důkaz:Předpokládejme, že existuje M je Turingův stroj, který rozhoduje MINTM.
  • Sestrojíme Turingův stroj C tak, že

C = „Na vstup w:

1. Získej svůj vlastní popis

2. Generuj Turingovy stroje (gödelova čísla) a testuj je strojem M, dokud nenajdeš stroj D, jehož popis je delší než popis C

3. Simuluj činnost stroje D na vstup w.“

  • Jelikož M rozhoduje a posloupnost gödelových čísel je nekonečná, krok 2 skončí nalezením stroje D, který má delší popis než C.
  • V kroku 3 C simuluje D a je s ním tedy ekvivalentní.
  • Jelikož je popis C kratší než popis D, dostáváme spor s předpokladem, že D je minimální Turingův stroj.
ad