[Playlisten] [Impressum und Datenschutzerklärung]

14.01 Turings Halteproblem


CC-BY-NC-SA 3.0

Tempo:

Anklickbares Transkript:

heuteso zu umgehen wie man Fehler findet man Fehler vermeidetwie man geschickter Weiseso programmiertdass man Fehlergar nicht erst einbautoder sich Fehler von selbst melden Punktich möchte etwas anfangen was er abstraktesjunges Halteproblemeine Perle aus der theoretischen Informatikübrigens Halteproblemeinen TuningamberühmterInformatikererwesentlich daran beteiligt die GeheimcodesderDeutschen im Zweiten Weltkrieg zu knacken zum Beispiel hat aber auchsehr viel getan in Richtung theoretische Informatikwar daseinfachstewas es das einfachste das übliche einfache mathematische Modell des Computers stammt von ihm wenn es irgendwo sind die Turingmaschineder Gedanke ist man hat einenTonbandauf den Daten gespeichert werden könneneine Maschinewirst du mein Spulen kann hin und hervorgegangenschreiben kann ?? lesen kann und dann hat man Zustandsautomatenderdas ganze steuertdie Turingmaschineeinfaches Modell für ein Computer falls es jemals sehen das es kein praktischer Computer aber hilft in der Mathematik einige Sachen zu beweisen ?? Computeronly habe jetzt dasthüringischeHalteproblemdas alte Problemist die Frage ob ein gegebenes Programmanhält sie kennen das von üblicher Softwarehin und wiederhängt die Software?? wird mit irgendeiner Aufgabe nicht fertig sie sagenlade folgende Dateioderfür diese oder jene Berechnung ausder Formatierungund was immer das Programm hängt und wird nicht fertig das wäre das Gegenteil von Haltendie Fragehier ist hält ein bestimmtes Programm an wir dieses Programm fertigoder läuft esunendlich lang weiter das übliche Beispiel für ?? die Langlauf das Programm gerne EndlosschleifeProgramm was in Endlosschleifehängthält nicht andann geht's bei dem Halteproblemanwenn man sagen könnteob ein Programm anhält hätte man schonnaht Fehlertag automatisch durchgeführtdarum geht's danach ?? dabeies ?? guckt man sich über bestimmte Programme anHerrn nicht alle möglichen Programme nicht sowas wie Microsoft Wordnicht sowas wie Firefox nicht ganz ?? Bezieher sehr Simpelprogrammewenn sie im Buch über die Richformategucken sehen Sie etwas andere Programme als ich das jetzt beschreibeich möchte dich möglichst billig haltenmöchte ich gerne Programmemir anguckendie eine Datei einlesen das soll mein Programm seinich auf Beistrich dass im Text das soll mein Programm sein das Programm soll eine Dateibeliebiger Längebeliebigen Inhalts einlesenund dann eine Zahl ausspuckendas istmeine Billigversion von Programmen die ich heute betrachten will an der Stellegesagt die übliche Literatur guckt sich andere Programme an das was ich mir ??Datei rein eine Zahl raus alle Programmeauf einer gegebenen Maschinenin eine gegebene Programmierspracheso genau sich anguckendie sie schreiben können all diese Programme möchte ich mein Kopf der Datei einnehmen und eine Zahlraus gebenzweidumme Beispiele dafür für solche Programme?? die kriegen was man damit machen könnte ?? ich könntedie Zahl der Bytesder Datei ausgebenFalls ich gucke gar nicht genau reinwas in der Datei steht?? Programm zählt einfach wie viel Bytes in der Datei drin sind und gibt diese Zahl aus wie ein ganzdummes Programm dieser Artanein anderes dummes Programm dieser Art wäre ich mal das mal als Flussdiagrammwäre folgendesStatelese die Datei ein das wäre dann ja eine Eingabeso auffasst?? einlesen?? Eingabe desFilmunter mache ich folgendesich prüfe die Längedieser Dateigrößer gleich zweiundvierzigBytes istFragezeichenTestanwenn das der Fall istKomma wird ergänzt wenn das der Fall istewigsieben ausundbin fertigwenndasnicht der Fall istsetzt sicheine Variable A auf dreizehnund geht dahin zurücksetze noch mal die Variable auf dreizehn gehe dein Zurücksetzen noch mal die Variable auf dreizehn und so weiter sofortin das Programm ist schon bisschenekliger ist Komma hängtin dieses Programm eine Datei siehtdie kürzer ist als zweiundsiebzig Byteswird es jene Endlosschleife hängen da untendas wäre auch ein erlaubtes Programmaus dieser Mengealler Programmeauf einer gegebenen Maschine in einer gegebenen SprachedieDateien einlesen und Zahlen ausgebennimmstwenn es was ausgeblendetdessen Zahl ausaber es ist nicht sicher das was das was ausgibtes gibt Fälle den dieses Programm hängt nicht hältden am Halsproblemanes gibt Fälle in denen dieses Programm nicht hält in denen esunendlich langearbeitetund ebennie was ausgehtin diesem Fall gibt es irgendwann das ?? was ausan?? vorstellen dass dieses Programm auchvernünftige Sachen machen könntendannkönnten vielleichtdie Zahl Pi auf drei Millionen Stellen nach dem Komma berechnenzu einem Programmwerdensie könnten ?? große Datenbank reinschmeißenund fragen wie viele Leutevon den Leuten in der Datenbanksind älter als fünfundsechzigund da mein Jahreseinkommenunter zwei tausend Euro und so weiteralso viele sinnvolle Programme lassen sich so auffassen sind ?? Dinge drin was ich aufgeschrieben habe sind zweinicht so richtig sinnvolle Programmedes mal sehen was will man sie passiereneinMann nimmt noch etwas weiteres an das es Beistrich die man nimmt an dass der Rechner das dies der dieses ausführt immer genug Speicher hat dieses Programm was da läuftsoll in der Lage sein wie lieb ich aber endlich vielimmer nur beliebig viel Speicher anzufordernkann sie sich so vorstellen ?? das Programm merkt auf ?? bin ich in mein vier Gigabyte am Endehaben ??dann gibt's die Meldung und sagt bitte jetzt gleich einmal in den nächsten Laden und wohl nochmals sinnigerweisestecken die Finger weit rein das Programm macht weiter heutige Software arbeitet so nichtabsurderweisevielleicht sogar ein bisschen aufwändigste zuzuschreibenandieses Programm sollimmer genug Speicher habenin demSinnewenn es mal nicht genug Speicher hat kann ich Ihnen angehen und neun Speicher kaufen und der Rechner soll das ?? auch beliebig viel Speicherfressen aus der Rechner soll jetzt nicht auf die Gigabyte beschränkt sein sondern wenn's nötig ist dann müssen eben aucheine hundert Million Terabyte gehentheoretisch alles gesehen das es schon bisschen hakelig an der Stellebeliebig viel Speicher darf ich nehmen solange es den endlich vielesdas man das ganzeerst mal einfachist aber danach auch ein Kritikpunktes es etwas abstrakter als man es in der Wirklichkeit hat Rechner mitmit beliebig viel Speicher wenn es denn nur endlich viel weiternunkommtder große Klimmzugvon Herrn Dueringbesteht im theoretischenBuch über theoretische Grammatik etwas anders nicht wundern wenn sich Nachschlagtypischerweise das etwas kompetenter verkauftdergroße Klimmzug ist der folgendewenn sie so ein Programm habenwelches auch immerist das ja auch wieder dieses Programm hier ist ja auch wieder eine Dateidas Kind sieben Sie einfachsich in den Programme Ordner angucken auf der Festplatte jedes Programm istals ?? als Datei oder sogar Sammlung von Dateien in ?? bei der letzten der Minister nimmtes als Sammlung von Dateien abgebildet war ?? zwar ein Verein Programm ist auch wieder eine Dateidas heißt ich könnte auchsolche Programmemit Programmen füttern das wäre auch möglich weil ein Programm eine Datei istneben sie ein Programmfüttern esdas Programm oder wenn sie ganz hart drauf sind sogar in dasselbe Programmund dann kommt eine Zahl rausdas wäre möglich mit diesen Programmen sie können diese Programme die ja für sichauch wieder Dateien sindin andere Programme von dieser Art reinsteckenundeines diesereinen ein Programm was sehr spannend wärewas es leider nicht gibt den Vergleich wäre eines das prüftob ein anderes Programm hältdass das Halteproblemlöstso ein Programm hätte ich gernedaes ist der Wunsch steht im Text der Wunsch istein Programm T folgender ArtProgramm wenn Sie so wollendas automatischaufhängendeSoftware prüftein Programmwiealsoich hab so ein Programm wie folgende Art hätte ich gerneschließt folgendes einIndex Nummer zweiessollte eine Dateieinlesenhaben?? etwas komplizierter es liest nicht nur einfachirgendein Programm einProgramm besondere Programme prüfensoll ?? für die Datei des Programmseines anderen Programms einlesen?? noch eine Eingabe dazuals was ist es eine Datei eines Programmsprogrammsgernenicht das andere Malund dahinter noch eine Eingabedateifür das ob dahinternoch eine Eingabedateifür dieses andere Programm eher dahinterEingabedateidiedas wird ja beides zusammen können Sie wenn Sie wollen's beides zusammen eine Datei kippenmüssen müssen vorsichtig seinmüsse davor verschreibenwie lang nicht weiter müsse der vorschreiben wie lang diese Datei istandamitdas Programm nachher diese beiden Bestandteile der Datei auseinanderhaltenkannKleinkram will ich nicht drauf eingehenalso das soll mein Programm P könnenals Eingabeerwartet eseine Dateiin der stehtam Anfang ein anderes Programmund dahinterdie Bytes kopiert von einer Eingabedateiund die Ausgabesoll seinZahl eins oder die Zahlen nulldie Programme die ich angucke soll ?? Zahlen ausgehen sie soll es soll die Zahl eins dieses Programm P soll die Zahl eins ausgebenwenndas Programm ehermit der Eingabe die anhältnicht hängtwenn es also funktioniertund es soll die Zahl null ausgebenes nicht funktioniertdas hängtsozusagennicht anhältdas in endlicher Zeitdas Programm eherin endlicher Zeit auf die Eingabe diekeine Antwort liefert sondernhängtmüsste jetzt nocheine mögliche Fusion dazuschreibendanndieses Programm was ich ja habe sollte eigentlich beliebige Dateien verarbeitenwas ist denn am Anfang nicht die Datei eines Programms steht sondern Müll müßig innerer Extrafall haben ?? gebeachtundneunzig aus wenn am Anfang Müll stehtoder gebe sogar weiterhin null aus dem Anfang bestehtBeistrich nicht zu kompliziert machen halt was dabei so ein Programm erträumt man sich wenn manSoftware automatisch testen willich möchte ein Programmdas ein anderes Programm einliestund eine Eingabedateifür das andere Programmvon mir dann sagtin endlicher Zeitwieder ?? Ausgabe habenmir dann sagt das andere Programm bei dieser Eingabe anhältoder ob es Probleme hat und nicht einhältwären automatischerTest für beliebigeProgrammestellt sich dann heraus okay so ein Programm kann es leider nicht gebenes gibt keinen universellenhalte Tester wenn Sie so wollenalso man erträumt sich sein automatischesPrüfprogrammdas mir sagen kann in endlicher Zeit sagen kannob ein gegebenesProgrammeiner gegebenen Eingabehängtoder nichtdass das Halteproblemlöstein Problem ist die Frage ob ein gegebenes Programm bei gegebener Eingabehältstellt sich leider heraus so ein Programm kann es nicht geben in dieserallgemeinen Form??um das zu sehenkann man eine ein weiteres Programm bauenwenn es das Stück ?? Textwenn es dieses Programm die universellen Tester gäbedann könnte man ein anderes Programm bauenvon dem anderenrelativ einfach sieht das dieses andere Programm einfach nicht klapptamfolgendes andere Programm könnte man Bauschreib das erwidert Flussdiagrammdas andere Programmes liestdas ?? all diese Programme machen es liest eine Datei eindiese Datei diedannsagt es die Variable A ist das Ergebniswenn ich das Programm P von ebendiesen universellen Tester mit folgendem füttereso diverse Tester erwartet er zwei Sachen hintereinanderin einer Datei ich füttere den mit folgendender Inhalt der Datei und dahinter schreibt noch mal den Inhalt der Datei sieht völligabsurd aus und sehen das ergibt gleichsind es bricht ?? bricht alles zusammen wenn man das veranstaltetdannals ich lese eine Datei ein was ich mache ich schreibe diese Datei zweimal miteinanderund übergebe dir mein Programm dieuniversellen Tester und merke mir das Ergebnisdas komisch aussieht mich nicht wundern ?? sie sind gleichKomma sondern Konzeption achtdas Ziel ist hier nicht etwas sinnvolles zu berechnen das Ziel ist nur zu zeigen dass es diesen universellen Test HP nicht gebenund etwa zwei glichaus B kommt janur raus oder eins rausin endlicher Zeitichprüfe ob A gleich eins istalsodieser Testersagt das es okaywenn der Test sagt es ist okayJahrgegen ein Endlosschleifewas das Endlosschleife sieht schön aus wenn der Tester ja sage ich in eine Endlosschleifeden sich einfach vor ?? ?? Befehl weiter zuan wenn der Tester sagt neindaes gibt ein Problemgebe ich irgend eine Zahl aus natürlich zwoundvierzigdenn Informatik hier und EndeRichard?? Klammer zu gesagt wenn sie in ein Buch über die Referate gucken oder Wikipedia gucken und Halteproblemsieht das etwas anders aus ?? versucht es so billig zu machen wies gehtdas ist mein Programm Punktwenn es dieses Programm regeltund das funktioniert das Programm Pangenommen das wäre so dann kann ich das Programm Q bauen auf diese Weise nicht die Militäreinsätzesind das Programm Kuk ist wieder von der gleichen Art wie die anderen Programmees liest was ein und gibt eine Zahl ausoder hängtalso genau von derselben Art wie die anderen Programmeund jetzt kommt der Kunstgriffvon Herrn Johann wie gesagt Pensionen und dersieht etwas anders aus etwas komplizierter als das was ich jetzt macheder Kunstgriff des folgender dieses Programm Qist ja auch wieder eine Dateidas heißt dieses Programmkönnte sich selbst einlesendieses Programm frisstDateienich füttere dieses Programmmit sich selbstdas ist das völlig absurde Idee ein Programm mit sich selbst zu füttern da das zeigt weiter nochmalsPunktPech für drei Programme mit sich selbst nehmen sie hier den Editorund dann öffnen Sieden Editorauch ?? ?? ist in Deutschland ineinfacherArsystemzwei tausend ??so jetzt aberes DorfgründungenKomma System zweiunddreißigkeine TextdateisondernDateidieL M N NahrungTexteder habe ihn doch öffnenich öffne Notepad Echse mit dem Editor Notepad Exceldas es beklagt abermögliches ist nur der Texte in ?? Texte geöffnetmit der sie von NSG Sie können ein Programmmit sich selbst aufmachen warum nicht im allgemeinen ist es ziemlich schwachsinnig wie hier?? hier dient es gleich alskomisches Beispielum zu zeigen dass das schief gehtdieses Programm hierwird eine Datei sein und was ich mache ich nehme diese Dateien und füttere die in das Programm reinund frage mich dannob dieses Programm endet wenn ich es mit sich selbst füttereoder nichtgroßeFrage bin ich Kuh dieses Programm Q mit sich selbst füttere endet das wurde nichtangenommen es endet Punkt was dann passiertangenommenendet heißt es hältbei Türenich ?? verschreiben hält das schöne angenommenes hältKomma sondern was dann passiert ?? angenommen es hält nicht wenn ich es mit sich selbst füttereeinervon diesen beiden Fällen muss ja auftretenentweder es hält oder selten ich wieder notwendiges mit sich selbst fütteresowenn es hältwenn es hältwas es dann passiertwenn dieses Programm hältSinnes kann nicht mit der Endlosschleifengeendet habenwerde es auch nicht entweder Endlosschleife es muss hier gelandet sein wenn es hält muss es hier gelandet sein und zwei wird sie ausgegeben habe ?? das heißtA muss ungleich eins gewesen seindas heißtdieser Test muss fehlgeschlagensein dieser Test hier muss gesagt habenwenn ich das Programm Qmit dem Programm kuhfütterehält es nichtswenn das Programm hält lerne iches muss so gewesen sein das es nicht hältdas haut irgendwie nicht gut hin?? sagen es ist schwarz daraus folgt ist es weiß das kann nicht sein wenn dieses Programm anhälthätte es zweiundvierzigausgegebenA hättegleich null sein müssen nicht gleich eins sein müssen A gleich null heißt aber dass dieser Test HPwenn ich frageob das Programm QQ rein ob das Programm ?? mit der Eingabe Q anhält dass der Tester gesagt hat das Programm nicht an mit anderen Wortenden Kuchen mit Eingabe Q anhält habe ich gelerntes ist nicht anders ein Widerspruch das kann nicht seinund sie an was passiertwenn man probiertokay dann hält es wohl nicht an ?? angenommenich füttere hier Kuhreihendieses Programm hält nicht ?? dann hätte ich hier in dieser Endlosschleifelanden müssen denn sonstwäre ich da also das letzte was dieses Programm tutwas hat das letzte was es auf Dauer tot ist die Endlosschleifewenn es nicht halten würdewenn dieses Programm nicht halten würde müsste sie in der Endlosschleife landenalso wäre A gleich einsalso hätte dieser Tester gesagtwenn ich das Programm Q kommt der Koran mit Kuh fütterehält es andie hätte eins geliefertder Test ?? gesagtQ von Q hält ansie in keinem von den beiden Fällenaus zehn?? kleines Problemeinen logischen Widerspruchdieses Programm Q kann es nicht gebenaus diesem WiderspruchdiesesProgrammkann es nicht gebenwas hätten wir einen großen Widerspruch produzierterinnert sich noch an an den Beweisdarum wozu zweikeinenBruch zweier natürlicher Zahlen ist das geht zu ähnlich meinem Tanne sei ein Bruch zweier natürlicher Zahlen stellt festauch nicht hindas istso ähnlichangenommenes gäbe so ein Programm Q stellen sie fest so hat nicht den Scan nicht funktioniert ?? zumindest kann es nicht von singen wenn ich es selbstin sich selbst eingebenwas gibt zumindest einen Fall in dem Hilfsprogrammnicht richtig funktionieren kannwenn es das Programm Q nicht geben kann?? das macht ja nun wirklich nichts Besonderes das Programm ist dies was ein Ruf an das Programm aufEndlosschleifeVerzweigungsausgabedes Programmcodes wirklich völlig billig wenn das Programm Q nicht geben kann dann kann es auch das Programm P nicht gebendas ist das einzige woran es scheitern kannals Google nicht geht kann es wenigePwar dieser universelle Testerob ein Programm haltanhältmit anderen Worten es gibt keinen solchen universellen Tester der sagen kann ob ein beliebigesProgrammbei einer beliebigen Eingabe anhältdazu können zumindest einen Fall konstruieren bei dem es schief gehtdaszeigt dass dieses Halteproblemfieser ist als man sich so vorstellen kann ??es gibt keine universellen Testeran?? muss aber bisschen vor Versand das zu interpretieren ?? System theoretische Informatikzwei Randnotizenzur Interpretationdieses Resultattypischerweiseverkauftund es gibt keine Jones universell zu testenander Garten wir wollen im allgemeinen auch nichtuniversell testendennwie es dastehtwie das jetzt gebautes müsste Palso P mussbeliebig komplexebeliebigkomplexeProgramme verarbeitenbeliebig komplexeProgramme verarbeiten beliebig langbeliebigtief verschachtelteSchleifenverschachtelte Hilfs?? ich immer nur endlich trotzdemabervon mir ausüber zehn Millionen weil ineinander verschachtelt müsste B verarbeiten muss beliebig konvexe Programme verarbeitenwenn ich das eingeschränktegilt dieses Argument nichtwas passiert wenn ichmich einschränkekann man sich fragen was passiertFannurbestimmte Längen erlaubt sindnur Programmebis ein Kilobyteswas ist wenn nur bestimmte Konstrukte erlaubt sindhaben?? Bindestrich Längen erlaubt sinddenkenerlaubtsindund so weiterwas ist wenn ich das einschränkedass das Programmdass die Programme die verarbeitet werden müssen von diesem Tester nicht beliebig komplexedann bricht dieses Argument zusammenalso da vorsichtig seinund das andere ?? vor sich sein muss dass Babys jetzt gebaut ist mussexakte Resultate liefernja oder nein muss die Antwort seinmuss exaktesResultat liefernanwas passiertwenn man mit neunundneunzig %iger Wahrscheinlichkeit zufrieden istdann durch das Argument schon wieder zusammenhatte dieses Argument von Herrn Duering sagt nicht sie könnenverbietet nicht das ein Tester bauen der neunundneunzig von hundert Fällen das richtige sagtdas will es nicht ausschließenwas ist ?? mit neunundneunzig Prozent wahrscheinlich gar zufriedenwennSie ein Programm vordas einfachmit trinken was darunter klingelt und sagt Vorsichtmal nach uin uin Rechtschreibprüfungdie Rechtschreibprüfungist wahrscheinlich sogar innur neunzig von hundert Fällenund weniger sogar noch weitere neun siebzig von hundert Fällen korrekt und trotzdem ist welcher Prüfung hilfreichdarüber gibt's ja bei dir sagt dieses Argument nicht dies Argument geht nurdurch wenn ich verlange dass dieses Programm dieser Test ein hundert Prozentimmer der Fälle funktioniertsobald ich das erlaube das in ein Prozent nicht funktioniert bricht das Argument zusammen wenn man in ??zufrieden istallerdingsist Acme nicht zu strenganein klassisches Resultatan zumTesten von Programmen zum automatischen Testen von Programmen kann ich automatischfeststellen ob ein Programm bei der gegebenen Eingabe anhält oder nichtgeht nicht universellaber eigentlichwolle das auch nicht universell seicht nur das ist doch verdammt schwierig ist und allgemein Texte zu schreibenimmerhin das zweiteses wird schon was komisches passiert man das anfängtnicht desto trotzhoffe das offensichtlich wenn ich Längenbeschränkungeneinbauehabe ich eine Chancewenn ich und andere Kapazitätsbeschränkungeneinordnen schon wenn ichjuristische Verfahren habedie einfach nur typische Fehler rauspicken?? dann eben nicht mit hundert Prozent wahrscheinlich ganz sagen nicht exakt sagen ob ich Problem habe sondern mir nur andeuten das irgendein Problem sein könnte dann halt auchalsomindestens zwei Körnchen Salz bei diesem theoretischen Resultat