Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

1 HEINZ NIXDORF INSTITUT Universität Paderborn Algorithmen und Komplexität Einführung in Berechenbarkeit, Formale Sprachen und Komplexitätstheorie Wintersemester.

Ähnliche Präsentationen


Präsentation zum Thema: "1 HEINZ NIXDORF INSTITUT Universität Paderborn Algorithmen und Komplexität Einführung in Berechenbarkeit, Formale Sprachen und Komplexitätstheorie Wintersemester."—  Präsentation transkript:

1 1 HEINZ NIXDORF INSTITUT Universität Paderborn Algorithmen und Komplexität Einführung in Berechenbarkeit, Formale Sprachen und Komplexitätstheorie Wintersemester 2005/2006 12.12.2005 15. Vorlesung Christian Schindelhauer

2 Berechenbarkeit, Formale Sprachen, Komplexitätstheorie 15-2 HEINZ NIXDORF INSTITUT Universität Paderborn Algorithmen und Komplexität Christian Schindelhauer Berechenbarkeitstheorie für Fortgeschrittene Das Rekursionstheorem –Selbstreferenz –Das Theorem –Terminologie –Anwendungen Kolmogorov-Komplexität –Optimale Kompression –Zufall und Komprimierbarkeit

3 Berechenbarkeit, Formale Sprachen, Komplexitätstheorie 15-3 HEINZ NIXDORF INSTITUT Universität Paderborn Algorithmen und Komplexität Christian Schindelhauer Thesen 1.Lebewesen sind Maschinen. 2.Lebewesen können sich reproduzieren. 3.Maschinen können sich nicht reproduzieren. Wer werden zeigen: These 3 ist falsch! Wir zeigen: –Maschinen können sich vollständig reproduzieren –Maschinen können ihre eigene Beschreibung verwenden –Es gibt Maschinen, wenn man ihren Code quadriert, erhält man eine funktionsgleiche Maschine. –Es gibt Maschinen, wenn man ihre Beschreibung mit 217 multipliziert, erhält man eine funktionsgleiche Maschen. –Es gibt Maschinen, die in Spiegelschrift notiert die gleiche Funktionalität besitzen.

4 Berechenbarkeit, Formale Sprachen, Komplexitätstheorie 15-4 HEINZ NIXDORF INSTITUT Universität Paderborn Algorithmen und Komplexität Christian Schindelhauer Selbstreferenz - Vorbereitung Lemma –Es eine berechenbare Funktion q: * *, wobei für jedes Wort w q(w) eine Turing-Maschine P w beschreibt, die w ausgibt und hält. Beweis: –Konstruiere TM Q: –Q = Auf Eingabe w: 1.Konstruiere P w = Für jede Eingabe: 1.Lösche die Eingabe 2.Schreibe w auf das Band 3.Halte. 2.Gib aus.

5 Berechenbarkeit, Formale Sprachen, Komplexitätstheorie 15-5 HEINZ NIXDORF INSTITUT Universität Paderborn Algorithmen und Komplexität Christian Schindelhauer Die SELBST-Maschine Die SELBST-Maschine gibt eine Beschreibung von sich selbst aus. Wir konstruieren zwei TM-Teile A und B A = P, B = Auf Eingabe, wobei M ein Anfang eines TM-Programms ist 1.Berechne q( ) 2.Kombiniere das Ergebnis mit, um die TM zu vervollständigen 3.Berechne die Beschreibung der TM und halte Kombiniere Teile A und B Resultierende Maschine AB: A: –Produziert Maschinenbeschreibung von auf das Band B: –Findet Eingabe 1.B berechnet q( ) = P = A 2.Aus A wird AB 3.Aus AB wird Also ist das Ergebnis: –

6 Berechenbarkeit, Formale Sprachen, Komplexitätstheorie 15-6 HEINZ NIXDORF INSTITUT Universität Paderborn Algorithmen und Komplexität Christian Schindelhauer Selbst-Reproduktion in anderen Sprachen http://www.nyx.net/~gthompso/quine.htm C: char*f="char*f=%c%s%c;main(){printf(f,34,f,34,10);}%c"; main(){printf(f,34,f,34,10);} Java: –class S{public static void main(String[]a){String s="class S{public static void main(String[]a){String s=;char c=34;System.out.println(s.substring(0,52)+c+s+c+s.substring(52));}}";char c=34;System.out.println(s.substring(0,52)+c+s+c+s.substring(52));}} Pascal: –const a='const a=';b='begin write(a,#39,a,#39#59#98#61#39,b,#39#59#10,b) end.'; begin write(a,#39,a,#39#59#98#61#39,b,#39#59#10,b) end. Lisp: –((lambda (x) (list x (list (quote quote) x))) (quote (lambda (x) (list x (list (quote quote) x))))) Brainf**k (besser bekannt als Brainfuck): –>>+++++++>>++>>++++>>+++++++>>+>>++++>>+>>+++>>+>>+++++>>+>>++>>+>>++++++>>++>>++++>>+++++++>>+>>+++++>>+ +>>+>>+>>++++>>+++++++>>+>>+++++>>+>>+>>+>>++++>>+++++++>>+>>+++++>>++++++++++++++>>+>>+>>++++>>+++++++>> +>>+++++>>++>>+>>+>>++++>>+++++++>>+>>+++++>>+++++++++++++++++++++++++++++>>+>>+>>++++>>+++++++>>+>>+++++ >>++>>+>>+>>+++++>>+>>++++++>>+>>++>>+>>++++++>>+>>++>>+>>++++++>>+>>++>>+>>++++++>>+>>++>>+>>++++++>>+>> ++>>+>>++++++>>+>>++>>+>>++++++>>++>>++++>>+++++++>>+>>+++++>>+++++++>>+>>+++++>>+>>+>>+>>++++>>+>>++>>+> >++++++>>+>>+++++>>+++++++>>+>>++++>>+>>+>>++>>+++++>>+>>+++>>+>>++++>>+>>++>>+>>++++++>>+>>+++++>>++++++ +++++++++++++>>++>>++>>+++>>++>>+>>++>>++++>>+++++++>>++>>+++++>>++++++++++>>+>>++>>++++>>+>>++>>+>>+++++ +>>++++++>>+>>+>>+++++>>+>>++++++>>++>>+++++>>+++++++>>++>>++++>>+>>++++++[ >[>++++++[- >] [- >+ [- ]>] ++>] ] ] ] ] ].<]<<]

7 Berechenbarkeit, Formale Sprachen, Komplexitätstheorie 15-7 HEINZ NIXDORF INSTITUT Universität Paderborn Algorithmen und Komplexität Christian Schindelhauer Selbst-Reproduktion in DEUTSCH Hier nochmal die Konstruktion in der Programmiersprache DEUTSCH P w entspricht: –Schreiben Sie w. AB entspricht: –Schreiben Sie den folgenden Satz zweimal: Das erste Mal so; das zweite Mal in Anführungszeichen: Schreiben Sie den folgenden Satz zweimal: Das erste Mal so; das zweite Mal in Anführungszeichen: Also A = –Schreiben Sie den folgenden Satz zweimal: Das erste Mal so; das zweite Mal in Anführungszeichen: Und B = –Schreiben Sie den folgenden Satz zweimal: Das erste Mal so; das zweite Mal in Anführungszeichen:

8 Berechenbarkeit, Formale Sprachen, Komplexitätstheorie 15-8 HEINZ NIXDORF INSTITUT Universität Paderborn Algorithmen und Komplexität Christian Schindelhauer Das Rekursionstheorem Rekursionstheorem –Sei T eine TM, welche die Funktion t: * * berechnet. –Dann gibt es eine TM R, welche die Funktion r: * * * für alle w berechnet: r(w) = t(,w). Interpretation: –Für die Berechnung einer Funktion kann man eine TM finden, welche ihre eigene Kodierung mitverwenden kann. Achtung: –T weiß nicht (unbedingt), wie seine eigene Kodierung aussieht –R wird dahingehend konstruiert, dass die Kodierung zur Verfügung steht.

9 Berechenbarkeit, Formale Sprachen, Komplexitätstheorie 15-9 HEINZ NIXDORF INSTITUT Universität Paderborn Algorithmen und Komplexität Christian Schindelhauer Beweis des Rekursionstheorems Rekursionstheorem –Sei T eine TM, welche die Funktion t: * * berechnet. –Dann gibt es eine TM R, welche die Funktion r: * * für alle w berechnet: r(w) = t(,w). Beweis –Konstruiere eine TM R aus drei Programmteilen A,B und T (gegeben) –A = P mit der Funktionalität von q, wobei q eine TM baut, welche die Ausgabe an eine existierende Bandanschrift w anhängt –B = Lies das Band und wende q auf den mit einem Sondersymbol getrennten rechten Bandinhalt an Als Ergebnis wird > = rechts angehängt Kombiniere A, B, und T zu einer einzigen TM: = Kodiere diese Beschreibung zusammen mit w zu auf das Band Übergebe Kontrolle an T

10 Berechenbarkeit, Formale Sprachen, Komplexitätstheorie 15-10 HEINZ NIXDORF INSTITUT Universität Paderborn Algorithmen und Komplexität Christian Schindelhauer Anwendungen des Rekursionstheorems Computer-Viren –sind reproduzierende Programme –welche sich ohne Einfluss eines Benutzers selbst kopieren und ausbreiten. Computer-Viren leben das Rekursionstheorem –sie kennen ihre eigene Beschreibung –sie sind in der Lage Kopien von sich selbst zu schreiben

11 Berechenbarkeit, Formale Sprachen, Komplexitätstheorie 15-11 HEINZ NIXDORF INSTITUT Universität Paderborn Algorithmen und Komplexität Christian Schindelhauer Die Fixpunktversion des Rekursionstheorem Theorem –Sei t: * * eine beliebige berechenbare Funktion. –Dann gibt es eine TM F für welche t( ) eine TM beschreibt, die äquivalent zu F ist. –Hierbei beschreibt eine nicht korrekt kodierte TM eine TM, die immer verwirft. Beweis –Sei F die folgende TM: –F = Auf Eingabe w 1.Verwende die eigene Beschreibung möglich nach Rekursionstheorem 2.Sei = t( ) und die Beschreibung einer TM G 3.Simuliere G auf w –F und G sind äquivalent, da F auf Eingabe w die Maschine G simuliert. –Außerdem: t( ) = G

12 Berechenbarkeit, Formale Sprachen, Komplexitätstheorie 15-12 HEINZ NIXDORF INSTITUT Universität Paderborn Algorithmen und Komplexität Christian Schindelhauer Thesen 1.Lebewesen sind Maschinen. 2.Lebewesen können sich reproduzieren. 3.Maschinen können sich nicht reproduzieren. Wer haben gezeigt: These 3 ist falsch! Wir zeigen: –Maschinen können sich vollständig reproduzieren –Maschinen können ihre eigene Beschreibung verwenden –Es gibt Maschinen, wenn man ihren Code quadriert, erhält man eine funktionsgleiche Maschine. –Es gibt Maschinen, wenn man ihre Beschreibung mit 217 multipliziert, erhält man eine funktionsgleiche Maschen. –Es gibt Maschinen, die in Spiegelschrift notiert die gleiche Funktionalität besitzen.

13 Berechenbarkeit, Formale Sprachen, Komplexitätstheorie 15-13 HEINZ NIXDORF INSTITUT Universität Paderborn Algorithmen und Komplexität Christian Schindelhauer Information und Zufall Welche Sequenzen sind zufällig? Welche haben viel oder wenig Information? –000000000000000000000000000000000000000000000000000000 –010101010101010101010101010101010101010101010101010101 –101011001111010101011010101101010110101010111100110101 –011010100101100010111100011101010111000010111101100010 –100011010011010110100101010101101010000000000000000000

14 Berechenbarkeit, Formale Sprachen, Komplexitätstheorie 15-14 HEINZ NIXDORF INSTITUT Universität Paderborn Algorithmen und Komplexität Christian Schindelhauer Information und Zufall Bessere Beschreibungen: –000000000000000000000000000000000000000000000000000000 = 0 54 –010101010101010101010101010101010101010101010101010101 = (01) 27 –101011001111010101011010101101010110101010111100110101 = ww rev, für 101011001111010101011010101 –100011010011010110100101010101101010000000000000000000 = 1000w0ww(01) 5 10101 0 12, für w=11010 –011010100101100010111100011101010111000010111101100010 = ???? Gibt es nicht komprimierbare Binärfolgen?

15 Berechenbarkeit, Formale Sprachen, Komplexitätstheorie 15-15 HEINZ NIXDORF INSTITUT Universität Paderborn Algorithmen und Komplexität Christian Schindelhauer Wie wir kodieren Mit Hilfe eines größeren Alphabets kann man die Wortlänge weiter komprimieren. –z.B. 137913 = 100001101010111001 Um ein festes Maß der Beschreibungskomplexität zu finden, kodieren wir Turing-Maschinen und Eingaben binär wie folgt: –Sei 10110110...10 die Binärkodierung der TM M –Sei 01101011...010 das Wort w {0,1}* –Dann ist = 11 00 11 11 00 11 11 00... 11 00 01 01101011...010 Jedes Bit von wird verdoppelt –Aus 1 wird 11 –Aus 0 wird 00 Dann das Trennsymbol 01 eingefügt Dann wird w angehängt

16 Berechenbarkeit, Formale Sprachen, Komplexitätstheorie 15-16 HEINZ NIXDORF INSTITUT Universität Paderborn Algorithmen und Komplexität Christian Schindelhauer Beschreibungskomplexität Definition Definition –Sei x eine binäre Zeichenkette –Die minimale Beschreibung d(x) von x ist –die kürzeste binäre Zeichenkette, wobei M eine TM ist und M auf Eingabe w hält und x auf das Band schreibt. –Die Beschreibungskomplexität (Kolmogorov-Komplexität oder Kolmogorov-Chaitin-Komplexität) ist definiert als K(x) = |d(x)|

17 Berechenbarkeit, Formale Sprachen, Komplexitätstheorie 15-17 HEINZ NIXDORF INSTITUT Universität Paderborn Algorithmen und Komplexität Christian Schindelhauer Beschreibungskomplexität: Beispiel Definition –Sei x eine binäre Zeichenkette –Die minimale Beschreibung von x ist d(x) –die kürzeste binäre Zeichenkette, wobei M eine TM ist und M auf Eingabe w hält und x auf das Band schreibt. Die Beschreibungs-Komplexität ist definiert als K(x) = |d(x)|

18 Berechenbarkeit, Formale Sprachen, Komplexitätstheorie 15-18 HEINZ NIXDORF INSTITUT Universität Paderborn Algorithmen und Komplexität Christian Schindelhauer Aufwärmübungen Theorem –Die Beschreibungskomplexität einer Zeichenkette ist höchstens um eine Konstante größer als die Länge der Zeichenkete, d.h. – c N: x {0,1}*: K(x) |x| + c Beweis –Betrachte TM M = Auf Eingabe w: kopiere w auf das Ausgabeband halte –Sei die Beschreibung von M mit der Länge k=| | –Dann ist eine Beschreibung von x. –| | = 2k + 2 + |x| –Nun ist 2k+2 eine Konstante die wir c nennen. –Die kürzeste Beschreibung von x hat also höchstens die Länge |x|+c.

19 Berechenbarkeit, Formale Sprachen, Komplexitätstheorie 15-19 HEINZ NIXDORF INSTITUT Universität Paderborn Algorithmen und Komplexität Christian Schindelhauer Die Beschreibungs-Komplexität ist nicht berechenbar Theorem –Die Beschreibungs-Komplexität ist nicht berechenbar. Zum Beweis benötigen wir folgendes Lemma: Lemma –Angenommen, die Beschreibungs-Komplexität ist berechenbar. Dann gibt es eine TM M, die auf Eingabe n ein Wort x mit Beschreibungskomplexität n ausgibt, wenn so ein Wort existiert. Beweis –Betrachte folgende TM B B = Auf Eingabe n: Für t=1,2,3,...: Für jede TM M und jedes Wort w mit | | = n: Simuliere M auf Eingabe w für t Schritte. Falls M hält innerhalb von t Schritten hält, Sei x die Ausgabe Berechne K(x) Falls K(x) = n, halte und gib x aus

20 Berechenbarkeit, Formale Sprachen, Komplexitätstheorie 15-20 HEINZ NIXDORF INSTITUT Universität Paderborn Algorithmen und Komplexität Christian Schindelhauer Die Beschreibungs-Komplexität ist nicht berechenbar Theorem –Die Beschreibungs-Komplexität ist nicht berechenbar. Beweis –Angenommen, K(x) ist berechenbar. –Lemma (der letzten Seite) sagt: Dann gibt es eine TM M, die auf Eingabe n ein Wort x mit Beschreibungskomplexität n ausgibt. –Betrachte folgende TM R, R = Auf Eingabe w, Schreibe 2|w| auf das Band. Simuliere M auf n= 2|w| Gib x aus. –Da M x ausgibt, ist die Beschreibungskomplexität von K(x)=2|w| –Mit Hilfe von R kann man aber x auch so beschreiben: | | = |w| + 2 + 2 –Falls |w| > 2+2| | ist aber | | < K(x) Es gibt dann eine kürzere Beschreibung als die kürzeste Beschreibung Ein Widerspruch.

21 Berechenbarkeit, Formale Sprachen, Komplexitätstheorie 15-21 HEINZ NIXDORF INSTITUT Universität Paderborn Algorithmen und Komplexität Christian Schindelhauer Eigenschaften der Beschreibungskomplexität Theorem – c N: x,y {0,1}*: K(xy) 2K(x) + K(y) + c Beweis: –Betrachte minimale Beschreibung für x: –und minimale Beschreibung für y: –Ersetze in jede 0 durch 00 und jede 1 durch 11 Sei > das Ergebnis –Betrachte z = > 01 und die TM R: –R = Auf Eingabe z = >01 Simuliere M auf Eingabe w und Simuliere M auf Eingabe w Gibt konkateniertes Ergebnis aus –Die Komplexität dieser Beschreibung ist: 2| | + 2+ 2 K(x) + 2+ K(y) 2K(x)+K(y) + c für c= 2| | + 4

22 Berechenbarkeit, Formale Sprachen, Komplexitätstheorie 15-22 HEINZ NIXDORF INSTITUT Universität Paderborn Algorithmen und Komplexität Christian Schindelhauer Eigenschaften der Beschreibungskomplexität Theorem – c N: x,y {0,1}*: K(xy) 2K(x) + K(y) + c kann verbessert werden zu: Theorem – c N: x,y {0,1}*: K(xy) K(x) + K(y) + 2 log |x| + c Es gilt aber nicht: –K(xy) K(x) + K(y) + c Warum?

23 Berechenbarkeit, Formale Sprachen, Komplexitätstheorie 15-23 HEINZ NIXDORF INSTITUT Universität Paderborn Algorithmen und Komplexität Christian Schindelhauer Universalität der Beschreibungskomplexität Definition –Sei K p (x) die Beschreibungskomplexität bezüglich eines Maschinenmodells p, welches jede Berechnung einer Turing-Maschine berechnen kann. Theorem –Für jedes Maschinenmodell p gilt: c N: x {0,1}*: K p (x) K(x) + c Beweis –Betrachte TM U, die auf Eingabe von TM M und Wort w kodiert als das Ergebnis M(w) berechnet –Sei V die Maschine im Maschinenmodell p, die U berechnet. –Sei die minimale Beschreibung von x –Dann ist > auch eine Beschreibung von x aber in p. –Es gilt: | | = 2| | + 2 + K(x) K(x) + c für c = 2| | + 2

24 24 HEINZ NIXDORF INSTITUT Universität Paderborn Algorithmen und Komplexität Heinz Nixdorf Institut & Institut für Informatik Universität Paderborn Fürstenallee 11 33102 Paderborn Tel.: 0 52 51/60 66 92 Fax: 0 52 51/60 64 82 E-Mail: schindel@upb.de http://www.upb.de/cs/schindel.html Vielen Dank Ende der 15. Vorlesung Nächste Vorlesung: Di. 13.12.2005 Nächste Zentralübung: Mi. 14.12.2005 Nächste Miniklausur:Mi.21.12.2005


Herunterladen ppt "1 HEINZ NIXDORF INSTITUT Universität Paderborn Algorithmen und Komplexität Einführung in Berechenbarkeit, Formale Sprachen und Komplexitätstheorie Wintersemester."

Ähnliche Präsentationen


Google-Anzeigen