PDF-Datei - Mathematik und Informatik
PDF-Datei - Mathematik und Informatik
PDF-Datei - Mathematik und Informatik
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
INHALTSVERZEICHNIS5 Unentscheidbare Probleme . . . . . . . . . . . . . . . . . 1175.1 Unlösbarkeitsgrade . . . . . . . . . . . . . . . . . . . . . 1175.2 CHOMSKY Grammatiken . . . . . . . . . . . . . . . . . . . 1205.3 Prädikatenlogik . . . . . . . . . . . . . . . . . . . . . . . 1286 Gr<strong>und</strong>züge der Komplexitätslehre . . . . . . . . . . . . . 1396.1 TIME- <strong>und</strong> SPACE-beschränkte Funktionen . . . . . . . . . 1396.2 Abstrakte Komplexitätsmaße . . . . . . . . . . . . . . . . 1546.3 P- <strong>und</strong> NP- entscheidbare Probleme . . . . . . . . . . . . . 157A Gr<strong>und</strong>lagen der Graphentheorie . . . . . . . . . . . . . 167A.1 Gr<strong>und</strong>begriffe . . . . . . . . . . . . . . . . . . . . . . . . 167A.2 Subgraphen <strong>und</strong> Homomorphismen . . . . . . . . . . . . . 172A.3 Pfadprobleme . . . . . . . . . . . . . . . . . . . . . . . . 174A.4 Markierte <strong>und</strong> gefärbte Graphen . . . . . . . . . . . . . . . 177B Literaturempfehlungen . . . . . . . . . . . . . . . . . . . 181Literaturverzeichnis . . . . . . . . . . . . . . . . . . . . . . . 183Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1876
Vorwort der Herausgeber7
Vorwort des AutorsDer Bitte des Verlages, den vorliegenden Band des Handbuches der<strong>Informatik</strong> zu übernehmen, bin ich anfänglich nur sehr zögerlich gefolgt.Zunächst sah ich die Schwierigkeit, die mathematischen Gr<strong>und</strong>lagen vonden mathematischen Werkzeugen der <strong>Informatik</strong> zu trennen. Eine auchnur annähernd erschöpfende Behandlung der mathematischen Werkzeugedes <strong>Informatik</strong>ers hätte den Rahmen diese Bandes gesprengt <strong>und</strong> hätteauch außerhalb meiner Kompetenz gelegen. Ich mußte mich daher aufdie eigentliche mathematische Gr<strong>und</strong>lage der <strong>Informatik</strong> beschränken,die Theorie der Berechenbarkeit. Diese ist aber hinreichend in einerFülle von Lehrbüchern dargestellt. Wodurch sollte sich die Darstellungin diesem Band von ihnen unterscheiden?Hier kam mir die Intention des Handbuches entgegen, seinen Gegenstandmöglichst beweisfrei darstellen zu wollen. Natürlich ist esunmöglich, eine mathematische Theorie völlig beweisfrei darzustellen,ohne ins belanglose Plaudern zu geraten. Ein solches Buch wäre sinnlos.Was mir vorschwebte, war ein Buch, das einen nur an einem Überblickinteressierten Leser in die Lage versetzt, sich diesen zu verschaffen,indem er allzu detaillierte Ausführungen überliest, aber dennoch geeignetist, als Leitfaden für einen Studierenden zu dienen, der sich genauer mitder Theorie der Berechenbarkeit auseinanderzusetzen hat.Dies sind natürlich im Prinzip unvereinbare Ziele. Als Kompromißhabe ich versucht, die Theorie möglichst zwanglos zu entwickeln<strong>und</strong> dabei das übliche Schema . . . – Definition – Lemma – Beweis –Satz – Beweis – . . . zu vermeiden. Dennoch finden sich in dieser DarstellungDefinitionen <strong>und</strong> Sätze. Dies erscheint mir zur Darstellung einermathematischen Theorie unverzichtbar zu sein. Allerdings habe ichnach Möglichkeit versucht, Definitionen als Präzisierungen anschaulicherSachverhalte zu erarbeiten <strong>und</strong> Sätze als Zusammenfassungen vorhergegangenerÜberlegungen zu formulieren. Das kann natürlich nicht immergelingen. So erfordern viele Partien dieser Darstellung doch eine intensivereMitarbeit des Lesers. Auf der anderen Seite konnten allzu komplexeZusammenhänge oft nur sehr grob skizziert werden oder mußten ganzwegfallen. Für ein gründlicheres Studium sind diese an Hand der zitiertenLehrbücher zu ergänzen.Dennoch hoffe ich, daß dieses Buch dem einen oder anderen Leservon Nutzen sein wird.All denen, die mich bei der Abfassung dieses Textes direkt <strong>und</strong>indirekt unterstützt haben, sage ich hier herzlichen Dank. Dies sind insbesonderedie Mitarbeiter des Institutes für Mathematische Logik derUniversität Münster, die mir oft mit Rat zur Seite standen. Großen Anteil9
haben auch die Münsteraner Studierenden, die in den Einführungsvorlesungenzur theoretischen <strong>Informatik</strong> den hier dargestellten Stoff – inausführlicherer Form – kritisch aufgenommen haben. Ihrer Kritik verdankeich viele Verbesserungen.Mein besonderer Dank gilt Frau Sabine Melles, die die erste (nichtmathematische)Korrektur gelesen hat <strong>und</strong> Herrn stud. math. Martin Wabnik,der die Endfassung nochmals durchgesehen hat. Den Mitarbeiterndes Oldenbourg Verlages danke ich für ihre Unterstützung.Auch ich habe während der Abfassung des Textes etwas gelernt –einige der Geheimnisse der TEX- <strong>und</strong> LAT E X-Systeme. Das Buch wurdevollständig mit LAT E X erzeugt. Allerdings mußten sämtliche .sty<strong>Datei</strong>en (<strong>und</strong> einige LAT E X-Macros) verändert werden, um den Layout-Vorgaben zu genügen. Hier möchte ich mich bei der Systemgruppe unseresFachbereiches bedanken, die mich durch den Dschungel des hiesigen“file system” geleitet hat. Auch meiner Familie, insbesondere meinerFrau, möchte ich für die Geduld danken, die sie immer dann zeigten,wenn ich durch die Tücken des Systems wieder einmal völlig entnervtwar.Münster, im April 1993Wolfram Pohlers10
1. Vorbetrachtungender Traum von der Mechanisierbarkeit der Denkarbeit fort <strong>und</strong> beflügeltdie Forschung. Dank immer leistungsfähiger <strong>und</strong> schneller werdenderRechenanlagen scheint die endgültige Verwirklichung dieses Traumes inimmer greifbarere Nähe zu rücken.Daher erscheint es uns auch für den praktisch arbeitenden <strong>Informatik</strong>erwesentlich zu sein, über die prinzipiellen Grenzen der Mechanisierbarkeitmathematischen Arbeitens informiert zu sein.Es ist sicherlich kein Zufall, daß eine mathematische Theorie der Algorithmen,eben die Berechenbarkeitstheorie, erst in unserem Jahrh<strong>und</strong>ertentwickelt wurde, in dem der Glaube an die Existenz des allumfassendenAlgorithmus ins Wanken geriet. Erst jetzt versuchte man nachzuweisen,daß gewisse Probleme aus prinzipiellen Gründen nicht algorithmischlösbar sein können. Dies ist ein konzeptuell viel schwierigeres Unterfangen,als die Lösbarkeit eines Problems nachzuweisen. Im letzteren Fallhat man einfach einen Algorithmus anzugeben, was im Einzelfall schwierigsein mag, aber keine besondere Theorie der Algorithmen erfordert.Der Unlösbarkeitsbeweis läßt sich hingegen nicht durch Austesten allerAlgorithmen führen. Davon gibt es unendlich viele. Hier wird wirklicheine Theorie der Algorithmen benötigt.Die Entwicklung dieser Theorie ist ein Werk der letzten 70 Jahre. Die Geschichtedieser Entwicklung ist auf Gr<strong>und</strong> des geringen zeitlichen Abstandes daher nur äußerstunzuverlässig darzustellen. Eine Beurteilung der Quellen nach wissenschaftshistorischenGesichtspunkten steht unserer Kenntnis nach noch aus. Daher bitten wir, denfolgenden historischen Abriß mit der nötigen Vorsicht zu betrachten. Insbesonderekann keine Garantie dafür übernommen werden, daß die Prioritäten für die frühen Ergebnissehier richtig eingeordnet werden. Da dies nicht das eigentliche Anliegen diesesBuches ist, wäre die dazu erforderliche Literaturrecherche viel zu aufwendig gewesen.Wir folgen hier einfach der herrschenden Meinung. Eine wesentliche Quelle hierfürwar die von MARTIN DAVIS herausgebene Antologie [DAV64]. Eine exakte Aufhellungder historischen Entwicklung der Berechenbarkeitstheorie ist eine Aufgabe, die einemWissenschaftshistoriker vorbehalten bleiben muß.Als sicher anzusehen ist die enge Verzahnung der Berechenbarkeitstheoriemit der Entwicklung der mathematischen Logik. Im Vordergr<strong>und</strong>stand hier zunächst das Entscheidungsproblem, die Frage, ob sich dieHerleitbarkeit einer logischen Formel in einem Logikkalkül entscheidenläßt. Also wieder das Motiv der Ars Magna. Formalisierte Logikkalkülestanden zur Verfügung seitdem, beginnend mit dem Jahr 1910, BERT-RAND RUSSELLs [ ∗ 1872, †1970] <strong>und</strong> ALFRED N. WHITEHEADs [ ∗ 1861,†1947] Werk Principia Mathematica veröffentlicht wurde. Allerdingswar man sich zu diesem Zeitpunkt der Vollständigkeit dieser Kalkülenoch nicht sicher. Diese wurde erst im Jahre 1930 von KURT GÖDEL[ ∗ 1906, †1978] nachgewiesen. Doch bereits im Jahre 1915 erschien eineSchrift von LEOPOLD LÖWENHEIM [ ∗ 1878, †1957], in der er ein Ent-12
1.1. Historische Entwicklungscheidungsverfahren für ein Fragment der Prädikatenlogik angibt. DieseArbeit konnte 1923 von THORALF SKOLEM [ ∗ 1878, †1963] zu einem Beweisder Entscheidbarkeit eines Fragments der Logik erweitert werden,das wir heute als monadische Prädikatenlogik der ersten Stufe bezeichnen.Weitere positive Lösungen des Entscheidungsproblems wurden vonMOJEZESZ PRESBURGER [ ∗ 1904, †wahrscheinlich 1943 im WarschauerGhetto] (Entscheidbarkeit der Arithmetik mit der Addition als einzigemFunktionssymbol), ALFRED TARSKI [ ∗ 1901, †1983] (Entscheidbarkeitvon Formeln der Theorie reller Zahlen, die nur die Symbole + <strong>und</strong> ≤enthalten) sowie nochmals T. SKOLEM (Entscheidbarkeit der Arithmetikmit der Multiplikation als einzigem Funktionssymbol) erzielt.Der Begriff der Definition durch Rekursion scheint unter <strong>Mathematik</strong>ernder Jahrh<strong>und</strong>ertwende mehr oder minder explizit bekannt gewesenzu sein. DAVID HILBERT [ ∗ 1862, †1943] gibt in seiner Schrift “Über dasUnendliche” bereits einen allgemeinen Rekursionsbegriff an. Im Jahre1931 veröffentlicht K. GÖDEL in seinem Artikel “Über formal unentscheidbareSätze der Principia Mathematica <strong>und</strong> verwandter Systeme”seine berühmten Unvollständigkeitssätze. In dieser Arbeit klassifiziert erdiejenigen Funktionen als rekursiv, die wir heute als primitiv rekursiv bezeichnen(vgl. Abschnitt 3.1). RÓZSA PÉTER [ ∗ 1905, †1977] führt 1934in [PET34] den Terminus der primitiven Rekursion ein <strong>und</strong> untersuchtdie Abschlußeigenschaften der Klasse der im Sinne GÖDELs rekursiven(also im heutigen Sinne primitiv rekursiven) Funktionen gegenüberverschiedenen Formen der Rekursion, wie etwa Wertverlaufsrekursion,mehrfacher Rekursion etc. In ihrer Arbeit [PET35], die im Jahre 1935erscheint, zeigt sie, daß eine von WILHELM ACKERMANN [ ∗ 1896, †1962]bereits im Jahre 1928 angegebene <strong>und</strong> von ihr stark vereinfachte Funktionzwar berechenbar ist, jedoch nicht in der von GÖDEL beschriebenenKlasse liegen kann.In der Zeit von 1933-1934 hält sich GÖDEL im Institute for AdvancedStudies in Princeton, New Jersey auf. In einer Vorlesung im Jahre1934, unter deren Hörern sich ALONZO CHURCH [ ∗ 1903], STEPHEN C.KLEENE [ ∗ 1909] <strong>und</strong> JOHN B. ROSSER [ ∗ 1907, †1989] befinden, – dievon den beiden letztgenannten angefertigte Mitschrift der Vorlesung istin [DAV64] abgedruckt – geht er auf die ACKERMANNsche Funktionein <strong>und</strong> entwickelt den Begriff einer allgemeinrekursiven Funktion, wobeier sich auf Ideen stützt, die ihm, seinen eigenen Angaben nach,von JACQUES HERBRAND [ ∗ 1908, †1931] mündlich mitgeteilt wurden.A. CHURCH veröffentlicht im Jahre 1936 die Arbeit [CHUR36a], in derer seinen λ-Kalkül (vgl. Abschnitt 4.1) entwickelt, <strong>und</strong> zeigt, daß jedeallgemeinrekursive Funktion λ-definierbar ist. Diese Arbeit enthält auchdie These, daß jede berechenbare Funktion allgemeinrekursiv ist; sie13
1. Vorbetrachtungenist heute als CHURCHsche These (vgl. Abschnitt 3.7) bekannt. Er zeigtedarüber hinaus die Existenz eines algorithmisch unlösbaren Problems <strong>und</strong>erweiterte dies in der Note [CHUR36b], die ebenfalls 1936 erschien, zueinem Beweis der Unlösbarkeit des Entscheidungsproblems der Prädikatenlogik.Ebenfalls im Jahre 1936 erscheint KLEENEs Arbeit [KLEE36],in der er den GÖDEL-HERBRANDschen Ansatz analysiert <strong>und</strong> zu einerCharakterisierung rekursiver Funktionen gelangt, indem er die primitivrekursiven Funktionen gegenüber dem Suchoperator abschließt. (DieserAnsatz ähnelt daher dem, der hier im Abschnitt 3.6 präsentiert wird.)Diese Arbeit enthält bereits eine gut entwickelte Theorie. Man findet dasNormalformentheorem, der Begriff einer rekursiv aufzählbaren Mengewird eingeführt <strong>und</strong> KLEENE zeigt, daß die Menge der Indizes rekursiverFunktionen nicht rekursiv aufzählbar sein kann. Eine Abr<strong>und</strong>ung dieserErgebnisse findet man dann in der späteren Arbeit [KLEE43], in der auchder Begriff der partiellen Funktion explizit eingeführt wird.Unabhängig davon publiziert ALAN M. TURING [ ∗ 1912, †1954],ebenfalls im Jahre 1936, in [TUR36] seinen Ansatz zur präzisen Erfassungder Berechenbarkeit. Dort entwickelt er die Turingmaschine <strong>und</strong>kann nachweisen, daß turingberechenbare <strong>und</strong> λ-definierbare Funktionenübereinstimmen. Er zeigt die Unlösbarkeit des Halteproblems <strong>und</strong>überträgt dies auf die Unentscheidbarkeit der Prädikatenlogik. So erhälter unabhängig von CHURCH ebenfalls die Unlösbarkeit des Entscheidungsproblems.EMIL POST [ ∗ 1897, †1954] entwickelt unabhängig von TURING einenpraktisch identischen Ansatz. In Kenntnis der Arbeit CHURCHs veröffentlichter im Jahre 1936 die Arbeit [POST36], in der exakt die abstrakteMaschine beschrieben wird, die wir heute als Turingmaschine bezeichnen.Die Zeit bis zum Jahre 1936 kann demnach als die Periode angesehenwerden, in der der Begriff der intuitiven Berechenbarkeit seinemathematische Form erhalten hat. Die folgenden Jahre bringen die Befestigungder Theorie. So enthält die von KLEENE im Jahre 1943 publizierteArbeit “Recursive Predicates and Quantifiers” eine bereits völlig modernanmutende Darstellung der Berechenbarkeitstheorie. Er führt dortpartiellrekursive Funktionen ein <strong>und</strong> betrachtet bereits relativierte Rekursivität.Eine ähnliche Begriffsbildung findet sich auch in TURINGS Arbeit[TUR39], die 1939 erscheint <strong>und</strong> Turingmaschinen mit Orakeln betrachtet.Im Jahre 1947 zeigt POST, daß das Wortproblem für Halbgruppenunentscheidbar ist.Alle diese Untersuchungen waren sehr mathematisch motiviert –obwohl Forscher wie TURING durchaus auch den Bau von Rechenmaschinenim Sinn hatten. Wesentlichen Niederschlag in der Konstruktion14
1.2. Bedeutung der Berechenbarkeitstheorievon Rechenmaschinen fanden die Ideen der Berechenbarkeitstheorie inder Anregung JOHN V. NEUMANNs [ ∗ 1903, †1957], universelle Maschinenzu bauen. Dies kann als der Durchbruch in der Entwicklung zum modernenComputer angesehen werden. Neuere Entwicklungen der Theorie,wie sie sich beispielsweise in der Komplexitätslehre finden, sind bereitsviel stärker von Motiven geprägt, die aus der rechnergerechten Aufbereitungpraktischer Probleme stammen. Hier beobachtet man ein fruchtbaresWechselspiel zwischen Theorie <strong>und</strong> Praxis, vergleichbar dem, wiees sich zwischen <strong>Mathematik</strong> <strong>und</strong> Physik abspielt. Die Historie dieserEntwicklungen ist jedoch viel zu jung, als daß sie mit hinreichenderZuverlässigkeit hier dargestellt werden könnte.1.2 Bedeutung der BerechenbarkeitstheorieDie ersten wesentlichen Ergebnisse der Berechenbarkeitstheorie warennegativer Art, indem sie zeigten, daß gewisse Probleme, die mangerne mechanisch mit Hilfe von Algorithmen entschieden hätte, sich ausprinzipiellen Gründen so nicht entscheiden lassen. Insbesondere bedeutetedas, daß der Traum von der Ars Magna sich zumindest nicht globalverwirklichen läßt.Dieses Ergebnis darf man aber auf keinen Fall dahingehend interpretieren, daßdamit die Suche nach Algorithmen obsolet geworden wäre. Ganz im Gegenteil. Wirmüssen davon ausgehen, daß die Kollektion der Erkenntnisse, die von denkenden Menschengewonnen wird, eine im Sinne des Abschnitts 3.9 rekursiv aufzählbare Mengeist. Dies trifft zumindest für die in der <strong>Mathematik</strong> beweisbaren Sätze zu <strong>und</strong> läßt sichauf alle solche Erkenntnisse erweitern, die durch Folgern aus entscheidbaren Faktengewonnen werden können. Das bedeutet aber, daß ein Algorithmus existiert, der allediese Erkenntnisse erzeugt. Es gibt also keinen mathematischen Gr<strong>und</strong> dafür, daßnicht alles das, was von Menschen geleistet wird, nicht auch von einer Maschine zuleisten wäre. Allerdings fehlt der Maschine bis heute noch immer die selektive Fähigkeitdes Menschen, aus der Beurteilung von Ergebnissen <strong>und</strong> Zwischenergebnissenuninteressante Resultate zu unterdrücken <strong>und</strong> aussichtslose Wege gar nicht erst weiterzuverfolgen.Diese Situation erinnert etwas an die der frühen Schachprogramme, denenman auf Gr<strong>und</strong> ihrer Unfähigkeit, Stellungen zu beurteilen <strong>und</strong> somit aussichtslose Variantenvon vorneherein auszuschließen, keine wesentliche Steigerung der Spielstärkezugetraut hatte. Heute liegen aber Programme vor, die durchaus chancenreich gegenGroßmeister antreten können. Aus dieser Analogie läßt sich die Hoffnung schöpfen,daß eine ähnliche Entwicklung auch in anderen Bereichen erzielt werden kann. DieEntwicklung <strong>und</strong> Implementierung von Selektionsalgorithmen ist jedoch noch immereine Herausforderung der Zukunft, die hohe Ansprüche an die Kreativität der beteiligtenForscher <strong>und</strong> Entwickler stellen wird.Schon um zu verhindern, daß kostbare Zeit an die Lösung prinzipiellunlösbarer Probleme verschwendet wird, sollten die wesentlichsten15
1. VorbetrachtungenUnlösbarkeitsergebnisse daher auch dem praktisch arbeitenden <strong>Informatik</strong>erbekannt sein.An positiven Resultaten hat die Berechenbarkeitstheorie andererseitstiefe Einsichten in die Natur berechenbarer Funktionen geliefert.Hier ist unter anderem das Normalformentheorem des Abschnitts 3.8 zunennen, mit dessen Hilfe sich universelle Funktionen konstruieren lassen.Dies eröffnet die Möglichkeit der Konstruktion abstrakter universellerMaschinen, deren physikalische Realisierung, wie von V. NEUMANNangeregt, unsere heutigen Rechner sind.Die in der Berechenbarkeitstheorie entwickelten Methoden fandenin sehr weite Bereiche der <strong>Informatik</strong> Eingang. Dies wurde immer stärkerder Fall, je mehr sich die <strong>Informatik</strong> von einer “ad hoc Beschäftigung mitRechenmaschinen” zu einer von allgemeinen Prinzipien geleiteten Ingenieurwissenschaftentwickelte. Beispiele hierfür sind die Entwicklungeffizienter, benutzernaher Sprachen <strong>und</strong> deren Implementierung über abstrakteMaschinen.Die in der Berechenbarkeitstheorie entwickelten Methoden bildennatürlicherweise die Basis der theoretischen <strong>Informatik</strong>.Die äußerst befruchtende Wirkung der Berechenbarkeitstheorie aufdie mathematische Logik sei hier nur am Rande erwähnt.1.3 Ziel der DarstellungDer vorliegende Band soll einen Überblick über die Berechenbarkeitstheoriegeben. Dabei erlaubt es der dieser Darstellung gesteckteRahmen nicht, alle Ergebnisse in allen Details zu erarbeiten. Da die Darstellungeiner mathematischen Theorie ohne alle Begründungen jedochäußerst unbefriedigend bleiben muß, haben wir uns bemüht, die Theoriezumindest entlang ihrer Hauptlinien in groben Zügen zu entwicklen.In der Darstellung folgen wir nicht der historischen Entwicklung,sondern beginnen mit dem Ansatz von POST <strong>und</strong> TURING. Dazu stellenwir in Kapitel 2 zunächst ein abstraktes Maschinenkonzept vor <strong>und</strong>präzisieren den Begriff des Algorithmus als Steuerprogramm für eineabstrakte Basismaschine. Dies führt uns zur Klasse der maschinenberechenbarenpartiellen Funktionen. Turing- <strong>und</strong> registermaschinenberechenbareFunktionen sind Spezialfälle davon. Als wesentliches Konzeptwird die Simulation abstrakter Maschinen entwickelt. Dieses verwendenwir dann, um einzusehen, daß sich alle auf Registermaschinen berechenbarenFunktionen auch auf Turingmaschinen berechnen lassen.In Kapitel 3 verfolgen wir einen mehr mathematisch motiviertenAnsatz. Ausgehend von einfachen <strong>und</strong> sicherlich berechenbaren Gr<strong>und</strong>-16
1.3. Ziel der Darstellungfunktionen erhalten wir mit Hilfe der Gr<strong>und</strong>operationen Komposition <strong>und</strong>primitiver Rekursion die Klasse der primitiv rekursiven Funktionen. Wirstudieren deren wesentliche Eigenschaften <strong>und</strong> gelangen dann über eineGödelisierung dieser Funktionen zur Einsicht, daß diese Klasse nicht alleintuitiv berechenbaren Funktionen erfassen kann. Daher erweitern wirdie Gr<strong>und</strong>operatoren um den unbeschränkten Suchoperator <strong>und</strong> schließendann die Gr<strong>und</strong>funktionen gegenüber diesem erweiterten Operatorenbegriffab. Dies zwingt uns wieder, partielle Funktionen zu betrachten,<strong>und</strong> wir erhalten die Klasse der partiellrekursiven Funktionen. Wirüberzeugen uns dann, daß diese mit der Klasse der maschinenberechenbarenpartiellen Funktionen übereinstimmt. Dieser mathematisch stringenteZugang wird es uns erlauben, die wesentlichen Aussagen der Berechenbarkeitstheorie,wie das Normalformentheorem, das S m n -Theorem, denRekursionssatz u.a., zu entwickeln.In Kapitel 4 stellen wir dann den auf CHURCH zurückgehendenkombinatorischen Zugang vor. Wir entwickeln die Gr<strong>und</strong>begriffe des λ-Kalküls, diskutieren das CHURCH-ROSSER Theorem <strong>und</strong> führen schließlichden Begriff der λ-definierbaren Funktion ein. Auch hier können wirfeststellen, daß dies zu der bereits bekannten Klasse von Funktionenführt. Das Kapitel schließt mit einer knappen Einführung in die Theorieder λ-Kalküle mit Typen ein.In dem folgenden Kapitel 5 untersuchen wir als Anwendungsbeispielezwei Entscheidungsprobleme. Wir fragen erst nach der Lösbarkeitdes Wortproblems für CHOMSKY Sprachen <strong>und</strong> stellen dessen Unlösbarkeitfest. Wir gehen dann kurz auf Sprachen mit lösbarem Wortproblemein. Als zweites Beispiel studieren wir das Entscheidungsproblemder Prädikatenlogik. Wir skizzieren, wie dies auf das Halteproblem fürRegistermaschinen reduziert werden kann <strong>und</strong> folgern daraus dessenUnlösbarkeit.Die Darstellung endet in Kapitel 6 mit einem Abriß der Gr<strong>und</strong>lagender Komplexitätslehre, in der der Versuch gemacht wird, durch KomplexitätsbetrachtungenFunktionen nicht nur auf ihre theoretische, sondernauch auf ihre praktische Berechenbarkeit hin zu untersuchen.In einem Anhang stellen wir dann einige Gr<strong>und</strong>begriffe der Graphentheoriezusammen.17
2. Maschinenberechenbare FunktionenEines der Charakteristika eines Algorithmus besteht offensichtlich darin, Algorithmen <strong>und</strong>Maschinendaß die Rechenvorschrift, die durch ihn gegeben wird, nicht an die Intelligenzdes Rechnenden appellieren darf. Sie muß so gegeben sein, daßsie völlig mechanisch ausführbar ist. Damit eröffnet sich natürlich dieMöglichkeit, auch eine Maschine mit der Rechnung zu betrauen. Dieseswird der erste Weg sein, auf dem wir zu einer mathematisch präzisenDefinition der algorithmisch berechenbaren Funktion gelangen werden.2.1 Abstrakte MaschinenDie Mindestanforderungen an eine Rechenmaschine sind offenbardie folgenden:1. Eine Rechenmaschine benötigt einen Speicher, in dem sie Ergebnissespeichern kann.2. Eine Rechenmaschine muß über einen bestimmten Satz S von Modifikationsinstruktionenverfügen, die es erlauben, den Speicherinhalt zumodifizieren.3. Die Rechenmaschine muß darüber hinaus über einen Satz T von Testbefehlenverfügen, die es ihr erlauben, den Inhalt des Speichers zu überprüfen.4. Die Maschine benötigt Eingabefunktionen, die Daten aus D in , derMenge der Eingabedaten, in den Speicher einlesen <strong>und</strong> Ausgabefunktionen,die Speicherinhalte in Elemente von D out , der Menge der Ausgabedaten,transferien können.Die bislang beschriebenen Dinge stellen die Basisingredienzen für eineRechenmaschine dar, durch die ein Maschinentypus festgelegt wird.Sie charakterisieren eine Basismaschine, die wir formal folgendermaßeneinführen wollen.Definition 1 Eine abstrakte Basismaschine ist ein QuintupelB = (M, S, T , IN, OUT)mit folgenden Eigenschaften:1. M ist eine Menge, sie stellt die Menge aller Speicherinhalte dar.2. S ist eine Menge von Abbildungen S: M −→ M. Wir nennen S dieMenge der Modifikationsinstruktionen der Basismaschine.3. T ist eine Menge von Abbildungen T : M −→ {0, 1}. T ist die Men-AbstrakteBasismaschinen19
2. Maschinenberechenbare Funktionenge der Testinstruktionen. Dabei wollen wir sagen, daß der Test einesSpeicherinhaltes m ∈ M positiv verlaufen ist, wenn T (m) = 1 war,anderenfalls ist er negativ verlaufen.4. IN ist eine Abbildung, die jedem Datum d ∈ D in einen SpeicherzustandIN(d) ∈ M zuordnet.5. OUT ist eine Abbildung, die jedem Speicherzustand m ∈ M ein DatumOUT(d) ∈ D out zuordnet.Steuereinheit einerabstraktenBasismaschineSteuerprogrammefür abstrakteBasismaschinenFlußdiagrammeMit einer Basismaschine allein läßt sich allerdings noch nicht rechnen.Es fehlt noch eine Steuereinheit, die den Rechenvorgang in der Maschinesteuert. Wir wollen hier von der Vorstellung ausgehen, daß dieSteuereinheit die Maschine durch ein Programm steuert. Wir haben alsoden Begriff eines Programmes zu entwickeln. Ein Programm besteht ausAnweisungen. Wir unterscheiden dabei zwei Typen von Anweisungen.Einmal haben wir Modifikationsanweisungen von der Form (k, S, m),wobei k <strong>und</strong> m natürliche Zahlen sind <strong>und</strong> S ∈ S eine Modifikationsinstruktionist. Wir nennen k <strong>und</strong> m die Marken der Anweisung, wobei kdie Kenn- <strong>und</strong> m die Sprungmarke der Anweisung heißt. Zum anderenhaben wir Testanweisungen der Form (k, T, v, m), wobei T ∈ T eine Testinstruktionvon B ist <strong>und</strong> die Marken k, m, v wieder natürliche Zahlensind. Wir nennen k wieder die Kennmarke der Anweisung, während m dieSprung- <strong>und</strong> v die Verzweigungsmarke der Anweisung ist. Ein Programmist nun eine endliche Menge von Anweisungen zusammen mit einer ausgezeichnetenMarke k P , die die Startmarke des Programmes P heißt. Wirwerden daher Progamme oft in der Form P = (k P , A) notieren, wobeik P für die Startmarke <strong>und</strong> A für die endliche Menge der Anweisungensteht. Allerdings wollen wir die Schreibweise sehr liberal handhaben <strong>und</strong>oft einfach a ∈ P schreiben, wenn wir ausdrücken wollen, daß a eineAnweisung des Programmes P ist.Programme werden oft in Form von Flußdiagrammen angegeben.So wird beipielsweise das ProgrammP = (k P , {(k P , S 1 , n 1 ), (n 1 , T, v, m), (m, S 3 , n 2 ), (v, S 2 , n 3 )}) (2.1)durch das in Abbildung 2.1 - 1 gezeigte Flußdiagramm dargestellt. Formalsind Flußdiagramme markierte gerichtete Graphen (vgl. Anhang A). MitAusnahme der Start- <strong>und</strong> Endmarken, die als ausgezeichnete Knotenauftreten, werden die Programmarken durch unmarkierte Kanten, Befehledurch markierte Knoten repräsentiert. Die Abfolge von Kenn- <strong>und</strong>Sprung- bzw. Verzweigungsmarken wird durch die Richtung der Kantenangezeigt. Hier kommt die Eigenschaft von Programmen zum Ausdruck,daß ihre Wirkung bei (korrekter) Umbenennung von Marken nichtverändert wird. Man kann Programme als identisch betrachten, wenn sie20
2.1. Abstrakte MaschinenSTARTS1TJAS 2ENDNEINS3ENDAbb. 2.1 - 1: Beispiel eines Flußdiagrammesdurch die gleichen Flußdiagramme dargestellt werden, d.h. durch geeigneteUmbenennung von Programmarken auseinander hervorgehen. Dieswird sofort klar, wenn man sich von der anschaulichen Vorstellung leitenläßt, daß ein Programm die Steuereinheit (finite control) der Maschine beschreibt.Die Marken markieren dabei die endlich vielen Zustände, derereine Maschine fähig ist. Die Aktion der Maschine erfolgt in Abhängigkeitihres augenblicklichen Zustandes <strong>und</strong> des Speicherinhaltes. Die Startmarkemarkiert den Anfangszustand der Maschine, in dem sie sich nach demEinschalten befindet.Die formale Charakterisierung abstrakter Rechenmaschinen gibt die folgendeDefinition.Definition 2 Eine abstrakte Maschine C ist eine abstrakte Basismaschine Abstrakte MaschinenB zusammen mit einem Programm P für B. Wir notieren dies als C =(B, P ).Bei festgehaltener Basismaschine ist die abstrakte Maschine also durchihre Steuereinheit, d. h. durch ihr Programm bestimmt. Wir werden dahernicht immer zwischen der Maschine <strong>und</strong> dem Programm, das siebestimmt, unterscheiden.Haben wir eine abstrakte Maschine C vorliegen, so wollen wir denRechenverlauf in der Maschine beschreiben. Wesentlich dafür ist die21
2. Maschinenberechenbare FunktionenKonfigurationsraumeiner abstraktenMaschineDie Rechenschrittfunktioneinerabstrakten MaschineRechenschritt- oder ÜbergangsfunktionRS C , die einen Schritt in einemBerechnungsvorgang in C beschreibt. Die Rechenschrittfunktion arbeitetauf dem Konfigurationsraum der Maschine C. Der Konfigurationsraumder Maschine C mit Basismaschine B = (M, S, T , IN, OUT) ist der RaumK(C) := M(C) × M,wobei M(C) die Menge aller Marken des Programmes von C bedeutet<strong>und</strong> damit – intuitiv betrachtet – die Menge aller möglichen Zustände derMaschine beschreibt. Informal läßt sich die Wirkungsweise von RS C sobeschreiben, daß, ausgehend von der Konfiguration (k, z), im Programmnachgesehen wird, ob eine Anweisung mit der Kennmarke k vorhandenist. Ist dies der Fall <strong>und</strong> ist k Kennmarke einer Modifikationsanweisung(k, S, p), so wird der Speicherinhalt zu S(z) modifiziert <strong>und</strong> dieMaschine begibt sich in den Zustand p, d.h. es wird die Konfiguration(p, S(z)) angenommen. Liegt eine Testanweisung (k, T, p, q) vor, so wirdder Speicherinhalt nicht modifiziert, je nach Ergebnis der Testinstruktionwird jedoch der Zustand p oder q angenommen. Verläuft der Test positiv,so begibt sich die Maschine in den Zustand p, fällt er negativ aus, so wirdder durch die Sprungmarke markierte Zustand q angenommen. Formalerhalten wir also:RS C (k, z) :=⎧⎪⎨⎪⎩(p, S(z)), falls (k, S, p) ∈ C,(p, z), falls (k, T, p, q) ∈ C <strong>und</strong> T (z) = 1,(q, z), falls (k, T, p, q) ∈ C <strong>und</strong> T (z) = 0,(k, z), sonst.Die Rechenschrittfunktion ist natürlich nur dann eine Funktion im strengenSinne, wenn die Maschine deterministisch ist, d.h. wenn jede Anweisungim Programm durch ihre Kennmarke eindeutig bestimmt ist.Wir sprechen dann von deterministischen Programmen. Es ist durchaussinnvoll auch nichtdeterministische Maschinen zu betrachten. Wir werdendarauf zurückkommen. Im Augenblick wollen wir uns jedoch auf dieUntersuchung deterministischer Maschinen beschränken.Die Iteration der Rechenschrittfunktion definieren wir durch{RS n (k, z), falls n = 0,C (k, z) :=RS C (RS m C (k, z)), falls n = m + 1.Damit ist RS C n (k, z) die n-fache Anwendung von RS C auf (k, z).Die Abarbeitung eines Programmes erfolgt nun in der Weise, daß dieEingabe zunächst vermöge der Eingabefunktion IN in den Speicher gelesenwird. Dies ergibt die Startkonfiguration (k P , IN(d)), wenn k P dieStartmarke des Programmes P <strong>und</strong> d das Datum war, das eingegebenwurde. Dann wird die Rechenschrittfunktion so lange iteriert, bis eine22
2.1. Abstrakte MaschinenEndkonfiguration erreicht ist. Endkonfigurationen sind Konfigurationen Endkonfiguratitonender Form (e, z), in denen e eine Endmarke des Programmes ist, d.h. eineMarke von P , die selbst nicht wieder Kennmarke einer Anweisung in Pist. Endmarken markieren demnach Zustände der Maschine, von denenaus sie nicht mehr vernünftig weiterarbeiten kann <strong>und</strong> daher tunlichststoppen sollte. Mit E(C) notieren wir die Menge der Endkonfigurationendes Programmes der Maschine C.Wir wollen die Ein- <strong>und</strong> Ausgabefunktionen erst einmal außer acht lassen<strong>und</strong> uns auf die Vorgänge in der Maschine beschränken. Wir betrachtenzunächst die inneren Funktionen der Maschine. Die innere RechenzeitfunktionRZ C ordnet einem Speicherinhalt z ∈ M die Anzahl der Schritte Innerezu, um die die Rechenschrittfunktion iteriert werden muß, bis eine Endkonfigurationvorliegt. DasRechenzeitfunktionheißt:RZ C (z) := min{t| RS C t (k p , z) ∈ E(C)}.Wir bemerken hier, daß RZ C keine Funktion im üblichen Sinne ist. Dazubetrachten wir das Programm(k p , T, k p , k p )mit der Startmarke k p . Offensichtlich ist dies ein wohldefiniertes deterministischesProgramm. Allerdings besitzt es keine Endmarken. Damitkann dessen Rechenschrittfunktion niemals eine Endkonfiguration erreichen.Also ist die Rechenzeitfunktion nicht definiert. Es ist natürlichebenso leicht Programme anzugeben, deren Rechenzeitfunktion für gewisseSpeicherzustände definiert, für andere jedoch <strong>und</strong>efiniert ist. Wirstehen daher vor der Notwendigkeit, partielle Funktionen einzuführen,die nicht unbedingt auf ihrer gesamten Quelle definiert sind.Definition 3 Seien Q, Z Mengen <strong>und</strong> D ⊆ Q. Eine Abbildungf: D −→ Zheißt eine partielle Funktion mit Quelle Q <strong>und</strong> Ziel Z. Wir notieren diesalsf: Q −→ p Z.Die Menge D heißt der Definitionsbereich von f <strong>und</strong> wird üblicherweisemit dom(f) bezeichnet. D.h. dom(f) = {x ∈ Q| (∃y)[f(x) = y]}.Eine partielle Funktion heißt total, wenn dom(f) = Q ist, d. h. wenn ihreQuelle <strong>und</strong> ihr Definitionsbereich übereinstimmen.Oft ist es angenehm, sich partielle Funktionen f: Q −→ p Z als AbbildungenPartielle Funktionen23
2. Maschinenberechenbare Funktionen˜f: Q −→ Z ∪ {∞}vorzustellen, die durch˜f(z) :={f(z), falls z ∈ dom(f),∞, sonst,gegeben sind. Zwei partielle Funktionenf, g: Q −→ p Zsind als gleich anzusehen, wenn ˜f <strong>und</strong> ˜g übereinstimmen. Wir definierendaherf(z) ≃ g(z) :⇐⇒ ˜f(z) = ˜g(z),d.h.f(z) ≃ g(z)Schreiben wirf(x) ≃ u,⇐⇒ (z ∉ dom(f) ∧ z ∉ dom(g))∨ (z ∈ dom(f) ∩ dom(g) ∧ f(z) = g(z)).so bedeutet dies, da u immer definiert ist, daß x ∈ dom(f) ist <strong>und</strong> f(x)den Wert u ergibt.Bei der oben definierten inneren Rechenzeitfunktion RZ C handelt es sichoffenbar um eine partielle Funktion RZ C : M −→ p N, wenn wir mit Ndie Menge der natürlichen Zahlen (einschließlich der 0) bezeichnen.Um den Speicherinhalt z einer Konfiguration (m, z) zurückzuerhalten,bedienen wir uns der Projektionsfunktion π 2 . Allgemein sei die i-te (mengentheoretische)Projektion definiert alsInnereResultatsfunktionπ i : M n −→ Mπ i (m 1 , . . . , m n ) := m i ,wobei M eine beliebige Menge bezeichne <strong>und</strong> 1 ≤ i ≤ n ist.Mit Hilfe der inneren Rechenzeitfunktion <strong>und</strong> der Projektion definierenwir die innere Resultatsfunktion alsRES C (z) :≃ π 2 (RS CRZ C (z) (k P , z)),was so zu lesen ist, daß der Funktionswert RES C (z) nur dann definiertist, wenn auch π 2 (RS CRZ C (z) (k P , z)) definiert ist, <strong>und</strong> dann dessen Wertannimmt.24
2.2. TuringmaschinenDie innere Resultatsfunktion liefert uns den Speicherinhalt nach Beendigungder Rechnung. Wir erhalten schließlich die äußere RechenzeitfunktionRz C <strong>und</strong> die äußere Resultatsfunktion Res C einer Maschine C durchKomposition der inneren Funktionen mit den Ein- <strong>und</strong> Ausgabefunktionen,d.h.Äußere Rechenzeit<strong>und</strong>äußereResultatsfunktionRz C (d) :≃ RZ C (IN(d))<strong>und</strong>Res C (d) :≃ OUT(RES C (IN(d))).Die von einer Basismaschine B partiell berechenbaren Funktionen definierenwir alsP B := {f | f = Res Cfür eine abstrakte Maschine C über B}.Die von einer Basismaschine B berechenbaren Funktionen sind gegebendurchF B := {f ∈ P B | f ist total}.Bevor wir die Theorie der abstrakten Maschinen weiterverfolgen, wollenwir die zwei wichtigsten Beispiele solcher Maschinen vorstellen.2.2 TuringmaschinenDas historisch älteste Beispiel einer abstrakten Maschine ist die vonALAN M. TURING eingeführte Turingmaschine. Die Turingmaschine solldas Rechnen mit Bleistift <strong>und</strong> Papier formalisieren. Anschaulich stellenwir uns die Turingbasismaschine als ein nach beiden Seiten hin unendlichesBand vor, das in einzelne Felder unterteilt ist. Auf dem Band Informalearbeitet ein Schreib-Lese-Kopf, der jeweils ein Feld, das Arbeitsfeld, bearbeitenkann. Auf diesem Feld kann er ein Zeichen z eines Alphabetesdrucken (PRT (z)), das Feld löschen (CLR) <strong>und</strong> testen, ob das Zeichen aufdem Feld mit einem vorgegebenen Zeichen z übereinstimmt (BEQ(z)).Schließlich kann die Maschine noch das Arbeitsfeld um ein Feld nachlinks (LFT ) oder nach rechts verlegen (RHT ).Die Menge der Speicherzustände einer Turingmaschine ist durch dieMenge ihrer Bandinschriften gegeben. Wir haben daher diese Menge genauerzu beschreiben. Zunächst wollen wir vereinbaren, daß immer nurendlich viele Felder des Bandes beschrieben sind. Dies ist eine vernünftigeForderung, wenn wir davon ausgehen, daß im Einlesevorgang nurendlich viele Daten auf das Band geschrieben werden können, <strong>und</strong> zu25Beschreibung einerTuringmaschine
2. Maschinenberechenbare FunktionenWörter über einemAlphabetjedem Zeitpunkt in der Rechnung nur endlich viele Rechenschritte absolviertsein können. Auf dem Band stehen also Zeichen. Um dies zupräzisieren, führen wir den Begriff eines Alphabets <strong>und</strong> der über diesemAlphabet gebildeten Wörter ein.Definition 4 Ein Alphabet ist eine endliche, nicht leere Menge A. DieElemente von A heißen die Zeichen oder manchmal auch die Buchstabendes Alphabets A.Ein Wort über A ist ein Tupel (z 1 , . . . , z n ) ∈ A n .Die Menge aller Wörter über A bezeichnen wir üblicherweise mit⋃A ∗ := A n ,n ∈ Nwobei wir n = 0, d.h. das leere Wort Λ, zulassen wollen. Die Menge dernicht leeren Wörter bezeichnen wir mitA + :=⋃n ∈ N + A n ,wobei N + die Menge der positiven natürlichen Zahlen bedeutet. Üblicherweiseschreiben wir Wörter unter Weglassen der Klammerung alsz 1 . . . z n .Die Länge eines Wortes w ∈ A ∗ ist gegeben durchl(w) := min{n| w ∈ A n }.Die Verkettung zweier Wörter u = z 1 . . . z n <strong>und</strong> v = a 1 . . . a m ist dasWortu ⌢ v := z 1 . . . z n a 1 . . . a m .Das nach beiden Seiten unendliche Band der Turingmaschine läßt sichgut durch die Menge Z der ganzen Zahlen darstellen. Wir stellen unsdabei die Felder des Bandes mit ganzen Zahlen numeriert vor, wobei dasArbeitsfeld die Nummer 0 erhält. Eine Bandinschrift für eine Turingmaschineüber dem Alphabet A ist dann eine Abbildungf: Z −→ A ∪ {B}derart, daß das Urbild f −1 [A] := {x ∈ Z| f(x) ∈ A} der Menge A endlichist. Hier haben wir das Zeichen B (Blank) gewählt, um mitzuteilen,daß ein Feld unbeschrieben (d.h. mit einem “Blank” beschrieben) ist. Damitkönnen wir die Menge der Speicherzustände einer TuringmaschinedurchM = {f | f: Z −→ A ∧ f −1 [A] ist endlich}26
2.2. Turingmaschinenbeschreiben. Informal wollen wir Bandinschriften immer in der FormB ∞ a 1 . . . a m bc 1 . . . c n B ∞beschreiben, wobei das Zeichen B wieder für ein unbeschriebenes Feldsteht <strong>und</strong> a i , b <strong>und</strong> c j Zeichen des Alphabets oder Blanks sind. DasZeichen auf dem Arbeitsfeld ist dabei durch die Unterstreichung hervorgehoben.Bei der Definition von Eingabe- <strong>und</strong> Ausgabefunktionen haben wir natürlichsehr viele Möglichkeiten. Eine einfache Version besteht darin, daßdie Datenmenge durchD := ⋃n∈N(A ∗ ) n ,der Menge der n-Tupel von Wörtern über dem Alphabet A, gegeben ist.Dann haben wir eine einfache EingabefunktionIN(u 1 , . . . , u n ) := B ∞ Bu 1 1 . . . u l(u 1)1 B . . . Bu 1 n . . . u l(u n)n B ∞ ,wenn jedes Wort die Form u i = u 1 i . . . u l(u i)ihat <strong>und</strong> die AusgabefunktionOUT(B ∞ . . . au 1 1 . . . ul(u 1)1 B . . . Bu 1 n . . . ul(u n)n B ∞ ) := (u 1 , . . . , u n ).Interessant sind vor allem die mit Turingmaschinen berechenbaren Funk- Turingbasismaschinenfür dietionen f: N k −→ N l . Zu ihrer Beschreibung benötigt man eine Kodierungnatürlicher Zahlen. Hier kann man bereits mit Turingmaschinen zahlentheoretischerBerechnungüber einem einelementigen Alphabet A = {⋆} auskommen. Für deren FunktionenBasismaschinen läßt sich der Instruktionssatz etwas einfacher schreiben.Statt PRT (⋆) schreiben wir einfach PRT , <strong>und</strong> BEQ steht für BEQ(B),d.h. BEQ nimmt genau dann den Wert 1 an, wenn das Arbeitsfeld leerist. Natürliche Zahlen n kodieren wir durch das Wort ⋆ . . . ⋆. Wir setzen Kodierung⋆ 0 = Λ<strong>und</strong>⋆ n+1 = ⋆ ⌢ ⋆ n} {{ }n-fach<strong>und</strong> erhalten so ⋆ n = ⋆ . . . ⋆. Dann können wir EingabefunktionenIN k : N k −→ M<strong>und</strong> Ausgabefunktionen} {{ }n-fach27natürlicher Zahlenüber einemeinelementigenAlphabet
2. Maschinenberechenbare FunktionenOUT l : M −→ N ldefinieren durch:IN k (n 1 , . . . n k ) := B ∞ B ⋆ n 1B . . . B ⋆ n kB ∞ (2.2)<strong>und</strong>OUT l (B ∞ vz ⋆ n 1B . . . B ⋆ n kB ∞ ) := (n 1 , . . . , n l ). (2.3)TuringberechenbareFunktionenDabei ist zu bemerken, daß wir ohne Einschränkung der Allgemeinheitl ≤ k annehmen können, denn B ∞ kodiert ja beliebig viele Nullen.Ganz offensichtlich hängt die Klasse der auf Turingmaschinen berechenbarenFunktionen wesentlich von der Definition der Ein- <strong>und</strong> Ausgabefunktionenab. Da wir uns in der Entwicklung der Theorie der berechenbarenFunktionen ohne Einschränkung der Allgemeinheit auf Funktionenüber den natürlichen Zahlen beschränken können, werden wir im folgendendie Funktionen von N k nach N l als turingberechenbar ansehen, diesich über der Turingbasismaschine Tur mit dem einelementigen Alphabet{⋆} <strong>und</strong> den in (2.2) bzw. (2.3) definierten Ein- <strong>und</strong> Ausgabefunktionenberechnen lassen. Das ist zur Entwicklung der allgemeinen Theorie ausreichend.Für weitergehende Betrachtungen, insbesondere für Komplexitätsbetrachtungen,kann es notwendig werden, elaboriertere Kodierungennatürlicher Zahlen <strong>und</strong>, damit verb<strong>und</strong>en, auch veränderte Ein- <strong>und</strong>Ausgabefunktionen zu betrachten.Wir definieren die Klasse der turingberechenbaren partiellen FunktionenzuP (k,l)Tur:= {f | f: N k −→ p N l <strong>und</strong> f = Res C },wobei C alle abstrakten Maschinen über der TuringbasismaschineTur (k,l) := (M, {LFT , RHT , PRT , CLR}, {BEQ}, IN k , OUT l )mit dem Alphabet {⋆} durchläuft. Die Klasse der turingberechenbarenFunktionen notieren wir alsF (k,l)Tur:= {f ∈ P (k,l) | f ist total}.Tur2.3 RegistermaschinenEine weitere abstrakte Maschine erhalten wir aus der Abstrahierung desAbaccus. In vereinfachter Form haben viele von uns derartige Rechenbretterbereits in der Kinderzeit kennengelernt. Sie bestehen aus einemHolzrahmen, in dem parallele Drähte gespannt sind. Auf jedem dieser28
2.3. RegistermaschinenDrähte befinden sich eine Anzahl von Kugeln, die sich verschieben lassen.Jeder dieser Drähte stellt eine Speichermöglichkeit, ein Register dar.Durch Verschieben der Kugeln läßt sich der Inhalt eines Registers heraufoderherunterzählen. In Abstraktion dieser Maschine definieren wir die Registermaschinenr-Registerbasismaschine alsRM r := (N r , S, T , IN, OUT) (2.4)mit S := {INC j , DEC j | 0 ≤ j ≤ r} <strong>und</strong> T := {BEQ j | 0 ≤ j ≤ r}.Dabei zählen die Modifikationsinstruktionen INC j das j-te Register umeines herauf, d.h.INC j (z 1 , . . . , z j , . . . , z r ) := (z 1 , . . . , z j + 1, . . . , z r )<strong>und</strong> DEC j das j-te Register um eines herunter, d.h.DEC j (z 1 , . . . , z j , . . . , z r ) := (z 1 , . . . , z j ·−1, . . . , z r ).Hier haben wir die sogenannte arithmetische Differenz a ·−b verwendet,die definiert ist durch{a − b, falls b ≤ a,a ·−b :=0, sonst.Die Testinstruktionen BEQ j testen, ob das j-te Register leer ist (d.h. dieZahl 0 enthält).Mit der Registermaschine berechnen wir ebenfalls Funktionen von N knach N l . Die natürlichen Ein- <strong>und</strong> Ausgabefunktionen sind daher gegebendurch die FunktionenIN k : N k −→ N rIN k (z 1 , . . . , z k ) := (z 1 , . . . , z k , 0, . . . , 0} {{ }<strong>und</strong>OUT l : N r −→ N lOUT l (z 1 , . . . , z r ) := (z 1 , . . . , z l ),(r − k)-fachwobei wir, ohne damit die Allgemeinheit wesentlich einzuschränken,stillschweigend k, l ≤ r vorausgesetzt haben. Wir definieren die Klasseder auf r-Registermaschinen berechenbaren partiellen Funktionen alsP (k,l)r-RM := {f | f: Nk −→ p N l <strong>und</strong> f = Res C },wobei C alle abstrakten Maschinen über der Basisregistermaschine(N r , {INC i , DEC j | 1 ≤ i, j ≤ r}, {BEQ i | 1 ≤ i ≤ r}, IN k , OUT l )durchläuft. Die Klasse der auf r-Registermaschinen berechenbaren Funk-)29
2. Maschinenberechenbare FunktionenAufRegistermaschinenberechenbareFunktionentionen ist dannF (k,l)r-RMMitP RM:= {f ∈ P (k,l)r-RM| f ist total}.= ⋃ {P (k,l) | r ∈ N, 1 ≤ k, l ≤ r}r-RMbezeichnen wir die auf Registermaschinen (bliebiger Registerzahl) berechenbarenpartiellen Funktionen <strong>und</strong> mit F RM die in P RM liegenden totalenFunktionen.Die nun naheliegende Frage ist, in wie weit die bislang definierten Klassenmaschinenberechenbarer Funktionen übereinstimmen. Um dies zuklären, benötigen wir einige Vorbereitungen.2.4 Simulation abstrakter MaschinenHomomorphismenvon BasismaschinenDie übliche Methode, nachzuweisen, daß für zwei Basismaschinen B 1<strong>und</strong> B 2 , die Klasse P B2die Klasse P B1umfaßt, besteht darin, die MaschineB 1 auf der Maschine B 2 zu simulieren. Das Kernstück der Maschinensimulationbesteht in der Definition von Maschinenhomomorphismen.Ein Homomorphismus der BasismaschineB 1 = (M 1 , S 1 , T 1 , IN 1 , OUT 1 )in die BasismaschineB 2 = (M 2 , S 2 , T 2 , IN 2 , OUT 2 )besteht aus einem Tripel Φ = (Φ 1 , Φ 2 , Φ 3 ) von AbbildungenΦ 1 : M 1 −→ M 2Φ 2 : S 1 −→ S 2Φ 3 : T 1 −→ T 2 ,die das in Abbildung 2.4 - 1 gezeigte Diagramm kommutativ machen.Das heißt, daß die folgenden Beziehungen gelten:Φ 1 (IN 1 (d)) = IN 2 (d),Φ 1 (S(z)) = (Φ 2 (S))(Φ 1 (z)),für d ∈ D in , z ∈ M 1 , S ∈ S 1 <strong>und</strong> T ∈ T 1 .OUT 2 (Φ 1 (z)) = OUT 1 (z)T (z) = (Φ 3 (T ))(Φ 1 (z)),(2.5)In Zukunft werden wir die unteren Indizes weglassen <strong>und</strong> einfach Φ(z), Φ(S)<strong>und</strong> Φ(T ) schreiben. Welche Komponente anzuwenden ist, ergibt sich ausdem Zusammenhang.30
2.4. Simulation abstrakter MaschinenIn1M1TSM1Out1DF1{0,1}F1DIn2M2F3( T )F2( S )M2Out2Abb. 2.4 - 1: Diagramm eines MaschinenhomomorphismusSei nun C eine B 1 -Maschine <strong>und</strong>Φ: B 1 −→ B 2ein Homomorphismus der Basismaschinen. Wir beschreiben, wie sich Fortsetzung vonΦ auf die Maschine C, deren Konfigurationsraum K(C) <strong>und</strong> die daraufoperierende Rechenschrittfunktion fortsetzen läßt. Für eine Modifikationsanweisunga = (n, S, m) seiΦ(a) := (n, Φ(S), m)<strong>und</strong> für eine Testanweisung a = (n, T, p, q)Φ(a) := (n, Φ(T ), p, q).Für ein Programm P = (k P , A), wobei k P die Startmarke <strong>und</strong> A dieAnweisungsmenge bedeuten, definieren wirΦ(P ) := (k P , {Φ(a)| a ∈ A}).War C = (B 1 , P ), so setzen wirΦ(C) := (B 2 , Φ(P )).Ist nun (n, z) eine Konfiguration der Maschine C, so definieren wirΦ(n, z) := (n, Φ(z)),d.h.π 2 (Φ(k)) = Φ(π 2 (k)) für k ∈ K(C).Damit haben wir31Homomorphismenvon Basismaschinen
2. Maschinenberechenbare FunktionenRS Φ(C) (Φ(n, z)) = Φ(RS C (n, z)). (2.6)Da die Endmarken von C <strong>und</strong> Φ(C) übereinstimmen, ist (e, z) genau danneine Endkonfiguration von C, wenn Φ(e, z) eine Endkonfiguration vonΦ(C) ist. Die Rechenschrittfunktion von C wird aber schrittweise in dievon Φ(C) übertragen. Damit giltRZ C (z) ≃ RZ Φ(C) (Φ(z)).Somit ergibt sich für die innere ResultatsfunktionΦ(RES C (z))≃ Φ(π 2 (RS CRZ C (z) (k P , z))) ≃ π 2 (Φ(RS CRZ C (z) (k P , z)))≃ π 2 (RS Φ(C)RZ Φ(C) (Φ(z)) (k P , Φ(z))) ≃ RES Φ(C) (Φ(z)),<strong>und</strong> damit für die äußere ResultatsfunktionRes C (d) ≃ OUT 1 (RES C (IN 1 (d))) ≃ OUT 2 (Φ(RES C (IN 1 (d))))≃ OUT 2 (RES Φ(C) (Φ(IN 1 (d)))) ≃ OUT 2 (RES Φ(C) (IN 2 (d)))≃ Res Φ(C) (d).Die äußeren Resultatsfunktionen für C <strong>und</strong> Φ(C) stimmen demnach überein.Wir haben also den folgenden Satz:Satz 5 Gibt es einen Homomorphismus der Basismaschine B 1 in dieBasismaschine B 2 , so ist P B1 ⊆ P B2 <strong>und</strong> F B1 ⊆ F B2 .Satz 5 gibt uns bereits eine Möglichkeit, Klassen von auf unterschiedlichenBasismaschinen berechenbaren Funktionen zu vergleichen. Allerdingsist diese Möglichkeit noch sehr eingeschränkt, verlangt sie doch,daß jeder Instruktion i auf der einen Maschine genau eine InstruktionΦ(i) auf der anderen entspricht. Anschaulich ist es jedoch völlig klar,daß man zur gleichen Berechenbarkeitsklasse gelangen sollte, wenn manjede Instruktion i auf der einen Maschine durch ein Programm auf der anderensimulieren kann. Um dies zu präzisieren, führen wir einige Begriffeein.Ist P ein Programm auf einer BasismaschineB = (M, S, T , IN, OUT),so nennen wir P eine funktionale Prozedur, wenn dom(RES P ) = M ist.Wir nennen P eine relationale Prozedur, wenn RES P die Identität aufM ist <strong>und</strong> P genau zwei verschiedene Endmarken e 0 <strong>und</strong> e 1 besitzt.Wir können uns nun eine Erweiterung der Basismaschine B konstruieren,indem wir für jede funktionale Prozedur P die Resultatsfunktion RES Pals neue Modifikationsinstruktion hinzunehmen <strong>und</strong> zu jeder relationalenProzedur P eine neue Testinstruktion T p vermöge32
T p (z) :=2.5. Simulation der Registermaschine auf der Turingmaschine⎧⎪⎨⎪⎩0, falls RS PRZ C (z) (k p , z) = (e o , z),1, falls RS PRZ C (z) (k p , z) = (e 1 , z)definieren. Diese erweiterte Maschine nennen wir den Abschluß derMaschine B <strong>und</strong> bezeichnen ihn mit Cl(B). Nach ihrer Konstruktion Der Abschlußberechnen B <strong>und</strong> Cl(B) die gleichen Funktionen. Jede auf B berechenbaretotale Funktion wird auf Cl(B) sogar in einem Schritt berechnet. Alsohaben wirP B = P Cl(B) (2.7)<strong>und</strong>F B = F Cl(B) . (2.8)Nun sind wir in der Lage, die Maschinensimulation zu definieren.Definition 6 Eine Simulation einer Basismaschine B 1 auf einer BasismaschineB 2 ist ein HomomorphismusΦ: B 1 −→ Cl(B 2 ).Als eine Folgerung von Satz 5, (2.7) <strong>und</strong> (2.8) erhalten wir dannSatz 7 Existiert eine Simulation der Basismaschine B 1 auf der BasismaschineB 2 , so giltP B1⊆ P B2<strong>und</strong>F B1⊆ F B2.abstrakterBasismaschinenSimulationabstrakterMaschinen2.5 Simulation der Registermaschine auf der TuringmaschineUm einzusehen, daß alle auf Registermaschinen berechenbaren Funktionenauch TURING-berechenbar sind, genügt es nach dem vorherigenAbschnitt, die Registermaschine auf einer Turingmaschine zu simulieren.Wir gehen also von einer r-Registermaschine R aus. Die Menge derSpeicherzustände von R wird durch N r beschrieben. Die Bandinschriftender Turingmaschine wollen wir wieder mit M notieren. Wir definiereneine AbbildungΦ: N r −→ M(z 1 , . . . , z r ) ↦−→ B ∞ B ⋆ z 1 B . . . B ⋆z r B∞ (2.9)33
2. Maschinenberechenbare Funktionen<strong>und</strong> wollen diese zu einem Homomorphismus in den Abschluß der Basisturingmaschinefortsetzen. Dazu definieren wirΦ(INC i )(B ∞ uz⋆ z 1B . . . B⋆ z iBvB ∞ ) := (B ∞ uz⋆ z B . . . B⋆ z i+1 BvB ∞ ),Φ(DEC i )(B ∞ uz⋆ z 1B . . . B⋆ z iBvB ∞ ) := (B ∞ uz⋆ z 1B . . . B⋆ z i ·−1 BvB ∞ )<strong>und</strong>Φ(BEQ i )(B ∞ uz ⋆ z 1B . . . B ⋆ z iBvB ∞ ) ={0, falls zi = 0,1, falls z i = 1.Die in (2.9) definierte Abbildung ist genau die in (2.2) definierte Inputfunktionfür die Basisturingmaschine. Damit folgtIN Tur = Φ ◦ IN RM<strong>und</strong>OUT RM = OUT Tur ◦ Φ,wobei ◦ die Hintereinanderausführung von Funktionen bedeutet, d.h. fürzwei Funktionen f <strong>und</strong> g ist (f ◦ g)(x) := f(g(x)).Unmittelbar aus den Definitionen erhalten wir auchΦ(INC i (z)) = (Φ(INC i ))(Φ(z)), Φ(DEC i (z)) = (Φ(DEC i ))(Φ(z))<strong>und</strong>BEQ i (z) = (Φ(BEQ i ))(Φ(z)).Hilfsprozeduren fürRegistermaschinenAlles, was daher zu einer Simulation der Registermaschine auf der Turingmaschinenoch fehlt, ist der Nachweis, daß Φ(INC j ) <strong>und</strong> Φ(DEC j )funktionale Prozeduren <strong>und</strong> Φ(BEQ j ) relationale Prozeduren auf derTuringmaschine sind.Um dies einzusehen, definieren wir uns zunächst einige Hilfsprozedurenauf der Turingmaschine. Zum einen benötigen wir eine große RechtsverschiebungRHS, die durch das Flußdiagramm in Abbildung 2.5 - 1gegeben ist. Man überzeugt sich leicht, daß RHS das Arbeitsfeld genauum ein Wort nach rechts verschiebt, d.h.RHS(. . . b ⋆ n B . . .) = . . . b ⋆ n B . . .für n ≥ 0. Analog definiert man eine große Linksverschiebung LFS mitder WirkungLFS(. . . B ⋆ n b . . .) = . . . B ⋆ n b . . . .Programme für Φ(INC j ), Φ(DEC j ) <strong>und</strong> Φ(BEQ j ) erhalten wir, wie in34
2.5. Simulation der Registermaschine auf der TuringmaschineSTARTRHTNEINBEQJAENDAbb. 2.5 - 1: Ein Programm für die Rechtsverschiebung RHSden Abbildungen 2.5 - 2, 2.5 - 3 <strong>und</strong> 2.5 - 4 angegeben. Also gilt:START PRT RHS LFTCLR(j-1)-fachRHTENDLFSLFTPRT(j-1)-fachAbb. 2.5 - 2: Programm für Φ(INC j )Man kann nun die Gegenrichtung des Satzes 8 in analoger Weise durcheine Simulation der Turingbasismaschine auf der Registermaschine beweisen.In dieser Übersicht wollen wir jedoch einen anderen Weg einschlagen,der uns gleichzeitig weitere Einsichten in die Natur berechenbarerFunktionen erlaubt. Wir werden versuchen, eine mehr mathematischmotivierte Theorie der Berechenbarkeit zu entwickeln, <strong>und</strong> so zuder Klasse P der µ-partiellrekursiven Funktionen zu gelangen. Dannwerden wir sehen, daß jede turingberechenbare partielle Funktion schon35Satz 8 Jede auf einer r-Registermaschine berechenbare partielle oder Registermaschinen-totale Funktion ist auch auf der Turingmaschine berechenbar.berechenbareFunktionen sindturingberechenbar
2. Maschinenberechenbare FunktionenSTARTLFTCLR(j-1)-fachRHTRHSRHT(j-1)-fachJABEQ LFT LHS ENDCLRNEINLFT(j-1)-fachPRTLHS RHT CLR ENDAbb. 2.5 - 3: Programm für Φ(DEC j )µ-partiellrekursiv ist, <strong>und</strong> sich umgekehrt jede µ-partiellrekursive Funktionenleicht auf einer Registermaschine berechnen läßt.36
2.5. Simulation der Registermaschine auf der TuringmaschineSTARTRHS(j-1)-fachRHT(j-1)-fachBEQJALHSENDJANEIN(j-1)-fachLHSENDNEINAbb. 2.5 - 4: Programm für Φ(BEQ j )37
3. µ-rekursive FunktionenDer Weg zu einer exakten Definition des Begriffes einer berechenbarenFunktion, den wir in diesem Kapitel beschreiten wollen, besteht darin,daß wir von sehr einfachen Funktionen ausgehen, die ganz offensichtlichberechenbar sind. Wir überlegen uns dann Operationen, die berechenbareFunktionen in berechenbare Funktionen überführen <strong>und</strong> schließendie Gr<strong>und</strong>funktionen unter diesen Operationen ab. Es bleibt dann festzustellen,inwieweit wir damit die intuitiv berechenbaren Funktionen erfaßthaben. Insbesondere wird die so erhaltene Klasse von Funktionen mitden maschinenberechenbaren zu vergleichen sein.3.1 Primitiv rekursive FunktionenBei den folgenden Untersuchungen wollen wir uns auf Funktionen beschränken,die Tupel natürlicher Zahlen auf natürliche Zahlen abbilden.Wir werden später einsehen, daß dies keine wesentliche Einschränkungder Allgemeinheit bedeutet.Eine natürliche Zahl ist dadurch charakterisiert, daß sie entweder 0oder der Nachfolger einer anderen natürlichen Zahl ist. Zur Darstellungnatürlicher Zahlen genügt daher ein Symbol für die 0 zusammenmit einem Symbol S für die Nachfolgerfunktion. Wir können dann jedenatürliche Zahl n durch eine Ziffern = (S(. . . S(0) . . .))} {{ }n-fachrepräsentieren. Um die Schreibweise nicht zu verwirrend zu gestalten,werden wir allerdings nicht immer peinlich zwischen natürlichen Zahlen<strong>und</strong> ihrer Zifferndarstellung unterscheiden.Wenn wir offensichtlich berechenbare Funktionen suchen, denken wirsofort an Funktionen wie die konstanten Funktionen, die jedem Tupelvon Argumenten immer eine konstante natürliche Zahl zuordnen oderdie Projektionsfunktionen, die jedes Tupel (x 1 , . . . , x n ) auf eine seinerKomponenten projizieren. Auch die Nachfolgerfunktion ist offensichtlicheine berechenbare Funktion. Natürlich fallen uns daneben noch eineganze Reihe weiterer Funktionen ein, die uns als intuitiv berechenbargeläufig sind. Wir werden jedoch sehen, daß die eben genannten Funktionenbereits ausreichen. Daher treffen wir die folgende Festsetzung:Zifferndarstellungnatürlicher Zahlen39
3. µ-rekursive FunktionenGr<strong>und</strong>funktionenDefinition 9 (Klasse der Gr<strong>und</strong>funktionen)Gr<strong>und</strong>funktionen sind die konstanten Funktionen C n k mitC n k(x 1 , . . . , x n ) := k,die Projektionsfunktionen P n k mitP n k (x 1, . . . , x n ) := x kSubstitutionPrimitive Rekursionfür 1 ≤ k ≤ n <strong>und</strong> die Nachfolgerfunktion S.Eine Operation, die berechenbare Funktionen wieder in berechenbareFunktionen überführt, ist durch die Komposition zweier Funktionen oderdie Substitution von Funktionen gegeben, wie man diese Operation auchnennt, falls mehr als zwei Funktionen beteiligt sind. Sindg: N m −→ N<strong>und</strong>h i : N n −→ Nfür i = 1, . . . , m gegeben, so ist deren Komposition (bzw. die Substitutionvon h 1 , . . . , h m in g) definiert durchSub(g, h 1 , . . . , h m )(⃗x) := g(h 1 (⃗x), . . . , h m (⃗x)), (3.1)wobei ⃗x ein beliebiges n-Tupel natürlicher Zahlen bedeutet.Im Falle von m = 1 werden wir aber anstelle von Sub(g, h) weiterhing ◦ h schreiben.Eine etwas komplexere Operation ist durch die primitive Rekursiongegeben. Hier gehen wir von zwei Funktioneng: N n −→ N<strong>und</strong>h: N n+2 −→ Naus <strong>und</strong> definieren die durch primitive Rekursion aus ihnen hevorgegangeneFunktionRec(g, h): N n+1 −→ NdurchRec(g, h)(z, ⃗x) :={g(⃗x), falls z = 0,h(z 0 , Rec(g, h)(z 0 , ⃗x), ⃗x), falls z = S(z 0 ),wobei ⃗x wieder ein beliebiges n-tupel natürlicher Zahlen bedeutet.(3.2)40
3.1. Primitiv rekursive FunktionenHier bedarf es eines Augenblickes des Nachdenkens, um einzusehen,daß mit berechenbaren g <strong>und</strong> h auch Rec(g, h) berechenbar ist. DerAlgorithmus zur Berechnung von Rec(g, h)(z, x 1 , . . . , x n ) läßt sich folgendermaßenbeschreiben:Definieren wire 0 = g(⃗x)<strong>und</strong>e z+1 := h(z, e z , ⃗x),so lassen sich die Werte e z für z = 0, 1, . . . sukkzessive berechnen, dawir die Funktionen g <strong>und</strong> h als berechenbar vorausgesetzt haben. DurchInduktion nach z läßt sich nun aber leicht einsehen, daßRec(g, h)(z, ⃗x) = e zist. Damit erhalten wir den Wert von Rec(g, h)(z, ⃗x) durch Berechnungvon e 0 , e 1 , . . . , e z .Wir nennen die Operationen Sub <strong>und</strong> Rec die Gr<strong>und</strong>operationen.Gr<strong>und</strong>operationenDefinition 10 Die Klasse PR der primitiv rekursiven Funktionen ist die Primitiv rekursiveFunktionenkleinste Klasse von Funktionen, die die Gr<strong>und</strong>funktionen enthält <strong>und</strong> diegegenüber den Gr<strong>und</strong>operationen abgeschlossen ist.Hier erscheint es uns nötig zu sein, etwas zu dem Unterschied zwischenextensionaler Auffassung <strong>und</strong> intensionaler Auffassung von Funktionenzu bemerken. In der <strong>Mathematik</strong> werden Funktionenf: A −→ Büblicherweise als durch ihre GraphenG f := {(a, f(a))| a ∈ A}beschriebene Mengen aufgefaßt. Da Mengen allein durch ihre Extension,d.h. durch ihre Elemente bestimmt sind, nennen wir zwei Funktionenextensional gleich, wenn ihre Graphen als Mengen übereinstimmen. Wirnotieren diese Gleichheit durchf = g<strong>und</strong> habenf = g ⇐⇒ dom(f) = dom(g) ∧ (∀x ∈ dom(f))[f(x) = g(x)].Bislang haben wir die Gleichheit von Funktionen auch immer so aufgefaßt.Für die primitiv rekursive Funktion41ExtensionaleAuffassung vonFunktionen
3. µ-rekursive FunktionenF :≡ Sub(P 2 1 , P1 1 , P1 1 )gilt dann offenbarF = P 1 1 ,(∗)denn es ist dom(F ) = dom(P 1 1 ) = N <strong>und</strong> nach (3.1) giltF (x) = P 2 1 (P1 1 (x), P1 1 (x)) = P2 1 (x, x) = x = P1 1 (x),IntensionaleAuffassung vonFunktionenobwohl F <strong>und</strong> P 1 1, als Terme betrachtet, verschieden sind. Wir habenschon durch das Zeichen ≡ in (∗) zum Ausdruck bringen wollen, daß Fnicht bloß extensional, sondern tatsächlich als Term gleich Sub(P 2 1 , P1 1 , P1 1 )sein soll. Dieser intensionalen Gleichheit liegt eine andere Auffassungüber das Wesen einer Funktion zugr<strong>und</strong>e. Hier geht man davon aus, daßeine Funktion nicht im mengentheoretischen Sinn als ihr Graph verstandenwerden darf, sondern nur durch ihren Algorithmus gegeben ist. Dader Aufbau des Termes uns den Algorithmus zur Berechnung der dazugehörigenFunktion liefert, läßt sich die intensionale Gleichheit vonFunktionen durch die Gleichheit der repräsentierenden Terme in befriedigenderWeise beschreiben. Wir werden in Zukunft die intensionaleGleichheit durch ≡ notieren, obwohl diese hier nur selten eine Rollespielen wird.Um völlige mathematische Strenge zu wahren, hätten wir eigentlich von Termen fürprimitiv rekursive Funktionen ausgehen müssen, die sich induktiv durch die folgendenKlauseln definieren lassen:Für alle natürlichen Zahlen n <strong>und</strong> k ist C n k ein n-stelliger primitiv rekursiver Funktionsterm.Für alle natürlichen Zahlen n <strong>und</strong> alle k ∈ {1, . . . , n} ist P n k ein n-stelliger primitivrekursiver Funktionsterm.Ist g ein m-stelliger primitiv rekursiver Funktionsterm <strong>und</strong> sind h 1 , . . . , h m n-stelligeprimitiv rekursive Funktionsterme, so ist auch Sub(g, h 1 , . . . , h m ) ein n-stelliger primitivrekursiver Funktionsterm.Ist g ein n-stelliger <strong>und</strong> h ein n + 2-stelliger primitiv rekursiver Funktionsterm, so istRec(g, h) ein n + 1-stelliger primitiv rekursiver Funktionsterm.Ist nun T ein n-stelliger primitiv rekursiver Funktionsterm <strong>und</strong> sind z 1 , . . . , z n Ziffern,so läßt sich durch die folgenden Klauseln die Auswertung Val(T , z 1 , . . . , z n ) definieren:Val(C n k , z 1, . . . , z n ) = kVal(P n k , z 1, . . . , z n ) = z kVal(Sub(g, h 1 , . . . , h m ), z 1 , . . . , z n ) = Val(g, Val(h 1 , z 1 , . . . , z n ), . . . , Val(h m , z 1 , . . . , z n ))Val(Rec(g, h), 0, z 1 , . . . , z n ) = Val(g, z 1 , . . . , z n )Val(Rec(g, h), S(n), z 1 , . . . , z n ) = Val(h, Val(Rec(g, h), n, z 1 , . . . , z n ), z 1 , . . . , z n )Über seine Auswertung können wir somit jeden n-stelligen primitiv rekursiven Funk-42
3.1. Primitiv rekursive Funktionentionsterm als eine n-stellige Funktion auffassen (was wir auch immer tun werden) <strong>und</strong>erhalten, daß eine Funktion genau dann primitiv rekursiv ist, wenn es einen primitivrekursiven Funktionsterm gibt, dem sie extensional gleich ist. Wie wir bereits am obigeneinfachen Beispiel gesehen haben, können verschiedene Funktionsterme durchausdie gleiche Funktion liefern. Später werden wir einsehen, daß es sogar unendlich vieleverschiedene solche Funktionsterme geben muß.Die explizite Angabe des Funktionstermes, der eine primitiv rekursiveFunktion definiert, stellt sich im allgemeinen jedoch als recht umständlichheraus. Wir können uns dies am Beispiel der Addition natürlicher Die AdditionZahlen klarmachen. Die Addition gehorcht bekanntlich den Rekursionsgleichungenx + 0 = x (= P 1 1(x)) (3.3)<strong>und</strong>x + S(z) = S(x + z). (3.4)Ein Funktionsterm, der die Addtion repräsentiert, ist beispielsweise⊕ :≡ Rec(P 1 1 , Sub(S, P3 2 )).Die Tatsache, daß⊕(z, x) = x + zgilt, erhalten wir leicht durch Induktion nach z. Für z = 0 ist⊕(0, x) = P 1 1 (x) = x = x + 0<strong>und</strong> für z = S(z 0 ) ist⊕(z, x) = Sub(S, P 3 2 )(z 0, (x + z 0 ), x) = S(x + z 0 ) = x + z.Damit ist die Addition natürlicher Zahlen als primitiv rekursiv nachgewiesen.Man kann sich jedoch überlegen, daß bereits die Kenntnis derRekursionsgleichungen (3.3) <strong>und</strong> (3.4) zum Nachweis der primitiven Rekursivitätder Addition ausgereicht hätte. Dazu zeigt man durch Induktionnach z etwas allgemeiner, daß jede Funktion f, die den Rekursionsgleichungenf(0, ⃗x) = g(⃗x) (3.5)<strong>und</strong>f(S(z), ⃗x) = h(z, f(z, ⃗x), ⃗x) (3.6)gehorcht, der durch den Term Rec(g, h) repräsentierten Funktion (extensional)gleich ist. Damit ist f insbesondere (extensional) eindeutig43natürlicher Zahlenist primitiv rekursiv
Die Multiplikationnatürlicher Zahlenist primitiv rekursiv a · 0 = 03. µ-rekursive Funktionenbestimmt. Unter der Voraussetzung, daß die Funktionen g <strong>und</strong> h in (3.5)<strong>und</strong> (3.6) primitiv rekursiv sind – <strong>und</strong> somit durch primitiv rekursiveFunktionsterme repräsentiert werden können –, folgt damit also, daßauch f eine primitiv rekursive Funktion ist, – die dann durch den TermRec(g, h) repräsentiert wird.Da in den Rekursionsgleichungen (3.3) <strong>und</strong> (3.4) nur die primitiv rekursivenFunktionen P 1 1 <strong>und</strong> S auftreten, folgt aus ihnen bereits die primitiveRekursivität der Addition.Wir wollen die gleiche Argumentation verwenden, um nachzuweisen,daß auch die Multiplikation eine primitiv rekursive Funktion ist. DieMultiplikation gehorcht offenbar den Rekursionsgleichungen<strong>und</strong>a · (S(z)) = (a · z) + a.ExponentialfunktionSuper-ExponentiationNachdem wir die Addition bereits als primitiv rekursiv nachgewiesen haben,folgt daraus, daß es einen primitiv rekursiven Funktionsterm gebenmuß, der die Multiplikation repräsentiert. In ähnlicher Weise erhalten wirdie primitive Rekursivität der Exponentialfunktion, die den Rekursionsgleichungenexp(a, 0) = 1<strong>und</strong>exp(a, S(z)) = exp(a, z) · agehorcht. Man kann das Verfahren iterieren, indem man eine Super-Exponentialfunktion durchsexp(a, 0) = 1<strong>und</strong>sexp(a, S(z)) = exp(a, sexp(a, z))definiert. Wir erhalten dannsexp(a, n) = exp(a, (exp(a, (. . . exp(a, 0) . . .)))).} {{ }n-fachDies Verfahren läßt sich noch weiter fortsetzen, indem man eine Super-Super-Exponentialfunktion,Super-Super-Super-Exponentialfunktion, u.s.f. definiert. Es ist bereitsdaraus zu sehen, daß die primitiv rekursiven Funktionen Funktionen mit ungeheuerstarkem Wachstum umfassen. Eine Berechnung aller primitiv rekursiven Funktionen44
3.1. Primitiv rekursive Funktionenauf physikalisch realisierbaren Maschinen ist somit prinzipiell unmöglich, da sie allephysikalisch gegebenen Grenzen sprengen würde. Eine physikalische Grenze wäre beiZugr<strong>und</strong>elegung einer Speicherung mittels elektrischer Ladungen durch die im Universumvorhandenen Ladungsträger gesetzt. Das Wachstum primitiv rekursiver Funktionenwürde deren Zahl schnell überschreiten, selbst wenn wir davon ausgehen, daß bis heutenur Bruchteile der im Universum existierenden Elektronenmassen tatsächlich entdecktsind. Da es uns im Augenblick allerdings nur darauf ankommt, den Begriff der berechenbarenFunktion im allgemeinen zu klären, wollen wir hier auf die Möglichkeiteneiner physikalischen Realisation der prinzipiellen Berechenbarkeit noch nicht eingehen.Beispiele weiterer primitiv rekursiver Funktionen, die in unseren Untersuchungeneine Rolle spielen werden, sind:die Fakultätsfunktion a! mit den Rekursionsgleichungen0! = 1Weitere Beispieleprimitiv rekursiverFunktionen<strong>und</strong>(S(z))! = z! · S(z),die Fallunterscheidungsfunktionen sg <strong>und</strong> sg mit den Rekursionsgleichungensg(0) = 0 sg(S(z)) = 1<strong>und</strong>sg(0) = 1 sg(S(z)) = 0,die Vorgängerfunktion Pd mit den RekursionsgleichungenPd(0) = 0 <strong>und</strong> Pd(S(z)) = z,die arithmetische Differenz mit den Rekursionsgleichungena ·−0 = aa ·−S(z) = Pd(a ·−z).Wir wollen noch bemerken, daß endliche Summen <strong>und</strong> endliche Produkteals Funktionen ihrer oberen Grenzen primitiv rekursiv sind. Auch diesfolgt sofort durch Hinschreiben der Rekursionsgleichungen0∑i=0<strong>und</strong>0∏i=0f(i, ⃗x) = f(0, ⃗x)f(i, ⃗x) = f(0, ⃗x)S(z)∑i=oS(z)∏i=of(i, ⃗x) =f(i, ⃗x) =⎛z∑⎝i=0⎛z∏⎝i=0⎞f(i, ⃗x) ⎠ + f(S(z), ⃗x)⎞f(i, ⃗x) ⎠ · f(S(z), ⃗x).45
3. µ-rekursive FunktionenWeitere primitiv rekursive Funktionen werden wir bei Bedarf zur Verfügungstellen.3.2 Primitiv rekursive PrädikatePrädikate <strong>und</strong>RelationenDas EntscheidungsproblemCharakteristischeFunktionPrimitiv rekursivePrädikateNeben der Berechenbarkeit von Funktionen spielt die Entscheidbarkeitvon Prädikaten eine bedeutende Rolle. Dabei werden Prädikate in derRegel extensional, d.h. als Mengen aufgefaßt. Dies ist der Hintergr<strong>und</strong>der folgenden Definition:Definition 11 Unter einem n-stelligen zahlentheoretischen Prädikat Pverstehen wir eine Menge P ⊆ N n .Wir werden Prädikate oft auch als Relationen bezeichnen <strong>und</strong> anstatt(x 1 , . . . , x n ) ∈ P oft P (x 1 , . . . , x n ) schreiben. Es hat sich eingebürgert,diese Ausdrücke völlig synonym zu verwenden.Das Entscheidungsproblem für ein Prädikat P ist dann die Frage, ob eseinen Algorithmus gibt, der⃗x ∈ P ?entscheidet. Die charakteristische Funktion eines Prädikats P ist gegebendurch{1, falls ⃗x ∈ P ,χ P (⃗x) :=0, falls ⃗x ∉ P .Offenbar läßt sich das Entscheidungsproblem für ein Prädikat P sofortauf das Berechnungsproblem für dessen charakteristische Funktion χ Pzurückführen. Daher nennen wir ein Prädikat primitiv rekursiv, wenndessen charakteristische Funktion χ P primitiv rekursiv ist.Für primitiv rekursive Prädikate können wir also das Entscheidungsproblemin primitiv rekursiver Weise lösen.Ist nun P ein Prädikat, so ist dessen Komplement die MengeC(P ) := {x| x ∉ P }.Die charakteristische Funktion von C(P ) ist ganz offensichtlich durchχ C(P ) = sg ◦ χ Pgegeben. Für primitiv rekursives P ist somit auch C(P ) primitiv rekursiv.Ein ähnliches Ergebnis erhalten wir auch für Vereinigungen <strong>und</strong> Durchschnitteprimitiv rekursiver Prädikate. Hier beobachten wir, daßχ P ∩Q (⃗x) = χ P (⃗x) · χ Q (⃗x)46
3.2. Primitiv rekursive Prädikate<strong>und</strong>χ P ∪Q (⃗x) = sg(χ P (⃗x) + χ Q (⃗x))ist. Damit gilt:Die primitiv rekursiven Prädikate sind gegenüber Komplementen, endlichenVereinigungen <strong>und</strong> endlichen Durchschnitten abgeschlossen.Wählen wir die Schreibweise P (⃗x) anstatt ⃗x ∈ P , so haben wir⃗x ∈ C(P ) ⇔ ¬P (⃗x),⃗x ∈ P ∪ Q ⇔ P (⃗x) ∨ Q(⃗x)<strong>und</strong>⃗x ∈ P ∩ Q ⇔ P (⃗x) ∧ Q(⃗x).Abschlußeigenschaftenprimitivrekursiver PrädikateDaher sprechen wir auch davon, daß die primitiv rekursiven Prädikategegenüber den logischen Operationen ¬, ∨ <strong>und</strong> ∧, die oft auch als dieboolesche Operationen (vgl. Abschnitt 6.3) bezeichnet werden, abge- Boolescheschlossen sind.OperationenEin m-stelliges Prädikat Q entsteht aus einem n-stelligen Prädikat Pdurch Substitution mit den Funktionen f 1 , . . . f n , wenn die f i alle m-stellig sind <strong>und</strong>Q = {⃗x ∈ N m | (f 1 (⃗x), . . . , f n (⃗x)) ∈ P } (3.7)ist. Dann giltχ Q = Sub(χ P , f 1 , . . . , f n )<strong>und</strong> wir erhalten somit:Die primitiv rekursiven Prädikate sind abgeschlossen gegenüber Substitutionenmit primitiv rekursiven Funktionen.Das Prädikat Q in (3.7) bezeichnen wir mit Sub(P, f 1 , . . . , f n ).Neben den bisher behandelten Operationen auf Prädikaten spielt auch derbeschränkte Suchoperator eine wichtige Rolle. Wir wollen diesen mit µ bbezeichnen <strong>und</strong> wie folgt definieren:{min{z ≤ y | (⃗x, z) ∈ P }, falls dies existiert,(µ b P )(⃗x, y) :=0, sonst.Der beschränkte Suchoperator (µ b P )(⃗x, y) sucht demnach nach demkleinsten z ≤ y mit P (⃗x, z) <strong>und</strong> bricht die Suche unter Ausgabe desWertes 0 ab, wenn er kein solches finden kann.BeschränkterSuchoperator47
3. µ-rekursive FunktionenEine deutlich anschaulichere, wenn auch weniger exakte Schreibweisefür den beschränkten Suchoperator istµz ≤ y . (⃗x, z) ∈ P,der wir im folgenden oft den Vorzug geben werden.Für ein n + 1-stelliges Prädikat P ist (µ b P ) eine n + 1-stellige Funktion.Die Funktion (µ b P ) gehorcht den Rekursionsgleichungen(µ b P )(⃗x, 0) = 0<strong>und</strong>BeschränkteQuantifikation(µ b P )(⃗x, S(n)) = (µ b P )(⃗x, n)+S(n) · χ P (⃗x, S(n)) · sg((µ b P )(⃗x, n)) · sg(χ P (⃗x, 0)),wie man leicht nachrechnet. Damit folgt:Für ein n-stelliges primitv rekursives Pädikat ist (µ b P ) eine n-stelligeprimitiv rekursive Funktion.Wir wollen diese Tatsache benützen, um nachzuweisen, daß die primitivrekursiven Prädikate auch gegenüber beschränkter Quantifikationabgeschlossen sind. Ein Prädikat Q entsteht aus P durch beschränkte∀-Quantifikation, fallsQ = {(⃗x, n)| (∀y ≤ n)[(⃗x, y) ∈ P ]}<strong>und</strong> durch beschränkte ∃-Quantifikation, fallsQ = {(⃗x, n)| (∃y ≤ n)[(⃗x, y) ∈ P ]}gilt. Die charakteristische Funktion für das durch beschränkte ∃-Quantifikationerhaltene Prädikat, das wir mit ∃ ≤ (P ) bezeichnen wollen, istgegeben durchχ ∃≤ (P )(⃗x, n) = sg(µy ≤ n. (⃗x, y) ∈ P ) + χ P (⃗x, 0).Wegen(∀y ≤ n)[(⃗x, y) ∈ P ] ⇐⇒ ¬(∃y ≤ n)[(⃗x, y) ∈ C(P )]erhalten wir∀ ≤ (P ) = C(∃ ≤ (C(P ))).Da die primitiv rekursiven Prädikate gegenüber Komplementen abgeschlossensind, haben wir zusammenfassend:Die primitiv rekursiven Prädikate sind abgeschlossen gegenüber beschränkterQuantifikation.48
3.2. Primitiv rekursive PrädikatePrädikatprimitiv rekursive Definitionx = y χ = (x, y) = |x − y| := (x−· y) + (y−· x)x < y χ < (x, y) = sg(y−· x)x ≤ yx < y ∨ x = yx/y “x teilt y” (∃z ≤ y)(y = x · z)Prim(x)“x ist Primzahl”x ∈ {n 1 , . . . , n k }“x ist Element einerendlichen Menge”x ≠ 0 ∧ (∀y ≤ x)(¬(y/x) ∨ y = 1 ∨ y = x)x = n 1 ∨ . . . ∨ x = n kAbb. 3.2 - 1: Einige primitiv rekursive PrädikateDie bisher erarbeiteten Abschlußeigenschaften primitiv rekursiver Prädikateerlauben es uns, bereits eine ganze Reihe von Prädikaten als primitivrekursiv zu erkennen. Eine Auswahl findet sich in der Tabelle in Abbildung3.2 - 1.Wir können beschränkte Quantifikationen als Verallgemeinerungen boolescherOperationen betrachten. Schließlich sind die Bedeutungen von(∀y ≤ n)R(⃗x, y) <strong>und</strong> (∃y ≤ n)R(⃗x, y)Erweiterte boolescheOperationendie vonR(⃗x, 0) ∧ R(⃗x, 1) ∧ . . . ∧ R(⃗x, n)beziehungsweiseR(⃗x, 0) ∨ R(⃗x, 1) ∨ . . . ∨ R(⃗x, n).Erhalten wir ein Prädikat Q aus Prädikaten P 1 , . . . , P n durch sukzessiveAnwendung von booleschen Operationen <strong>und</strong> beschränkten Quantifikationen,so sagen wir, daß Q durch erweiterte boolesche Operationen ausP 1 , . . . , P n hervorgegangen ist. Wir werden dies manchmal alsQ = O(P 1 , . . . , P n )notieren. Aus unseren bisherigen Überlegungen folgt, daß es dann eineprimitiv rekursive Funktion g so gibt, daßχ Q (⃗x) = g(χ P1 (⃗x), . . . , χ Pn (⃗x)) (3.8)49
3. µ-rekursive FunktionenDefinition durchFallunterscheidungist.Wir wollen diesen Abschnitt schließen, indem wir auf die Möglichkeithinweisen, primitiv rekursive Funktionen durch Fallunterscheidung nachprimitiv rekursiven Prädikaten zu definieren. Gehen wir also davon aus,daß R 1 , . . . , R n paarweise disjunkte primitiv rekursive Prädikate sind,d.h. für i, j ∈ {1, . . . , n} mit i ≠ j gilt immer R i ∩ R j = ∅. Sind nung 1 , . . . , g n+1 primitiv rekursive Funktionen, so ist die Funktion f, diedefiniert ist durch die Fallunterscheidungf(⃗x) :=⎧⎪⎨⎪⎩g 1 (⃗x),.g n (⃗x),g n+1 (⃗x),falls R 1 (⃗x),falls R n (⃗x),sonst,primitiv rekursiv. Dies folgt einfach daraus, daß∑f(⃗x) = g 1 (⃗x) · χ R1 (⃗x) + . . . + g n (⃗x) · χ Rn (⃗x) + g n+1 (⃗x) · sg( n χ Ri (⃗x))ist.i=03.3 Primitiv rekursive KodierungKodierungsfunktionenKodierung ist das Herzstück der <strong>Informatik</strong>. Unter einer Kodierung verstehenwir im weitesten Sinne die Verschlüsselung von Information zusammenmit der Möglichkeit, diese verschlüsselte Information wiederzu entschlüsseln. Wenn wir davon ausgehen, daß uns die Information inForm endlicher Folgen natürlicher Zahlen vorliegt, dann bedeutet Kodierungdie Fähigkeit, endlichen Folgen natürlicher Zahlen eine natürlicheZahl so zuzuordnen, daß die ursprüngliche Folge aus dieser Zahl wiederrekonstruiert werden kann. Das heißt, daß wir eine Kodierungsfunktion⋃Kod: N n −→ Nn ∈ Nzusammen mit einer DekodierunsfunktionDkod: rng(()Kod) −→⋃n ∈ Nderart definieren können, daßN nDkod(Kod(x 1 , . . . , x n )) = (x 1 , . . . , x n )gilt, wobei wir mit rng(()f) := {f(x)| x ∈ dom(f)} das Bild (range)einer Funktion f bezeichnen. Wir erhalten eine Längenfunktion50
lh: rng(()Kod) −→ Nlh(x) := min{n| Dkod(x) ∈ N n },3.3. Primitiv rekursive Kodierungdie aus dem Kode die Länge der kodierten Folge berechnet.In diesem Abschnitt wollen wir nachweisen, daß es gelingt, Kodierungsfunktionenin primitiv rekursiver Weise zu definieren. Dabei betonen wirallerdings nachdrücklich, daß es hier nicht auf die Effizienz der Kodierungankommt – obwohl dies im praktischen Bereich von eminenter Wichtigkeitsein kann –, sondern es nur um den Nachweis der prinzipiellenMöglichkeit geht, eine Kodierung primitiv rekursiv zu definieren. Dabei Eine primitivwollen wir eine Kodierung primitiv rekursiv nennen, wenn die FunktionenKod, lh, das Prädikat rng(()Kod) <strong>und</strong> die Komponentenfunktionender Dekodierungsfunktion Dkod alle primitiv rekursiv sind.Die Kodierung, die wir hier angeben wollen, beruht auf der eindeutigenPrimzahlzerlegung für natürliche Zahlen. Dazu definieren wir unszunächst eine Funktion Pz , die die Primzahlen aufzählt. Die Rekursionsgleichungenfür diese Funktion sindPz (0) = 2 (3.9)<strong>und</strong>Pz (S(z)) = min{x| Prim(x) ∧ Pz (z) < x}. (3.10)An den Gleichungen (3.9) <strong>und</strong> (3.10) ist allerdings noch nicht zu sehen,daß die Funktion Pz primitiv rekursiv ist. Dies liegt an der unbeschränktenSuche, die mit der Minimumsbildung in (3.10) verb<strong>und</strong>en ist. UmPz primitiv rekursiv definieren zu können, müssen wir diese Suche beschränken.Das gelingt, wenn man bedenkt, daß im Intervall(Pz (n), Pz (n)! + 1] := {x| Pz (n) < x ≤ Pz (n)! + 1}mindestens eine Primzahl liegen muß. Also können wir (3.10) ersetzendurchPz (S(z)) = µx ≤ (Pz (z)! + 1). (Prim(x) ∧ Pz (z) < x). (3.11)Die zunächst naheliegende Idee, eine Kodierung vermöge der Abbildung(x 1 , . . . , x n ) ↦−→ Pz (0) x1 · · · Pz (n − 1) x nzu definieren, stößt auf die Schwierigkeit, daß dann die Dekodierungennicht eindeutig bestimmt sind. So wäre beispielweise der Kode eines Tupels,das nur aus Nullen besteht, immer 1. Die Länge des ursprünglichenTupels kann aus dem Kode somit nicht berechnet werden. Eine Lösungdieses Problems bestünde darin, die Länge mitzukodieren. Wir wollen51rekursiveKodierungsfunktion
3. µ-rekursive Funktionenhier einen anderen Weg gehen, indem wir dafür sorgen, daß der Exponent0 bei der Kodierung nicht auftreten kann. Wir definieren daher〈x 1 , . . . , x n 〉 :={0, falls n = 0,Pz (0) x 1+1 · · · Pz (n − 1) xn+1 , sonst.Hier folgen wir der Schreibweise der Standardliteratur der Rekursionstheorie,in der die primitiv rekursive Kodierungsfunktion mit 〈. . .〉 bezeichnetwird. Zur Definition der Dekodierung haben wir den Exponentender Primzahl Pz (i) in der Primzahlzerlegung einer natürlichen Zahl x zubestimmen. Dieser ist gegeben durchν(i, x) := min{z | ¬(Pz (i) z+1 /x)}.Da der Exponent kleiner oder gleich x zu sein hat, können wir ν vermögeν(i, x) = µz ≤ x. ¬(Pz (i) z+1 /x)als primitiv rekursive Funktion erhalten. Wir definieren dann(x) i := ν(i, x) ·−1<strong>und</strong>lh(x) := µz ≤ x. ¬(Pz (z)/x)<strong>und</strong> erhalten〈(x) 0 , . . . , (x) lh(x)〉 = x. (3.12)·−1Das Bild der Kodierungsfunktion ist dann die Menge aller “Folgennummern”(englisch “sequence numbers”) <strong>und</strong> wird daher üblicherweise mitSeq bezeichnet. Dann giltSeq := rng(()〈. . .〉) = {x| (∀z ≤ x)(¬(Pz (z+1)/x)∨Pz (z)/x)}, (3.13)womit Seq als primitiv rekursive Menge zu erkennen ist. Die Dekodierungerhalten wir durchDkod(x) := ((x) 0 , . . . , (x) lh(x) ·−1 ).KonkatenationDamit haben wir eine primitiv rekursive Kodierung angegeben.Eine wichtige Funktion auf den Kodes ist die Konkatenation von Kodes.Diese ist gegeben durchx ⌢ y := 〈(x) 0 , . . . , (x) lh(x) ·−1 , (y) 0, . . . , (y) lh (y) ·−1〉. (3.14)Aus der in (3.14) gegebenen Definition erhalten wir sofort, daß52
3.4. Simultane Rekursion <strong>und</strong> Wertverlaufsrekursion〈x 1 , . . . , x n , y 1 , . . . , y m 〉 = 〈x 1 , . . . , x n 〉 ⌢ 〈y 1 , . . . y m 〉gilt <strong>und</strong> die Konkatenation eine primitiv rekursive Funktion ist.3.4 Simultane Rekursion <strong>und</strong> WertverlaufsrekursionAls erste Anwendung der primitiv rekursiven Kodierung werden wir zeigen,daß wir mit ihrer Hilfe auch mehrere Funktionen simultan durchprimitive Rekursion definieren können. Wir sagen, daß die Funktionenf 1 , . . . , f n durch simultane Rekursion definiert sind, wenn sie den Rekur- Simultane primitivesionsgleichungenRekursionf i (0, ⃗x) = g i (⃗x) (3.15)<strong>und</strong>f i (S(z), ⃗x) = h i (z, ⃗x, f 1 (z, ⃗x), . . . , f n (z, ⃗x)) (3.16)für i = 1, . . . , n gehorchen, wobei die Funktionen g 1 , . . . , g n <strong>und</strong> h 1 , . . . , h ngegebene Funktionen korrekter Stellenzahlen sind.Es ist durch Induktion leicht nachzuweisen, daß die Rekursionsgleichungendie Funktionen f 1 , . . . , f n eindeutig bestimmen, <strong>und</strong> wir möchtengerne einsehen, daß bei primitiv rekursiven Funktionen g 1 , . . . , g n <strong>und</strong>h 1 , . . . , h n auch die Funktionen f 1 , . . . , f n primitiv rekursiv sind.Dazu definieren wir eine Funktion ˜f vermöge der Rekursionsgleichungen˜f(0, ⃗x) = 〈g 1 (⃗x), . . . , g n (⃗x)〉<strong>und</strong>˜f(S(z), ⃗x) =〈h 1 (z, ⃗x, ( ˜f(z, ⃗x)) 0 , . . . , ( ˜f(z, ⃗x)) n ·−1 ), . . . , h n(z, ⃗x, ( ˜f(z, ⃗x)) 0 , . . . , ( ˜f(z, ⃗x)) n ·−1 )〉.Damit haben wir ˜f als primitiv rekursive Funktion <strong>und</strong> erhaltenf i (z, ⃗x) = ( ˜f(z, ⃗x)) i ·−1für i = 1, . . . , n.Eine weitere Anwendung ist die sogenannte Wertverlaufsrekursion. Umdiese zu beschreiben, definieren wir uns den Wertverlauf f einer Funktion Wertverlauf einerf durch die RekursionsgleichungenFunktionf(0, ⃗x) = 〈〉 (3.17)<strong>und</strong>53
3. µ-rekursive Funktionenf(S(z), ⃗x) = f(z, ⃗x) ⌢ 〈f(z, ⃗x)〉. (3.18)Offenbar ist für z > 0f(z, ⃗x) = 〈f(0, ⃗x), . . . , f(z ·−1, ⃗x)〉,woran zu sehen ist, daß f(z, ⃗x) tatsächlich den Wertverlauf der Funktionf unterhalb des Arguments z beschreibt. Also haben wir stetsf(z, ⃗x) ∈ Seq<strong>und</strong>lh(f(z, ⃗x)) = z.Aus den Rekursionsgleichungen (3.17) <strong>und</strong> (3.18) folgt sofort, daß füreine primitiv rekursive Funktion f auch deren Wertverlauf f primitivrekursiv ist. Umgekehrt erhalten wirf(z) = (f(z + 1)) z ,Wertverlaufsrekursionwas zeigt, daß sich die ursprüngliche Funktion primitiv rekursiv aus ihremWertverlauf berechnen läßt.Wir sagen nun, daß eine Funktion f durch Wertverlaufsrekursion definiertist, wenn sie der Rekursionsgleichungf(z, ⃗x) = g(z, f(z, ⃗x), ⃗x) (3.19)für eine gegebene Funktion g gehorcht.Auch hier läßt sich durch eine einfache Induktion nach z nachweisen,daß f(z, ⃗x) eindeutig bestimmt ist. Aus den Gleichungen (3.17), (3.18)<strong>und</strong> (3.19) folgt nun, daß bei primitiv rekursivem g die durch Wertverlaufsrekursiondefinierte Funktion f ebenfalls primitiv rekursiv ist.Eine wichtige <strong>und</strong> häufige Anwendung der Wertverlaufsrekursion ist derfolgende Spezialfall. Wir gehen davon aus, daß wir eine primitiv rekursiveFunktion g zusammen mit primitiv rekursiven Funktionen h 1 , . . . , h nhaben, für dieh i (z, ⃗x) < zfür alle natürlichen Zahlen z gilt. Dann ist eine Funktion f durch dieGleichungf(z, ⃗x) = g(f(h 1 (z, ⃗x), ⃗x), . . . , f(h n (z, ⃗x), ⃗x)) (3.20)eindeutig bestimmt <strong>und</strong> primitiv rekursiv. Dies ist mit Hilfe der Wertverlaufsrekursionunmittelbar einzusehen, da wir wegen h i (z, ⃗x) < z (3.20)schreiben können als54
f(z, ⃗x) = g((f(z, ⃗x)) h1 (z,⃗x), . . . , (f(z, ⃗x)) hn (z,⃗x)).3.5. Kodes für primitiv rekursive FunktionenDies wird oft Anwendung bei der Definition primitiv rekursiver Prädikatefinden. Dort werden wir öfter Prädikate P vermöge der “Rekursionsgleichung”P = O(. . . , Sub(P, h 1 , . . . , h n ), . . .)definieren, wobei O eine erweiterte boolesche Operation ist <strong>und</strong> dieFunktionen h i den obigen Einschränkungen unterliegen. Nach (3.8) gehorchtdie charakteristische Funktion des so definierten Prädikats dannder Gleichungχ P (⃗x, z) = g(. . . , χ P (h 1 (⃗x, z), . . . , h n (⃗x, z)), . . .) (3.21)für eine primitiv rekursive Funktion g <strong>und</strong> ist somit primitiv rekursiv.Da (z) x < z für alle natürlichen Zahlen x <strong>und</strong> z > 0 gilt, können wirin (3.21) als Spezialfall h i (x, z) := (z) x wählen. Dies wird die häufigsteAnwendung sein.3.5 Kodes für primitiv rekursive FunktionenWir haben bereits in Abschnitt 3.1 bemerkt, daß der Algorithmus füreine primitiv rekursive Funktion f durch einen Funktionsterm F gegebenist, dem f extensional gleich ist. In F ist daher die Informationgespeichert, die es uns ermöglicht, den Wert f(⃗x) zu dem Argument⃗x zu berechnen. Wenn unsere in 3.3 eingeführten Kodierungsfunktionenwirklich leistungsfähig sind, so müßte es gelingen, mit ihnen die in einemFunktionsterm enthaltene Information zu verschlüsseln.Um zu zeigen, daß diese das tatsächlich leisten, wollen wir für jedenFunktionsterm F einen Kode F definieren, der die in F vorhandeneInformation verschlüsselt.Definition 12 (Kodes für primitiv rekursive Funktionsterme)1. C n k = 〈0, n, k〉2. P n k = 〈1, n, k〉3. S = 〈2, 1〉4. Sub(g, h 1 , . . . , h m ) = 〈3, ( h 1 ) 1 , g , h 1 , . . . , h n 〉5. Rec(g, h) = 〈4, ( g ) 1 + 1, g , h 〉Wir nennen F die Gödelnummer des Termes F . Offenbar läßt sichder Funktionsterm F aus F völlig rekonstruieren. Das Verständnis derKodierung in Definition 12 wird vielleicht erleichtert, wenn man sichvor Augen hält, daß ein Kode immer die Gestalt 〈nr, n, . . .〉 hat, wobeiKodierung primitivrekursiverFunktionsterme55
3. µ-rekursive FunktionenIndizes für primitivrekursiveFunktionennr für die laufende Nummer (beginnend mit 0) in der Reihenfolge derDefinitionsklauseln steht, n die Stellenzahl des kodierten Termes ist <strong>und</strong>in . . . die weitere Information steht, wie sie beispielsweise durch dieKodes der Subterme gegeben wird.Ist f eine primitiv rekursive Funktion <strong>und</strong> F ein primitiv rekursiverFunktionsterm, dem f extensional gleich ist, so heißt F ein Index vonf. Wir wollen Indizes von f auch durch f notieren, obwohl dies nichtganz korrekt ist, da eine Funktion f verschiedene – sogar unendlichviele verschiedene – Indizes hat. Gerechtfertigt wird diese nachlässigeSchreibweise dadurch, daß im extensionalen Sinne eine Funktion eindeutigdurch einen ihrer Indizes bestimmt ist. Wir notieren diese eindeutigbestimmte Funktion durch [e].Definieren wir die MengeInd(PR) := { e e ist Index einer primitiv rekursiven Funktion } , (3.22)so stellt sich sofort die Frage, obe ∈ Ind(PR)entscheidbar ist. Dazu haben wir zu untersuchen, wie e ∈ Ind(PR) durchDefinition 12 beschrieben ist. Es gilte ∈ Ind(PR) ⇐⇒ Seq (e)∧{[(e) 0 = 0 ∧ lh(e) = 3]∨[(e) 0 = 1 ∧ lh(e) = 3 ∧ 1 ≤ (e) 2 ≤ (e) 1 ]∨[(e) 0 = 2 ∧ lh(e) = 2 ∧ (e) 1 = 1]∨[(e) 0 = 3 ∧ lh(e) = (e) 21 + 3∧(∀x < lh(e))(x < 2 ∨ (e) x ∈ Ind(PR))∧(∀x < lh(e))(x < 3 ∨ (e) 1 = (e) x1 )]∨[(e) 0 = 4 ∧ lh(e) = 4 ∧ (e) 3 ∈ Ind(PR)∧(e) 4 ∈ Ind(PR) ∧ (e) 1 = (e) 21 + 1∧(e) 31 = (e) 1 + 1]},wobei wir die Abkürzung(e) ij := ((e) i ) jbenützt haben. Das Prädikat Ind(PR) ist durch Wertverlaufsrekursiondefiniert – dies ist eine der in Abschnitt 3.4 erwähnten Anwendungen –<strong>und</strong> damit primitiv rekursiv.Wir können nun eine n + 1-stellige Funktion φ n definieren durchφ n (e, ⃗x) :={[e](⃗x), falls e ∈ Ind(PR) <strong>und</strong> (e)1 = n,0, sonst.56
3.6. µ-partiellrekursive FunktionenDie Funktion φ n ist offensichtlich berechenbar. Ein Algorithmus ergibt Eine nicht primitivsich wie folgt:rekursive,berechenbareWir entscheiden zunächst, ob e ∈ Ind(PR) gilt <strong>und</strong> berechnen, falls dies Funktionzutrifft, (e) 1 . Das geschieht in primitiv rekursiver Weise. Ist e ∉ Ind(PR)oder (e) 1 ≠ n, so ist φ n (e, ⃗x) = 0 <strong>und</strong> wir sind fertig. Anderenfalls dekodierenwir e <strong>und</strong> erhalten so den Funktionsterm [e]. Dann können wir[e](⃗x) primitiv rekursiv berechnen.Die Funktion φ n ist universell für die n-stelligen primitiv rekursivenFunktionen. Das bedeutet, daß wir mit φ n jede n-stellige primitiv rekursiveFunktion berechnen können. Zu gegebenem f <strong>und</strong> Argumenten ⃗xbenötigen wir nur dessen Index e um f(⃗x) = φ n (e, ⃗x) zu erhalten. Wirwerden auf die Definition <strong>und</strong> Bedeutung universeller Funktionen in denAbschnitten 3.8 <strong>und</strong> 3.10 noch genauer eingehen.Die Familie { φ n (e, . ) e ∈ Ind(PR) } ist demnach eine Familie primitivrekursiver Funktionen. Andererseits kann φ n (e, ⃗x), als Funktion derArgumente e <strong>und</strong> ⃗x aufgefaßt, nicht primitiv rekursiv sein. Nehmen wirnämlich an, sie wäre es, so wäre auch die n-stellige Funktion f, die durchf(x 1 , x 2 , . . . , x n ) := φ n (x 1 , x 1 , x 2 , . . . , x n ) + 1definiert ist, primitiv rekursiv. Also gäbe es einen Index e 0 für f <strong>und</strong> wirerhieltenφ n (e 0 , e 0 , x 2 , . . . , x n ) + 1 = f(e 0 , x 2 , . . . .x n ) = [e 0 ](e 0 , x 2 , . . . , x n ) == φ n (e 0 , e 0 , x 2 , . . . .x n ),d.h. 1 = 0, was natürlich absurd ist.An diesem Beispiel sehen wir, daß wir mit den primitiv rekursiven Funktionenden Bereich der intuitiv berechenbaren Funktionen offensichtlichnoch nicht ausgeschöpft haben. Im nächsten Abschnitt werden wirdaher eine Erweiterung der Klasse der primitiv rekursiven Funktioneneinführen.3.6 µ-partiellrekursive FunktionenUm zu einer Erweiterung der Klasse der primitiv rekursiven Funktionenzu gelangen, erinnern wir uns des Suchoperators, den wir in seinerbeschränkten Form bereits in 3.2 eingeführt hatten. Dort hatten wir denSuchoperator auf Prädikate angewandt <strong>und</strong> gelangten so zu Funktionen.Natürlich kann man einen beschränkten Suchoperator zur Definition vonFunktionen aus bereits gegebenen Funktionen heranziehen. Dies erreichtman, indem man57
3. µ-rekursive Funktionenµ b f := µ b Ze(f)setzt, wobei Ze(f) := {(⃗x, z)| f(⃗x, z) = 0} das Nullstellengebilde derFunktion f bedeutet. Ließe man nun eine unbeschränkte Suche zu, soerhielte man(µf)(⃗x) = min{z | f(⃗x, z) = 0}.Der unbeschränkteSuchoperatorDa f nicht notwendigerweise Nullstellen besitzen muß, sehen wir, daßµf unter Umständen <strong>und</strong>efiniert sein kann. Wir müssen daher, wie schonfrüher bei den maschinenberechenbaren Funktionen, die Klasse der totalenFunktionen verlassen <strong>und</strong> zu partiellen Funktionen übergehen. Dasbedeutet jedoch, daß wir den unbeschränkten Suchoperator bereits fürpartielle Funktionen zu definieren haben. Hierin liegt tatsächlich ein kleinesProblem. Wir wollen wir verfahren, wenn f eine partielle Funktionist, derart, daß f(⃗x, 0) <strong>und</strong>efiniert ist, aber bei (⃗x, 1) eine Nullstelle hat?Vom algorithmischen Standpunkt aus gesehen, können wir diese Nullstellenicht mit Sicherheit finden. Der natürliche Algorithmus für µf, derdarin besteht, der Reihe nach f(⃗x, 0), f(⃗x, 1), . . . zu berechnen <strong>und</strong> zutesten, ob das erhaltene Ergebnis eine Nullstelle ist, würde sich bereitsbei der Berechnung von f(⃗x, 0) “aufhängen”. Für jeden vorstellbarenweiteren Algorithmus ergeben sich ähnliche Probleme. Daher definiertman den unbeschränkten Suchoperator in der folgenden Weise:Definition 13 Sei f: N n+1 −→ p N eine partielle Funktion. Dann ist diedurch den Suchoperator gewonnene Funktion (µf) gegeben durch(µf)(⃗x) ≃ min{z | f(⃗x, z) ≃ 0 ∧ (∀u < z)(∃y)[f(⃗x, u) ≃ y ∧ y ≠ 0]}.Das bedeutet, daß (µf)(⃗x) nur dann definiert <strong>und</strong> gleich z ist, wennf(⃗x, z) ≃ 0 ist <strong>und</strong> f(⃗x, u) für alle u < z definiert ist <strong>und</strong> dort einen von0 verschiedenen Wert besitzt.Natürlich läßt sich der unbeschränkte Suchoperator auch für Prädikatedefinieren.Sei P ein n + 1-stelliges Prädikat. Die durch den Suchoperator gebildeteFunktion µP ist definiert durch(µP )(⃗x) ≃ min{z | (⃗x, z) ∈ P }. (3.23)Der Suchoperator (µP )(⃗x) sucht also nach dem kleinsten z mit P (⃗x, z).Damit ordnet er einem n + 1-stelligen Prädikat eine n-stellige Funktionzu.Auch hier wollen wir wieder die einprägsameren Schreibweisen µz . [f(⃗x, z) ≃0] beziehungsweise µz . P (⃗x, z) für den Suchoperator vorziehen.Unter Zuhilfenahme des Suchoperators können wir nun die µ-partiellre-58
3.7. Maschinenberechenbarkeit <strong>und</strong> µ-partiellrekursive Funktionenkursiven Funktionen definieren.Definition 14 Die µ-partiellrekursiven Funktionen sind die kleinste Klas- µ-partiellrekursivese partieller Funktionen, die die Gr<strong>und</strong>funktionen umfaßt <strong>und</strong> gegenüber FunktionenSubstitutionen, primitiver Rekursion <strong>und</strong> dem Suchoperator abgeschlossenist. Wir bezeichnen die Klasse der µ-partiellrekursiven Funktionenmit P.Eine Funktion heißt rekursiv, wenn sie µ-partiellrekursiv <strong>und</strong> total ist. F Rekursivebezeichne die Klasse der rekursiven FunktionenFunktionenAuch hier gilt die Bemerkung, wie wir sie im Anschluß an die Definitionder primitiv rekursiven Funktionen (Definition 10) gemacht haben. Jedepartiell rekursive Funktion stimmt extensional mit einer Funktion überein,die durch einen Funktionsterm gegeben ist, der aus den Gr<strong>und</strong>funktionenmittels der Operationen Sub, Rec <strong>und</strong> µ aufgebaut ist.Definition 14 erweitert die Definition der primitiv rekursiven Funktionen.Jeder primitiv rekursive Funktionsterm ist offenbar auch ein gemäßDefinition 14 korrekt gebildeter Funktionsterm. Damit ist jede primitivrekursive Funktion µ-partiellrekursiv <strong>und</strong>, da alle primitiv rekursivenFunktionen total sind, somit auch rekursiv. Also giltPR ⊆ F ⊆ P.Als nächstes gilt es nun zu klären, an welcher Stelle die maschinenberechenbarenFunktionen hier ins Bild kommen. Dies wollen wir imfolgenden Abschnitt tun.3.7 Maschinenberechenbarkeit <strong>und</strong> µ-partiellrekursiveFunktionenEs ist relativ einfach einzusehen, daß alle µ-partiellrekursiven Funktionenmaschinenberechenbar sind. Unsere Strategie zum Nachweis wird Maschinenberechenbarkeiteinfach darin bestehen, Registermaschinenprogramme für die Gr<strong>und</strong>funktionenzu schreiben <strong>und</strong> uns anschließend zu überlegen, daß die auf Funktionenµ-partiellrekursiverRegistermaschinen berechenbaren Funktionen gegenüber den Gr<strong>und</strong>operatoren<strong>und</strong> dem unbeschränkten Suchoperator abgeschlossen sind.Als Vorbereitung überlegt man sich zwei einfache Hilfsprogramme wieMOVE(k, l),das den Inhalt des k-ten Registers in das l-te Register verschiebt <strong>und</strong>dabei das k-te Register leert, <strong>und</strong>COPY(k, l, m),59
3. µ-rekursive Funktionendas den Inhalt des k-ten Registers in das l-te Register kopiert <strong>und</strong> dabeidas m-te Register als Zwischenspeicher benützt, das nach Beendigungdes Programmes dann leer ist. Die Flußdiagramme dieser Programmefinden sich in den Abbildungen 3.7 - 1 <strong>und</strong> 3.7 - 2.STARTSTARTCLEAR(l)BEQ iNEINJAENDBEQkNEINJAENDDECiDEC kINClAbb. 3.7 - 1: Die Prozeduren CLEAR(i) <strong>und</strong> MOVE(k, l) zum Löschenbzw. Verschieben von RegisternFür die Gr<strong>und</strong>funktionen erhält man einfache Programme. Das für C n kist im Flußdiagramm 3.7 - 3 angegeben, das Programm für die Nachfolgerfunktionist trivial <strong>und</strong> ein Programm für P n k ist einfach durchCOPY(k, 1, n + 1) gegeben.Wir haben uns also nur noch den Abschluß unter den Gr<strong>und</strong>operationen<strong>und</strong> dem µ-Operator klar zu machen. Beginnen wir mit der Substitution.Wir gehen davon aus, daß wir bereits Programme P hj für dieFunktionen h 1 , . . . , h m <strong>und</strong> P g für g haben <strong>und</strong> suchen ein Programmfür Sub(g, h 1 , . . . , h m ). Wenn wir ein Registermaschinenprogramm Phaben mitRes P (z 1 , . . . , z n ) ≃ m,so enthält dies nur endlich viele Anweisungen. Daher gibt es eine Zahlr, so daß alle von P angesprochenen Register einen Index kleiner als rhaben. Es liegt somit ein r-Registermaschinenprogramm vor. Wir dürfenr so groß annehmen, daß keines der Programme P hj für j = 1, . . . , m<strong>und</strong> P g ein Register mit einem größeren Index als r anspricht. Das in60
3.7. Maschinenberechenbarkeit <strong>und</strong> µ-partiellrekursive FunktionenSTARTCLEAR(l)CLEAR(m)DECkJABEQ MOVE(m,k) ENDkNEININC lINCmAbb. 3.7 - 2: Die Prozedur COPY(k, l, m) zum Kopieren von RegisternSTARTENDCLEAR(0) CLEAR(n-1) INC0k- fachAbb. 3.7 - 3: Flußdiagramm zur Berechnung der Funktion C n kAbbildung 3.7 - 4 gezeigte Flußdiagramm liefert dann ein Programm fürSub(h, g 1 , . . . , g m ). In ähnlicher Weise erhalten wir auch Programmefür Rec(g, h) <strong>und</strong> µf. Die Flußdiagramme hierfür finden sich in denAbbildungen 3.7 - 5 <strong>und</strong> 3.7 - 6.Um umgekehrt einzusehen, daß die maschinenberechenbaren Funktionenµ-partiellrekursiv sind, führen wir den Begriff einer primitiv rekursivenBasismaschine ein. Bislang haben wir nur die primitive Rekursivität vonFunktionen f: N k −→ N definiert. Dies konnten wir ohne wesentlicheEinschränkung der Allgemeinheit tun, da wir vermöge der Kodierungsfunktionendiese Definition leicht auf vektorwertige Funktionen ausdehnenkönnen. Zu einer vektorwertigen Funktion61Vektorwertigeprimitiv rekursiveFunktionen
3. µ-rekursive FunktionenSTARTCOPY(i,r+i,r+2m+1)i = 1,...,nCOPY(r+i,i,r+2m+1)i = 1,...,nPh jCOPY(1,r+m+j,r+2m+1)j = 1,...,mENDP gCOPY(1,r+m+j,r+2m+1)j = 1,...,mAbb. 3.7 - 4: Flußdiagramm zur Berechnung von Sub(g, h 1 , . . . , h m )f: N k −→ N lmitf(⃗x) = (f 1 (⃗x), . . . , f l (⃗x))definieren wir deren Kontraktion〈f〉: N k −→ Nals〈f〉 := 〈f 1 (⃗x), . . . , f l (⃗x)〉.Primitiv rekursiveBasismaschinenWir nennen f (primitiv) rekursiv , wenn ihre Kontraktion 〈f〉 (primitiv)rekursiv ist.Wir wollen eine Basismaschine B = (M, S, T , IN, OUT) primitiv rekursivnennen, wenn es1. ein k ∈ N gibt, so daß M = N k ist,2. die Funktionen IN, OUT <strong>und</strong> alle Funktionen in S primitiv rekursivsind,3. alle Relationen in T primitiv rekursiv sind.Fassen wir für eine primitiv rekursive Maschine C den KonfigurationsraumK(C) = M(C) × N k als N k+1 <strong>und</strong> damit die Rechenschrittfunktionals Funktion von N k+1 nach N k+1 auf, so ist sofort zu sehen, daß dieseeine primitiv rekursive Funktion ist. Damit ergibt sich für die Rechenzeitfunktion62
3.7. Maschinenberechenbarkeit <strong>und</strong> µ-partiellrekursive FunktionenSTARTCOPY(i,r+i,r+n+2)i = 1,...,n+1COPY(r+1+i,i,r+n+3)i = 1,...,nP gBEQ(r+1)JAENDNEINDEC r+1MOVE(1,2)INCn+2MOVE(n+2,1)PhCOPY(r+1+i,2+i,r+n+3)i = 1,...,nAbb. 3.7 - 5: Flußdiagramm zur Berechnung von Rec(g, h)RZ C (z) ≃ µx. RS C x ∈ E(C),womit RZ C als µ-partiellrekursiv erkannt ist. Dann sind aber die innereResultatsfunktionRES C (z) ≃ (P k+12 (RS CRZ C (z) (k P , z)), . . . , P k+1k+1 (RS C RZ C(z) (k P , z)))<strong>und</strong> die äußere ResultatsfunktionRes C (d) ≃ OUT(RES C (IN(d)))ebenfalls µ-partiellrekursiv.Um einzusehen, daß die turingberechenbaren Funktionen µ-partiellrekursivsind, genügt es demnach, eine primitiv rekursive Basismaschine B<strong>und</strong> einen Homomorphismus Φ: Tur −→ B anzugeben. Die allgemeineBandinschrift einer Turingmaschine über Tur hat die Gestalt63
3. µ-rekursive FunktionenSTARTCOPY(i,r+i,r+n+1)i = 1,...,nCLEAR(n+1)PgBEQ 1JACOPY(n+1,1)ENDNEININCn+1COPY(r+i,i,n+1)i = 1,...,nAbb. 3.7 - 6: Flußdiagramm zur Berechnung von µgi = B ∞ ⋆ l m−1B . . . B ⋆ l 0z ⋆ r 0B . . . B ⋆ r n−1B ∞mit z ∈ {⋆, B}. Die Idee ist nun, diese Inschrift als das TripelΦ(i) := (〈l 0 , . . . , l m−1 〉, z, 〈r 0 , . . . , r n−1 〉)zu kodieren, wobeiz :={1, falls z = ⋆,0, falls z = Bsei. Es ist nun einfach, die Befehle der Turingbasismaschine auf diesenTripeln zu simulieren. So ist, um mit einfachen Beispielen zu beginnen,64
3.7. Maschinenberechenbarkeit <strong>und</strong> µ-partiellrekursive FunktionenΦ(PRT )(l, z, r) := (l, 1, r),Φ(CLR)(l, z, r) := (l, 0, r),Φ(BEQ)(l, z, r) :={0, falls z = 11, falls z = 0 .Etwas aufwendiger gestalten sich die Übersetzungen der Arbeitsfeldverschiebungen.Hier definieren wirΦ(LFT )(l, z, r) := (l ′ , z ′ , r ′ )mitl ′ :=<strong>und</strong>s ′ :=<strong>und</strong>r ′ :=⎧⎪⎨⎪⎩〈0〉, falls l = 〈0〉,〈(l) 1 , . . . (l) lh(l) ·−1 〉, falls lh(l) > 1 <strong>und</strong> (l) 0 = 0,〈(l) 0 ·−1, . . . , (l) lh(l) ·−1 〉, falls (l) 0 > 0,0, sonst{0, falls (l)0 = 0,1, falls (l) 0 > 0,⎧⎪⎨⎪⎩〈z〉, falls r = 〈0〉,〈z〉 ⌢ r, falls lh(r) > 0<strong>und</strong> ((r) 0 = 0 oder z = 0),〈(r) 0 + 1, . . . , (r) lh (r) ·−1 〉, falls z = 1 <strong>und</strong> (r) 0 ≠ 0,0, sonst.Analog erhält man Φ(RHT ).Definieren wir nunB := (N 3 , {Φ(PRT ), Φ(CLR), Φ(LFT), Φ(RHT)}, {Φ(BEQ)}, IN B k , OUTB j ),wobei wirIN B k := Φ ◦ IN T urk<strong>und</strong>OUT B j (l, z, r) :=⎧⎨⎩((l) 0 , . . . , (l) j ·−1 ),falls j < lh(l),((l) 0 , . . . , (l) lh(l), 0 . . . , 0), ·−1 falls lh(l) ≤ j,setzen, so ist B eine primitiv rekursive Basismaschine <strong>und</strong>Φ: Tur −→ B65
3. µ-rekursive FunktionenTuringberechenbareFunktionen sindµ-partiellrekursivein Maschinenhomomorphismus. Also giltP T ur ⊆ P B ⊆ P<strong>und</strong>F T ur ⊆ F B ⊆ F<strong>und</strong> wir haben den Kreis geschlossen. Zusammenfassend haben wir damitden folgenden Satz bewiesen:Satz 15 Die auf Register- oder Turingmaschinen berechenbaren Funktionensind genau die µ-rekursiven Funktionen. Die dort berechenbarenpartiellen Funktionen sind genau die µ-partiellrekursiven Funktionen.Wir haben mit Satz 15 eingesehen, daß alle bisherigen Versuche zur mathematischenPräzisierung des Begriffes einer berechenbaren Funktionzur gleichen Klasse von Funktionen geführt haben. Später werden wirnoch einen weiteren Ansatz kennenlernen, der ebenfalls wieder zur Klasseder rekursiven Funktionen führen wird. Offensichtlich liegt hier einerder Fälle vor, in denen man einen intuitiven Begriff mathematisch gutfassen konnte. Dies wird in der CHURCHschen These ausformuliert.Die CHURCHscheTheseThese (ALONZO CHURCH)Jede berechenbare Funktion ist rekursiv.Wie ihr Name sagt, ist die CHURCHsche These eine These <strong>und</strong> kein mathematisch beweisbarerSatz. Ein Beweis würde ja eine mathematisch exakte Fassung des Begriffes‘berechenbar’ voraussetzen. Man ist sich dieser Tatsache heute aber bereits so sicher,daß man sogar in mathematischen Beweisen mit der CHURCHschen These argumentiert.Dies geschieht in der Art, daß man, um die Rekursivität einer Funktion nachzuweisen,oft nur noch einen Algorithmus für die Funktion angibt. Allerdings kann man überall,wo man die CHURCHsche These bislang verwendet hat, diese durch einen exakten, wennauch aufwendigeren Beweis ersetzen.3.8 Der Normalformensatz von KLEENENachdem die Klassen der maschinenberechenbaren <strong>und</strong> der µ-partiellrekursivenFunktionen übereinstimmen, wollen wir diese Klassen einheitlichmit P bezeichnen <strong>und</strong> nur noch von partiellrekursiven Funktionensprechen.Im Abschnitt 3.3 hatten wir gezeigt, daß sich die primitiv rekursivenFunktionen in primitiv rekursiver Weise kodieren lassen. Diese Kodierungläßt sich in natürlicher Weise zu einer Kodierung für die partiellrekursivenfortsetzen, indem wir die Definition 12 um eine Klausel für denunbeschränkten Suchoperator erweitern. Damit erhalten wir:Definition 16 (Kodes für partiellrekursive Funktionsterme)66
3.8. Der Normalformensatz von KLEENEsiveme1. C n k = 〈0, n, k〉2. P n k = 〈1, n, k〉3. S = 〈2, 1〉4. Sub(g, h 1 , . . . , h m ) = 〈3, ( h 1 ) 1 , g , h 1 , . . . , h n 〉5. Rec(g, h) = 〈4, ( g ) 1 + 1, g , h 〉6. (µf) = 〈5, ( f ) 1 ·−1, f 〉Wir definieren dann die MengeInd(P) := {e| e ist Index einer partiellrekursiven Funktion}<strong>und</strong> weisen wie in Abschnitt 3.5 nach, daß Ind(P) eine primitiv rekursiveMenge ist.Unser nächstes Ziel ist es, den ganzen Verlauf einer Rechnung zu kodie- Entwicklung des Berechnungsprädikatesren. Denken wir an die maschinenberechenbaren Funktionen, so ist eineKodierung des Rechenverlaufes nicht schwierig. Gehen wir wie im vorhergehendenAbschnitt vom Konfigurationsraum N k+1 aus, so läßt sicheine Konfiguration(k, z 1 , . . . , z k )durch(k, z 1 , . . . , z k ) := 〈k, z 1 , . . . , z k 〉kodieren. Umgekehrt dekodieren wir eine Konfiguration durchDkod(b) := ((b) 0 , . . . , (b) lh(b) ·−1 ).Eine erfolgreiche Berechnung einer Maschine C beim Input d ∈ D wirddann durch eine endliche Folge(k C , IN(d)) , RS C ((k C , IN(d)) , RS C 2 (k C , IN(d)) , . . . , RS C t (k C , IN(d))natürlicher Zahlen beschrieben, wobei t ≃ Rz C (d) die Rechenzeit derMaschine C beim Input d bedeutet. Diese Folge läßt sich dann in eineeinzige Zahlb = 〈 (k C , IN(d)) , . . . , RS C t (k C , IN(d)) 〉kodieren. Ziehen wir in Betracht, daß eine Maschine durch ihr ProgrammP = (k P , A) mit einer endlichen Anweisungsmenge A gegeben ist, sosehen wir wieder sofort ein, daß sich dieses Programm – <strong>und</strong> damit dieMaschine – durch einen Kode e beschreiben läßt. Dieser Kode kann beispielsweisedadurch erhalten werden, daß wir jeder der Instruktionen ider Basismaschine eine Nummer i zuordnen <strong>und</strong> so für jede Anweisunga = (n, i, m) oder a = (n, i, p, q) eine Gödelnummer a := 〈n, i , m〉67
3. µ-rekursive Funktionenbzw. a := 〈n, i , p, q〉 erhalten. Ist A die endliche Menge {a 1 , . . . , a k },so kodieren wir A als A := 〈a 1 , . . . , a k 〉 <strong>und</strong> endlich das gesamte Programmdurch e := P := 〈k P , A 〉 für P . Wir haben nun ein PrädikatT (e, d, b),welches aussagt, daß die Maschine mit Kode e beim Input d die Berechnungmit Kode b liefert. Sehen wir uns dieses Prädikat etwas genauer an,so stellen wir fest, daß wir es in primitiv rekursiver Weise entscheidenkönnen. Informal läßt sich dies folgendermaßen einsehen.Zunächst beachten wir, daß wir die Funktion RS C , die Startmarke k C <strong>und</strong>die Endmarken von C aus e in primitiv rekursiver Weise erhalten. Wirdürfen auf Gr<strong>und</strong> der Ergebnisse des Abschnitts 3.7 davon ausgehen, daßRS C , IN <strong>und</strong> OUT primitiv rekursive Funktionen sind. Dann können wirdie Tatsache, daß b eine Berechnung des Programms mit Kode e beimInput d darstellt, etwa durch die folgende Formel ausdrücken:Seq (b) ∧ (b) 0 = (k P , IN(d))∧(∀i < lh(b) ·−2)[(b) i+1 = RS C (Dkod((b) i )) ∧ Dkod((b) lh(b) ·−1 ) ∈ E(C)].Das Berechnungsprädikatist primitvrekursivDiese Darstellung sollte genügen, um prinzipiell klar zu machen, daßsich das Berechnungsprädikat T (e, d, b) primitiv rekursiv definieren läßt.Das Ergebnis der Rechnung erhalten wir nun alsOUT((b) 1 , . . . , (b) lh(b) ·−1 )<strong>und</strong> somit als primitiv rekursive Funktion im Argument b. Betrachten wirhier wieder nur Funktionen, die n-Tupel natürlicher Zahlen auf natürlicheZahlen abbilden – ist also d = (x 1 , . . . , x n ) ∈ N n , – so schreiben wir dasBerechnungsprädikat alsT n (e, x 1 , . . . , x n , b).Allerdings hatten wir den Kode einer partiellrekursiven Funktion f hier nicht als Kodierungeiner Maschine C für f, sondern als die Gödelnummer F eines FunktionstermesF für f definiert. Wegen der Bedeutung des Berechnungsprädikats wollen wir skizzieren,daß wir es auch bei dieser Kodierung als primitiv rekursives Prädikat erhalten.Wie bereits mehrfach betont, läßt sich aus dem Funktionsterm F , <strong>und</strong> damit auchaus seiner Gödelnummer F , ein Algorithmus für f entnehmen. Wir können uns denBerechnungskode von F (⃗x) als einen Kode〈e, x, z, b〉vorstellen, in dem e ein Index der Funktion F ist, x den zu einer Zahl zusammenkodiertenInput bedeutet, z für das Endergebnis der Rechnung steht <strong>und</strong> in b alle erforderlichenNebenrechnungen kodiert sind. Für die Gr<strong>und</strong>funktionen erhalten wir dann die Berechnungskodeswie folgt:68
1. Der Berechnungskode für C n j (x 1 , . . . , x n ) ist〈 C n j , 〈x 1, . . . , x n 〉, j, 〈〉〉.3.8. Der Normalformensatz von KLEENE2. Der Berechnungskode für P n j (x 1, . . . , x n ) ist gegeben durch〈 P n j , 〈x 1 , . . . , x n 〉, x i , 〈〉〉.3. Der Berechnungskode für S(x) ist gegeben durch〈 S , 〈x〉, S(x), 〈〉〉.Im Falle der Operationen erhalten wir die Berechnungskodes durch Zusammensetzender Kodes der Teilberechnungen. Auch dies wollen wir im einzelnen erhellen.4. So ist der Berechnungskode für Sub(h, g 1 , . . . , g m )(x 1 , . . . , x n ) gegeben durch〈 Sub(h, g 1 , . . . , g m ) , 〈x 1 , . . . , x n 〉, y, 〈b h , b g1 , . . . , b gm 〉〉,wenn wir davon ausgehen, daß b gi für i = 1, . . . , m einen Berechnungskode fürg i (x , . . . , x n ) bezeichnet, sowie b h ein Berechnungskode für h(u 1 , . . . , u m ) mit u i :=g i (x 1 , . . . , x n ), <strong>und</strong> h(u 1 , . . . , u m ) = y ist.5. Ähnlich erhalten wir einen Berechnungskode für Rec(g, h)(z, x 1 , . . . , x n ) zu〈 Rec(g, h) , 〈z, x 1 , . . . , x n 〉, y, 〈b 0 , . . . , b z 〉〉,wobei b 0 ein Berechnungskode für g(x 1 , . . . , x n ) <strong>und</strong> b i+1 für i < z ein Berechnungskodefür h(i, x 1 , . . . , x n , (b i ) 2 ) mit y = (b z ) 2 ist.6. Für (µf)(x 1 , . . . , x n ) hat der Berechnungskode die Form〈 µf , 〈x 1 , . . . , x n 〉, z, 〈b 0 , . . . , b z 〉〉,wobei b i für i = 0, . . . , z ein Berechnungskode für f(x 1 , . . . , x n , i) ist, (b i ) 2 > 0 füri = 0, . . . , z − 1 gilt <strong>und</strong> (b z ) 2 = 0 ist.Wir erhalten daher durch Wertverlaufsrekursion ein primitiv rekursives PrädikatB(〈e, x, y, b〉),welches zum Ausdruck bringt, daß e die Gödelnummer eines Funktionsterms F ist <strong>und</strong>b ein Berechnungskode für F ((x) 0 , . . . , (x) lh (x)) mit dem Ergebnis y ist. Wir wollen·−1dies hier nicht in allen Details ausführen. Zur Illustration betrachten wir lediglich denoben unter 6. behandelteten Fall des Suchoperators. Hier haben wirB 5 (c) ⇐⇒Seq (c) ∧ lh(c) = 4 ∧ (c) 0 ∈ Ind(P) ∧ (c) 00 = 5 ∧ Seq ((c) 1 ) ∧ lh((c) 1 ) = (c) 01∧Seq ((c) 3 ) ∧ lh((c) 3 ) = (c) 2 + 1∧(∀i ≤ (c) 2 )[B((c) 3i ) ∧ (c) 3i0 = (c) 02 ∧ (c) 3i1 = (c) ⌢ 1 〈i〉 ∧ (i = (c) 2 ∨ (c) 3i2 > 0)]∧(c) 3((c)2 )2 = 0.Dies ist genau die Anwendung der Definition primitiv rekursiver Prädikate durch Wertverlaufsrekursion,wie wir sie im Abschnitt 3.4 erwähnt haben.Um den Zusammenhang mit der oben angeführten Klausel 6. besser zu durchschauen,sollte man sich vor Augen halten, daß hier (c) 0 der Index µf ist, (c) 1 den Input〈x 1 , . . . , x n 〉 kodiert, (c) 2 das Ergebnis z der Rechnung ist <strong>und</strong> schließlich (c) 3 die oben69
3. µ-rekursive Funktionenmit 〈b 0 , . . . , b z 〉 bezeichnete Folge der Teilberechnungen repräsentiert. Die Formel gibtdann genau den in 6. beschriebenen Sachverhalt formal wieder.Analog erhalten wir die Prädikate B i (〈e, x, y, b〉) für i = 0, . . . , 4 <strong>und</strong> können dannB(〈e, x, y, b〉) : ⇐⇒B 0 (〈e, x, y, b〉) ∨ B 1 (〈e, x, y, b〉) ∨ B 2 (〈e, x, y, b〉)∨B 3 (〈e, x, y, b〉) ∨ B 4 (〈e, x, y, b〉) ∨ B 5 (〈e, x, y, b〉)definieren.Gilt B(b), so erhalten wir auch hier das Ergebnis der Rechnung in primitiv rekursiverWeise als(b) 2 ,<strong>und</strong> wir könnenT n (e, x 1 , . . . , x n , b) : ⇐⇒ B(b) ∧ (b) 0 = e ∧ (b) 1 = 〈x 1 , . . . , x n 〉Eigenschaften desBerechnungsprädikatesIndizespartiellrekursiverFunktionenNormalformensatzvon KLEENEdefinieren.Was wir von diesen Überlegungen festzuhalten haben, sind die folgendenTatsachen:• Zu jeder partiellrekursiven Funktion f läßt sich ein Kode f definieren,der den Algorithmus (also entweder das Programm oder den Funktionstermfür f) kodiert. Wir nennen f einen Index für f.• Es gibt ein primitiv rekursives Prädikat T n (e, x 1 , . . . , x n , b), das ausdrückt,daß b eine Berechnung einer partiellrekursiven Funktion mit Indexe beim Input x 1 , . . . , x n kodiert.• Das Endergebnis der Berechnung läßt sich in primitiv rekursiver Weiseaus dem Berechnungskode b errechnen.Zusammenfassend erhalten wir damit den folgenden Satz:Satz 17 (Normalformensatz von KLEENE) Es gibt ein n + 2-stelligesprimitiv rekursives Prädikat T n <strong>und</strong> eine primitiv rekursive Funktion Uderart, daß zu jeder n-stelligen partiellrekursiven Funktion f ein Indexe ∈ N existiert mitf(x 1 , . . . , x n ) ≃ U(µb. T n (e, x 1 , . . . , x n , b)).Es gibt viele Möglichkeiten, den Normalformensatz zu beweisen. Wirhaben zwei davon angedeutet. Obwohl es völlig unwesentlich ist, wiedas KLEENEsche T -Prädikat gewonnen wurde, ist es doch oft nützlich,sich T n (e, x 1 , . . . , x n , b) als die Aussage“b ist eine Berechnung für die Funktion mit Index e beim Input x 1 , . . . , x n ”vorzustellen.Wir führen die Notation{e} n (x 1 , . . . , x n ) :≃ U(µb. T n (e, x 1 , . . . , x n , b))70
3.8. Der Normalformensatz von KLEENEein. Definieren wir dannΦ n (e, x 1 , . . . , x n ) :≃ {e} n (x 1 , . . . , x n ),so ist Φ n eine universelle Funktion für die n-stelligen partiellrekursi- UniverselleFunktionenven Funktionen. Dabei nennen wir eine Funktion UN universell für eineKlasse F partieller Funktionen, wenn zu jedem f ∈ F eine natürlicheZahl e existiert mitf(⃗x) ≃ UN(e, ⃗x).Am Beispiel der maschinenberechenbaren Funktionen kann man sich Bedeutungklarmachen, daß die Bedeutung universeller Funktionen nicht unterschätztwerden darf. Üblicherweise benötigen wir zur Berechnung einer maschinenberechenbarenFunktion f eine Maschine C f . Wir haben uns dieMaschine C f so vorzustellen, daß das Steuerprogramm in eine Steuereinheiteingegeben werden muß. Zur Berechnung unterschiedlicher Funktionenmüssen wir daher, selbst bei unveränderter Basismaschine, dieSteuereinheit umprogrammieren (wie dies bei den ersten programmgesteuertenMaschinen auch tatsächlich der Fall war). Da die maschinenberechenbarenFunktionen aber genau die partiellrekursiven Funktionensind, wissen wir nun, daß Φ eine universelle Funktion für die maschinenberechenbarenFunktionen ist. Da die Funktion Φ offenbar partiellrekursiv<strong>und</strong> damit maschinenberechenbar ist, so können wir eine universelleMaschine C Φ bauen, die Φ berechnet. Um nun f(x 1 , . . . , x n ) füreine beliebige maschinenberechenbare Funktion f zu berechnen, müssenwir nicht mehr die Steuereinheit der Basismaschine umbauen, sondernes genügt, den Index, d.h. einen Algorithmus für f zu kennen. Ist dieserIndex e, so setzen wir C Φ einfach auf den Input (e, x 1 , . . . , x n ) an. Die universelleMaschine berechnet nun Φ(e, x 1 , . . . , x n ), d.h. {e} n (x 1 , . . . , x n ),was, falls die Berechnung erfolgreich war, der Wert f(x 1 , . . . , x n ) ist. DieMaschinenberechenbarkeit der universellen Funktion versetzt uns also indie Lage, das Programm für die Funktion f (d.h. ihren Index e) in denDatenspeicher zu schreiben. Sie ermöglicht uns damit den Schritt vonder Hardware, die durch die Basismaschine <strong>und</strong> deren Steuerprogrammgegeben ist, zur Software, die durch den Index der Funktion gegebenist. Offensichtlich ist dies genau die Art, in der wir heute unsere Rechnerprogrammieren. Der Algorithmus für die universelle Funktion gehörtdabei zu dem maschinennahen Teil des Betriebssystems, <strong>und</strong> liegt inder Regel in Form von Hard- oder Firmware (EPROMs) vor. Das Programmschreiben wir in den Datenspeicher. Die heutigen Rechner sindalso physikalische Realisationen universeller Maschinen, die natürlichmit all den Unzulänglichkeiten physikalischer Realisationen gegenüberder Idealisierung behaftet sind, wie beispielsweise endlichem Speicher,71universellerFunktionen
3. µ-rekursive Funktionen<strong>und</strong> daher im strengen Sinne keine universellen Maschinen sein können.3.9 Rekursive, semirekursive <strong>und</strong> rekursiv aufzählbarePrädikateRekursive PrädikateAbschlußeigenschaftenrekursiverPrädikatePositiveEntscheidbarkeitIn den in 3.2 eingeführten primitiv rekursiven Prädikaten haben wir bereitsentscheidbare Relationen kennengelernt. Um R(x 1 , . . . .x n ) zu entscheiden,hat man die charakteristische Funktion χ P (x 1 , . . . , x n ) zu berechnen<strong>und</strong> erhält eine positive Antwort auf das Entscheidungsproblem,falls das Ergebnis 1, eine negative, falls das Ergebnis 0 ist. Das läßt sichnatürlich sofort auf Relationen mit rekursiven charakteristischen Funktionenübertragen. Also definieren wir:Definition 18 Eine Relation (Prädikat) P heißt rekursiv, wenn ihre charakteristischeFunktion χ P eine rekursive Funktion ist.Dieser Definition schließt sich dann unmittelbar die folgende Beobachtungan.Satz 19 Ist P ein n+1-stelliges rekursives Prädikat, so ist die durch denunbeschränkten Suchoperator definierte n-stellige Funktionµx. P (x, y 1 , . . . , y n )partiell rekursiv.Der erste Schritt in der Untersuchung rekursiver Prädikate wird natürlichwieder im Studium ihrer Abschlußeigenschaften bestehen. Die gleichenÜberlegungen, wie wir sie in Abschnitt 3.2 geführt haben, zeigen uns, daßalle die Abschlußeigenschaften, die den primitiv rekursiven Prädikatenzukommen, auch für die rekursiven gelten müssen. Dabei können wirdie Substitution rekursiver (also totaler) Funktionen zulassen. Wir habendaher den folgenden Satz:Satz 20 Die rekursiven Relationen sind abgeschlossen gegenüber allenbooleschen Operationen, beschränkter Quantifikation <strong>und</strong> der Substitutionmit rekursiven Funktionen.Neben dem Problem der Entscheidbarkeit hat man oft auch das Problemder positiven Entscheidbarkeit zu betrachten. Hier verlangt man nichtnach einem Algorithmus, der die Frage⃗x ∈ P ?entscheidet, sondern bescheidet sich mit einem Algorithmus, der ⃗x ∈P bestätigt, d.h. der nur dann eine positive Antwort liefert, wenn ⃗x72
3.9. Rekursive, semirekursive <strong>und</strong> rekursiv aufzählbare Prädikatetatsächlich zu P gehört. Im negativen Falle darf sein Verhalten völligunbestimmt bleiben. Dies erinnert natürlich an die Situation, wie wir siebei partiellrekursiven Funktionen vorfinden. Auch dort führt der Algorithmuszur Berechnung von f(⃗x) nur dann zum Ziel, wenn ⃗x ∈ dom(f)gilt, während anderenfalls der Algorithmus nicht terminieren muß. Wirkönnen daher die semirekursiven Relationen in der folgenden Weise alsPräzisierung der positiv entscheidbaren Relationen einführen:Definition 21 Eine Relation P ⊆ N n heißt semirekursiv, wenn P der SemirekursiveRelationenDefinitionsbereich einer partiellrekursiven Funktion f ist, d.h. wennP = dom(f)gilt.Ein weiterer wichtiger Begriff ist der der rekursiv aufzählbaren Menge,der dadurch gegeben ist, daß sich die Elemente der Menge durch einerekursive Funktion aufzählen lassen. Exakt läßt sich dies folgendermaßendefinieren:Definition 221. Eine Menge M ⊆ N heißt rekursiv aufzählbar, wenn M leer ist, oder Rekursives eine rekursive (<strong>und</strong> damit totale) Funktion f gibt mitM = rng(()f) := {f(x)| x ∈ N}.2. Eine Relation R ⊆ N n heißt rekursiv aufzählbar, wenn ihre Kontraktion〈R〉 := {〈x 1 , . . . , x n 〉| R(x 1 , . . . , x n )}rekursiv aufzählbar ist.Es sollte auffallen, daß rekursiv aufzählbare Mengen sicherlich auchpositiv entscheidbar sind. Einen Bestätigungsalgorithmus für eine nichtleere rekursiv aufzählbare Menge M mit der Aufzählungsfunktion ferhält man, indem man sich die Listef(0), f(1), f(2), . . .erzeugt. Ist x ∈ M, so gibt es ein n ∈ N mit x = f(n), was bedeutet, daßx ∈ M nach endlich vielen Schritten bestätigt wird. Für den Fall, daß xnicht zu M gehört, liefert dieser Algorithmus jedoch keine Information,da wir zu keiner Zeit n wissen, ob nicht ein m > n mit x = f(m)existiert. Dies legt die Vermutung nahe, daß die semirekursiven <strong>und</strong> rekursivaufzählbaren Relationen übereinstimmen könnten. Um dies weiterzu untersuchen, stellen wir zunächst fest, daß wir eine nicht leere rekursivaufzählbare Menge M mit Aufzählungsfunktion f immer durch73aufzählbare Mengen<strong>und</strong> Relationen
3. µ-rekursive Funktionenx ∈ M ⇐⇒ (∃y)[f(y) = x]darstellen können. Da f eine rekursive Funktion ist, handelt es sich beidem PrädikatCharakterisierungrekursivaufzählbarerRelationenR(x, y): ⇐⇒f(y) = xnach Satz 20 um ein rekursives Prädikat. Ist umgekehrtM = {x| (∃y)R(x, y)}nicht leer <strong>und</strong> R dabei ein rekursives Prädikat, so wählen wir ein u ∈ M<strong>und</strong> definieren eine rekursive Funktion f vermöge{(x)0 , falls R((x)f(x) :=0 , (x) 1 ),u, sonst.Dann gilt offenbarM = rng(()f)<strong>und</strong> M ist damit rekursiv aufzählbar. Da wir die leere Menge leicht durchx ∈ ∅ ⇐⇒ (∃y)[x ≠ x]beschreiben können, erhalten wir, wenn wir die Kontraktionen rekursivaufzählbarer Relationen betrachten, den folgenden Satz:Satz 23 Eine n-stellige Relation P ⊆ N n ist genau dann rekursiv aufzählbar,wenn es eine n + 1-stellige rekursive Relation R gibt mit(x 1 , . . . , x n ) ∈ P ⇐⇒ (∃y)R(x 1 , . . . , x n , y).Da jede rekursive Relation R sich durch Hinzufügen leerer Existenzquantorenauf die Gestalt (∃y)R(y, . . .) bringen läßt, erhalten wir als Korollarzu Satz 23, daß die Klasse Rel r. der rekursiven Relationen eine Teilklasseder Klasse Rel r.a. der rekursiv aufzählbaren Relationen ist.Wir erhalten aber aus Satz 23 auch, daß jede rekursiv aufzählbare Relationbereits semirekursiv ist, denn giltP (⃗x) ⇐⇒ (∃y)R(⃗x, y)für eine rekursive Relation R, so ist offenbarP = dom(µy . R(⃗x, y))<strong>und</strong> P ist damit Definitionsbereich einer partiellrekursiven Funktion.Nun gilt aber für eine partiellrekursive Funktion nach dem KLEENEschenNormalformentheorem74
3.9. Rekursive, semirekursive <strong>und</strong> rekursiv aufzählbare Prädikatef(⃗x) ≃ U(µb. T n (e, ⃗x, b)),woraus sich⃗x ∈ dom(f) ⇐⇒ (∃y)T n (e, ⃗x, y) (3.24)ergibt. Setzen wirW n e:= {(x 1, . . . , x n )| (∃y)T n (e, x 1 , . . . , x n , y)},so ergibt sich die Klasse der n-stelligen semirekursiven Prädikate zuRel n s.r. = {W n e| e ∈ Ind(P)}. (3.25)Nach Satz 23 ist aber jede der Relationen Wenwir erhalten so das folgende Theorem.rekursiv aufzählbar <strong>und</strong>Satz 24 Die Klasse Rel r.a. der rekursiv aufzählbaren Relationen stimmt Semirekursive vs.mit der Klasse Rel s.r. der semirekursiven Relationen überein.Wegen Satz 24 werden wir im folgenden nur noch von rekursiv aufzählbarenRelationen sprechen. Damit folgen wir der Konvention, wie sieinsbesondere in der älteren Literatur üblich ist. Der Begriff der semirekursivenRelation – der eigentlich der entscheidendere ist – begannerst eine Rolle zu spielen, als man entdeckte, daß in gewissen Verallgemeinerungender Rekursionstheorie die Begriffe von “semirekursiv” <strong>und</strong>“rekursiv aufzählbar” auseinanderklaffen können.Die Charakterisierung der rekursiv aufzählbaren Relationen, wie siedurch Satz 23 gegeben wird (<strong>und</strong> wie sie sich für semirekursive Relationaus dem KLEENEschen Normalformensatz ergibt), wird uns aucherlauben, deren Abschlußeigenschaften zu studieren. So erkennen wirrekursiv aufzählbareRelationenbeispielsweise sofort, daß die rekursiv aufzählbaren Relationen unter Positive boolescheOperationenden positiven booleschen Operationen ∨ <strong>und</strong> ∧ sowie gegenüber derSubstitution mit rekursiven Funktionen abgeschlossen sind. Dazu stellenwir die rekursiv aufzählbaren Relationen P 1 <strong>und</strong> P 2 alsP i (⃗x) ⇐⇒ (∃y)R i (⃗x, y)mit rekursiven Relationen R i für i = 1, 2 dar <strong>und</strong> erhaltenP 1 (⃗x) ∧ P 2 (⃗x) ⇐⇒ (∃z)[R 1 (⃗x, (z) 0 ) ∧ R 2 (⃗x, (z) 1 )].Die Relation in eckigen Klammern auf der rechten Seite der Äquivalenzist nach Satz 20 rekursiv. Somit ist nach Satz 23 die links stehendeRelation rekursiv aufzählbar. Analog verfahren wir für ∨, <strong>und</strong> in ähnlicherWeise erhalten wir für die Substitution mit rekursiven Funktionenf 1 , . . . , f n75
3. µ-rekursive FunktionenP i (f 1 (⃗x), . . . , f n (⃗x)) ⇐⇒ (∃y)R i (f 1 (⃗x), . . . , f n (⃗x), y)<strong>und</strong> schließen wie eben auf die rekursive Aufzählbarkeit des links stehendenPrädikates. Etwas aufwendiger ist der Nachweis des Abschlussesgegenüber beschränkten Quantoren. Beginnen wir mit dem ∀-Quantor.Mit Satz 23 ergibt sich für ein rekursiv aufzählbares Prädikat P(∀z < x)P (⃗x, z) ⇐⇒ (∀z < x)(∃y)R(⃗x, z, y) (3.26)mit einem rekursiven Prädikat R. Gilt die linke Seite von (3.26), so habenwir zu jedem z < x ein y z mit R(⃗x, z, y z ). Alle diese y z kodieren wirzu einer Folge s := 〈y 0 , . . . , y x ·−1〉 der Länge x zusammen <strong>und</strong> erhaltensomit die Richtung von links nach rechts in der folgenden Äquivalenz.(∀z < x)P (⃗x, z) ⇐⇒ (∃s)[Seq (s) ∧ (∀z < x)R(⃗x, z, (s) z )].Die Richtung von rechts nach links ergibt sich trivialerweise aus (3.26).Mit Hilfe von Satz 23 erkennen wir den Ausdruck in eckigen Klammernwieder als rekursiv, woraus sich wieder die rekursive Aufzählbarkeitdes mit Hilfe des beschränkten Allquantors aus P definierten Prädikatesergibt.Die Abgeschlossenheit gegenüber dem beschränkten Existenzquantor ergibtsich aus einer noch allgemeineren Abschlußeigenschaft. Wenn wirwieder von einem rekursiv aufzählbaren P ausgehen, so erhalten wirnämlich(∃z)P (⃗x, z) ⇐⇒ (∃z)(∃y)R(⃗x, z, y)⇐⇒ (∃u)R(⃗x, (u) 0 , (u) 1 ).Damit folgt, daß die rekursiv aufzählbaren Relationen auch gegenüberglobaler Existenzquantifikation abgeschlossen sind. Wegen(∃z < x)P (⃗x, z) ⇐⇒ (∃z)[z < x ∧ P (⃗x, z)]Satz 25 Die rekursiv aufzählbaren Relationen sind abgeschlossen gegenüberDurchschnitten <strong>und</strong> Vereinigungen, der Substitution mit rekursivenFunktionen, der Quantifikation mit beschränkten Quantoren <strong>und</strong>dem unbeschränkten Existenzquantor.AbschlußeigenschaftenrekursivaufzählbarerRelationenfolgt damit auch die Abgeschlossenheit gegenüber beschränkter Existenzquantifikation.Zusammenfassend erhalten wir:Zu klären bleibt noch die Frage, ob die rekursiv aufzählbaren Relationenauch gegenüber der Negation abgeschlossen sind. Da wir bereits denAbschluß gegenüber der Existenzquantifikation haben <strong>und</strong>76
3.9. Rekursive, semirekursive <strong>und</strong> rekursiv aufzählbare Prädikate¬(∃y)R(y, . . .) ⇐⇒ (∀y)[¬R(y, . . .)]gilt, würde Abschluß gegenüber Negation auch den Abschluß gegenüberunbeschränkter Allquantifikation nach sich ziehen. Damit wären aber alleRelationen rekursiv aufzählbar, die sich ausgehend von primitiv rekursivenRelationen durch Quantifikationen bilden lassen. Da dies die in derSprache der Arithmetik definierbaren Relationen sind, nennt man diesedie arithmetischen Relationen. Die arithmetischen Relationen lassen Die arithmetischesich nach ihrer Quantorenkomplexität in eine Hierarchie, die arithmetischeHierarchie einordnen. Es hat sich eingebürgert, für den ∀-QuantorHierarchiedas Symbol Π <strong>und</strong> für den ∃-Quantor das Symbol Σ zu verwenden. Dasich zwei Quantoren gleicher Art wegen der Äquivalenz(Qx)(Qy)[. . . x . . . y . . .] ⇐⇒ (Qu)[. . . (u) 0 . . . (u) 1 . . .]kontrahieren lassen – dies haben wir benutzt, als wir die Abgeschlossenheitder rekursiv aufzählbaren Relationen gegenüber dem ∃-Quantorgezeigt haben –, läßt sich höchstens von einem Quantorenwechsel einKomplexitätszuwachs erwarten. Man spricht nun von einer Π n -Relation Π n - <strong>und</strong>P , wennΣ n -RelationenP (x 1 , . . . , x m ) ⇐⇒ (∀y 1 )(∃y 2 )(∀y 3 ) . . . (Qy n )R(x 1 , . . . , x m , y 1 , . . . , y n )ist, wobei R eine primitiv rekursive Relation ist <strong>und</strong> die Quantoren alternieren.Für gerades n ist daher Q ein ∃- <strong>und</strong> für ungerades n ein∀-Quantor. Dual spricht man von Σ n -Relationen P , wennP (x 1 , . . . , x m ) ⇐⇒ (∃y 1 )(∀y 2 )(∃y 3 ) . . . ( ˘Qy n )R(x 1 , . . . , x m , y 1 , . . . , y n )gilt, wobei R wieder rekursiv <strong>und</strong> ˘Q der zu Q duale Quantor ist. DieKlassen Π n <strong>und</strong> Σ n sind also in dem Sinne dual definiert, als daßP ∈ Π n ⇐⇒ C(P ) ∈ Σ n <strong>und</strong> P ∈ Σ n ⇐⇒ C(P ) ∈ Π ngelten. Oft spricht man auch von Π 0 n - bzw. Σ0 n-Relationen, wenn mandeutlich machen will, daß die zur Definition benutzten Quantoren nurüber den Typ 0, den Gr<strong>und</strong>bereich, quantifizieren, der in unserem Falleder Bereich der natürlichen Zahlen ist.In der Rekursionstheorie wird nun gezeigt, daß diese Hierarchie in derTat eine echte Hierarchie ist, was heißen soll, daß die Klasse der Π n+1 -Relationen eine echte Oberklasse der Σ n -Relationen <strong>und</strong> analog die Klasseder Σ n+1 -Relationen eine echte Oberklasse der Π n -Relationen ist. Mankann dies noch dazu verstärken, daß der Durchschnitt Π n+1 ∩ Σ n+1 , derüblicherweise als die Klasse der ∆ n+1 -Relationen bezeichnet wird, eine ∆ n -Relationenechte Oberklasse sowohl der Π n - als auch der Σ n -Relationen ist.77
3. µ-rekursive FunktionenRekursive vs.∆ 1 -RelationenRelevant für die <strong>Informatik</strong> sind allerdings nur die Gr<strong>und</strong>level dieserHierarchie.Da wir jede n-stellige rekursiv aufzählbare Relation P als eine RelationW n e erhalten, wobeiW n e (⃗x) ⇐⇒ (∃y)T n (e, ⃗x, y)für das primitiv rekursive KLEENE-Prädikat T n ist, sehen wir, daß dierekursiv aufzählbaren Relationen offenbar genau die Σ 1 -Relationen sind.Wir haben uns bereits klargemacht, daß die rekursiv aufzählbaren Relationeneine Präzisierung der intuitiv positiv entscheidbaren Relationensind. Haben wir nun eine rekursiv aufzählbare Relation P so vorliegen,daß auch deren Komplement C(P ) rekursiv aufzählbar ist, so erhaltenwir offenbar ein Entscheidungsverfahren für P (⃗x), indem wir die Bestätigungsalgorithmenfür P (⃗x) <strong>und</strong> ¬P (⃗x) abwechselnd jeweils einen Schrittlaufen lassen. Da entweder P (⃗x) oder ¬P (⃗x) gelten muß, wird einer derbeiden Algorithmen schließlich eine Antwort liefern. Damit folgt, daßeine Relation genau dann entscheidbar ist, wenn sie <strong>und</strong> ihr Komplementpositiv entscheidbar sind. Benutzen wir hier der Bequemlichkeit halberdie CHURCHsche These, so erhalten wir den folgenden Satz:Satz 26 (Satz von POST) Eine Relation P ist genau dann rekursiv, wennP <strong>und</strong> dessen Komplement C(P ) rekursiv aufzählbar sind. Das bedeutet,daß die Klasse der rekursiven Relationen genau die Klasse der ∆ 1 -Relationenin der arithmetischen Hierarchie ist.Wir wollen uns nun klarmachen, daß die rekursiv aufzählbaren Relationennicht unter Komplementen abgeschlossen sind. Dazu gehen wir von derMengeK := {x| (∃y)T 1 (x, x, y)}aus. Die Menge K ist Σ 1 <strong>und</strong> somit rekursiv aufzählbar. Wären allerekursiv aufzählbaren Mengen gegenüber Komplementen abgeschlossen,so wäre auch das Komplement C(K) von K rekursiv aufzählbar. Dannhätten wir aberC(K) = W 1 efür ein e ∈ Ind(P). Dann folgte abere ∈ K ⇐⇒ (∃y)T 1 (e, e, y)⇐⇒ e ∈ We1⇐⇒ e ∈ C(K),was ein offensichtlicher Widerspruch ist. Damit ist das Komplement vonK nicht rekursiv aufzählbar. Natürlich läßt sich der gleiche Widerspruch78
3.9. Rekursive, semirekursive <strong>und</strong> rekursiv aufzählbare PrädikateRelationenklasse ¬ ∨ ∧ ∃ ≤ ∀ ≤ ∃ ∀ SubstitutionmitPrimitiv rekursiv ja ja ja ja ja nein nein primitiv rekursivenFunktionenRekursiv ja ja ja ja ja nein nein rekursivenFunktionenRek. aufzählbar nein ja ja ja ja ja nein rekursivenFunktionenΠ 1 -Relationen nein ja ja ja ja nein ja rekursivenFunktionenAbb. 3.9 - 1: Abschlußeigenschaften von Relationenklassennicht nur für rekursiv aufzählbare Mengen, sondern auch für rekursivaufzählbare Relationen beliebiger Stellenzahl erreichen.Eine Zusammenfassung der Abschlußeigenschaften der bisher untersuchtenPrädikate finden sich in der Tabelle in Abbildung 3.9 - 1. Wir habenaber mit dem gerade geführten Widerspruchsbeweis noch mehr eingesehenals nur die Tatsache, daß die rekursiv aufzählbaren Relationen nichtunter Komplementen abgeschlossen sind. Es folgt nämlich auch, daß dieoben definierte Menge K nicht rekursiv sein kann. Denn dann wären Eine rekursivnach dem Satz von POST (Satz 26) sowohl K als auch dessen KomplementC(K) rekursiv aufzählbar. Wir haben uns aber gerade überlegt, daßdies unmöglich ist. Auch dieses Ergebnis wollen wir in einen Satz fassen.Satz 27 Es gibt eine rekursiv aufzählbare Relation, die nicht rekursivist. Damit sind die rekursiv aufzählbaren Relationen gegenüber Komplementbildungnicht abgeschlossen.Mit Satz 27 haben wir die Echtheit der Anfangslevel der arithmetischenHierarchie nachgewiesen. Da die rekursiven Relationen gerade die ∆ 1 -Relationen sind, besagt Satz 27 ja gerade∆ 1 ≠ Σ 1 .Daraus folgt aber auch∆ 1 ≠ Π 1 .aufzählbare Menge,die nicht rekursiv istNehmen wir nämlich ∆ 1 = Π 1 an, so erhalten wir für P ∈ Σ 1 dannC(P ) ∈ Π 1 = ∆ 1 <strong>und</strong> daraus wiederum P ∈ ∆ 1 , da ∆ 1 gegenüberKomplementbildung abgeschlossen ist. Also folgte Σ 1 = ∆ 1 , was wiraber gerade als falsch erkannt haben.Die Menge K gilt als Paradigma für unentscheidbare Mengen. Sie istauch als Halteproblem bekannt. Diesen Zusammenhang wollen wir näher Das Halteproblemerläutern.79
3. µ-rekursive FunktionenWie wir in Abschnitt 3.8 klargelegt haben, läßt sich das KLEENEschePrädikat T (e, ⃗x, y) als‘y kodiert eine Berechnung der Funktion mit Index e beim Input ⃗x’veranschaulichen. Wie wir weiter skizziert haben, läßt sich der Indexeiner Funktion f als der Kode eines Turingprogrammes (oder anderenMaschinenprogrammes) für die Funktion f auffassen. Das Halteproblemfür Turingmaschinen kann man nun wie folgt formulieren:Gibt es einen Algorithmus, der entscheidet, ob ein Turingprogramm mitKode e bei dem Input ⃗x terminiert?D.h. unter Benutzung des KLEENEschen T -Prädikats:‘Ist die Relation{(e, x 1 , . . . , x n )| (∃y)T n (e, x 1 , . . . , x n , y)}Das Halteproblemist unentscheidbareine rekursive Relation?’Wäre die Antwort darauf positiv, so müßte als Spezialfall davon auch dieMenge K rekursiv sein, was gemäß unseren vorherigen Überlegungennicht richtig sein kann. Also ist das Halteproblem für Turingmaschinennicht entscheidbar.3.10 Universelle Funktionen <strong>und</strong> der RekursionssatzDen Begriff einer universellen Funktion hatten wir bereits in Abschnitt3.8 eingeführt <strong>und</strong> kurz diskutiert. Dort hatten wir über den KLEENEschenNormalformensatz feststellen können, daß die Klasse der partiellrekursivenFunktionen, die ja mit der Klasse der partiellen maschinenberechenbarenFunktionen übereinstimmt, eine universelle Funktion besitzt.Im vorliegenden Abschnitt wollen wir die Konsequenzen der Existenzuniverseller Funktionen genauer studieren.Betrachten wir zunächst den GraphenG f := {(⃗x, y)| f(⃗x) ≃ y}einer partiellrekursiven Funktion, so erhalten wir mit dem Normalformensatz(⃗x, y) ∈ G f⇐⇒ (∃z)[T n (e, ⃗x, z)∧(∀u < z)¬T n (e, ⃗x, u)∧U(z) = y].Der Ausdruck innerhalb der eckigen Klammern ist primitiv rekursiv, waszeigt, daß G f für jede partiellrekursive Funktion rekursiv aufzählbar ist.Liegt uns umgekehrt eine partielle Funktion f mit rekursiv aufzählbaremG f vor, so gibt es eine rekursive Relation R mitf(⃗x) ≃ y ⇐⇒ (∃z)R(⃗x, y, z).80
Offenbar gilt dann aberf(⃗x) ≃ (µz . R(⃗x, (z) 0 , (z) 1 )) 03.10. Universelle Funktionen <strong>und</strong> der Rekursionssatzwas zeigt, daß f partiellrekursiv ist. Damit haben wir folgenden Satz:Satz 28 Eine Funktion ist genau dann partiellrekursiv, wenn ihr Graph Funktionen mitrekursiv aufzählbar ist.Dieser Satz ist ein bequemes Instrument beim Nachweis der partiellenRekursivität von Funktionen. Wir wollen ihn hier verwenden, umdie partielle Rekursivität der in Abschnitt 3.8 eingeführten universellenFunktion, die wir damals nicht näher begründet hatten, zu bestätigen.Dort hatten wirΦ n (e, ⃗x): ≃ {e} n (⃗x)definiert. Also giltΦ n (e, ⃗x) ≃ y ⇐⇒ (∃z)[T n (e, ⃗x, z)∧(∀u < z)¬T n (e, ⃗x, u)∧U(z) = y],womit gezeigt ist, daß G Φn einen rekursiv aufzählbaren Graphen hat.Damit ist Φ n als partiellrekursiv erkannt. Also gilt:Satz 29 Die Funktionen Φ n (e, ⃗x): ≃ {e} n (⃗x) sind partiellrekursiv <strong>und</strong>universell für die Klasse der n-stelligen partiellrekursiven Funktionen.rekursivaufzählbaremGraphenDieser Satz liefert uns den theoretischen Hintergr<strong>und</strong> für die Möglichkeit Theoretischerdes Baues universeller Maschinen, die sich über Software programmieren Hintergr<strong>und</strong>universellerlassen, wie wir dies am Ende des Abschnittes 3.8 diskutiert haben. MaschinenWir haben bei unserem Vorgehen die universellen Funktionen über eineIndizierung der partiellrekursiven Funktionen gef<strong>und</strong>en. Umgekehrtinduziert natürlich jede universelle Funktion UN n für die n-stelligen partiellrekursivenFunktionen auch eine Indizierung, denn zu jeder n-stelligenpartiellrekursiven Funktion existiert dann eine natürliche Zahl e mitf(⃗x) ≃ UN n (e, ⃗x),<strong>und</strong> wir definieren e als einen Index von f bezüglich der universellenFunktion UN n . Natürlich muß nicht jede sich so ergebende Indizierunggeeignet sein, wobei wir eine Indizierung als geeignet bezeichnen wollen,wenn sich die Indizes bezüglich UN n effektiv in solche bezüglich UN mumrechnen lassen. Präziser formuliert soll das heißen:Definition 30 Eine Familie universeller Funktionen {UN n | n ∈ N} Geeigneteheißt geeignet, wenn alle Funktionen UN n partiellrekursiv sind <strong>und</strong> es zujedem m <strong>und</strong> n eine m + 1-stellige primitiv rekursive Funktion Sm n gibt,derart daß81universelleFunktionen
3. µ-rekursive FunktionenUN m+n (e, x 1 , . . . , x m , y 1 , . . . , y n ) ≃ UN n (S m n (e, x 1, . . . , x m ), y 1 , . . . , y n )Das S m n -Theoremgilt.Wir wollen uns davon überzeugen, daß die von uns gewählte Indizierungtatsächlich geeignet ist. Wir wissen bereits, daß die Funktionen Φ n allepartiellrekursiv sind. Nachzuprüfen ist also nur noch deren primitivrekursive Umrechenbarkeit. Setzen wirF (y 1 , . . . , y n ): ≃ Φ m+n (e, x 1 , . . . , x m , y 1 , . . . , y n ),so ist F durch den FunktionstermSub({e} m+n , C n x 1, . . . , C n x m, P n 1, . . . , P n n)gegeben. Dessen Index berechnet sich aber zu〈3, n, e, 〈0, n, x 1 〉, . . . , 〈0, n, x m 〉, 〈1, n, 1〉, . . . , 〈1, n, n〉〉. (3.27)Dies hängt bei festem m <strong>und</strong> n aber offenbar nur in primitiv rekursiverWeise von den Argumenten e <strong>und</strong> x 1 , . . . , x m ab. Definieren wirS m n (e, x 1, . . . , x n ) als den Wert in (3.27), so giltΦ m+n (e, ⃗x, ⃗y) ≃ F (⃗y) ≃ {S m n (e, ⃗x)} n (⃗y) ≃ Φ n (S m n (e, ⃗x), ⃗y).Also haben wir den folgenden Satz gezeigt:Satz 31 Die durch Φ n (e, ⃗x): ≃ {e} n (⃗x) gegebene Familie universellerFunktionen ist geeignet.In der Literatur ist Satz 31 auch als Sn m -Theorem bekannt, da durch ihndie Existenz einer primitiv rekursiven Umrechnungsfunktion Snm garantiertwird. Das Sn m -Theorem wird auch die einzige Eigenschaft sein, diewir von unserer Wahl der Indizierung der partiellrekursiven Funktionenausnützen werden. Jede andere geeignete Indizierung – so z.B. die überdie Kodierung von Maschinenprogrammen – leistet das Gleiche.Eine der verblüffenden Folgerungen des Sn m -Theorems ist der Rekursionssatz.Im Rekursionssatz versucht man die folgende Funktionalgleichungf(⃗x) ≃ g(f, ⃗x) (3.28)für eine partiellrekursive Funktion g im Bereich der partiellrekursivenFunktionen zu lösen. Das kann natürlich in dieser Form nicht gelingen,da wir den Begriff der partiellen Rekursivität für Funktionen, derenArgumente selbst Funktionen sind, nicht eingeführt haben. Die Theorieder sogenannten partiellrekursiven Funktionale, unter deren Argumentenauch totale Funktionen vorkommen dürfen, läßt sich tatsächlich in be-82
3.10. Universelle Funktionen <strong>und</strong> der Rekursionssatzfriedigender Weise entwickeln. Allerdings müßten wir zur Formulierungder Aufgabe in (3.28) partielle Funktionen als Argumente zulassen. Einederartige Theorie ist schwieriger zu entwickeln. Da wir jedoch Indizes fürpartiellrekursive Funktionen zur Verfügung haben, können wir uns hierbehelfen, indem wir einen Index f für f wählen <strong>und</strong> (3.28) abändern zuf(⃗x) ≃ g( f , ⃗x). (3.29)Jetzt ist der Ausdruck auf der rechten Seite wohldefiniert. Um einzusehen,daß partiellrekursive Funktionen f existieren, die (3.29) lösen, betrachtenwir die Funktiong(S1 1 (u, u), ⃗x).Diese ist wieder partiellrekursiv <strong>und</strong> besitzt daher einen Index e 0 . Setzenwir nune := S 1 1(e 0 , e 0 ),so erhalten wir mit Hilfe des S m n -Theorems{e} n (⃗x) ≃ {S 1 1(e 0 , e 0 )} n (⃗x) ≃ {e 0 } n+1 (e 0 , ⃗x) ≃ g(S 1 1(e 0 , e 0 ), ⃗x) ≃ g(e, ⃗x).Also löst {e} n die Gleichung (3.29) <strong>und</strong> wir haben den folgenden Satz:Satz 32 (Rekursionssatz) Zu jeder n+1-stelligen partiellrekursiven Funk- Der Rekursionssatztion g gibt es einen Index e ∈ Ind(P) derart, daß{e} n (⃗x) ≃ g(e, ⃗x)ist.Der Rekursionssatz hat vielfältige Anwendungen <strong>und</strong> stellt ein wesentlichesMittel dar, die partielle Rekursivität von Funktionen nachzuweisen,die nicht mehr primitiv rekursiv sind. Dennoch soll man seine Aussagenicht überschätzen. Seiner Natur nach ist er ein kombinatorischer Satz. Erliefert lediglich partiellrekursive Funktionen <strong>und</strong> sagt nichts über derenDefinitionsbereich aus. So existiert nach dem Rekursionssatz beispielsweiseein Index e, der die Gleichung{e} 1 (x) ≃ Φ 1 (e, x) + 1löst. Für diesen Index gilt{e} 1 (x) ≃ {e} 1 (x) + 1,was bedeutet, daß die Funktion {e} 1 einen leeren Definitionsbereichbesitzt.Um zu veranschaulichen, wie der Rekursionssatz eingesetzt werden kann, Die ACKERMANNFunktion83
3. µ-rekursive Funktionenwollen wir die Rekursivität der ACKERMANNschen Funktion nachweisen.Diese Funktion ist definiert durch die Rekursionsgleichungenf(0, y) = S(y),f(S(x), 0) = f(x, 1)<strong>und</strong>f(S(x), S(y)) = f(x, f(S(x), y)).Dies ist im wesentlichen die Funktion, die 1928 von W. ACKERMANN benutztwurde, um nachzuweisen, daß es berechenbare, aber nicht primitivrekursive Funktionen gibt. Man kann nämlich zeigen, daß sich für jedeprimitiv rekursive Funktion g eine natürliche Zahl c so finden läßt, daßg(x 1 , . . . , x n ) < f(c, max{x 1 , . . . , x n })gilt. Das zieht nach sich, daß die ACKERMANN Funktion f selbst nichtprimitiv rekursiv sein kann. Wäre sie es, so gälte dies auch für ihreDiagonalisierungh(x) := f(x, x),Rekursivität derACKERMANNFunktion<strong>und</strong> wir hätten ein c mit h(x) < f(c, x) für alle natürlichen Zahlen x.Wählen wir x als c, so ergibt dies aber den Widerspruch f(c, c) = h(c)
3.10. Universelle Funktionen <strong>und</strong> der Rekursionssatzduktionsvoraussetzung definiert ist, <strong>und</strong> f(x, S(y)) ≃ f(Pd(x), f(x, y)).Dann ist f(x, y) aber nach Nebeninduktionsvoraussetzung definiert <strong>und</strong>hat einen Wert u. Nach Hauptinduktionsvoraussetzung folgt dann auchdie Definiertheit von f(Pd(x), u).Dieses Beispiel mag als Paradigma dafür dienen, wie die Rekursivität vonFunktionen nachgewiesen werden kann. Der eine, kombinatorische Teilumfaßt den Nachweis der partiellen Rekursivität, im anderen, nichtelementarenTeil hat man dann die Totalität der Funktion nachzuweisen, wasim allgemeinen starke Induktionen erfordert. Dies spiegelt in gewisserWeise die Tatsache wider, daß e ∈ Ind(P), also die partielle Rekursivität,primitiv rekursiv zu entscheiden ist, während ⃗x ∈ dom(f), d.h. dieDefiniertheit von f(x), im allgemeinen nicht mehr rekursiv ist.Die Länge der Induktion, die erforderlich ist, um die Totalität zu zeigen,liefert sogar ein gewisses Maß für die Komplexität der betrachtetenrekursiven Funktion. Betrachtungen dieser Art führen in das Gebiet derBeweistheorie.Der Vollständigkeit halber sei noch angemerkt, daß die von uns in Abschnitt 3.5 angegebeneberechenbare, aber nicht primitiv rekursive Funktion φ n natürlich auch rekursivist. Dies ergibt sich einfach aus der Überlegung, daß diese Funktion für Indizes primitivrekursiver Funktionen mit der universellen Funktion Φ n übereinstimmt. Damit erhaltenwir{ Φφ n (e, ⃗x) :=n (e, ⃗x), falls e ∈ Ind(PR),0, sonst.Diese Fallunterscheidung, die wir ja alsφ n (e, ⃗x) ≃ Φ n (e, ⃗x) · sg(χ Ind(PR) (e))Beweistheorieschreiben können, liefert also eine partiellrekursive Funktion, deren Totalität sich danndurch Induktion nach der Definition von e ∈ Ind(PR) relativ leicht zeigen läßt.Rekursive – also totale – Funktionen lassen sich ganz analog zu den pri- Definition partiellermitiv rekursiven Funktionen durch Fallunterscheidung nach rekursiven Funktionen durchFallunterscheidungPrädikaten mit Hilfe der Fallunterscheidungsfunktionen sg <strong>und</strong> sg definieren.In den obigen Beispielen haben wir dies bereits getan. Bei partiellenFunktionen führt dies jedoch unter Umständen zu Problemen mitdem Definitionsbereich der durch Fallunterscheidung definierten Funktion.Sind R 1 , . . . , R n rekursive Prädikate, die paarweise disjunkt sind<strong>und</strong> g 1 , . . . , g n partiellrekursive Funktionen, so möchten wir gerne eineFunktion f durch die Fallunterscheidungf(⃗x) :≃⎧⎪⎨⎪⎩g 1 (⃗x),.g n (⃗x),falls R 1 (⃗x)falls R n (⃗x)definieren. Tun wir dies vermöge(3.31)85
Ist die Zuordnungeines Index zu einerFunktionentscheidbar?863. µ-rekursive Funktionenf(⃗x) :≃ g 1 (⃗x) · χ R1 (⃗x) + . . . + g n (⃗x) · χ Rn (⃗x), (3.32)so mag es geschehen, daß R k (⃗x) zutrifft <strong>und</strong> g k (⃗x) definiert ist, wir somitalso f(⃗x) ≃ g k (⃗x) erwarten, aber für ein von k verschiedenes j derFunktionswert g j (⃗x) nicht definiert ist. Dann ist aber die gemäß (3.32)definierte Funktion an der Stelle ⃗x <strong>und</strong>efiniert, was nicht unsere Intentionwar. Man kann sich nun so behelfen, daß man Indizes e 1 , . . . , e n fürdie Funktionen g 1 , . . . , g n <strong>und</strong> einen Index e 0 für eine partiellrekursiveFunktion mit leerem Definitionsbereich wählt <strong>und</strong> die Hilfsfunktion∑h(⃗x) := n ∑(e i · χ Ri (⃗x)) + e 0 · sg n χ Ri (⃗x)i=0definiert. Damit gilth(⃗x) =⎧⎪⎨⎪⎩e 1 ,.e n ,e 0 ,falls R 1 (⃗x),falls R n (⃗x),sonst,i=0<strong>und</strong> man benützt nun die universelle Funktion umf(⃗x) :≃ Φ n (h(⃗x), ⃗x)zu definieren. Offenbar genügt f den Bedingungen in (3.31).Der Rekursionssatz in Verbindung mit der eben gesicherten Definitiondurch Fallunterscheidung erlaubt es uns, weitere Eigenschaften geeigneterIndizierungen der partiellrekursiven Funktionen zu studieren. Insbesondereinteressiert uns hier die Frage, ob die Indizierung eindeutiggewählt werden kann, d.h. so gewählt werden kann, daß jede Funktioneinen eindeutig bestimmten Index erhält.Wir hatten die Indizes partiellrekursiver Funktionen als Kodes von Funktionstermeneingeführt <strong>und</strong> bereits damals betont, daß jeder Funktionstermeinen Algorithmus darstellt. Gewinnt man Indizierungen über Kodierungenvon Maschinenprogrammen, so ist man wieder in der Situation,daß der Index einer Funktion f einen Algorithmus für f kodiert. Allgemeinempfiehlt es sich, bei Indizes, die über eine geeignete Indizierunggewonnen wurden, immer an Kodes für Algorithmen zu denken.Gehen wir von dieser Anschauung aus, so erscheint es natürlich völligunplausibel, eine eineindeutige Korrespondenz zwischen Funktionen <strong>und</strong>deren Indizes annehmen zu wollen. Wir hatten uns ja bereits anläßlich derDefinition der primitiv rekursiven <strong>und</strong> der partiellrekursiven Funktionenklargemacht, daß völlig unterschiedliche Funktionsterme die (extensionalbetrachtet) gleiche Funktion berechnen.Wenn sich also eine eineindeutige Korrespondenz zwischen Funktionen
3.10. Universelle Funktionen <strong>und</strong> der Rekursionssatz<strong>und</strong> deren Indizes nicht herstellen läßt, so ist die dann nächstliegendeweitere Frage, ob es sich denn wenigstens entscheiden ließe, ob e Indexeiner Funktion f ist.Wir wollen diese Fragestellung noch etwas allgemeiner anpacken <strong>und</strong>gehen dazu von einer Menge F n-stelliger partiellrekursiver Funktionenaus, von der wir annehmen wollen, daß sie weder leer ist, noch alle n-stelligen partiellrekursiven Funktionen umfaßt. Zur Abkürzung setzenwirM := {e| {e} n ∈ F}.Wir wollen nun untersuchen, ob M rekursiv ist. Dazu wählen wir partiellrekursiveFunktionen f J ∈ F <strong>und</strong> f N ∉ F. Nach den Voraussetzungen,die wir über F gemacht haben, ist diese Wahl möglich. Wenn wir annehmen,daß M rekursiv ist, so erhalten wir eine partiellrekursive Funktionf durch die Fallunterscheidung{fJ (⃗x), falls e ∉ M,f(e, ⃗x) :≃f N (⃗x), falls e ∈ M.Nach dem Rekursionssatz existiert nun ein Index e einer partiellrekursivenFunktion mit{e} n (⃗x) ≃ f(e, ⃗x).Nehmen wir nun e ∈ M an, so folgt{e} n (⃗x) ≃ f(e, ⃗x) ≃ f N (⃗x)für alle ⃗x. D.h. {e} n = f N , was unmöglich ist, da wir ja f N ∉ F <strong>und</strong>e ∈ M haben. Die Annahme e ∉ M führt jedoch in analoger Weise zudem Widerspruch {e} n = f J . Demnach kann M nicht rekursiv gewesensein.Die eben nachgewiesene Eigenschaft geeigneter Indizierungen ist als derSatz von RICE bekannt, den wir nochmals hervorheben möchten.Satz 33 (Satz von RICE) Ist F eine nicht leere Menge n-stelliger parti- Der Satz von RICEellrekursiver Funktionen, die aber auch nicht alle n-stelligen Funktionenenthält, so ist die Menge aller Indizes von Funktionen in F nicht rekursiv.Man soll übrigens die Forderung der n-Stelligkeit im Satz von RICEnicht überbewerten. Durch Hinzufügen leerer Argumentstellen oder Diagonalisierenläßt sich die Stelligkeit partiellrekursiver Funktionen leichtmanipulieren.Eine Konsequenz des Satzes von RICE ist die Antwort auf unsere vorherigenFragen. Haben wir nämlich eine partiellrekursive Funktion f, sokönnen wir die Menge F im Satz von RICE als das Singleton {f} wählen.87
3. µ-rekursive FunktionenDies erfüllt alle Voraussetzungen, <strong>und</strong> wir erhalten daher als Folgerungden Satz:Konsequenzen desSatzes von RICE fürdie generelle ProgrammverifikationUnentscheidbarkeitder TotalitätpartiellrekursiverFunktionenSatz 34 Bei jeder geeigneten Indizierung ist die Menge der Indizes einerpartiellrekursiven Funktion nicht rekursiv. Damit muß in einer geeignetenIndizierung jede partiellrekursive Funktion unendlich viele verschiedeneIndizes erhalten.Dieser Satz hat Konsequenzen für das Problem der automatischen Verifikationvon Programmen. Wenn wir davon ausgehen, daß eine Funktionf durch eine Spezifikation gegeben ist, so beschreibt diese (zumindestim Idealfall) den Graphen von f. Jedes Programm zur Berechnung vonf läßt sich natürlich kodieren (so ist beispielsweise sein Maschinenkodeeine derartige Kodierung), <strong>und</strong> es ist sehr leicht einzusehen, daß diese Artvon Kodierung immer geeignet sein wird. Ist nun e der Kode eines Programmes,so besteht die Aufgabe der Verifikation darin, festzustellen, obe ein Index für f ist. Wie wir gesehen haben, ist dies ein nicht rekursives<strong>und</strong> damit nach der CHURCHschen These algorithmisch unentscheidbaresProblem. Also kann es kein Programm geben, daß eine derartige Frageglobal <strong>und</strong> generell entscheidet.Damit ist natürlich nicht gesagt, daß Programmverifikation in jedem Fallunmöglich ist. Nur die globale Fragestellung kann algorithmisch nichtentschieden werden. Allerdings muß man sich bei allen Verifikationsproblemendiese prinzipielle Schwierigkeit vor Augen halten <strong>und</strong> darf nichtzu generelle Lösungen anstreben.Eine weitere unmittelbare Folgerung aus dem Satz von RICE ist die Tatsache,daß es sich nicht entscheiden läßt, ob ein Index e der Index einertotalen Funktion – <strong>und</strong> somit rekursiven Funktion – ist. Dies liegt einfachdaran, daß es rekursive Funktionen gibt (beispielsweise die primitivrekursiven), wir anderseits aber auch eingesehen haben, daß nicht jedepartiellrekursive Funktion auch rekursiv ist (man erinnere sich an dasBeispiel der Funktion mit leerem Definitionsbereich im Anschluß an denRekursionssatz). Damit sind die rekursiven Funktionen eine nicht leereMenge partiellrekursiver Funktionen, die aber auch nicht alle partiellrekursivenFunktionen enthält. Dies bedeutet aber, daß die Menge derIndizes rekursiver Funktionen nicht rekursiv sein kann.Wir wollen hier aber eine noch weitergehende Frage untersuchen, nämlichob wir die Menge der Indizes rekursiver Funktionen wenigstens rekursivaufzählen können. Eine positive Antwort auf diese Frage hätte tatsächlichKonsequenzen für die Entwicklung der Theorie. Die Existenz einer Aufzählungsfunktionfür die Indizes würde ja bedeuten, daß ein Kalkül existiert,der die Funktionsterme für rekursive Funktionen erzeugt, ähnlichwie dies für die partiellrekursiven der Fall ist. Das bedeutete aber, daß88
3.10. Universelle Funktionen <strong>und</strong> der Rekursionssatzzur Entwicklung der Theorie der doch unbequeme Weg der Betrachtungpartieller Funktionen gar nicht nötig gewesen wäre.Um die Frage nach der rekursiven Aufzählbarkeit der Indizes rekursiverFunktionen zu klären, nehmen wir an, wir hätten eine rekursive Funktionh, die die Indizes aller 1-stelligen rekursiven Funktionen aufzählt <strong>und</strong>definieren eine partiellrekursive Funktion g vermögeg(e, x) :≃ {h(e)} 1 (x).Die Tatsache, daß {h(e)} 1 für alle natürlichen Zahlen e eine totale Funktionist, impliziert nun, daß auch die Funktion g für alle e <strong>und</strong> x definiertist. Damit ist aberf(x) := g(x, x) + 1eine 1-stellige rekursive Funktion. Also liegt jeder Index e 0 von f im Bildvon h, d.h. es gibt eine natürliche Zahl y mite 0 = h(y).Dies führt jedoch zu dem Widerspruchf(y) = g(y, y) + 1 = {h(y)} 1 (y) + 1 = {e 0 } 1 (y) + 1 = f(y) + 1.Damit haben wir den folgenden Satz:Satz 35 Die Menge der Indizes rekursiver Funktionen ist nicht rekursivaufzählbar.Wir hatten bereits eine Menge kennengelernt, die rekursiv aufzählbar, aber nicht rekursivist <strong>und</strong> daraus geschlossen, daß die ∆ 1 -Mengen, die ja genau die rekursiven sind, eineechte Teilmenge der Σ 1 -Mengen bilden, die genau die rekursiv aufzählbaren sind. Wirhaben nun ein Beispiel einer Menge, nämlich die der Indizes rekursiver Funktionen,von der wir wissen, daß sie nicht rekursiv aufzählbar ist <strong>und</strong> damit keine Σ 1 -Menge ist.Ihre Komplexität wird sichtbar, wenn wir die Formel aufschreiben, die aussagt, daß “eIndex einer 1-stelligen rekursiven Funktion ist”. Es gilt:Tot(e) ⇐⇒ (∀⃗x)(∃y)T 1 (e, ⃗x, y).Damit stellt sich Tot als eine Π 2 -Menge heraus. Es läßt sich darüber hinaus noch zeigen,daß Tot keine Π 1 -Menge sein kann, so daß wir eine echte Π 2 -Menge vorliegen haben.89
4. λ-definierbare FunktionenIm letzten Kapitel hatten wir die Theorie der Berechenbarkeit auf derBasis der klassischen, extensionalen Auffassung des Funktionenbegriffesentwickelt. Wie uns der Satz von RICE gelehrt hat, hat dies zur Folge,daß dann keine entscheidbare Korrespondenz zwischen Funktionen <strong>und</strong>deren Indizes existieren kann. Bei Zugr<strong>und</strong>elegung dieser Auffassungerscheinen Funktionen <strong>und</strong> deren Argumente – also natürliche Zahlen –als Objekte unterschiedlichen Typs, was in diesem Zusammenhang nursoviel heißen soll, daß Funktionen nicht auf Funktionen <strong>und</strong> natürlicheZahlen weder auf Funktionen noch auf natürliche Zahlen anwendbar sind.Fassen wir den Begriff der partiellrekursiven Funktion jedoch intensionalauf, was hier bedeuten soll, daß wir die Funktionsterme (oder äquivalentdazu die Algorithmen) als die eigentlichen Objekte betrachten, so habenwir eine eineindeutige Korrespondenz zwischen unseren Objekten<strong>und</strong> ihren Indizes. Jedem Funktionsterm F entspricht eineindeutig seineGödelnummer F <strong>und</strong> dies versetzt uns in die Lage, einen FunktionstermF auf einen Funktionsterm G vermöge der VereinbarungF (G) :≃ F ( G )anzuwenden. Dies war genau der Trick, mit dem wir uns im Rekursionssatzbeholfen haben. Darüber hinaus können wir eine Zahl e sowohl aufeinen Funktionsterm G als auch auf eine Zahl x vermöge der Vereinbarungene(G) :≃ Φ 1 (e, G ) bzw. e(x) :≃ Φ 1 (e, x)anwenden. Dann können wir aber auf eine Typenunterscheidung zwischenFunktionstermen <strong>und</strong> ihren Argumenten verzichten.Diese ‘Selbstanwendung’ hat bei dem Nachweis der Existenz nicht rekursiver, aberrekursiv aufzählbarer Mengen eine wesentliche Rolle gespielt. Man beachte, daß dasHalteproblem für Turingmaschinen ein typisches Selbstanwendungsproblem ist. Dorthaben wir nach der Definiertheit von Φ 1 (e, x) gefragt, also nach der Definiertheit vone(x) in der eben eingeführten Terminologie.Die Ununterscheidbarkeit der Typen von Funktionen <strong>und</strong> Argumentenspiegelt auch die Situation in einem realen Rechner wider. Ein solcherist als eine (physikalische Approximation einer) universelle(n) Maschineanzusehen. In dieser wird aber nicht zwischen Programmen <strong>und</strong> Datenunterschieden. Beide erscheinen völlig gleichwertig als Inhalte desDatenspeichers.91
4. λ-definierbare FunktionenKombinatorischeLogikIn diesem Kapitel wollen wir einen Zugang zur Theorie der Berechenbarkeitstudieren, in dem nicht zwischen Argumenten <strong>und</strong> Funktionenunterschieden wird, sondern in dem beide Objekte einfach als Datenbehandelt werden, die in elementarer Weise manipulierbar sind.Dieser Zugang ist als kombinatorische Logik bekannt <strong>und</strong> wurde zuerstvon ALONZO CHURCH betrachtet. Neben ihm war HASKEL CURRY einerder Pioniere der kombinatorischen Logik. Die kombinatorische Logik –insbesondere in ihrer Formalisierung durch den λ-Kalkül – spielt einewesentliche Rolle bei der Entwicklung der funktionalen Programmiersprachen,insbesondere der Sprachenfamilie LISP.4.1 Der λ-KalkülDer λ-Kalkül beabsichtigt eine Formalisierung der endlichen Kombinatorik.Endliche Kombinatorik kann als Manipulation endlicher Zeichenreihenaufgefaßt werden. Dabei wird im λ-Kalkül das Einsetzen einerZeichenreihe in eine andere als die Gr<strong>und</strong>manipulation angesehen. Versuchtman dies zu formalisieren, so hat man in einer Zeichenreihez 1 . . . z neine Stelle zu markieren. Dies wollen wir dadurch symbolisieren, daß wirdie Adressmarke x an diese Stelle schreiben. Dies könnte in der Formz 1 . . . x . . . z ngeschehen. Wenden wir nun die so markierte Zeichenreihe auf eine schongebildete Zeichenreihe u an, so erhalten wir die Konversion(z 1 . . . x . . . z n )u→(z 1 . . . u . . . z n ).Schwieriger wird dies jedoch, wenn wir mehrere Stellen in einer Zeichenreihemarkieren wollen. Bilden wirz 1 . . . x . . . y . . . z n ,λ-Notationso ist bei späteren Konversionen nicht mehr ohne weiteres zu erkennen,in welcher Reihenfolge die Adressen zu ersetzen sind. Dies ließe sichnatürlich über die generelle Vereinbarung regeln, daß zuerst x, dann yu.s.f. zu ersetzen ist, doch das würde unseren Formalismus so einengen,daß er nicht mehr handhabbar sein würde. Den Ausweg bietet dieCHURCHsche λ-Notation. Anstatt die Adresse einfach durch ein x zumarkieren, schreiben wir den markierten Term alsλx. z 1 . . . x . . . z n ,92
4.1. Der λ-Kalkülwobei das Prefix λx nichts weiter bedeutet, als daß x eine Adresse inder Zeichenreihe z 1 . . . x . . . z n ist, die dem Prefix nachfolgt. Wollen wirnun mehrere Adressen in einer Zeichenreihe markieren, so gelingt dies,indem wirλx 1 . . . λx m . Z oder kurz λx 1 . . . x m . Zschreiben. Sind nun u 1 , . . . . . . u m weitere Zeichenreihen, so erhalten wirdie Konversion einfach zu(λx 1 . . . x m . Z)u 1 . . . u m →Z x1 ,...,x n(u 1 , . . . , u m ),wobei der Ausdruck auf der rechten Seite bedeutet, daß in Z zuerst x 1durch u 1 , dann x 2 durch u 2 usf. ersetzt wird, bis wir schließlich x m durchu m ersetzt haben. Die Adressen in den Zeichenreihen haben hier dieFunktion von Platzhaltern für einzusetzende Zeichenreihen, weshalb wirsie auch als Variablen bezeichnen werden.Entsprechend unserer heuristischen Überlegung sollten wir in der Lagesein, eine Theorie der Kombinationen unter alleiniger Ausnutzung desλ-Abstraktors <strong>und</strong> der Konversionsrelation zu entwickeln. Die formalenObjekte dieser Theorie werden allgemein als λ-Terme bezeichnet.Zur Bildung der λ-Terme benötigen wir nach unseren Vorüberlegungenoffensichtlich nur Variablen <strong>und</strong> den λ-Abstraktor.Definition 36 (Induktive Definition der λ-Terme)1. Jede Variable x, y, z, . . . ist ein λ-Term. λ-Terme2. Ist Z ein λ-Term <strong>und</strong> ist x eine Variable, so ist (λx. Z) ein λ-Term.3. Sind U <strong>und</strong> V λ-Terme, so ist auch (UV ) ein λ-Term .Wir vereinbaren eine Klammerung von λ-Termen nach links. Um Klam- Klammerregelnmern zu sparen, lassen wir überflüssige Klammern weg <strong>und</strong> schreibengenerellλx 1 . . . x n . Z anstatt λx 1 . (λx 2 . (. . . (λx n . Z) . . .)).Betrachten wir einige Beispiele. Ein einfacher λ-Term ist der Term((xz)(yz)), d.h. xz(xy)unter Ausnutzung der Klammerersparnisregeln. Hier treten die Variablenx, y <strong>und</strong> z frei auf. Bilden wir nun den Term(λx. (λy . (λz . ((xz)(yz))))), also λxyz . xz(yz)nach Anwendung der Klammerersparnisregeln, so sind aus den VariablenAdressen – oder wie wir sie in Zukunft nennen wollen – geb<strong>und</strong>ene Variablengeworden. Offenbar spielt es dabei keine Rolle, welchen Namen93
4. λ-definierbare Funktionenwir der geb<strong>und</strong>enen Variablen geben. Die Termeλxyz . xz(yz)<strong>und</strong>λuyz . uz(yz)sind absolut gleichwertig, da in beiden die gleichen Adressen markiertsind. Wir wollen daher λ-Terme, die sich nur durch die Namen der inihnen geb<strong>und</strong>enen Variablen unterscheiden, identifizieren. Dabei wollenwir so großzügig sein, daß es uns nur auf die Verständlichkeit einesTermes ankommt. So wollen wir beispielsweise den Term(λx. xx)(λx. xx)als wohlgeformten λ-Term betrachten. Ebenso ist es tolerabel, Terme derFormλxy . x(λx. xy)β-KonversionReduktionenzu betrachten, da klar ist, welche Adressen durch das erste <strong>und</strong> welchedurch das zweite λx markiert werden.Wir haben noch die formale Definition der Konversion nachzutragen:Definition 37 (β-Konversion)1. (λx. Z )U → 1 Z x (U).2. Gilt U → 1 X, so auch λx. U → 1 λx. X .3. Gilt U → 1 X, so gelten sowohl UV → 1 XY als auch V U → 1 Y X.Klauseln 2 <strong>und</strong> 3 in der obigen Definition sagen dabei nur aus, daß eineKonversion an einer beliebigen Stelle innerhalb eines λ-Terms ausgeführtwerden darf.Unter einer Reduktion verstehen wir eine Kette aufeinanderfolgenderKonversionen. Formal definieren wir zunächst1. U → 0 V , falls U = V12. U → n+1 V , falls es ein W gibt mit U → n W <strong>und</strong> W → 1 V .Der Ausdruck U → n V besagt also, daß V durch eine Kette von n aufeinanderfolgendenKonversionen aus U hervorgeht.Die Reduktionsrelation U →V definieren wir dann durchU →V : ⇐⇒ (∃n)[U → n V ].Die Reduktionsrelation → ist somit die reflexive <strong>und</strong> transitive Hülle derKonversionsrelation → 1 , was insbesondere bedeutet, daßU →U94
4.1. Der λ-Kalkül<strong>und</strong>U →V, V →W =⇒ U →Wgelten.Man überzeugt sich sofort, daß wir die Klammerersparnisregeln so eingerichtethaben, daß(λx 1 . . . x n . Z )u 1 . . . u n →Z x1 ,...,x n(u 1 , . . . , u n )gilt.Es erscheint vielleicht etwas verw<strong>und</strong>erlich, daß wir keine Atome eingeführthaben, aus denen die Zeichenreihen des λ-Kalküls zusammengesetztwerden sollen. Variablen sind keine Atome in diesem Sinne, dasie lediglich als Platzhalter für weitere Zeichenreihen anzusehen <strong>und</strong> somitinterpretationsbedürftig sind. Es hat sich einfach herausgestellt, daßsich die allgemeine Theorie auch ohne Zuhilfenahme von Atomen entwickelnläßt. Die Gr<strong>und</strong>idee dabei ist, daß ein Term ohne freie Variablen– z.B. λx. x – eine wohldefinierte kombinatorische Bedeutung hat. Sorepräsentiert das Beispiel λx. x die Identität, d.h. es gilt(λx. x)U →Ufür jede Zeichenreihe U, <strong>und</strong> für das schon früher erwähnte Beispielλxyz . xz(yz)haben wir(λxyz . xz(yz))UV W →UW (V W )für alle Zeichenreihen U, V, W . Wir nennen λ-Terme ohne freie Variablengeschlossene λ-Terme oder Kombinationen.KombinationenEine alternative Entwicklung der kombinatorischen Logik beruht auf Gr<strong>und</strong>kombina- Eine alternativetoren anstelle von λ-Abstraktionen. Hier geht man von VariablenEntwicklung derkombinatorischenx, y, . . .Logik<strong>und</strong> den Gr<strong>und</strong>kombinatorenK <strong>und</strong> Saus, die durch die KonversionenKxy → 1 x<strong>und</strong>Sxyz → 1 xz(yz)95
4. λ-definierbare Funktionendefiniert sind <strong>und</strong> bildet Terme nur durch Applikation. Der Kombinatorenkalkül ist dannim λ-Kalkül darstellbar, da die Gr<strong>und</strong>kombinatoren durchK := λxy . x <strong>und</strong> S := λxyz . xz(yz)definiert werden können. Umgekehrt läßt sich die λ-Abstraktion im Kombinatorenkalkülvermöge⎧⎨ KM,falls x nicht in M auftritt,λx. M := SKK, falls M = x,⎩S(λx. U )(λx. V ), falls x in M auftritt <strong>und</strong> M = UV ist,induktiv definieren.Tritt x nicht in M auf, so ist(λx. M )N = KMN → 1 M = M x (N).Anderenfalls zeigt man(λx. M )N →M x (N),durch Induktion nach dem Aufbau von M, denn für M = x gilt(λx. x)N = SKKN → 1 KN(KN)→ 1 N = x x (N)<strong>und</strong> für M = UV(λx. UV )N = S(λx. U )(λx. V )N → 1 (λx. U )N((λx. V )N)→(U x (N))(V x (N))= M x (N),wobei wir im letzten Fall die Induktionsvoraussetzung benutzt haben.4.2 β-Gleichheit von λ-TermenNormalformen fürλ-TermeIn den obigen Beispielen haben wir bereits anklingen lassen, daß wirReduktionen irgendwie als eine Gleichheitsrelation betrachten wollen.Die intuitive Idee dahinter ist, daß eine Konversion einen Rechenschritteiner kombinatorischen Berechnung repräsentiert. Wir sagen, daß einλ-Term in Normalform ist, wenn er sich nicht weiter reduzieren läßt.Offenbar ist ein λ-Term genau dann in Normalform, wenn er kein Redexenthält, d.h. keinen Teilterm der Gestalt . . . (λx. Z )U . . ..Eine ReduktionsketteU → 1 U 1 → 1 . . . → 1 U n → 1 . . .repräsentiert also eine Berechnung des Termes U. Wir sagen, daß dieseRechnung terminiert, wenn die Reduktionskette abbricht, d.h. wenn eseine Normalform V gibt, mitU → n V.96
4.2. β-Gleichheit von λ-TermenIn diesem Fall nennen wir V eine Normalform von U.Wir möchten nun gerne zwei Terme als gleich betrachten, wenn ihreBerechnungen den gleichen Wert liefern, d.h. wenn sie eine gemeinsameNormalform besitzen. Betrachten wir jedoch den TermΩ := (λx. xx)(λx. xx),so sehen wir, daß wir eine unendliche Reduktionskette(λx. xx)(λx. xx)→ 1 (λx. xx)(λx. xx)→ 1 Ω→ 1 . . . → 1 Ω→ 1 . . .erhalten. Also besitzt nicht jeder Term eine Normalform <strong>und</strong> die Gleichheitwäre nicht für alle Terme definiert. Man behilft sich, indem manU = β V : ⇐⇒ es gibt einen λ-Term W mit U →W <strong>und</strong> V →WEin Term mitunendlicherReduktionskettedefiniert. Wir haben diese Gleichheit zur Unterscheidung von der Ge- β-Gleichheitstaltsgleichheit von Termen, die wir bisher durch = ausgedrückt haben,mit = β bezeichnet. Das β soll andeuten, daß sie von der β-Konversionerzeugt wird.Die so definierte β-Gleichheit ist ihrer Definition nach reflexiv <strong>und</strong> symmetrisch.Sehr viel schwieriger ist die Frage nach ihrer Transitivität zubeantworten. Gilt U = β V <strong>und</strong> V = β W , so haben wir Terme X 1 <strong>und</strong> X 2mitU V WX1X2(4.1)Die Frage, die sich nun stellt, ist, ob wir einen Term Y so finden können,daß wirU V WX1X 2Y(4.2)erhalten. Man hat also zu zeigen, daß zu Termen V , X 1 <strong>und</strong> X 2 mitV →X 1 <strong>und</strong> V →X 2 ein Term Y existiert mitVX1X2Y(4.3)97
4. λ-definierbare FunktionenCHURCH-ROSSEREigenschaftObwohl dies richtig ist, ist diese Tatsache keinesfalls einfach einzusehen.Der Satz, der die Existenz von Y in (4.3) garantiert, ist als CHURCH-ROSSER Theorem bekannt <strong>und</strong> galt lange Zeit als einer der am aufwendigstenzu beweisenden Sätze der Theorie des λ-Kalküls. Wir wärenfertig, wenn wir (4.3) für Konversionen hätten, das hieße1V1X 1X 2(4.4)1Y1Denn dann dürften wir V → n X 1 <strong>und</strong> V → m X 2 annehmen <strong>und</strong> könntenuns, wie in Figur 4.2 - 1 dargestellt, vermöge des Maschenlemma einY erhäkeln. Dummerweise gilt das Diamantenlemma, wie es in (4.4)VV1,21 11 1Y1,1V2,1Y11m-2,11 1X =V1m,1V 1,n-1Vm,2X2= V1,n1 11 1Y1,n-2V2,nYm-2,n-2V m-1,n1111Vm,n-1YAbb. 4.2 - 1: Das Maschenlemma in graphischer Darstellung. Es zeigt,wie man, die Gültigkeit des Diamantenlemmas vorausgesetzt, sich ausV → m X 1 <strong>und</strong> V → n X 2 ein Y mit X 1 → n Y <strong>und</strong> X 2 → m Y erhäkeln kann.dargestellt ist, für die β-Konversion nicht. Das sieht man an den folgendenBeispielen: Betrachten wir den Term98
M := (λx. xy )(λx. x)Ω,4.2. β-Gleichheit von λ-Termenwobei Ω wie eben definiert wurde, so haben wir einmal Ω als Redex <strong>und</strong>somitM → 1 M,aber auch (λx. xy )(λx. x) als Redex, was zuM → 1 λx. xführt. Also giltlx . xM1 11l x . x<strong>und</strong> der Diamant kann nicht geschlossen werden, da offenbarλx. x → 1 λx. xM(4.5)nicht gilt. Allerdings sieht man an diesem Beispiel bereits den erstenSchritt, den man zur Rettung der Situation leisten kann. Hätte man dietriviale Konversion λx. x → 1 λx. x, so könnte man den Diamanten in(4.5) schließen. Allerdings wäre damit noch nicht alles geheilt, dennnehmen wir M → 1 M ′ <strong>und</strong> N → 1 N ′ an, so finden wir offensichtlich keinY mit( l x. M)N1 1( lx. M’)N( lx. M)N’1 1YZwar wäre der Term Y = M ′ x(N ′ ) ein geeigneter Kandidat, doch wirhaben weder (λx. M ′ )N → 1 M ′ x (N ′ ) noch (λx. M )N ′ → 1 M ′ x (N ′ ). Waswir hier benötigten, wäre ein parallel ablaufendes Berechnungsverfahren,das es uns erlaubt M ′ x (N ′ ) sowohl aus (λx. M ′ )N, als auch aus(λx. M )N ′ in einem Schritt zu berechnen. Diese Überlegungen führten99
4. λ-definierbare FunktionenWILLIAM TAIT zu der Idee, eine neue Konversionsregel → ∗ 1einzuführen,die sowohl triviale als auch parallele Rechnungen in einem Schritt erlaubt.Die neue Konversionsregel → ∗ wird durch die folgenden Klauseln1definiert:1. M→ ∗ M 12. Gelten Z → ∗ 1 Z′ <strong>und</strong> U → ∗ U ′ , so folgt (λx. Z )U → ∗ 1 1 Z′ x (U ′ ).3. Gilt U → ∗ X, so auch λx. U 1 →∗ λx. X .14. Gilt U → ∗ X <strong>und</strong> V 1 →∗ Y , so gilt UV 1 →∗ XY . 1Bezeichnen wir mit → ∗ wieder die reflexive <strong>und</strong> transitive Hülle von→ ∗ , so beobachtet man sehr einfach, daß1U →V ⇐⇒ U → ∗ V (4.6)gilt. Darüber hinaus gilt das Diamantenlemma für → ∗ 1. D.h., wir habenDasSatz 38 (Diamantenlemma) Gilt U → ∗ V <strong>und</strong> U 1 →∗ W , so gibt es einen1Diamantenlemma Term Y mit V → ∗ 1Y <strong>und</strong> W → ∗ 1Y .DasCHURCH-ROSSERTheoremEindeutigkeit derNormalformDas Diamantenlemma zieht aber, wie in Abbildung 4.2 - 1 skizziert, dasCHURCH-ROSSER-Theorem für die → ∗ -Relation nach sich. Wegen (4.6)erhalten wir damitSatz 39 (CHURCH-ROSSER Theorem) Sind M, U <strong>und</strong> V λ-Terme, mitM →U <strong>und</strong> M →V , so gibt es einen λ-Term Y mit U →Y <strong>und</strong> V →Y .Als unmittelbares Korollar zum CHURCH-ROSSER Theorem folgt die Eindeutigkeitder Normalform eines λ-Terms. Damit haben wirSatz 40 Jeder λ-Term besitzt höchstens eine Normalform.Wie wir bereits bemerkt hatten, ist die Transitivität von = β eine unmittelbareFolgerung des CHURCH-ROSSER Theorems. Damit haben wir denSatz, der das Ziel unserer Überlegungen war.Satz 41 Die β-Gleichheit = β ist eine Äquivalenzrelation auf den λ-Termen.4.3 Rekursive Aufzählbarkeit der β-GleichheitDie Reduktion von λ-Termen stellt offenbar ein effektives Verfahrendar. Es sollte daher ein weiterer Test für die CHURCHsche These sein,nachzuweisen, daß es sich hierbei um ein rekursives Verfahren handelt.Da wir die Theorie der rekursiven Mengen <strong>und</strong> Funktionen jedoch nur aufden natürlichen Zahlen entwickelt haben, müssen wir dazu die Sprachedes λ-Kalküls in die der natürlichen Zahlen übertragen. Dies gelingt mitHilfe einer Arithmetisierung. Dazu gehen wir von einer Aufzählung100
4.3. Rekursive Aufzählbarkeit der β-Gleichheitx 0 , x 1 . . .der Variablen des λ-Kalküls aus, die wir im folgenden als fest gewähltbetrachten wollen. Wir definieren dann den Kode einer Variablen zux i := 〈0, i〉<strong>und</strong> setzen dies vermöge der KlauselnM := x , wenn M die Variable x ist,λx. M := 〈1, x , M 〉,MN := 〈2, M , N 〉auf alle λ-Terme fort.Es ist dann sehr leicht einzusehen, daß die Menge Λ der Kodes vonλ-Termen wieder eine primitiv rekursive Menge ist. Durch Wertverlaufsrekursionläßt sich eine primitiv rekursive Funktion Sb angeben, für dieSb( x , M , N ) = M x (N)gilt.Formal definiert man Sb durch⎧y, falls (y) 0 = 0 <strong>und</strong> x ≠ y,⎪⎨ z, falls (y) 0 = 0 <strong>und</strong> x = y,Sb(x, y, z) := 〈1, (y) 1 , Sb(x, (y) 2 , z)〉, falls y ∈ Λ, (x) 0 = 0 <strong>und</strong> (y) 0 = 1,〈2, Sb(x, (y) ⎪⎩1 , z)〉, Sb(x, (y) 2 , z), falls y ∈ Λ, (x) 0 = 0 <strong>und</strong> (y) 0 = 2,0, sonst.Es ist nicht so wesentlich, die genaue Definition von Sb zu verstehen. Wichtig ist nur,daß es prinzipiell möglich ist, die Substitution eines Termes an einer Adresse primitivrekursiv zu beschreiben.Wir wollen an dieser Stelle auch nicht verhehlen, daß wir uns um eine noch viel schwierigerzu lösende Problematik herumgedrückt haben, nämlich die Identifikation vonTermen, die sich nur durch die Namen geb<strong>und</strong>ener Variablen voneinander unterscheiden.Auch diese Identifikation kann in primitiv rekursiver Weise beschrieben werden.Eine Skizze des Vorgehens würde uns allerdings wenig Einsicht vermitteln. Deshalbhaben wir hier darauf verzichtet.Nun sind wir in der Lage, wieder durch Wertverlaufsrekursion ein primitivrekursives Prädikat Kon zu definieren, für dasU → 1 V ⇐⇒ Kon( U , V )gilt. Formal definieren wirKon(x, y) : ⇐⇒ x ∈ Λ ∧ y ∈ Λ∧[((x) 0 = 2 ∧ (x) 10 = 1 ∧ y = Sb((x) 11 , (x) 12 , (x) 2 ))∨((x) 0 = (y) 0 = 1 ∧ (x) 1 = (y) 1 ∧ Kon((x) 2 , (y) 2 ))∨((x) 0 = (y) 0 = 2 ∧ Kon((x) 1 , (y) 1 ) ∧ Kon((x) 2 , (y) 2 ))].101Arithmetisierung desλ-Kalküls
4. λ-definierbare FunktionenNach der Definition der Reduktionsrelation haben wirU →V ⇐⇒ U = S 0 → 1 S 1 → 1 . . . → 1 S n−1 = V,wobei alle S i für i = 0, . . . , n − 1 λ-Terme sind. In der Arithmetisierungergibt dies ein PrädikatRekursiveAufzählbarkeit derβ-GleichheitRed(x, y) : ⇐⇒ (∃s){Seq (s) ∧ (s) 0 = x ∧ (s) lh (s ·−1) = y∧(∀i < lh(s ·−1))[Kon((s) i , (s) i+1 )]}.Der Ausdruck innerhalb der geschweiften Klammern ist dann unschwerals primitiv rekursiv zu erkennen. Der Existenzquantor zu Beginn machtdies somit zu einer rekursiv aufzählbaren Relation.Zu guter Letzt können wir die β-Gleichheit durch das PrädikatEQ β (x, y) : ⇐⇒ (∃z)[Red(x, z) ∧ Red(y, z)]ausdrücken. Da die rekursiv aufzählbaren Prädikate gegenüber Konjunktionen<strong>und</strong> Existenzquantifikation abgeschlossen sind, erhalten wir EQ βals rekursiv aufzählbares Prädikat.Ein λ-Term der Gestalt λx 1 . . . x n . M kann als n-stellige Funktion aufgefaßtwerden. Die Argumente dieser Funktion sind wieder λ-Terme.Dies ist die eingangs bereits betonte Typenfreiheit des λ-Kalküls. Wirkönnen daher einen λ-Term als eine Rechenvorschrift – d.h. als ein Programmin einem sehr abstrakten Sinne – betrachten, die bereits alle vonihr benötigten Daten mit sich trägt. Die Berechnung ist erfolgreich, sobaldeine Normalform erreicht wird. Als den ‘Graphen’ eines λ-TermsM läßt sich dann die Menge{(M, N)| M →N ∧ N ist in Normalform} (4.7)betrachten. Da es sich rein syntaktisch durch Betrachten der Gestalt einesTermes feststellen läßt, ob er sich in Normalform befindet, können wirwieder leicht eine Arithmetisierung des Prädikates ‘N ist in Normalform’definieren, <strong>und</strong> dies stellt sich völlig zwanglos als primitiv rekursivheraus. Damit ist die Arithmetisierung der Menge in (4.7) durch{( M , N )| Red( M , N ) ∧ N ist in Normalform}gegeben. Dies ist eine rekursiv aufzählbare Menge. Wie wir in Abschnitt3.9 gesehen haben, sind die Funktionen mit rekursiv aufzählbarem Graphenaber genau die partiellrekursiven Funktionen. Die Berechnung derNormalform eines λ-Terms hat damit also die Komplexität der Berechnungeiner partiellrekursiven Funktion. Um diesen Zusammenhang genauerzu untersuchen, wollen wir im nächsten Abschnitt λ-definierbareFunktionen einführen.102
4.4 λ-definierbare Funktionen4.4. λ-definierbare Funktionenüberzeugen, daß der λ-Kalkül überhaupt Kodierungen erlaubt. Dies istallerdings einfach nachzurechnen. Wir definierenDefinition 42Π n (N 1 , . . . , N n ) := λx. xN 1 . . . N n<strong>und</strong>Π n j := λx. x(λx 1 . . . x n . x j ),<strong>und</strong> rechnen sofort nach, daß für 1 ≤ j ≤ n dannΠ n j (Πn (N 1 , . . . , N n )) = β N jBei der Definition λ-definierbarer Funktionen, wobei wir uns wieder aufFunktionen von N n −→ N beschränken wollen, haben wir den umgekehrtenWeg zu gehen. Im Gegensatz zum vorherigen Abschnitt geht esnun darum, natürliche Zahlen <strong>und</strong> auf ihnen operierende Funktionen alsλ-Terme darzustellen.Damit dies überhaupt gelingen kann, müssen wir uns zunächst davon Kodierungsfunktionenimλ-Kalkülgilt. Damit liegen Kodierungsfunktionen vor.Wir definieren nun die FallunterscheidungstermeT := λxy . x <strong>und</strong> F := λxy . y ,die man oft auch als Wahrheitswerte ‘wahr’ <strong>und</strong> ‘falsch’ bezeichnet.Der Gr<strong>und</strong> dafür liegt in der folgenden Beobachtung, die man einfachnachrechnet:Lemma 43 Ist B ein λ-Term, der einen der Werte T oder F annehmenkann, so gilt{M, falls B =β T,BMN =N, falls B = β F.Somit steht uns die Möglichkeit der Definition durch Fallunterscheidungim λ-Kalkül zur Verfügung.Man notiert dies oft in der FormIF B THEN M ELSE N.FallunterscheidungstermeNun können wir daran gehen, Kodes für natürliche Zahlen einzuführen. Darstellungnatürlicher ZahlenWir definieren0 := λx. x103
4. λ-definierbare Funktionenλ-definierbareFunktionenλ-Definierbarkeitder Gr<strong>und</strong>funktionen<strong>und</strong>S(n) := Π 2 (F, n).Diese im ersten Augenblick etwas willkürlich erscheinende Festsetzungwird durch die folgende Beobachtung motiviert.Lemma 44 Definieren wir den λ-Term NULL := λx. xT, so gilt{T, falls n = 0NULLn =F, falls n ≠ 0.Dies ist ganz offenbar wegen(λx. xT)(λx. x) = β (λx. x)T = β T<strong>und</strong>(λx. xT)Π 2 (F, n) = β (λx. xT)(λy . yFn ) = β (λy . yFn )T = β TFn= β F.Nun können wir ausdrücken, was wir unter einer λ-definierbaren Funktionverstehen.Definition 45 Eine Funktion f: N k −→ N heißt λ-definierbar, wenn eseinen λ-Term f derart gibt, daßf(n 1 , . . . , n k ) = β f n 1 . . . n kfür alle k-Tupel n 1 , . . . , n k gilt.Es ist dann sofort zu sehen, daß alle Gr<strong>und</strong>funktionen λ-definierbar sind.Wir erhalten nämlichC n j = λx 1 . . . x n . j ,P n j= λx 1 . . . x n . x jAbschluß gegenüberSubstitutionen<strong>und</strong>S = λx. Π 2 (F, x).Sind g <strong>und</strong> h 1 , . . . , h m bereits als λ-definierbare Funktionen erkannt, soerhalten wirSub(g, h 1 , . . . , h m ) = λx 1 . . . x k . g (h 1 x 1 . . . x k ) . . . (h m x 1 . . . x k ).Sehr viel schwieriger ist der Abschluß der λ-definierbaren Funktionengegenüber der primitiven Rekursion festzustellen. In der primitiven Rekursionwird eine Funktion implizit definiert, auch wenn nur auf Funktionswertean vorhergehenden Argumenten rekurriert wird. Bei der im-104
4.4. λ-definierbare Funktionenpliziten Definition von Funktionen hilft aber der Rekursionssatz. Wennwir also davon ausgehen, daß wir den Rekursionssatz schon haben, soerhalten wir die primitive Rekursion Rec(g, h) als eine Funktion mit demIndex e, der{{e} k g(⃗x), falls n = 0,(n, ⃗x) ≃h(Pd(n), Φ k (4.8)(e, Pd(n), ⃗x), ⃗x), sonsterfüllt. Wir haben bei der Entwicklung des Rekursionssatzes ja bereitsbetont, daß es sich um einen rein kombinatorischen Satz handelt. Daherwird man im λ-Kalkül versuchen, zuerst ein Äquivalent für den Rekursionssatzzu erhalten <strong>und</strong> dieses dann zum Nachweis der Abgeschlossenheitgegenüber primitiver Rekursion zu verwenden.Die Funktionalgleichung f(⃗x) ≃ g(f, ⃗x) läßt sich im λ-Kalkül, in demwir Funktionen <strong>und</strong> deren Argumente als Einheit betrachten dürfen, einfachalsF = β GF (4.9)schreiben. Nehmen wir G als gegeben an, <strong>und</strong> definieren wirF := (λx. G(xx))(λx. G(xx)),so erhalten wirF → 1 G((λx. G(xx))(λx. G(xx))) = GF,was einen Fixpunkt liefert. Man beachte hier die Ähnlichkeit zum Beweisdes Rekursionssatzes. Der Zusammenhang zwischen dem Term G <strong>und</strong>seinem Fixpunkt (λx. G(xx))(λx. G(xx)) ist völlig uniform <strong>und</strong> läßtsich daher durch eine Kombination beschreiben. Hier wäre esFO := λy . (λx. y(xx))(λx. y(xx)),dieG(FOG) = β FOGliefert. Also können wir den Fixpunktsatz (4.9) wie folgt verschärfen:Satz 46 Es gibt einen Fixpunktoperator FO, der jedem λ-Term G einenFixpunkt FOG zuordnet. D.h., wir habenG(FOG) = β FOG.Es gibt jedoch noch viele weitere Möglichkeiten, Fixpunktoperatoren zudefinieren.Mit Hilfe des Fixpunktsatzes lassen sich nun die AbschlußeigenschaftenDer Fixpunktsatzdes λ-Kalküls105
4. λ-definierbare Funktionender λ-definierbaren Funktionen weiter studieren.Um die Gleichung (4.8) behandeln zu können, benötigen wir die VorgängerfunktionPd, für die ein λ-Repräsentant sich wie folgt darstellen läßt:Pd := λx. NULLx(λx. x)(Π 2 2x).Um den Umgang mit dem λ-Kalkül etwas vertrauter zu machen, wollenwir dies kurz nachrechnen. Wegen NULL0 = β T, folgtPd 0 = β λx. x = 0,<strong>und</strong> wegen NULLn = β F für n ≠ 0, folgtPd (n + 1) = β Π 2 2Π 2 (F, n) = β n.Übersetzen wir (4.8) in die Sprache des λ-Kalküls, so sehen wir, daß wireinen λ-Term F benötigen, für den giltF NX 1 . . . X n = β IF NULLN THEN (GX 1 . . . X)ELSE(H(PdN)(F (PdN)X 1 . . . X n )X 1 . . . X n ).(4.10)Ohne die Verwendung von IF THEN ELSE heißt das aber nurAbschluß gegenüberprimitiver RekursionAbschluß gegenüberdem µ-OperatorF NX 1 . . . X n = β NULLN(GX 1 . . . X n )(H(PdN)(F (PdN)X 1 . . . X n )X 1 . . . X n ).Definieren wirU :=λuvx 1 . . . x n . NULLv(Gx 1 . . . x n )(H(Pdv)(u(Pdv)x 1 . . . x n )x 1 . . . x n ),so gibt es nach dem Fixpunktsatz ein F mit F = β UF , <strong>und</strong> dieses F erfülltoffenbar (4.10). Damit haben wir eingesehen, daß die λ-definierbarenFunktionen gegenüber der primitiven Rekursion abgeschlossen sind.Etwas problematischer ist der Abschluß gegenüber dem µ-Operator. Wirhaben nämlich mit Vorbedacht die λ-Definierbarkeit nur für totale Funktioneneingeführt. Damit haben wir vermieden, erklären zu müssen, wannwir eine Funktion als <strong>und</strong>efiniert betrachten. Wir wollen anschließendauf diese Problematik noch kurz eingehen. Wenn wir den Abschlußder λ-definierbaren Funktionen gegenüber dem µ-Operator untersuchenwollen, können wir daher davon ausgehen, daß µx. f(x, ⃗y) eine totaleFunktion ist. Dann muß aber sowohl f total sein als auch zu jedem Tupel⃗y ein x existieren mit f(x, ⃗y) = 0. Wir dürfen nun annehmen, daß wirdie Funktion f bereits durch den λ-Term f repräsentieren können. Waswir nun suchen, ist ein Repräsentant für die Funktion{x, falls f(x, ⃗y) = 0,g(x, ⃗y) =g(x + 1, ⃗y), sonst,106
4.4. λ-definierbare Funktionendenn g(0, ⃗y) liefert offenbar gerade den Wert µx. f(x, ⃗y). Definieren wirH := λuxy 1 . . . y n . NULL(f xy 1 . . . y n )x(u(Sx)y 1 . . . y n ),so liefert der Fixpunkt G von H offenbar genau einen Repräsentanten fürdie oben angegebene Funktion g, <strong>und</strong> wir könnenµf := H 0definieren.Damit haben wir nachgewiesen, daß jede rekursive Funktion auch λ-definierbar ist.Umgekehrt ist der Graph einer λ-definierbaren Funktion f durch{(⃗n, m)| f n 1 . . . n k = β m}gegeben, woraus nach dem vorherigen Abschnitt folgt, daß jede λ-definierbare Funktion einen rekursiv aufzählbaren Graphen hat. Beachtenwir weiter, daß jede λ-definierbare Funktion per defintionem total ist, soerhalten wir den folgenden Satz:Satz 47 Die λ-definierbaren Funktionen sind genau die rekursiven Funk- Rekursive vs.tionen.Dieses Ergebnis hat selbst wieder Rückwirkungen auf die Theorie derλ-Terme. Wir wollen als Beispiel dafür folgern, daß sich rekursiv aufzählbareMengen von λ-Termen angeben lassen, die nicht rekursiv sind.Wir benützen die CHURCHsche These um einzusehen, daß sich rekursiveFunktionen Ap <strong>und</strong> Num definieren lassen, für die gilt:Ap( M , N ) = MN<strong>und</strong>Num(n) = n .Gemäß dem Repräsentationssatz (Satz 47) existieren daher repräsentierendeλ-Terme Ap <strong>und</strong> Num für Ap <strong>und</strong> Num. Definieren wir für einenλ-Term MM :≡ M ,so wird dies kaum zu Verwechslungen mit n führen, wie es für natürlicheZahlen n definiert ist. Für die repräsentierenden λ-Terme Ap <strong>und</strong> Numgilt nunAp M N = β MN<strong>und</strong>107λ-definierbareFunktionen
4. λ-definierbare FunktionenNum M = β M .Ist nun F ein beliebiger λ-Term, so definieren wirU :≡ λx. F (Ap xNum x) <strong>und</strong> X :≡ U U .Dann folgtX = β U U = β F (Ap U Num U ) = β F (Ap U U ) = β F U U ≡ F X .Eine Variante desFixpunktsatzes fürGödelnummern vonλ- TermenWir haben daher eine Variante des Fixpunktsatzes erhalten, die besagt:Satz 48 Zu jedem λ-Term F existiert ein λ-Term X mitF X = β X.Wir nennen eine Menge A von λ-Termen β-abgeschlossen, wennM ∈ A ∧ M = β N =⇒ N ∈ Agilt. Eine der klassischen Fragen der deskriptiven Mengenlehre ist dienach der rekursiven Trennbarkeit von Mengen. Dies bedeutet hier, daßwir von zwei nicht leeren Mengen A <strong>und</strong> B von (Kodes von) λ-Termenausgehen <strong>und</strong> die Frage stellen, ob wir wohl eine rekursive Menge C vonλ-Termen finden können, derart daß A ⊆ C <strong>und</strong> C ∩ B = ∅ ist. Wenn wirannehmen, daß ein solches rekursives C existiert, so haben wir einen λ-Term F , der dessen charakteristische Funktion repräsentiert. Für N ∈ Cgilt daher{1, falls N ∈ CF N = β0, falls N ∉ C.Wir nehmen A ∩ B = ∅ an, wählen M 0 ∈ A <strong>und</strong> M 1 ∈ B <strong>und</strong> definierenH :≡ λx. NULL(F x)M 0 M 1 . (4.11)Dann gilt{M0 , falls N ∉ CH N = βM 1 , falls N ∈ C.Nach der Variante des Fixpunktsatzes, wie sie durch Satz 48 gegeben ist,haben wir nun einen λ-Term G mit der Eigenschaft, daßH G = β Ggilt. Ist nun G = β M 0 , so folgt wegen M 0 ∈ A ⊆ C aber nach (4.11)G = β M 1 <strong>und</strong> für G ≡ M 1 ∉ C in analoger Weise G = β M 0 . Da A <strong>und</strong> Bals β-abgeschlossen vorausgesetzt waren, steht dies aber im Konflikt zur108
4.4. λ-definierbare FunktionenVoraussetzung A ∩ B = ∅. Es ist daher generell unmöglich, nicht leereβ-abgeschlossene Mengen von λ-Termen rekursiv zu trennen.Als Korollar der rekursiven Untrennbarkeit nicht leerer β-abgeschlossenerMengen von λ-Termen erhalten wir eine Variante des Satzes vonRICE für den λ-Kalkül.Satz 49 Ist A eine nicht leere β-abgeschlossene echte Teilmenge aller Eine Variante desλ-Terme, so ist A nicht rekursiv.Als Folgerung erhalten wir dann, daß für einen λ-Term N die Menge[N] β := {M | M = β N}eine zwar rekursiv aufzählbare, jedoch nicht rekursive Menge ist. Damitfolgt, daß die RelationM = β N,die wir bereits als rekursiv aufzählbar erkannt haben, nicht rekursiv <strong>und</strong>nach der CHURCHschen These daher algorithmisch nicht entscheidbar ist.Satzes von RICE fürden λ-KalkülWir wollen noch kurz auf die Problematik partieller λ-definierbarer Funktionen eingehen.Die naheliegende Definition für die λ-Definierbarkeit partieller Funktionen ist natürlich λ-Definierbarkeitdie Folgende:partieller Funktionenf: N k −→ p N heißt λ-definierbar, wenn es einen λ-Term F gibt mitf(n 1 , . . . , n k ) ≃ m : ⇐⇒ F n 1 . . . n k = β m.Bei dieser Definition ist allerdings die Kohärenz von der Undefiniertheit partiellrekursiverFunktionen <strong>und</strong> deren repräsentierenden λ-Termen nicht so trivial zu zeigen. Wollenwir den für totale Funktionen geführten Beweis einfach kopieren, so geraten wir bei derSubstitution in Schwierigkeiten, wo die Undefiniertheit von h i (⃗x) für ein i ∈ {1, . . . , n}schon die Undefiniertheit von Sub(g, h 1 , . . . , h m )(⃗x) nach sich zieht. Der repräsentierendeλ-Term g (h 1⃗ X) . . . (hm ⃗ X) kann aber selbst dann zu einer Normalform reduzieren,wenn eines der (h i⃗ X) <strong>und</strong>efiniert ist. Ein Beispiel für diese Situation bietet derTermλxy . x(λx. x)Ω,der die Normalform λx. x besitzt, obwohl Ω selbst keine Normalform hat. DieseSchwierigkeit läßt sich allerdings umgehen. Dazu geht man von dem Normalformentheoremfür partiellrekursive Funktionen aus <strong>und</strong> stellt eine partiellrekursive Funktionf durchf(⃗x) ≃ U(µy . sg(χ T n(e, ⃗x, y)) = 0)dar. Die Funktion sg ◦ χ T n ist primitiv rekursiv – <strong>und</strong> somit rekursiv – <strong>und</strong> besitzt damitnach dem oben gezeigten einen repräsentierenden λ-Term G. Ferner definieren wir Fals repräsentierenden Term für f so, wie wir es gemäß dem obigen Beweis getan hätten.Ist dann f(⃗x) definiert, so gilt nach dem oben gezeigten, daß109
4. λ-definierbare Funktionenf(x , . . . , x n ) = F x 1 . . . x nist. Ist f(⃗x) aber <strong>und</strong>efiniert, so ist nicht garantiert, daß F x 1 . . . x ndefiniert ist. Um dies zu erreichen, definiert man einen Repräsentantenebenfalls nichtH :≡ λx 1 . . . x n . P (x 1 , . . . , x n )(F x 1 . . . x n )mit einem ‘korrigierenden Term’ P (x 1 , . . . x n ) derart, daßP (x 1 , . . . x n ) = β I(:= λx. x)ist, falls es ein k gibt mit sg(χ T n(x 1 , . . . x n , k)) = 0 <strong>und</strong> P (x 1 , . . . x n ) eine unendlicheReduktionskette erzeugt, falls sg(χ T n(x 1 , . . . x n , k)) = 1 für alle natürlichen Zahlen kist. Die Definition von P (x 1 , . . . x n ) ist nicht ganz einfach, weswegen wir hier daraufverzichten wollen.4.5 λ-Kalküle über TypenstrukturenEndliche TypenNeben dem in den vorherigen Abschnitten behandelten typenfreien λ-Kalkül spielen – gerade in jüngerer Zeit – auch λ-Kalküle über Typenstruktureneine gewisse Rolle. In ihnen versucht man die Vorteileder einfachen Kombinatorik des λ-Kalküls mit der größeren Übersichtlichkeiteiner Sprache mit Typen zu verbinden. Ihren Ursprung habenKalküle über Typenstrukturen in beweistheoretischen Untersuchungen.KURT GÖDEL war einer der ersten, der auf die Verwendbarkeit von Funktionalenmit Typen in gr<strong>und</strong>lagentheoretischen Untersuchungen hinwies.Wir wollen – um den Rahmen des Buches nicht zu sprengen – allerdingsnur grob auf die Gr<strong>und</strong>begriffe getypter Kalküle eingehen.Da wir hier nur auf einige prinzipielle Eigenschaften von Kalkülen mitTypen eingehen wollen, werden wir uns zuerst auf eine sehr einfacheTypenstruktur beschränken, die als endliche Typen bekannt sind.Endliche Typen sind zum einen der Gr<strong>und</strong>typ o <strong>und</strong>, falls σ <strong>und</strong> τ bereitsendliche Typen sind, auch der Typ σ → τ.Wir werden Typen im folgenden immer mit kleinen griechischen Buchstabenbezeichnen. Die Intuition, die hinter der Definition der Typen steckt,ist, daß es sich bei Objekten des Gr<strong>und</strong>typs o um bestimmte vorgegebeneObjekte handelt, wie z. B. natürliche Zahlen oder Zeichenreihen,während Objekte eines Typs σ → τ Abbildungen sind, die Objekte vomTyp σ auf Objekte des Typs τ abbilden. Bezeichnen wir mit Typ(τ) dieMenge aller Objekte des Typs τ, so wäre eine mögliche Interpretation fürdie Struktur der endlichen Typen geben durchTyp(o) := N<strong>und</strong>110
4.5. λ-Kalküle über TypenstrukturenTyp(σ → τ) := {f | f: Typ(σ) −→ Typ(τ)}.Um einen getypten λ-Kalkül zu erhalten, geht man nun davon aus, daß fürjeden Typ σ beliebig viele Variablen zur Verfügung stehen. Wir notierenmit x σ , daß x eine Variable des Typs σ ist. In Analogie zum typenfreienλ-Kalkül definiert man die Terme des getypten λ-Kalküls durch diefolgenden Klauseln:Definition 501. Jede Variable x σ ist ein λ-Term des Typs σ.2. Ist T ein λ-Term des Typs τ, so ist λx σ . T ein λ-Term des Typs σ → τ.3. Ist T ein λ-Term des Typs σ → τ <strong>und</strong> S ein λ-Term des Typs σ, so ist(T S) ein λ-Term des Typs τ.Wir sehen allerdings sofort, daß wir mit den so eingeführten λ-Termennicht einmal in der Lage sind, natürliche Zahlen zu definieren. NatürlicheZahlen sollen Objekte vom Typ o werden. Die einzigen Objektedieses Typs, die uns im bisher definierten Kalkül zur Verfügung stehen,sind Variablen. Konstante Größen, wie beispielsweise natürliche Zahlen,lassen sich jedoch nicht durch Variablen repräsentieren, die ja nochinterpretationsbedürftig sind, sondern höchsten durch geschlossene Terme,d.h. Terme, die keine freien Variablen mehr enthalten. Wann immerwir jedoch eine Variable durch λ-Abstraktion (d.h. durch die Klausel 2in Definition 50 ) binden, verlassen wir den Bereich der Gr<strong>und</strong>typen.Dies bedeutet, daß wir im Gegensatz zum typenfreien λ-Kalkül, in demwir natürliche Zahlen durch geschlossene λ-Terme repräsentieren, im λ-Kalkül mit Typen schon zur Darstellung natürlicher Zahlen nicht ohneAtome auskommen. Wir werden also gewisse Atome (oder Konstanten,wie wir sie im folgenden nennen wollen) zur Sprache des getypten λ-Kalküls hinzunehmen <strong>und</strong> Definition 50 um die Klausel0. Jede Konstante eines Typs σ ist eine λ-Term vom Typ σerweitern. Um natürliche Zahlen definieren zu können, reicht es aus, eineKonstante 0 vom Typ o <strong>und</strong> eine Konstante S vom Typ o → o für dieNachfolgerfunktion einzuführen. Wir definieren die λ-Terme0 := 0<strong>und</strong>n + 1 := Sn.Dann ist n für jede natürliche Zahl n ein λ-Term vom Typ o, der nrepräsentiert.Konversionen <strong>und</strong> Reduktionen definieren wir wie für den typenfreienλ-Kalkül. Wir haben alsoGetypte λ-Terme111
4. λ-definierbare Funktionen(λx σ . T )S → 1 T x σ(S)<strong>und</strong>U → 1 V =⇒ λx. U → 1 λx. V, US → 1 V S <strong>und</strong> SU → 1 SV,wobei wir immer stillschweigend voraussetzen, daß diese Terme alletypengerecht gebildet sind. Insbesondere ist im wesentlichen Konversionsschritt(λx σ . T )S → 1 T x σ(S)S ein λ-Term des Typs σ, woraus sich ergibt, daß T x σ(S) wieder einkorrekt gebildeter λ-Term ist.Mit Hilfe der neuen Konstanten werden die Gr<strong>und</strong>funktionen auch imgetypten λ-Kalkül definierbar. So ist S als Konstante vorhanden <strong>und</strong> wirdefinierenC n k = λxo 1 . . . xo n . ksowieP n k = λxo 1 . . . xo n . xo k .Desweiteren zeigt die gleiche Konstruktion wie im typenfreien λ-Kalkül,daß die bislang definierbaren Funktionen auch gegenüber dem Substitutionsoperatorabgeschlossen sind. Aber bereits der Abschluß gegenüber derprimitiven Rekursion ist nicht gegeben. Beim Nachweis des Abschlussesder im typenfreien λ-Kalkül definierbaren Funktionen gegenüber derprimitiven Rekursion, hat der Fixpunktsatz eine entscheidende Rolle gespielt.Dieser Satz hing seinerseits wesentlich von der Typenfreiheit desλ-Kalküls ab, die es erlaubt, λ-Terme auf sich selbst anzuwenden. DieseSelbstanwendung steht uns aber im getypten λ-Kalkül nicht mehr zurVerfügung. Damit erhalten wir mit der bisherigen Definition nicht einmalalle primitiv rekursiven Funktionen. Wollen wir eine größere Klassevon Funktionen erfassen, so müssen wir weitere Konstanten zum Kalkülhinzunehmen. Wir führen daher für jeden Typ τ eine Konstante R τ ein,die es erlauben wird, Funktionen durch Rekursion zu definieren. Umdie Typenbezeichnung übersichtlicher zu gestalten, wollen wir Typen alsnach rechts geklammert schreiben <strong>und</strong> die Abkürzungσ 1 , . . . , σ n → τ := σ 1 → . . . → σ n → τ := (σ 1 → (. . . → (σ n → τ) . . .))einführen. Diese Schreibweise ist einprägsam, da für Terme T vom Typσ 1 , . . . , σ n → τ <strong>und</strong> S 1 , . . . , S n der entsprechenden Typen σ 1 , . . . , σ n derTerm T S 1 . . . S n vom Typ τ ist. Der Rekursor R τ ist dann vom Typ112
4.5. λ-Kalküle über Typenstrukturenτ, (o, τ → τ), o → τ<strong>und</strong> wird durch die KonversionsregelnR τ GH0→ 1 G<strong>und</strong>R τ GH(ST )→ 1 HT (R τ GHT )definiert. Alle übrigen Definitionen, inklusive der Relation = β , übernehmenwir vom typenfreien λ-Kalkül. Wir erhalten so die ursprünglich vonK. GÖDEL eingeführte Theorie T der Funktionale endlicher Typen. Dabei Die Theorie T derwollen wir einen getypten λ-Term F genau dann ein Funktional nennen,wenn F keine freien Variablen enthält.Es ist nicht sonderlich schwer einzusehen, daß auch der getypte λ-Kalküldie CHURCH-ROSSER Eigenschaft besitzt, womit die = β -Relation auchhier eine Äquivalenzrelation wird. Im Unterschied zum typenfreien λ-Kalkül besitzt aber jeder Term des getypten Kalküls eine Normalform.Insbesondere gilt der folgende Satz.Satz 51 Jedes Funktional der Theorie T besitzt eine eindeutig bestimmteNormalform.Ein einfacher Beweis dafür findet sich in [SHOE67]. Ein tiefer gehenderBeweis, der mehr Information über die Komplexität der durch die TheorieT definierbaren Funktionen liefert, geht auf W. HOWARD zurück <strong>und</strong> istbeispielsweise in [SCHÜ77] dargestellt. Wir nennen dabei eine Funktionf: N n −→ N in der Theorie T definierbar, wenn es ein Funktional F vomTyp o, . . . , o → o so gibt, daß} {{ }n−fachF z 1 . . . z n = β f(z 1 , . . . , z n )Funktionaleendlicher Typenfür alle n-Tupel z 1 , . . . , z n natürlicher Zahlen gilt. Aus Satz 51 folgt nun,daß alle in T definierbaren Funktionen total sind. Es ist natürlich wiederleicht einzusehen, daß die Relation = β rekursiv aufzählbar ist, woraussich ergibt, daß alle in T definierbaren Funktionen rekursiv sind. Es istauch sehr leicht einzusehen, daß jede primitiv rekursive Funktion in Tdefinierbar ist. Die Klasse der in T definierbaren Funktionen ist jedocheine echte Oberklasse der primitiv rekursiven Funktionen. Sie umfaßtgenau die Klasse der rekursiven Funktionen, deren Totalität sich aus den Beweisbar rekursivePEANO-Axiomen ableiten läßt. Man charakterisiert sie daher oft als die Funktionen derPEANO Arithmetikbeweisbar rekursiven Funktionen der PEANO Arithmetik.Die Typenstruktur läßt sich natürlich leicht erweitern, ohne daß dies zueiner tatsächlichen Vergrößerung der Klasse der definierbaren Funktio-113
4. λ-definierbare FunktionenPolymorphe TypenPolymorph getypteλ-Termenen führt. Man kann weitere Gr<strong>und</strong>typen einführen (wie beispielsweiseden Typ BOOLEAN für Wahrheitswerte oder REAL für Gleitkommazahlen).Man kann Typen σ 1 × . . . × σ n für kartesische Produkte hinzufügen <strong>und</strong>so fort. So lassen sich die in Programmiersprachen üblichen komplexerenDatentypen ohne weiteres als endliche Typen auffassen. Eine Programmiersprache,die sich exakt am getypten λ-Kalkül orientierte, hätte denVorteil, daß jedes in ihr geschriebene, syntaktisch korrekte Programm aufGr<strong>und</strong> von Satz 51 auch terminierte. Der Nachteil, daß die durch so eineSprache erfaßte Klasse berechenbarer Funktionen nur eine echte Teilklasseder theoretisch berechenbaren Funktionen ist, dürfte angesichtsder Tatsache, daß bereits die Berechnung primitiv rekursiver Funktionenjenseits aller physikalisch gegebenen Grenzen liegt, kaum ins Gewichtfallen. Allerdings wäre eine solche Sprache mit hoher Wahrscheinlichkeitviel zu schwerfällig, als daß sie allgemein angenommen würde.Eine deutliche Verstärkung erfährt der getypte λ-Kalkül durch das Zulassenvon Typenvariablen. Man spricht dann von polymorphen Typen. Diepolymorphen Typen werden durch die folgenden Regeln erzeugt:• Jede Typenvariable – mitgeteilt durch α, β, . . . – ist ein Typ.• Mit σ <strong>und</strong> τ ist auch σ → τ ein Typ.• Mit σ ist auch Πα. σ ein Typ.Die Terme des zur polymorphen Typenstruktur gehörenden λ-Kalkülserhält man durch die folgenden Klauseln:• Ist x eine Objektvariable <strong>und</strong> σ ein Typ, so ist x σ ein Term des Typsσ.• Ist U ein Term des Typs τ, x eine Objektvariable <strong>und</strong> σ ein Typ, so istλx σ . U ein Term des Typs σ → τ.• Ist U ein Term des Typs σ <strong>und</strong> ist α eine Typenvariable, die nicht freiim Typ einer frei in U auftretenden Objektvariablen auftritt, so istΛα. U ein Term vom Typ Πα. σ.• Sind U <strong>und</strong> V Terme der Typen σ → τ <strong>und</strong> σ, so ist (UV ) ein Termdes Typs τ.• Ist U ein Term des Typs Πα. τ <strong>und</strong> σ ein Typ, so ist (Uσ) ein Termdes Typs τ α (σ).Die Konversionsregeln des getypten λ-Kalküls werden um die Regel(Λα. U)τ → 1 U α (τ)erweitert, wobei wir nochmals in Erinnerung rufen wollen, daß U α (τ)die Zeichenreihe bedeutet, die aus U entsteht, wenn die Typenvariable α114
4.5. λ-Kalküle über Typenstrukturenüberall, wo sie frei auftritt, durch τ ersetzt wird.Das hier angegebene Termsystem wurde zuerst von J. Y. GIRARD ent- Das System Fwickelt <strong>und</strong> von ihm System F genannt. Die ursprüngliche Motivation polymorpherFunktionalezur Entwicklung des Systems F waren beweistheoretische Untersuchungender Arithmetik der zweiten Stufe. Tatsächlich lassen sich vermögedes sogenannten HOWARD-CURRY Isomorphismus die Typen des SystemsF als Formeln der Prädikatenlogik zweiter Stufe auffassen <strong>und</strong> das SystemF entspricht dann ziemlich exakt einem Kalkül des natürlichenSchließens für die intuitionistische Prädikatenlogik der zweiten Stufe. InF lassen sich die gängigen Typen relativ leicht definieren. Auch der Typder natürlichen Zahlen ist definierbar, ähnlich, wie sich auch die natürlichenZahlen in der Prädikatenlogik der zweiten Stufe definieren lassen.Daher kann man auch auf Konstanten für 0, die Nachfolgerfunktion <strong>und</strong>den Rekursor verzichten.Die Reduktionen im System F werden natürlich wieder durch rekursivaufzählbare Relationen beschrieben. Ähnlich wie für das System T läßtsich auch für F zeigen, daß jeder Term zu einer Normalform reduziert.Allerdings ist der Nachweis deutlich schwieriger als der für T. Er wurdeerstmals von GIRARD geführt. Damit sind alle in F repräsentierbarenFunktionen total <strong>und</strong> somit rekursiv. Es läßt sich zeigen, daß die in Fdefinierbaren Funktionen genau die rekursiven Funktionen sind, derenTotalität in der Arithmetik der zweiten Stufe beweisbar ist.Was das System F so interessant macht, ist die Tatsache, daß sich durchden Typ Πα. σ Funktionen beschreiben lassen, die uniform auf allenTypen σ α (τ) arbeiten. Da Interpretationen polymorpher Typen nicht mehrso leicht anzugeben sind wie für einfachen Typen, wollen wir es bei diesenetwas vagen Andeutungen belassen. Wer sich detaillierter damit befassenwill, sei auf [GIR89] verwiesen.115
5. Unentscheidbare ProblemeAls eine Anwendung der Theorie rekursiver <strong>und</strong> rekursiv aufzählbarerMengen wollen wir uns nun mit unlösbaren Problemen beschäftigen.Bezeichnet man ein Problem als unlösbar oder unentscheidbar, so meintman im allgemeinen damit, daß es algorithmisch unlösbar ist, d. h., daßes keine Maschine geben kann, die das vorgelegte Problem entscheidet.Man kennt sehr viele Probleme, die in diesem Sinne unlösbar sind. Wirwollen uns hier auf zwei Beispiele beschränken, die von besonderemInteresse für die <strong>Informatik</strong> sind.Das Urbeispiel eines unlösbaren Problems haben wir ja bereits kennengelernt.Es ist das Halteproblem für Turingmaschinen. Der Schlüssel dortwar die MengeK = {x| (∃y)T 1 (x, x, y)} = {x| x ∈ dom({x} 1 )} = {x| x ∈ W x },die wir als nicht rekursiv <strong>und</strong> somit nicht entscheidbar erkannt haben.Es ist eine bewährte Technik, die Unlösbarkeit eines Problems dadurchnachzuweisen, daß man es auf das Halteproblem reduziert. Wir wollenuns daher zunächst kurz mit Reduktionen von Entscheidungsproblemenbeschäftigen.5.1 UnlösbarkeitsgradeDie Reduktion eines Entscheidungsproblems für eine Menge M auf eineMenge M ′ , dessen Entscheidungsproblem bereits gelöst ist, führt auf denwichtigen Begriff der Unlösbarkeitsgrade. Unter einem Unlösbarkeits- Unlösbarkeitsgradegrad versteht man eine Klasse von Relationen, deren Entscheidungsproblem“gleich schwer” ist. Dabei ist allerdings noch zu klären, wases heißen soll, daß zwei Relationen ein “gleich schweres” Entscheidungsproblemhaben. Haben wir zwei Relationen R 1 <strong>und</strong> R 2 gegeben,so können wir sagen, daß das Entscheidungsproblem von R 1 auf das vonR 2 reduziert ist, wenn die Annahme der Lösung des Entscheidungsproblemsfür R 2 immer auch eine Lösung des Entscheidungsproblems fürR 1 beinhaltet. Es sind eine Reihe solcher Reduktionsmöglichkeiten bekannt.Die Allgemeinste wird durch die sogenannte relative Rekursivitäterzeugt. Um diesen Begriff zu präzisieren, nennen wir eine Funktion Fpartiellrekursiv in einer Funktion G, wenn F durch einen Funktionstermdargestellt werden kann, der sich aus der Funktion G <strong>und</strong> den Gr<strong>und</strong>funktionenC n k, P n k <strong>und</strong> S durch die Gr<strong>und</strong>operationen Sub, Rec <strong>und</strong>117Relative Rekursivität
5. Unentscheidbare ProblemeTuringreduzibilitätdem unbeschränkten Suchoperator zusammensetzen läßt. In der Spracheder maschinenberechenbaren Funktionen können wir uns die Tatsache,daß eine Funktion F relativ zu einer Funktion G maschinenberechenbarist, so veranschaulichen, daß ein Orakel vorliegt, das uns im Laufe derBerechnung von F (⃗m) immer dann die Werte G(⃗n i ) offenbart, wenndies für die Berechnung von F (⃗m) erforderlich ist. Da jede Berechnungendlich zu sein hat, werden im Verlaufe der Rechnung an das Orakelfür G nur endlich viele Fragen gestellt. Das bedeutet, daß für eine in Grekursive Funktion F während der Berechnung von F (⃗m) das Orakelfür G nur an endlich vielen Argumenten ⃗n 1 , . . . , ⃗n k nach den Wertenvon G(⃗n i ) befragt wurde. Im Regelfall betrachtet man Funktionen, dierekursiv in einer Menge A sind. In dieser Situation geht man dann davonaus, daß ein Orakel existiert, das uns endlich viele Anfragen ⃗n i ∈ A? zubeantworten hat. Ist eine Relation B rekursiv in einer Menge A, so läßtsich das Entscheidungsproblem für B auf das der Menge A zurückführen.Wollen wir x ∈ B? entscheiden <strong>und</strong> ist B rekursiv in A, so lassen wir den“relativen Algorithmus” für x ∈ B ablaufen <strong>und</strong> setzen jedesmal, wennim Verlaufe des Entscheidungsverfahrens nach n ∈ A? gefragt wird, denvorausgesetzten Entscheidungsalgorithmus für A in Gang. Diese Art vonReduzibilität ist als Turingreduzibilität bekannt <strong>und</strong> man notiert durchB ≤ T A,Turingäquivalenzdaß B turingreduzibel auf A ist. Gilt A ≤ T B <strong>und</strong> B ≤ T A, so habenA <strong>und</strong> B offenbar ein gleich schweres Entscheidungsproblem, was nursoviel heißen mag, daß jede Lösung des Entscheidungsproblems für Aauch eine für B erzeugt <strong>und</strong> umgekehrt. Man sagt dann, daß A <strong>und</strong> Bturingäquivalent sind <strong>und</strong> notiert dies durchA ≡ T B.POSTs ProblemDie Turingäquivalenz ist offensichtlich eine Äquivalenzrelation auf denTeilmengen der natürlichen Zahlen. Die Klasse aller turingäquivalentenRelationen bilden einen Unlösbarkeitsgrad.Das Studium der Struktur der Unlösbarkeitsgrade ist ein wesentlichesAnliegen der klassischen Rekursionstheorie. Zwei Grade sind uns bereitsbekannt. Zum einen ist dies der Grad der entscheidbaren Relationen, deroft mit 0 bezeichnet wird <strong>und</strong> alle Relationen enthält, die turingäquivalentzur leeren Menge (<strong>und</strong> damit rekursiv) sind, <strong>und</strong> der Grad 0 ′ , in demdie eingangs erwähnte Menge K liegt. Beide Grade sind offensichtlichverschieden, da K nicht im Grad 0 liegen kann. Lange Zeit offen war dievon E. POST 1944 gestellte Frage, ob es zwischen 0 <strong>und</strong> 0 ′ noch weitererekursiv aufzählbare Turinggrade gibt. Erst 1956 konnten unabhängigvoneinander R. FRIEDBERG <strong>und</strong> A. A. MUCHNIK diese Frage positiv118
5.1. Unlösbarkeitsgradebeantworten.Neben den Turinggraden betrachtet man jedoch auch noch feinere Unlösbarkeitsgrade.Unter diesen sind die sogenannten m-Grade besonders wichtig,die wir kurz einführen wollen.Definition 52 Eine Relation R 1 heißt ”many-one reduzibel” (kurz m- m-Reduzibilitätreduzibel) auf eine Relation R 2 , notiert alsR 1 ≤ m R 2 ,wenn es eine rekursive (<strong>und</strong> damit totale) Funktion f derart gibt, daßR 1 (⃗x) ⇐⇒ R 2 (f(⃗x))für alle Tupel ⃗x gilt.Ist die Funktion f injektiv, so spricht man von “one-one-Reduzibilität”oder kurz 1-Reduzibilität <strong>und</strong> notiert dies durchR 1 ≤ 1 R 2 .Es ist ganz offensichtlich, daßA ≤ 1 B =⇒ A ≤ m B =⇒ A ≤ T Bgilt. Aus der m-Reduzibilität erhalten wir wieder in kanonischer Weisedie m-Äquivalenz durchR 1 ≡ m R 2 falls R 1 ≤ m R 2 <strong>und</strong> R 2 ≤ m R 1 .Die m-äquivalenten Mengen bilden einen m-Grad. Völlig analog erhält m-Grademan 1-Grade.Von besonderer Bedeutung sind sogenannte m-vollständige Relationen. m-VollständigkeitEine Relation R heißt m-vollständig für eine Klasse K von Relationen,wenn R ∈ K ist <strong>und</strong> P ≤ m R für jedes P ∈ K gilt. Intuitiv bedeutetdies, daß die Lösung des Entscheidungsproblems für eine vollständigeRelation R schon das Entscheidungsproblem für alle Relationen in Klöst.Eine wesentliche Eigenschaft des Halteproblems für Turingmaschinen m-Vollständigkeitliegt darin, m-vollständig für die rekursiv aufzählbaren Mengen zu sein. des HalteproblemsDies ist ganz einfach einzusehen. Wir wissen bereits, daß K rekursivaufzählbar ist. Ist nun R eine beliebige rekursiv aufzählbare Menge, sogibt es einen Index e mit R = W e , d.h., es giltx ∈ R ⇐⇒ ∃yT (e, x, y).Dies können wir als119
5. Unentscheidbare Probleme(〈e, x〉) 1 ∈ W (〈e,x〉)0schreiben. Definieren wirh(u, v) ≃ 1 falls (u) 1 ∈ W (u)0 ,so hat h einen rekursiv aufzählbaren Graphen <strong>und</strong> ist daher partiellrekursiv.Für einen Index e 0 von h erhalten wir mit dem S m n -Theorem{S(e 0 , u)}(v) ≃ 1 ⇐⇒ (u) 1 ∈ W (u)0 .Da der Wert von {S(e 0 , u)}(v) offenbar nicht von v abhängt, gilt schließlich(〈e, x〉) 1 ∈ W (〈e,x〉)0 ⇐⇒ {S(e 0 , 〈e, x〉)}(S(e 0 , 〈e, x〉)) ≃ 1⇐⇒ S(e 0 , 〈e, x〉) ∈ W S(e0 ,〈e,x〉)⇐⇒ S(e 0 , 〈e, x〉) ∈ K.Die Funktion g(x) := S(e 0 , 〈e, x〉) ist offenbar rekursiv <strong>und</strong> reduziert Rauf K, d.h. wir habenx ∈ R ⇐⇒ ∃yT (g(x), g(x), y) ⇐⇒ g(x) ∈ K.Gelingt es uns zu zeigen, daß sich das Halteproblem – <strong>und</strong> damit dieMenge K – auf ein vorgegebenes Problem reduzieren läßt, so kann diesesnicht algorithmisch lösbar sein, da jede Lösung auch eine Lösungdes Halteproblems nach sich ziehen würde. Wir wollen in den beidenfolgenden Abschnitten diese Technik an zwei Beispielen erläutern.5.2 CHOMSKY GrammatikenDas erste dieser Beispiele soll ein Wortproblem behandeln. Dazu gehenwir von einem Alphabet Σ aus, worunter wir lediglich eine nicht leereendliche Menge zu verstehen haben. Die Elemente von Σ nennen wir dieZeichen oder manchmal auch die Buchstaben des Alphabets. Die Mengeder Wörter über Σ bezeichnen wir wieder mit Σ ∗ , die der nichtleerenWörter mit Σ + . Eine Sprache über dem Alphabet Σ ist eine MengeL ⊆ Σ ∗ .Das WortproblemDas Wortproblem für eine Sprache L besteht nun darin, einen Algorithmuszu finden, der für ein Wort w ∈ Σ ∗ die Fragew ∈ L?entscheidet. Endliche Alphabete lassen sich natürlich wieder problemlos120
5.2. CHOMSKY Grammatikendurch natürliche Zahlen kodieren. Wörter über einem Alphabet tretendann als Kodes endlicher Folgen natürlicher Zahlen auf. Damit läßt sichjede Sprache als eine Menge natürlicher Zahlen kodieren <strong>und</strong> das Wortproblemfür eine Sprache erhält dann die Form:Ist die Menge L := { w | w ∈ L} rekursiv?,wobei w , wie schon früher, den Kode eines Wortes w bezeichnet.Wenn keine näheren Informationen über L vorliegen, können wir natürlichauch keine Hoffnung auf eine positive Beantwortung dieser Frage hegen.Wir wollen daher Sprachen untersuchen, die in gewisser Weise selbstalgorithmisch erzeugt wurden. Dazu betrachten wir zunächst Regelsysteme.Ein Regelsystem (oder Semi-THUE-System) für das Alphabet Σ ist eine Semi-THUE-Systemeendliche MengeR ⊂ Σ ∗ × Σ ∗ .Wir wollen die Wörter aus Σ ∗ im folgenden mitu, v, w, . . . ,die Buchstaben mitz, z 1 , . . .bezeichnen. uv bezeichnet die Aneinanderreihung der Wörter u <strong>und</strong> v.Oft schreiben wir auch uzv um auszudrücken, daß der Buchstabe z imWort uzv zwischen den Teilwörtern u <strong>und</strong> v steht.Ist nun ein Regelsystem R für das Alphabet Σ gegeben, so heißtw 1 uw 2 → R 1 w 1vw 2ein direkter Ableitungsschritt bezüglich R, wenn(u, v) ∈ Rist <strong>und</strong> w 1 , w 2 beliebige Wörter über Σ sind.Wie im λ-Kalkül definieren wir die n-fache Iteration direkter Ableitungsschrittedurchu→ R 0<strong>und</strong>v, falls u = v,u→ R n+1 v, falls es ein w gibt mit u→R n w <strong>und</strong> w →R 1 v.Die reflexive <strong>und</strong> transitive Hülle der Relation → R ist dann wieder gegebendurch121DirekteAbleitungsschritte
5. Unentscheidbare Problemeu→ R v : ⇐⇒ (∃n)[u→ R n v].AbleitungCHOMSKYGrammatikenCHOMSKY SprachenRekursiveAufzählbarkeit vonCHOMSKY SprachenWir sagen dann, daß das Wort v aus dem Wort u abgeleitet werden kann.Eine CHOMSKY Grammatik ist durch ein QuadrupelG = (Σ, S, Ω, R)definiert, wobei• Σ ein Alphabet ist,• S ∈ Σ das Startsymbol <strong>und</strong>• Ω ⊆ Σ das terminale Alphabet heißt, <strong>und</strong> schließlich• R ein Regelsystem für Σ ist.Die von einer CHOMSKY Grammatik G = (Σ, S, Ω, R) erzeugte Spracheist die MengeL G := {w ∈ Ω ∗ | S → R w}.Eine Sprache L, d.h. eine Menge L ⊆ Σ ∗ von Wörtern über einem AlphabetΣ, heißt eine CHOMSKY Sprache, wenn es eine CHOMSKY Grammatikgibt, die L erzeugt.Ähnlich, wie wir dies bei der Untersuchung von Reduktionsketten imλ-Kalkül getan haben, können wir nun nachweisen, daß die Relation{( u , v )| u→ R 1 v}primitiv rekursiv ist. Daraus folgt aber ebenso unmittelbar, daß die Relation{( u , v )| u→ R v}rekursiv aufzählbarist.Also gilt:Satz 53 Für eine CHOMSKY Sprache mit zugr<strong>und</strong>e liegender GrammatikG = (Σ, S, Ω, R) ist die MengeL G := { w | w ∈ Ω ∗ ∧ S → R w}eine rekursiv aufzählbare Menge.Damit haben wir die Komplexität von CHOMSKY Sprachen bereits eingeschränkt.Die weitergehende Frage ist nun, ob die CHOMSKY Sprachennicht vielleicht sogar ein lösbares Wortproblem haben.Wie es die Allgemeinheit der in CHOMSKY Sprachen erlaubten Termersetzungenbereits erwarten läßt, wird dies nicht der Fall sein. Um dieseinzusehen, beschreibt man eine Turingmaschine mit Hilfe einer CHOMS-KY Grammatik. Technisch nützlich ist hierbei die folgende Eigenschaft122
von CHOMSKY Sprachen.5.2. CHOMSKY GrammatikenSatz 54 Ist G = (Σ, S, Ω, R) eine CHOMSKY Grammatik, Θ ⊆ Σ einAlphabet <strong>und</strong> Q ein Semi-THUE-System, so ist auch die SpracheL comp:= {w ∈ Θ ∗ | (∃v ∈ L G )[v → Q w]}eine CHOMSKY Sprache.Eine Konfiguration einer Turingmaschine T über dem einelementigen Beschreibung einerAlphabet {⋆} läßt sich in der Formuz nvnotieren, wobei das Wortuzvüber dem Alphabet {⋆, B} den endlichen Teil der Bandinschrift (mit demZeichen z auf dem Arbeitsfeld) darstellt <strong>und</strong> n der Zustand der Maschineist. Eine derartige Konfiguration können wir als Wort über dem AlphabetΣ = {⋆, B, α, β} ∪ M(T )darstellen, wobeiαuβnzvαmit u, v ∈ {⋆, B} ∗ , n ∈ M(T ) <strong>und</strong> z ∈ {⋆, B} die Konfigurationuz nvrepräsentiert. Nun ist es ein Leichtes, eine CHOMSKY Grammatik anzugeben,mit der sich alle Startkonfigurationen erzeugen lassen. Man definierteine GrammatikG = ({S, α, β, B, ⋆, k T }, S, {α, β, B, ⋆, k T }, R 1 ),mit dem Semi-THUE SystemR 1 :={S →R 11αβk T αβk T → R 11βk T z für z ∈ {⋆, B}Dann gibt man ein Semi-THUE System R 2 an, das die Modifikations- <strong>und</strong>Testinstruktionen der Turingbasismaschine nachmacht. Das System R 2ist in Abbildung 5.2 - 1 dargestellt. Damit läßt sich nach Satz 54 zu jederTuringmaschine T mit Endzustand e T eine CHOMSKY Grammatik G soangeben, daß fürRes T (n 1 , . . . , n k ) ≃ m}.123Turingmaschinedurch eineCHOMSKYGrammatik
5. Unentscheidbare ProblemeInstruktion Wirkung Regel(n, PRT , p)ua nv →u⋆ pvαuβnavα→αuβp ⋆ vα βna→R 21βp⋆ für a ∈ {⋆, B}(n, CLR, p)(n, LFT , p)(n, RHT , p)ua nv →uB pvαuβnavα→αuβpBvα βna→R 21βpB für a ∈ {⋆, B}uz a nv →uz pavαuβnavα→αuβpzvαua nzv →uaz pvαuβnavα→αuβpzvαzβn→ R 21βpz für z ∈ {⋆, B}zβn→ R 21βpz für z ∈ {⋆, B}(n, BEQ, p, q)uB nv →uB qvαuβnBvα→αuβqBvαu⋆ nv →u⋆ pvαuβn ⋆ vα→αuβp ⋆ vαβnB → R 21βqBβn ⋆ → R 21βp⋆Abb. 5.2 - 1: Das Regelsystem R 2 für die Basisturingmaschinedas Wortαuβe T ∗ m Bvαein Element der von G erzeugten CHOMSKY Sprache ist. Wir benötigendaher nur noch eine Ausgabe, die sich aber ebenso einfach durchein Semi-THUE System verwirklichen läßt. Wir erweitern zunächst dasAlphabet um eine Symbol γ <strong>und</strong> fügen das RegelsystemR 3 := {βe T → 1 γ}hinzu. Dann ist die Sprache{w ∈ {α, γ, ⋆, B} ∗ | (∃v ∈ L G )[v → G w]}eine CHOMSKY Sprache, die genau die Wörter der Formαuγ ⋆ m Bvαw (5.1)erzeugt, für dieuzeT⋆ m Bveine Endkonfiguration ist. Definieren wir nun ein Regelsystem vermöge124
R 4 =⎧⎪⎨⎪⎩Bz → 1 B für z ∈ {⋆, B}Bα→ 1 Λαz → 1 α für z ∈ {⋆, B}αγ → 1 Λ⎫⎪⎬⎪⎭,5.2. CHOMSKY Grammatikenso sehen wir sofort, daß dieses Regelsystem die Wörter in (5.1) in⋆ müberführt. Damit haben wir den folgenden Satz erhalten:Satz 55 Zu jeder Turingmaschine T gibt es eine CHOMSKY Sprache L Tderart, daßL T = {⋆ m | (∃n 1 ) . . . (∃n k )[Res T (n 1 , . . . n k ) ≃ m]}gilt.Ist nun M eine nicht leere rekursiv aufzählbare Menge, so gibt es eineTuringmaschine T mitM = {m| (∃n)[Res T (n) ≃ m]}.Mit Satz 54 gibt es daher eine CHOMSKY Sprache L T mitM T = {⋆ m | m ∈ M}.Der Kode ⋆ m berechnet sich natürlich primitiv rekursiv aus m. Wirhaben daher gezeigt:Satz 56 Es gibt eine primitiv rekursive Funktion f <strong>und</strong> zu jeder rekursivaufzählbaren Menge M eine CHOMSKY Sprache L derart, daßm ∈ M ⇐⇒ f(m) ∈ L := { w | w ∈ L}<strong>und</strong> somitM ≤ mgilt.LWählen wir für M in Satz 56 die Menge K, so erhalten wir eine CHOMSKYSprache L K mit K ≤ m L K . Wegen der m-Vollständigkeit von K gilt mitSatz 53 aber auch L K ≤ m K. Also haben wirK ≡ m L K ,was zeigt, daß die CHOMSKY Sprachen ebenso kompliziert wie die rekursivaufzählbaren Mengen sind. Als unmittelbare Folgerung daraus wollenwir festhalten:125
5. Unentscheidbare ProblemeUnlösbarkeit desWortproblems fürCHOMSKY SprachenKontextsensitiveSprachenSatz 57 Es gibt CHOMSKY Sprachen mit unlösbarem Wortproblem.Die eben erwähnte Sprache L K ist ein Beispiel für eine solche.Wir können sogar noch weiter gehen <strong>und</strong> folgern, daß die Frageu→ Q v?für beliebige Semi-THUE Systeme Q unentscheidbar ist, falls das zugr<strong>und</strong>egelegte Alphabet wenigstens zwei Zeichen hat.Um dies einzusehen, starten wir mit einer CHOMSKY Grammatik G =(Γ, S, Ω, R) mit unlösbarem Wortproblem. Wir nehmen an, daß das zugr<strong>und</strong>eliegende Alphabet Σ mindestens zwei verschiedene Zeichen ∗, Benthält. Wir wollen weiter annehmen, daß Γ = {0, . . . , r} ist. Durchk: Γ −→ Σ ∗j ↦−→ B ∗ j Bdefinieren wir eine Kodierung, die sich kanonisch zu einer Kodierungk: Γ ∗ −→ Σ ∗fortsetzen läßt. Das Semi-THUE System R der Grammatik G übeträgt sichnun zu einem Semi-THUE Systemk(R) := {k(u)→ 1 k(v)| u→ R 1v}.Dann giltk(u)→ k(R) k(v) ⇐⇒ u→ R v,<strong>und</strong>, da G ein unlösbares Wortproblem hatte, kann man k(u)→ k(R) k(v)nicht entscheiden. Daraus folgt aber, daßu→ Q vfür beliebige Semi-THUE Systeme Q über Σ nicht global entscheidbarsein kann.Programmiersprachen (mit wohldefinierter Syntax) sind natürlich CHOMS-KY Sprachen. Es liegt allerdings auf der Hand, daß Programmiersprachenmit unentscheidbarem Wortproblem unbrauchbar sind. Um zu einerTheorie von Programmiersprachen zu gelangen, hat man daher die Regelnfür Sprachgrammatiken enger zu fassen, als man dies im allgemeinenFall der CHOMSKY Sprachen getan hat. Dies führt zur sogenanntenCHOMSKY Hierarchie von Sprachen. Grammatiken der Art, wie wir siebisher betrachtet haben, heißen dann Typ 0 Grammatiken. Eine GrammatikG = (Σ, S, Ω, R) heißt eine Typ 1 oder kontextsensitive Grammatik,wenn jede Regel des Semi-THUE Systems die Form126
uav → R 1 uwv für a ∈ Σ \ Ω, u, v ∈ Σ∗ <strong>und</strong> w ∈ Σ +hat. Hat jede Regel die Gestalta→ R 1w für a ∈ Σ \ Ω <strong>und</strong> w ∈ Σ + ,5.2. CHOMSKY Grammatikenso spricht man von einer Typ 2 oder kontextfreien Grammatik. Typ 3 oder Kontextfreie <strong>und</strong>reguläre Sprachenreguläre Grammatiken erhält man, wenn man nur Regeln der Gestalta→ R 1bt für a, b ∈ Σ \ Ω <strong>und</strong> t ∈ Ωzuläßt.Es ist dann aus der Definition sofort klar, daßTypi ⊆ Typj für j ≤ igilt.Typ 0 Sprachen haben, wie wir bereits gesehen haben, ein unlösbares Ist das WortproblemWortproblem. Wie steht es damit für Typ 1 Sprachen? Hier beobachtet für kontextsensitiveSprachen lösbar?man zunächst, daß aus u→ R v immer l(u) ≤ l(v) folgt, wobei l(u) wieder1die Länge des Wortes u bedeutet. Daraus erhalten wir sofortu→ R v =⇒ l(u) ≤ l(v).Wir wollen uns die Komplexität vonu→ R n vals Relation von n <strong>und</strong> (den GÖDELnummern von) u, v ansehen. Es giltu→ R 0 v ⇐⇒ u = v<strong>und</strong>u→ R n+1v ⇐⇒ (∃w)[u→ R nw ∧ w → R 1v]. (5.2)Gelingt es, den Existenzquantor in (5.2) zu beschränken, so haben wiru→ R v durch primitive Rekursion nach n definiert. Für ein Wort w mitnw → R v gilt aber l(w) ≤ l(v) <strong>und</strong> l(v), die Länge von v, läßt sich natürlich1in primitiv rekursiver Weise aus dem Kode v von v berechnen. Über einemendlichen Alphabet gibt es aber nur endlich viele Wörter beschränkterLänge, <strong>und</strong> eine Oberschranke für die Kodes von Wörtern einer Länge≤ l läßt sich offensichtlich primitiv rekursiv aus l berechnen. Der Existenzquantorin (5.2) ist somit beschränkbar <strong>und</strong> die Relation u→ R v ndamit primitiv rekursiv entscheidbar.Wir wollen daraus folgern, daß kontextsensitive (<strong>und</strong> damit erst recht kontextfreie<strong>und</strong> reguläre) Sprachen ein entscheidbares Wortproblem haben.Ist G = (Σ, S, Ω, R) eine kontextsensitive Grammatik, so gilt127
5. Unentscheidbare Problemew ∈ L G ⇐⇒ (∃n)[S → R n w ∧ w ∈ Ω∗ ]. (5.3)Die Relation S → R nw haben wir schon als primitiv rekursiv erkannt. Wegenw ∈ Ω ∗ ⇐⇒ Seq ( w ) ∧ (∀i
5.3. Prädikatenlogikponenten, den logischen <strong>und</strong> den nichtlogischen Zeichen. Die logischenZeichen ihrerseits untergliedern sich in Zeichen für• Variablen – x, y, z, x 1 , . . .,• Junktoren – ¬, ∧, ∨, →<strong>und</strong>• Quantoren – ∀, ∃.Die nichtlogischen Zeichen untergliedern sich in• Individuenkonstanten – c, c 1 , . . . ,• Funktionszeichen – f, g, f 1 , . . .<strong>und</strong>• Prädikatszeichen – P, Q, P 1 , . . . .Jedem Funktionszeichen f <strong>und</strong> jedem Prädikatszeichen P ist eine Stellenzahl♯f beziehungsweise ♯P zugeordnet.Daneben benutzen wir noch r<strong>und</strong>e Klammern als Hilfszeichen.Es gibt zwei Arten sinnvoll gebildeter Wörter in der Sprache der Prädikatenlogik,nämlich Terme <strong>und</strong> Formeln . Diese wollen wir hier allerdingsnicht über eine formale Grammatik definieren, sondern durch intuitivbesser verständliche Bildungsregeln beschreiben.Die Bildungsregeln für Terme werden durch die folgenden Klauselngegeben:1. Jede Variable <strong>und</strong> jede Individuenkonstante ist ein Term.2. Sind t 1 , . . . , t n Terme, <strong>und</strong> ist f ein Funktionszeichen der Stellenzahln, so ist (ft 1 . . . t n ) ein Term.Die Bildungsregeln für Formeln umfassen die folgenden Klauseln:1. Sind t 1 , . . . , t n Terme, <strong>und</strong> ist P ein Prädikatszeichen der Stellenzahln, so ist (P t 1 . . . t n ) eine (Atom-)Formel.2. Sind A <strong>und</strong> B Formeln, so sind ¬A, A ∧ B, A ∨ B <strong>und</strong> A → Bebenfalls Formeln.3. Ist A eine Formel, so sind auch ∀xA <strong>und</strong> ∃xA Formeln. Dabei wird xin ∀xA bzw. ∃xA durch den entsprechenden Quantor geb<strong>und</strong>en <strong>und</strong> wirwollen annehmen, daß x in A nicht bereits durch einen anderen Quantorgeb<strong>und</strong>en war.TermeFormelnDurch diese Regeln ist die Syntax der Sprache der Prädikatenlogik festge- Syntaxlegt. Wir wollen noch vereinbaren, daß eine Variable x frei in einer FormelF vorkommt, wenn x in F nicht geb<strong>und</strong>en ist. Terme <strong>und</strong> Formeln ohnefreie Variablen heißen geschlossen. Geschlossene Formeln bezeichnetman oft auch als Sätze. Die logischen Symbole sind für alle Sprachen Sätzeder ersten Stufe die gleichen. Sprachen der ersten Stufe unterscheidensich daher nur durch ihre nichtlogischen Symbole. Die nichtlogischen Signatur einerZeichen legen die Signatur der Sprache fest. Wir notieren dies oft durch Sprache129
5. Unentscheidbare ProblemeSemantikStrukturenInterpretationen vonTermen <strong>und</strong> FormelnBelegungen freierVariablenL = L(C, F, P),wobei C die Menge der Konstantensymbole, F die Menge der Funktionssymbole<strong>und</strong> P die Menge der Prädikatszeichen bedeutet.Bislang haben wir nur die Syntax von Sprachen der ersten Stufe festgelegt.Die Bildungsregeln für Terme <strong>und</strong> Formeln sind ganz offensichtlichso angelegt, daß wir entscheiden können, ob ein wohlgeformtes Wort vorliegt.Ähnliche Überlegungen, wie wir sie für kontextsensitive Sprachendurchgeführt haben (die Sprache der Prädikatenlogik läßt sich sogar durcheine kontextfreie Grammatik definieren) zeigen, daß diese Entscheidungin primitiv rekursiver Weise gefällt werden kann.Die Bedeutung von Termen <strong>und</strong> Formeln wird erst durch eine Semantikgegeben. Die Semantik soll dabei so festgelegt werden, daß Terme alsIndividuen <strong>und</strong> Formeln als Aussagen interpretiert werden. Um dies tun zukönnen, benötigen wir eine Struktur mit einem Träger, dessen Elementedie Rolle der Individuen übernehmen sollen. Um auch die nichtlogischenZeichen interpretieren zu können, muß die Struktur der Signatur derSprache angepaßt sein, was hier nur soviel heißen soll, daß eine Strukturfür eine Sprache L(C, F, P) die FormS := (S, C, F, P)hat, wobei• C ⊆ S für jedes c ∈ C ein c S ∈ C,• F für jedes f ∈ F mit ♯f = n eine Funktion f S : S n −→ S <strong>und</strong>• P für jedes P ∈ P der Stellenzahl ♯P = n ein P S ⊂ S nenthält.Wir wollen nun eine Interpretation S so definieren, daß t S für jeden Termt ein Individuum, d.h. ein Element von S, <strong>und</strong> F S für jede Formel Fein Wahrheitswert wird. Für Terme, die keine Variablen enthalten, istein solcher Wert offensichtlich bereits durch die Struktur gegeben. (JedeKonstante c wird durch c S ∈ S interpretiert <strong>und</strong> für (t S 1, . . . , t S n) ∈ S n <strong>und</strong>f ∈ F mit ♯f = n ist f S (t S 1 , . . . , t S n) ∈ S.) Um auch Terme zu erfassen,die Variablen enthalten, haben wir die Variablen zu belegen. Dabei wollenwir unter einer Belegung Φ über einer Struktur S einfach eine Abbildungvon den Variablen nach S verstehen. Bezüglich einer festen Belegung Φdefinieren wir dann den Wert t S [Φ] eines Termes t durch die Klauseln:1. c S [Φ] =: c S ,2. x S [Φ] := Φ(x),3. (ft 1 . . . t n ) S [Φ] := f S (t S 1 [Φ] . . . t S n[Φ]).Unmittelbar aus der Definition erhalten wir, daßt S [Φ] ∈ S130
5.3. Prädikatenlogikfür jeden Term t <strong>und</strong> jede Belegung Φ über der Struktur S gilt.Nachdem wir die Semantik für die Terme fixiert haben, können wir darangehen, auch Formeln zu interpretieren. Formeln sollen Aussagen werden.Dabei verstehen wir unter Aussagen solche Ausdrücke, die die Wahrheitswertewahr (W) <strong>und</strong> falsch (F) annehmen können. Wir definieren:1. (P t 1 . . . t n ) S [Φ] = W : ⇐⇒ (t S 1 [Φ] . . . t S n[Φ]) ∈ P S2. (¬A) S [Φ] = W : ⇐⇒ A S [Φ] = F3. (A ∧ B) S [Φ] = W : ⇐⇒ A S [Φ] = W <strong>und</strong> B S [Φ] = W4. (A ∨ B) S [Φ] = W : ⇐⇒ A S [Φ] = W oder B S [Φ] = W5. (∀xA) S [Φ] = W : ⇐⇒ A S [Ψ] = W für jede Belegung Ψ, die aufden von x verschiedenen Variablen mit Φ übereinstimmt.6. (∃xA) S [Φ] = W : ⇐⇒ A S [Ψ] = W für eine Belegung Ψ, die aufden von x verschiedenen Variablen mit Φ übereinstimmt.Anstelle von F S [Φ] = W schreibt man gewöhnlichS |= F [Φ]<strong>und</strong> sagt, daß die Struktur S die Formel F bei der Belegung Φ erfüllt . DieErfüllungsrelationOffensichtlich hängt die Interpretation eines Termes t oder einer Formel Fnur von den endlich vielen Werten Φ(x) ab, für die x in t beziehungsweiseF auch tatsächlich frei auftritt. Man schreibt daher auch manchmalS |= F [s 1 , . . . , s n ],wenn s 1 , . . . , s n Elemente des Trägers von S sind <strong>und</strong> aus dem Zusammenhangklar wird, wie die endlich vielen in F frei auftretenden Variablendurch s 1 , . . . , s n zu belegen sind.Insbesondere haben geschlossene Formeln (das sind Formeln ohne freieVariablen) in jeder Struktur eine von Belegungen unabhängigen Wahrheitwert.Aus diesem Gr<strong>und</strong> bezeichnet man geschlossenen Formeln auchals Sätze.Die Klauseln 5. <strong>und</strong> 6. in der obigen Definition muten auf den ersten Blick etwasmerkwürdig an. Dennoch treffen sie die intendierte Bedeutung. Die Formel A hatnämlich gegenüber der Formel ∀xA bzw. ∃xA höchstens die zusätzliche freie Variable x.Sind x 1 , . . . , x n alle in A frei auftretenden Variablen <strong>und</strong> gilt Φ(x i ) = s i für i = 1, . . . , n,so lesen sich die obigen Klauseln wie:<strong>und</strong>S |= (∀xA)[Φ] genau dann, wenn S |= A[s 1 , . . . , s n , s] für alle s ∈ SS[Φ] = (∃xA)[Φ] genau dann, wenn S |= A[s 1 , . . . , s n , s] für ein s ∈ S.Die Quantoren ∀ (für alle) <strong>und</strong> ∃ (es gibt ein) werden daher tatsächlich in der intendiertenArt interpretiert.In der Literatur findet man oft auch einen anderen Zugang, bei dem man zu einer131AlternativeDefinition der Erfüllbarkeitsrelation
5. Unentscheidbare Problemevorgegebenen L-Struktur S mit Träger S die Sprache L zur Sprache L S <strong>und</strong> die StrukturS zur Struktur S S erweitert, indem man für jedes Element s ∈ S eine Konstante shinzunimmt, deren Interpretation durchs S S:= sgegeben ist. Für L S -Formeln definiert man dann A S S[Φ] wie oben, aber unter Abänderungder Klauseln 5. <strong>und</strong> 6. zu5. (∀xA) S S[Φ] = W : ⇐⇒ A x (s) S S[Φ] = W für alle s ∈ S6. (∃xA) S S[Φ] = W : ⇐⇒ A x (s) S S[Φ] = W für ein s ∈ S.Es ist nicht allzu schwer einzusehen, daß dannS |= F [φ] ⇐⇒ S S |= F [Φ]Logisches Folgernfür alle L-Formeln F gilt.Haben wir nun eine (nicht notwendigerweise endliche) Menge M vonFormeln einer Sprache der ersten Stufe vorliegen, so vereinbaren wir diefolgenden Redeweisen:• M heißt erfüllbar in einer Struktur S, wenn es eine Belegung Φ überS gibt, so daß S |= A[Φ] für alle Formeln A ∈ M gilt.• M heißt erfüllbar oder konsistent, wenn es eine Struktur S gibt, derartdaß M erfüllbar in S ist.• M heißt allgemeingültig oder kurz gültig, wenn M in jeder Strukturgültig ist.Wichtig für die <strong>Mathematik</strong> ist der Begriff der logischen Folgerung.Schon im Altertum versuchte man die Gesetze des logischen Schliessenszu erforschen. Dieses Bestreben zieht sich wie ein roter Faden nichtnur durch die Geschichte der <strong>Mathematik</strong>, sondern auch durch die derPhilosophie. Um eine befriedigende mathematische Präzisierung des logischenSchließens zu erhalten, bedienen wir uns der Sprache der erstenStufe <strong>und</strong> treffen die folgende Definition:Definition 59 Eine Formel A folgt aus einer Formelmenge M, wennfür jede Struktur S <strong>und</strong> jede Belegung Φ über S, die M erfüllt, auchS |= A[Φ] gilt. Wir notieren dies durchM |= A.Eine Formel A ist offenbar genau dann eine Folgerung aus der leerenMenge, die von jeder Struktur erfüllt wird, wenn sie allgemeingültig ist.Wir notieren die Allgemeingültigkeit von Formeln A deshalb als|= A.132
5.3. PrädikatenlogikIntuitiv ist klar, daß man mit Definition 59 tatsächlich den Folgerungsbegrifferfaßt hat, wie er in der <strong>Mathematik</strong> verwendet wird. Durch dieseDefinition der logischen Folgerung wird sichergestellt, daß man durchlogisches Schließen aus der Menge der in einer Struktur gültigen Formelnnicht herausgeführt wird.Doch auch in der <strong>Informatik</strong> ist der Begriff der logischen Folgerung von Logisches Folgern inentscheidender Bedeutung. Datenverarbeitung bedeutet ja viel mehr als der <strong>Informatik</strong>die bloße numerische Berechnung von Funktionen. Datenverarbeitungsoll nicht nur das Erfassen <strong>und</strong> Ordnen von Daten ermöglichen, sondernauch die Möglichkeit bieten, aus vorhandenen Datenbeständen in automatisierterWeise neue Daten zu gewinnen. Dabei liegen Daten nichtimmer in der Form vor, die eine numerische Weiterverarbeitung erlaubt.Oft steht man vor der Tatsache, daß ein gewisses Datum entweder richtigoder falsch sein kann, also durch einen Wahrheitswert charakterisiert ist.Gewinnung neuer Daten bedeutet dann, daß aus den vorhandenen Datenlogische Schlüsse zu ziehen sind. Maschinell kann dies nur dann möglichsein, wenn sich ein Algorithmus für das logische Schließen angeben läßt.Nach dem Kompaktheitssatz der Prädikatenlogik läßt sich jede Folgerungaus einer unendlichen Formelmenge M bereits aus einer endlichenTeilmenge von M folgern. Bei den eben geschilderten Anwendungen inder <strong>Informatik</strong> kann man von vorneherein von einer endlichen Menge Mausgehen. Für eine endliche Menge M = {F 1 , . . . , F n } bedeutet M |= Fnach Definition 59 aber, daß die FormelF 1 ∧ . . . ∧ F n ∧ ¬Funerfüllbar oder, gleichwertig dazu, die FormelF 1 ∧ . . . ∧ F n → Fallgemeingültig ist. Wir benötigen also ein automatisierbares Verfahrenzur Erzeugung aller allgemeingültigen Formeln. Wenn wir betrachten,was die Allgemeingültigkeit einer Formel F bedeutet, nämlichS |= F [Φ]für alle Strukturen S <strong>und</strong> alle Belegungen Φ über S, so erscheint dieszunächst völlig hoffnungslos zu sein. Dennoch hatte man bereits seitdem Altertum vermutet, daß sich, ähnlich wie das numerische Rechnen,auch das logische Schließen kalkülisieren läßt. Den Beweis fürdiese Tatsache hat KURT GÖDEL im Jahre 1930 erbracht, indem er denVollständigkeitssatz für die Prädikatenlogik erster Stufe bewies, dem zufolgeein Kalkül existiert, der alle allgemeingültigen Formeln erzeugt. Daein Kalkül ein effektives, <strong>und</strong> damit nach der CHURCHschen These auch133Logische Folgerungvs.Allgemeingültigkeit
5. Unentscheidbare Problemerekursives Verfahren zur Aufzählung aller gültigen Formel liefert, könnenwir den Vollständigkeitssatz in der Sprache der Berechenbarkeitstheoriewie folgt formulieren.DerSatz 60 (Vollständigkeitssatz der Prädikatenlogik) Die MengeVollständigkeitssatzder Prädikatenlogik { φ | |= φ}Das EntscheidungsproblemderPrädikatenlogikReduktion des Entscheidungsproblemsauf dasHalteproblemder Gödelnummern allgemeingültiger Formeln ist rekursiv aufzählbar.Dabei können wir wieder voraussetzen, daß die Gödelisierung so durchgeführtist, daß sich φ aus φ in ähnlich effektiver Weise zurückgewinnenläßt, wie dies beispielsweise für partiellrekursive Funktionen <strong>und</strong> ihreKodes der Fall war.Für den <strong>Mathematik</strong>er wird die Freude über den Vollständigkeitssatz jedoch deutlichgetrübt. Dies liegt daran, daß man sich in der <strong>Mathematik</strong> nicht so sehr für die logischgültigen Sätze, sondern für Strukturen interessiert. So ist bereits die Theorie der natürlichenZahlen – das ist die Menge der (Gödelnummern der) Sätze, die in der Struktur(N, {0, 1}, {+, ·}, {=}) der natürlichen Zahlen gelten – eine Menge, deren Komplexitätdie aller Mengen der arithmetischen Hierarchie übersteigt <strong>und</strong> die damit weit entferntvon jeder rekursiv aufzählbaren Menge ist. Diese Unvollständigkeit logischer Kalkülewurde ebenfalls erstmals von KURT GÖDEL bewiesen.Der Vollständigkeitssatz stellt sicher, daß sich die Frage nach den Folgerungenaus einer endlichen Formelmenge zumindest positiv entscheidenläßt. Das heißt, daß sich Programme angeben lassen, die bestätigen, daßeine Formel A eine Folgerung aus einer Formelmenge M ist, aber imallgemeinen eine Antwort schuldig bleiben, wenn dies nicht der Fall ist.Die nächste Frage, die sich dann sofort anschließt, ist, ob sich Programmefinden lassen, die auch in diesem Fall eine Antwort liefern? Formulierenwir diese Frage in der Sprache der Rekursionstheorie, so lautet sie:Ist die Menge { φ | |= φ} rekursiv?Wir wollen skizzieren, daß die Antwort darauf eine negative ist. Die Ideedes Beweisganges beruht darauf, zu jeder Registermaschine M eine FormelF M,⃗n der Prädikatenlogik erster Stufe so anzugeben, daß |= F M,⃗ngenau dann gilt, wenn M beim Input ⃗n stoppt. Wir wollen diese Formelentwickeln, ohne allerdings Details nachzurechnen. Der an diesenDetails interessierte Leser findet sie in praktisch allen Lehrbüchern dermathematischen Logik.Sei also M eine r-Registermaschine. Wir haben uns als erstes zu überlegen,welche Sprache L M wir benötigen, um die Rechnung einer r-Registermaschine zu beschreiben. Zum Zählen der Rechenschritte benötigenwir natürliche Zahlen. Da sich natürliche Zahlen durch die Null <strong>und</strong>die Nachfolgerfunktion darstellen lassen, werden wir also eine KonstanteO für die Null <strong>und</strong> ein einstelliges Funktionszeichen S zur Sprache134
5.3. Prädikatenlogiknehmen, dessen intendierte Bedeutung die der Nachfolgerfunktion ist.Weiter benötigen wir neben der Identität = ein zweistelliges Prädikatszeichen
5. Unentscheidbare ProblemeF a ≡ ∀x∀z 1 . . . ∀z r [R(x, m, z 1 , . . . , z r ) →{ (z j = 0 ∧ R(Sx, p, z 1 , . . . , z r ))∨(¬z j = 0 ∧ R(Sx, q , z 1 , . . . , z r ))}].Bezeichnen wir mit k S die Start- <strong>und</strong> mit k E(M) die (ohne Einschränkungder Allgemeinheit einzige) Endmarke der Maschine M, mit F Ax dieKonjunktion der oben angeführten Axiome zusammen mit den üblichenGleichheitsaxiomen <strong>und</strong> nehmen wir (i 1 , . . . , i r ) := IN M (⃗n) an <strong>und</strong> setzenaußerdemF M,⃗n ≡ F Ax ∧ R(0, k S , i 1 , . . . , i r ) ∧∧a ∈ MF a ,so erhalten wir die Äquivalenz der folgenden beiden Aussagen:(A)(B)Die Maschine M stoppt bei Input ⃗n, d.h. es gilt∃t[RS M t (k S , i 1 . . . , i r ) ∈ E(M)].Die FormelF M,⃗n → ∃x∃z 1 . . . ∃z r R(x, k E(M) , z 1 , . . . , z r )ist allgemeingültig.Die Behauptung (A) folgt ganz offensichtlich aus der Behauptung (B),wenn wir als L M -Struktur die natürlichen Zahlen mit der intendiertenInterpretation der nichtlogischen Zeichen nehmen, insbesondere heißtdies, daß wirR N := {(t, k, m 1 , . . . , m r )| RS M t (k S , i 1 , . . . , i r ) = (k, m 1 , . . . , m r )}setzen.Für die Richtung von (A) nach (B) hat man sich zu überlegen, daß fürjede L M -Struktur S, die F M,⃗n erfüllt, die BeziehungRS M t (l, i 1 , . . . , i r ) = (k, m 1 , . . . , m r ) ⇒ S |= R(t, k , m 1 , . . . , m r )gilt. Dies folgt jedoch durch Induktion nach t aus der Konstruktion derFormel F M,⃗n .Gäbe es nun ein Entscheidungsverfahren für die Allgemeingültigkeit vonFormeln der Prädikatenlogik der ersten Stufe, so könnten wir unter Zuhilfenahmeder Aussagen (A) <strong>und</strong> (B) das Halteproblem für Registermaschinenentscheiden. Insbesondere lieferte dies ein Entscheidungsverfahrenfür die MengeK = {e| ∃xT (e, e, x)}.Um e ∈ K zu entscheiden, konstruieren wir uns die Registermaschine für136
5.3. Prädikatenlogikdie Funktion {e}, die wir der Einfachheit halber auch mit {e} bezeichnenwollen, dann die Formel F {e},e <strong>und</strong> entscheiden|= F {e},e → ∃x∃z 1 . . . ∃z r R(x, k E({e}) , z 1 , . . . , z r ).Nach (A) <strong>und</strong> (B) ist e ∈ K genau dann, wenn die Entscheidung positivausfällt. Da wir aber bereits wissen, daß die Menge K nicht rekursivist, erhalten wir den folgenden Satz, der erstmalig von ALONZO CHURCH<strong>und</strong> unabhängig davon auch von ALAN TURING in der Mitte der dreißigerJahre bewiesen wurde:Satz 61 Die Allgemeingültigkeit von Formeln der Prädikatenlogik der Unentscheidbarkeitder Prädikatenlogikersten Stufe ist unentscheidbar, d.h. die Menge{ F | |= F }ist nicht rekursiv.Fassen wir die Ergebnisse dieses Abschnittes zusammen, so haben wirerfahren, daß der Begriff des logischen Schließens eng mit dem Begriffder allgemeingültigen Formel zusammenhängt. Die Menge der allgemeingültigenFormeln der Prädikatenlogik der ersten Stufe ist rekursivaufzählbar. Beide Tatsachen zusammen zeigen, daß es zumindest prinzipiellein Programm gibt, das die Folgerungen aus einer gegebenenFormelmenge erzeugen kann. Ebenso eröffnet dies die Möglichkeit einesProgrammes, das die Allgemeingültigkeit von Formeln bestätigt. DerBeweis des Vollständigkeitssatzes – den wir hier nicht angegeben haben– läßt sich so führen, daß er darüber hinaus noch zeigt, daß der Bestätigungsalgorithmusfür eine allgemeingültige Formel auch immer einenformalen Beweis für diese Formel liefert. Dies eröffnet die Möglichkeitdes Baues von sogenannten Theorembeweisern. Die Grenzen für denBau dieser Beweiser werden durch die Tatsache gesetzt, daß die Mengeder allgemeingültigen Formeln nicht rekursiv ist. Es läßt sich daher keinProgramm angeben, das uns auch dann eine vernünftige Antwort liefernkann, wenn die zu untersuchende Formel nicht allgemeingültig ist.Abschließend soll hier noch angemerkt werden, daß sich für Teilklassenvon Formeln der Prädikatenlogik durchaus Entscheidungsverfahrenhaben finden lassen.137
6. Gr<strong>und</strong>züge der KomplexitätslehreBislang haben wir uns keine Gedanken darüber gemacht, ob die Funktionen,die wir als berechenbar erkannt haben, auch tatsächlich eine Chancebesitzen, auf einem physikalisch realisierten Rechner berechnet werdenzu können. Bei der Entwicklung der primitiv rekursiven Funktionen hattenwir jedoch bereits darauf hingewiesen, daß schon die Berechnungbestimmter primitiv rekursiver Funktionen die durch physikalische Gesetzegegebenen Grenzen sprengen würde.Es liegt daher nahe, sich zu fragen, ob sich eine mathematische Theorieder praktisch berechenbaren Funktionen entwickeln läßt. Natürlich ist esso gut wie unmöglich, ein Komplexitätsmaß zu finden, das die Realitätgenau widerspiegelt <strong>und</strong> dennoch glatt genug ist, um die Entwicklungeiner mathematischen Theorie zu erlauben. So werden wir immer vorder Notwendigkeit stehen, Exponentialfunktionen zu berechnen, obwohlderen Wachstum schnell alle vorstellbaren Grenzen sprengt. In der Praxiswerden wir dabei nur immer darauf achten müssen, daß die Argumentenicht zu groß sind.Anzustreben ist eine mathematische Theorie, die die Beschreibung <strong>und</strong>das Studium von Funktionen ermöglicht, die sich mit beschränkten Ressourcenberechnen lassen. Es ist klar, daß ein exponentielles Anwachsendes Ressourcenbedarfes eine Funktion praktisch unberechenbar macht.Akzeptabel erscheint es gerade noch, wenn der Ressourcenbedarf nur inpolynomialer Weise vom Informationsgehalt des Inputs abhängt. DieseKlasse von Funktionen bezeichnet man allgemein als polynomial berechenbar.Da diese Klasse auch noch recht befriedigende Abschlußeigenschaftenbesitzt, hat es sich eingebürgert, in ihr die Klasse der realberechenbaren Funktionen zu sehen. Natürlich ist dies vom Standpunktdes Praktikers her nur “cum grano salis” zu sehen, da auch ein Polynom,wenn sein Grad nur genügend groß ist, alle praktisch zur Verfügungstehenden Ressourcen sprengen kann.6.1 TIME- <strong>und</strong> SPACE-beschränkte FunktionenIst D in eine Datenmenge <strong>und</strong> T : D in −→ D out eine Funktion, so sa- Zeitbeschränktgen wir, daß eine Funktion f auf einer Basismaschine B in TIME(T ) berechenbareFunktionenberechenbar ist, wenn es eine B-Maschine M gibt, so daßf(d) ≃ Res M (u)139
6. Gr<strong>und</strong>züge der Komplexitätslehre<strong>und</strong>Rz T (d) ≤ T (|d|)für alle d ∈ D in gilt, wobei| |: D in → NPlatzbeschränktberechenbareFunktionenein Komplexitätsmaß auf der Datenmenge D in ist.Analog nennt man f eine über B mit SPACE(S) berechenbare Funktion,wenn f wie oben <strong>und</strong> S analog zu T gegeben sind, <strong>und</strong> der Speicherbedarf(was darunter genau zu verstehen ist, wollen wir noch einen Augenblickzurückstellen) der Maschine M während der Berechnung von f nichtgrößer als S(|d|) ist.Anstelle von TIME(T )- bzw. SPACE(S)-berechenbaren Funktionen, sprechenwir auch von Funktionen, die durch T zeit- bzw. durch S platzbeschränktberechenbar sind.Unter Komplexitätsaspekten wird auch ein Begriff wichtig, den wir bislangnicht betrachtet haben, der einer nichtdeterministischen Maschine.Ein Programm (bzw. eine Maschine) heißt nichtdeterministisch, wennverschiedene Anweisungen die gleiche Kennmarke besitzen dürfen. Damitist die Rechenschrittfunktion einer nichtdeterminstischen Maschinekeine Funktion im üblichen Sinne mehr. Von einer Konfiguration (k, m)gibt es dann verschiedene Möglichkeiten zu einer Nachfolgekonfigurationzu gelangen, je nachdem, welche der Anweisungen mit Kennmarke kdie Maschine ausführt. Da Programme nach wie vor als endlich vorausgesetztwerden sollen, gibt es natürlich nur endlich viele verschiedeneWahlmöglichkeiten. (Ein Beispiel eines Flußdiagrammes für ein nichtdeterministischesProgramm zur Erzeugung von 0, 1-Folgen einer Länge≤ i findet sich in Abbildung 6.1 - 1.) Wir definieren dann die Rechenschrittfunktionals eine mengenwertige Funktion durchNichtdeterministischeMaschinenDie RechenschrittfunktionnichtdeterministischerMaschinenRS M (k, m) := {(n, ˜m)| ((k, s, n) ∈ M ∧ s(m) = ˜m)}∪{(n, m)| (k, t, n 1 , n 0 ) ∈ M ∧ n = n t(m) }.Die Iteration der Rechenschrittfunktion läßt sich dann nicht mehr wie fürübliche Funktionen definieren, sondern wir setzenRS M 0 (k, m) := {(k, m)}<strong>und</strong>RS M i+1 (k, m) := ⋃ {RS M (˜k, ˜m)| (˜k, ˜m) ∈ (RS M i (k, m)}.Ein Rechnung ist dann erfolgreich, wenn es ein i <strong>und</strong> ein (˜k, ˜m) ∈RS M i (k M , IN(d)) gibt, derart daß ˜k eine Endmarke des Programmes ist.140
6.1. TIME- <strong>und</strong> SPACE-beschränkte FunktionenSTARTz:= Lz:=z0 z:=z1 z:=zi-fachENDAbb. 6.1 - 1: Ein nichtdeterministisches Programm zur Erzeugung aller0, 1 Folgen einer Länge ≤ iDie Rechenzeit Rz M (d) ist dann das kleinste solche i.Der Berechnungsverlauf nichtdeterministischer Maschinen wird dannnicht länger linear durch die IterationenRS M (k M , IN(d)), RS M 2 (k M , IN(d)), RS M 3 (k M , IN(d)), . . .der Rechenschrittfunktion beschrieben, sondern entspricht vielmehr ei- Berechnungsverlaufnem endlich verzweigten Baum, wie er in Abbildung 6.1 - 2 angegeben in nichtdeterministischenist. Eine Berechnung auf einer nichtdeterministischen Maschine terminiert,wenn einer der Fäden des Rechenbaumes eine EndkonfigurationMaschinenenthält. Die Rechenzeit ist dann die Länge des kürzesten Fadens im Rechenbaum.Das genügt, wenn man sogenannte akzeptierende Maschinenbetrachtet. Das sind Maschinen, bei denen es nur darauf ankommt, daß bestimmteEndzustände – eben akzeptierende Zustände – erreicht werden,ohne daß die Speicherinhalte dieser Endkonfigurationen betrachtet werden.Will man Funktionen nichtdeterministisch berechnen, so verlangtman oft, daß die Speicherinhalte aller erreichbaren Endkonfigurationenübereinstimmen. Damit vermeidet man Eindeutigkeitsprobleme für die141
6. Gr<strong>und</strong>züge der KomplexitätslehreL0 1 L10 11 1100 101 10Abb. 6.1 - 2: Ein Teil des Rechenbaumes des vorhergehenden ProgrammbeispielsResultatsfunktionen nichtdeterministischer Maschinen.Man sollte sich eine nichtdeterministische Maschine als eine Maschinemit unbeschränkt vielen Prozessoren vorstellen, die parallel den Rechenbaumabarbeiten. Der erste der Prozessoren, der eine Endkonfigurationfeststellt, stoppt die Rechnung der gesamten Maschine. Es liegt auf derHand, daß der Begriff einer nichtdeterministischen Maschine bei derBetrachtung prinzipieller Berechenbarkeit nichts Neues bringt. Zu jedernichtdeterministischen Maschine gibt es offenbar eine deterministische,die das Gleiche leistet. Unter Komplexitätsaspekten mag dies jedochanders sein, da es intuitiv klar zu sein scheint, daß eine nichtdeterministischeMaschine im allgemeinen schneller rechnen können sollte, als eine142
deterministische.6.1. TIME- <strong>und</strong> SPACE-beschränkte FunktionenWir haben bei den eben eingeführten Begriffen noch offen gelassen, wiewir den Speicherbedarf einer Berechnung messen wollen. Dies wird imallgemeinen von der Wahl der Basismaschine abhängen. Als eine guteWahl hat sich hier die Turingbasismaschine über einem beliebigen Alphabetherausgestellt, da sich hier der Speicherbedarf einer Rechnung Speicherbedarf einereinfach als die Anzahl der im Verlaufe der Rechnung besuchten Felder Turingmaschinedefinieren läßt. Bei einer Basisregistermaschine wäre die Definition desSpeicherbedarfes etwas aufwendiger. Wir wollen daher – in Übereinstimmungmit der gängigen Literatur – von einer Turingbasismaschineausgehen.Wenn wir uns von der Vorstellung leiten lassen, eine physikalisch realisierbareMaschine beschreiben zu wollen, so spricht nichts dagegen, auchTuringbasismaschinen mit mehr als nur einem Rechenband zu betrachten.Ein derartige Maschine ist physikalisch ebenso leicht zu realisierenwie eine Turingbasismaschine mit nur einem Band. Wir wollen die k-Band Turingbasismaschine nur informal beschreiben. Sie verfügt über k- MehrbandRechenbänder <strong>und</strong> jedes Rechenband ist mit einem Schreib-Lesekopf versehen,der genauso arbeitet wie der der 1-Band Maschine. Alle Schreib-TuringmaschinenLeseköpfe werden von einem gemeinsamen Programm gesteuert. DieBasisinstruktionen sind die gleichen wie bei der 1-Band Maschine, wirhaben sie nur mit einem Index zu versehen, der angibt, auf welchem derBänder sie auszuführen sind. Damit verfügen wir über den BefehlssatzLFT i , RHT i , PRT i (z), CLR i , BEQ i , wobei 1 ≤ i ≤ k ist <strong>und</strong> z die Symboledes zugr<strong>und</strong>eliegenden Alphabets durchläuft. Ist Σ das Alphabet derTuringmaschine, so bietet sich als Inputdatenmenge, die Menge Σ ∗ allerWörter über Σ an. Das kanonische Komplexitätsmaß |u| für u ∈ Σ ∗ istdie Länge von u.Zum Einlesen eines Wortes der Länge n benötigt eine Turingmaschinemindestens n-Felder. Um auch die Betrachtung von Funktionen zuermöglichen, die mit weniger als linearem Speicherbedarf berechenbarsind, ist es üblich, die Turingbasismaschine mit einem Eingabeband zuversehen, von dem die Maschine nur in einer Richtung lesen <strong>und</strong> auf dases überhaupt nicht schreiben kann.Wir haben von den Speicher- <strong>und</strong> Zeitbeschränkungsfunktionen S <strong>und</strong>T verlangt, daß sie natürliche Zahlen in natürliche Zahlen abbilden. Oftist es jedoch nützlich, auch reellwertige Funktionen zu betrachten, die Allgemeinewir dann durch Verknüpfung mit der Funktion zu einer Funktion mitWerten in den natürlichen Zahlen machen, wobei r die kleinste ganzeZahl ≥ r bedeutet. Da wir annehmen wollen, daß jede Turingmaschinemindestens ein Feld beschreibt, setzen wir bei Platzschranken143Konventionen überzeit- bzw.platzbeschränkendeFunktionen
DieKomplexitätsklassenDSPACE, NSPACE,DTIME <strong>und</strong> NTIMEAkzeptierendeMaschinen6. Gr<strong>und</strong>züge der KomplexitätslehreS(n) := max{1, S(n) } (6.1)voraus. Bei Zeitschranken können wir immer davon ausgehen, daß eineTuringmaschine mindestens n + 1 Schritte benötigt, um einen Input derKomplexität n zu lesen. Daher definieren wir für ZeitschrankenT (n) := max{n + 1, T (n) }. (6.2)Natürlich sind diese Definitionen richtig zu lesen. Die links definierteFunktion ist als Funktion von den natürlichen Zahlen in die natürlichenZahlen zu verstehen, wohingegen es sich bei der auf der rechten Seite auftretendengleichnamigen Funktion um eine reellwertige handeln darf. Eswürde die Schreibweise nur unnötig komplizieren, wenn wir unterschiedlicheNamen für beide Funktionen einführen würden. Bei Komplexitätsfragengehen wir immer davon aus, daß die beschränkenden Funktionenden in (6.1) <strong>und</strong> (6.2) festgelegten Konventionen genügen. Damit machtes beispielsweise Sinn, von einer Zeitbeschränkung von log 2 (n) zu sprechen,was für n = 1, bzw. n = 2 gemäß unseren Konventionen die Werte2 <strong>und</strong> 3 liefern würde.Man definiert nun die KomplexitätsklassensowieDSPACE(S) <strong>und</strong> NSPACE(S)DTIME(T ) <strong>und</strong> NTIME(T )von Funktionen, die sich bei einem Input der Länge n deterministisch(DSPACE, DTIME) bzw. nichtdeterministisch (NSPACE, NTIME) mitdurch S(n) beschränktem Speicherbedarf bzw. in durch T (n) beschränkterZeit berechnen lassen.Wir wollen uns nun, wie es in der Komplexitätstheorie üblich ist, auf akzeptierendeMaschinen konzentrieren. Eine akzeptierende Turingmaschinehat gewisse ausgezeichnete Endmarken, die akzeptierenden Endmarken.Eine Endkonfiguration ist akzeptierend, wenn die dazugehörige Endmarkeakzeptierend ist. Ein Wort u einer Sprache L über einem AlphabetΣ wird von einer Turingmaschine T akzeptiert, wenn u ∈ dom(Res T )ist <strong>und</strong> die beim Input u erreichte Endkonfiguration akzeptierend ist.Die Beschränkung auf akzeptierende Turingmaschinen ist so zu verstehen,daß wir nur die Komplexität des Entscheidungsproblems von rekursivenMengen betrachten, anstatt das allgemeinere (<strong>und</strong> in der Notationunhandlichere) Problem der Komplexität der Berechnung einer rekursivenFunktion zu betrachten.Wenn wir Turingmaschinen über beliebigen Alphabeten betrachten, soist es immer möglich, die SPACE-Komplexität einer Turingmaschine um144
6.1. TIME- <strong>und</strong> SPACE-beschränkte Funktioneneinen beliebigen konstanten Faktor zu verringern. Alles, was man dazuzu tun hat, ist, eine Folge von Symbolen des Ursprungsalphabets durchein einzelnes Symbol eines neuen Alphabets zu kodieren. Daraus folgt,daß es bei der Betrachtung von Komplexitätsklassen nicht auf konstanteFaktoren ankommt. Dies gilt sowohl für deterministische als auch fürnichtdeterministische Maschinen. Für reelle r > 0 haben wir alsoDSPACE (S) = DSPACE (r · S) (6.3)<strong>und</strong>NSPACE (S) = NSPACE (r · S). (6.4)In ähnlicher Form läßt sich auch zeigen, daß sich die Anzahl der Arbeitsbändereiner Turingmaschine verringern läßt, ohne daß die Platzkomplexitätzunimmt.Bei den Komplexitätsbetrachtungen für rekursive Mengen kommt es alsoauf konstante Faktoren nicht mehr an. Man hat für diese Zusammenhängebequeme Schreibweisen.Definition 62 Für eine Funktion g: N −→ N definieren wir:1. O(g) ist die Menge aller Funktionen f: N −→ N für die es ein positivesreelles r gibt, so daß f(n) < r · g(n) für fast alle natürlichen Zahlen ngilt.Fast alle heißt dabei “alle, bis auf endlich viele Ausnahmen”.2. o(g) ist die Menge aller Funktionen f: N −→ N, mit f(n) < r · g(n)für alle positiven reellen r <strong>und</strong> fast alle natürlichen Zahlen n.3. Ω ∞ (g) ist die Menge aller Funktionen f für die es ein r > 0 so gibt,daß f(n) > r · g(n) für unendlich viele n ∈ N gilt.4. ω(g) ist die Menge aller Funktionen f, für die zu jedem positivenreellen r unendlich viele n ∈ N mit f(n) > r · g(n) existieren.5. Θ(g) ist die Menge aller Funktionen f für die positive reelle Zahlenr 1 <strong>und</strong> r 2 so existieren, daß r 1 · g(n) ≤ f(n) ≤ r 2 · g(n) für fast allen ∈ N gilt.Bei der Darstellung von Größenordnungen von Funktionen bedient mansich oft der Restklassenschreibweisef = h + O(g),die besagt, daß die Differenzfunktion f − h ein Element der MengeO(g) ist. Man findet diese Schreibweise auch für die Nullfunktion h,was besagt, daß oft f = O(g) für f ∈ O(g) steht. Ähnliche Schreibweisenverwendet man auch für die übrigen in Definition 62 eingeführtenMengen.Es ist leicht einzusehen, daß o(g) ⊆ O(g) ist <strong>und</strong> f ∈ o(g) genau dannDie O-Notation145
6. Gr<strong>und</strong>züge der Komplexitätslehregilt, wenng(n)limn→∞ f(n) = 0ist. Weitere einfache Beziehungen sindf ∈ Θ(g) genau dann, wenn f ∈ O(g) <strong>und</strong> g ∈ O(f)<strong>und</strong>f ∈ ω(g) genau dann, wenn n→∞lim inf g(n)f(n) = 0,Lineare Platz- <strong>und</strong>Zeitbeschleunigungwobei lim n→∞inf den limes inferior bedeutet. Ist F eine Familie von Funktionen,so schreibt man im allgemeinen O(F) für ⋃ {O(f)| f ∈ F}.Da wir endlich viele Ausnahmen in einer endlichen Tabelle mit konstantemSpeicherbedarf zusammenstellen können, erhalten wir aus (6.3) <strong>und</strong>(6.4)DSPACE (S) = DSPACE (O(S))<strong>und</strong>NSPACE (T ) = NSPACE (O(T )).Ähnliche Überlegungen lassen sich auch für die Zeitkomplexität durchführen.Unter der technischen Voraussetzung, daß die ZeitbeschränkungsfunktionT der BedingungT (n)lim supn→∞ n= ∞genügt, was kanonischerweise meist erfüllt ist, erhalten wir die Pendentszu (6.3) <strong>und</strong> (6.4)DTIME (T ) = DTIME (r · T ) (6.5)<strong>und</strong>NTIME (T ) = NTIME (r · T ) (6.6)für alle reellen r > 0. Das heißt, wir haben auch hierDTIME (T ) = DTIME (O(T ))<strong>und</strong>NTIME (T ) = NTIME (O(T )).146
6.1. TIME- <strong>und</strong> SPACE-beschränkte FunktionenDie Idee in diesem Beweis besteht darin, daß sich zu jedem TuringprogrammM 1 ein Turingprogramm M 2 angeben läßt, das eine vorgegebeneAnzahl von Programmschritten von M 1 in einem einzigen Schritt simulierenkann.Etwas höher ist der Preis, der für eine Reduktion der Anzahl der verwendetenBänder bezahlt werden muß. So wird eine in der Zeit T auf einer Zeitkomplexität beik-Band Maschine akzeptierte Sprache auf einer 1-Band Maschine erst inder Zeit T 2 akzeptiert. Bei einer Reduktion auf eine 2-Band Maschinewächst die Zeit lediglich auf T · log (T ). Die gleichen Ergebnisse erhältman auch, wenn man nichtdeterministische Programme betrachtet.Die erste Frage, die sich aufdrängt, ist, ob sich vielleicht bereits allerekursiven Sprachen mit einer platz- oder zeitbeschränkten Maschineentscheiden lassen. Die Antwort ist erwartungsgemäß ‘nein’, zumindestdann, wenn wir sinnvollerweise nur rekursive Funktionen als Zeit- bzw.Platzschranken zulassen. Dies kann vermöge eines Diagonalargumentseingesehen werden. Natürlich lassen sich auch Indizes für k-Band Turingmaschineneinführen. Wir gehen ebenso von einer Kodierung deszugr<strong>und</strong>e liegenden Alphabets aus <strong>und</strong> wollen ohne Einschränkung Worte<strong>und</strong> deren Kodes identifizieren. Mit Hilfe der CHURCHschen Thesesehen wir ein, daß die SpracheL(e) := {x| {e} akzeptiert x nicht in T (|x|) Schritten},Reduktion derAnzahl derArbeitsbänderrekursiv ist. Einen Entscheidungsalgorithmus erhalten wir einfach da- Eine rekursivedurch, daß wir – T war ja als rekursiv vorausgesetzt – T (|x|) berechnen<strong>und</strong> dann die durch e kodierte k-Band Turingmaschine T (|x|)-vieleSchritte laufen lassen. Wird x in dieser Zeit akzeptiert, so ist x ∉ L(e),anderenfalls ist x ∈ L(e). Damit ist aber auch die DiagonalisierungL D := {e| e ∈ L(e)}rekursiv. Die Sprache L D ist aber nicht in DTIME (T ). Wäre sie es, soerhielten wir einen Index e einer k-Band Maschine, die L D in DTIME (T )akzeptiert. Wäre nune ∈ L D ,so akzeptierte {e} das durch e kodierte Wort in höchstens T (|e|)-vielenSchritten. Dann wäre aber e ∉ L(e), was unserer Annahme e ∈ L Dwiderspricht. Umgekehrt folgte aus der Annahmee ∉ L D ,daß {e} das Wort e nicht innerhalb von T (|e|)-vielen Schritten akzeptiert.Also ist e ∈ L(e), was e ∉ L D widerspricht. Die Annahme, daß L D ∈147Sprache, die nicht inDTIMEentscheidbar ist
6. Gr<strong>und</strong>züge der KomplexitätslehreDTIME (T ) sei, ist somit widerlegt.Eine ähnliche Argumentation läßt sich natürlich auch für platzbeschränkteKlassen finden.Damit haben wir das folgende Ergebnis:Lemma 63 Zu jeder rekursiven Funktion T gibt es rekursive SprachenL S <strong>und</strong> L T , mit L S ∉ DSPACE (T ) <strong>und</strong> L T ∉ DTIME (T ).GiltT (n) ≤ ˜T (n)für alle natürliche Zahlen n, so ist ganz offensichtlichDTIME (T ) ⊆ DTIME ( ˜T ).Nach Lemma 63 gibt es zu rekursivem T eine Sprache L T , die nicht inDTIME (T ) liegt. Natürlich gibt es eine Turingmaschine, die L T akzeptiert.Sei deren Laufzeit ˜T <strong>und</strong> ˆT definiert durchˆT (n) := max{T (n), ˜T(n)}.Dann ist ˆT eine rekursive Funktion mit ˆT (n) ≥ T (n) für alle natürlichenZahlen n. Da L T ∈ DTIME ( ˆT ), aber L T ∉ DTIME (T ) ist, haben wirDTIME (T ) DTIME ( ˆT ),DieDTIME-Hierarchieist unendlich <strong>und</strong>nicht stationärwas zeigt, daß es sich bei der DTIME-Hierarchie um eine unendlicheHierarchie handelt, die niemals stationär wird. Analoge Überlegungenlassen sich natürlich auch wieder für die DSPACE -, die NTIME - <strong>und</strong>die NSPACE-Hierarchien anstellen. Auch hier erhalten wir unendliche,niemals stationär werdende Hierarchien.Eine sich nun natürlich ergebende, interessante Frage ist die nach derDichte der DSPACE bzw. DTIME -Hierarchien. Wir werden eine Hierarchieals dicht empfinden, wenn sie nur kleine Lücken hat. Dabei wollenwir unter einer Lücke zwei Funktionen S 1 <strong>und</strong> S 2 bzw. T 1 <strong>und</strong> T 2 verstehen,derart daß S 2 bzw. T 2 die Funktion S 1 bzw. T 1 majorisiert, aber dennochDSPACE (S 1 ) = DSPACE (S 2 ) <strong>und</strong> DTIME (T 1 ) = DTIME (T 2 )gelten. Liegt S 2 nah an S 1 bzw. T 2 nah an T 1 , so werden wir die Lückeals klein empfinden. Wir haben bereits gesehen, daß lineares Anwachsenvon S 1 <strong>und</strong> T 1 zum Überbrücken einer Lücke nicht genügt. Es zeigt sichjedoch, daß unter gewissen Voraussetzungen an die Funktionen S 1 <strong>und</strong>T 1 schon recht kleine Änderungen genügen. Funktionen, die diese “gewissenVoraussetzungen” erfüllen, sind als platz- bzw. zeitkonstruierbareFunktionen bekannt.148
6.1. TIME- <strong>und</strong> SPACE-beschränkte FunktionenDefinition 64 Eine rekursive Funktion S heißt platzkonstruierbar, wennes eine durch S SPACE-beschränkte Turingmaschine M gibt, die bei je- Platz- <strong>und</strong>dem Input der Länge n hält, nachdem sie genau S(n)-viele Speicherzellenbeschrieben hat.Analog heißt eine rekursive Funktion T zeitkonstruierbar, wenn es einedurch T TIME-beschränkte Turingmaschine M gibt, die bei jedem Inputder Länge n nach genau T (n)-Schritten hält.Die hier verwendetete Definition wird in der Literatur (z.B. [HOP79]) oftals vollkommen platz- bzw. zeitkonstruierbar (fully SPACE - bzw. fullyTIME - constructible) bezeichnet. Für unsere Zwecke reicht aber dieseretwas engere Begriff völlig aus.Für Funktionen, die stärker als die Identität wachsen, d.h. für FunktionenF , für die es ein ε > 0 mit F (n) ≥ (1 + ε) · n gibt, erhält man diefolgenden Charakterisierungen:Eine Funktion F ist genau dann zeit- bzw. platzkonstruierbar, wenn Fin O(F ) Schritten bzw. mit einem Speicherbedarf von O(F ) berechnetwerden kann.Der Beweis dieser Tatsache ist nicht eigentlich schwierig, benötigt aberdie etwas technische Überlegung, daß aus der Zeitkonstruierbarkeit vonF +G bei zeitkonstruierbarem G man auch die Zeitkonstruierbarkeit vonF folgern kann, vorausgesetzt, daß F etwas stärker als G wächst.Insbesondere läßt sich jede rekursive Funktion durch eine zeit- bzw.platzkonstruierbare Funktion majorisieren. Es gibt sehr viele Funktionen,die zeit- <strong>und</strong> platzkonstruierbar sind. Als Beispiele seienλn. n kλn. n!logλn. 2 n...angegeben.Gehen wir nun davon aus, daß wir zwei platzkonstruierbare FunktionenS 1 <strong>und</strong> S 2 haben, für die S 2 ∈ ω(S 1 ) gilt, so können wir eine Spracheangeben, die in DSPACE (S 2 ), aber nicht in DSPACE (S 1 ) liegt. Wirlegen dazu eine Kodierung aller Turingmaschinen über einem geeignetenAlphabet zugr<strong>und</strong>e. Da wir uns um Platzkomplexität kümmern,dürfen wir ohne Einschränkung der Allgemeinheit von 1-Band Turingmaschinenausgehen. Wir programmieren eine Turingmaschine M, diebei einem Input w der Länge n erst einmal S 2 (n)-viele Felder markiert.Da S 2 platzkonstruierbar ist, gibt es eine Turingmaschine, die dies garantiert<strong>und</strong> sich so auch auf M simulieren läßt. Die Maschine M sei nunso programmiert, daß immer ein nichtakzeptierender Zustand vorliegt,149zeitkonstruierbareFunktionenBeispiele platz- <strong>und</strong>zeitkonstruierbarerFunktionen
6. Gr<strong>und</strong>züge der KomplexitätslehreHierarchiensätze fürplatz- <strong>und</strong>zeitkonstruierbareFunktionenwenn M den markierten Bereich verläßt. Nach Beschreiben der Felderbeginnt M die Maschine {w} zu simulieren. Die Maschine M akzeptiertw genau dann, wenn die Simulation von {w} gelingt, ohne mehr alsS 2 (n)-viele Felder zu beschreiben <strong>und</strong> {w} das Wort w nicht akzeptiert.Die von der Maschine M akzeptierte Sprache L(M) ist offensichtlichin DSPACE (S 2 ). Nehmen wir an, sie wäre auch in DSPACE (S 1 ). Dannhätten wir eine Maschine ˜M, die L(M) mit einem durch S 1 beschränktenPlatzbedarf akzeptiert. Sei Σ das Alphabet von L(M) <strong>und</strong> σ die Anzahlder Symbole in Σ. Da S 1 platzkonstruierbar ist, dürfen wir ohne Einschränkungder Allgemeinheit annehmen, daß ˜M bei jedem Input hält.Sei w ein Kode für ˜M. Da es unendlich viele solche Kodes gibt (Satzvon RICE) <strong>und</strong> S 2 ∈ ω(S 1 ) gilt, finden wir einen Kode w einer Längen, für den log 2 σ · S 1 (n) ≤ S 2 (n) ist. Da das Alphabet Σ der Turingmaschine˜M aber σ-viele Symbole hat, benötigt M offenbar höchstenslog 2 σ · S 1 (n)-viele Speicherzellen, um {w} bei einem Input der Längen zu simulieren. Damit hat M genügend Platz, um die Rechnung von ˜Mbeim Input w zu simulieren. Da M das Wort w genau dann akzeptiert,wenn ˜M dies nicht tut, ist L(M) offenbar verschieden von L( ˜M). Dieswiderspricht aber der Annahme, daß beide Sprachen übereinstimmen.Für platzdefinierbare Funktionen erhält man somit den folgenden Hierarchiensatz:Satz 65 Sind S 1 <strong>und</strong> S 2 platzkonstruierbare Funktionen, derart daßS 2 ∈ ω(S 1 )ist, d.h. istlim inf S 1(n)n→∞ S 2 (n) = 0,so gibt es eine Sprache in DSPACE (S 2 ), die nicht in DSPACE (S 1 ) liegt.Eine ähnliche Überlegung läßt sich auch für die Zeithierarchie anstellen.Allerdings können wir uns hier nicht mehr ohne Beschränkung derAllgemeinheit auf 1-Band Maschinen beziehen. Da das eben verwendeteteDiagonalargument aber eine feste Anzahl von Bänder erfordert,betrachten wir Turingmaschinen mit zwei Bändern. Das bedeutet, wiewir bereits gesehen haben, jedoch eine logarithmische Verlangsamung.Also erhalten wir für die Zeithierarchie:Satz 66 Sind T 1 <strong>und</strong> T 2 zeitkonstruierbare Funktionen mitT 2 ∈ ω(T 1 · log T 1 ),d.h. haben wir150
lim inf T 1(n) · log T 1 (n)n→∞ T 2 (n)6.1. TIME- <strong>und</strong> SPACE-beschränkte Funktionen= 0,so gibt es eine Sprache in DTIME (T 2 ), die nicht in DTIME (T 1 ) liegt.Die Zeithierarchie erscheint hier also weniger dicht als die Platzhierarchie.Einige Beziehungen zwischen der Zeit- <strong>und</strong> Platzhierarchie lassen sich Beziehungensehr leicht herstellen. Da eine Turingmaschine in T (n) Rechenschrittennicht mehr als T (n) + 1 Felder beschreiben kann, erhalten wir sofortDTIME (T ) ⊆ DSPACE (T ).Sei nun M eine Turingmaschine über einem Alphabet mit σ-vielen Zeichen,die m Marken besitzt <strong>und</strong> eine Sprache L mit einem durch eineFunktion S beschränkten Platz akzeptiert. Ist w ein Wort der Länge n, soist z · (n + 2) · S(n) · z S(n) offenbar eine obere Schranke für die Anzahlder möglichen Konfigurationen, die M beim Input w annehmen kann.Setzen wir voraus, daß S(n) ≥ log 2 (n) ist, so finden wir eine Konstantec derart, daß z · (n + 2) · S(n) · z S(n) ≤ c S(n) für alle n > 0 ist. ZuM programmieren wir nun eine Mehrbandmaschine ˜M, die auf einemzusätzlichen Band bis c S(n) zählt. Auf den beiden anderen Bändern simuliere˜M die Maschine M. Falls M nach c S(n) Rechenschritten nochnicht akzeptiert hat, so stoppt ˜M in einem nicht akzeptierenden Zustand.Hat M nach c S(n) Schritten noch nicht akzeptiert, so muß mindestenseine Konfiguration wiederholt worden sein. M wird daher das Inputwortniemals akzeptieren. Also gilt:Ist L ∈ DSPACE (S) <strong>und</strong> S(n) ≥ log 2 (n), so gibt es ein c, das im allgemeinenvon der Sprache L abhängen wird,derart, daß L ∈ DTIME (c S )ist.Intuitiv ist auch klar, daß die Berechnung auf einer nichtdeterministischenTuringmaschine auf einer deterministischen nachgeahmt werden kann,indem man eine Linearisierung des Rechenbaumes abarbeitet. Der Preishierfür ist allerdings ein exponentielles Anwachsen der Rechenzeit. Somitgilt auch die folgende Tatsache:Ist L in NTIME (T ), so gibt es ein c, (das wieder von der Sprache Labhängen kann) derart, daß L in DTIME (c T ) ist.Ein weiterer wichtiger Zusammenhang zwischen deterministischer <strong>und</strong>nichtdeterministischer Platzkomplexität wird durch den folgenden Satzgegeben, auf dessen Beweis wir aber nicht weiter eingehen wollen:zwischen der Zeit<strong>und</strong>PlatzhierarchieSatz 67 (Satz von SAVITCH) Ist eine Sprache L in NSPACE (S), <strong>und</strong> ist Der Satz vonSAVITCH151
6. Gr<strong>und</strong>züge der KomplexitätslehreTranslationslemmataKonsequenzen derTranslationslemmataS eine platzkonstruierbare Funktion, so ist L auch in DSPACE (S 2 ).Die eben zitierten Ergebnisse könnten die Vermutung nahelegen, daßdie nichtdeterministischen Platz- bzw. Zeithierarchien weniger dicht seinkönnten als die deterministischen. Man könnte erwarten, daß die nichtdeterministischePlatzhierarchie im Vergleich zur deterministischen erstmit quadratischen, die Zeithierarchie gar mit exponentiellen Schrittlängenwächst. Daß dies nicht der Fall ist, zeigen die sogenannten Translationslemmata.So gilt beispielsweise für die Platzhierarchie:Lemma 68 Sind S 1 , S 2 <strong>und</strong> F platzkonstruierbare Funktionen mit F (n) ≥n für alle n <strong>und</strong> giltNSPACE (S 1 ) NSPACE (S 2 ),so folgt auchNSPACE (S 1 ◦ F ) NSPACE (S 2 ◦ F ).Völlig analoge Resultate erhält man im übrigen auch für die DSPACE–,DTIME– <strong>und</strong> NTIME–Hierarchien.Translationslemmata haben interessante Konsequenzen. So läßt sich beispielsweisezeigen, daßDTIME (2 n ) DTIME (n · 2 n )gilt, obwohllim inf 2n · log (2 n )= 1n→∞ n · 2 nist, <strong>und</strong> sich das Ergebnis somit nicht unmittelbar aus Satz 66 folgernläßt. Dennoch spielt dieser zusammen mit dem Translationslemma dieSchlüsselrolle in dieser Überlegung. Nehmen wir nämlich an, wir hättenDTIME (n · 2 n ) = DTIME (2 n ),so folgte mit einer zweimaligen Anwendung des Translationslemmas fürDTIME, wobei einmal F (n) := n + 2 n <strong>und</strong> das anderemal F (n) := 2 ngewählt sei,DTIME ((n + 2) · 2 n · 2 2n ) ⊆ DTIME (2 n · 2 2n ) ⊆ DTIME (2 2n ).Dies steht aber im Widerspruch zu Satz 66, dalim inf n→∞ist.1522 2n · log 2 2n(n + 2 n ) · 2 n · 2 2n = 0
6.1. TIME- <strong>und</strong> SPACE-beschränkte FunktionenAls eine weitere interessante Anwendung erhalten wirNSPACE (n x y ) NSPACE (nx+1y ).Auch hier nehmen wir an, wir hättenNSPACE (n x+1xy ) = NSPACE (ny ).Mit dem Translationslemma für F (n) := n (x+i)y erhielten wir dannNSPACE (n (x+1)(x+i) ) ⊆ NSPACE (n x(x+i) ) (6.7)für alle natürlichen Zahlen i. Wegen x(x + i) < (x + 1)(x + i − 1) füri > 0 haben wir auchNSPACE (n x(x+i) ) ⊆ NSPACE (n (x+1)(x+i−1) ) (6.8)für alle positiven natürlichen Zahlen i. Alternierender Gebrauch von (6.7)<strong>und</strong> (6.8) liefert schließlichNSPACE (n (x+1)(x+x) ) ⊆ NSPACE (n x(x+x) )⊆ NSPACE (n (x+1)(x+x−1) ) ⊆ NSPACE (n x(2x−1) )⊆ . . . ⊆ NSPACE (n (x+1)x ) ⊆ NSPACE (n x2 ).Nach dem Satz von SAVITCH gilt aberNSPACE (n x2 ) ⊆ DSPACE (n 2x2 )<strong>und</strong> mit Satz 65 erhalten wirDSPACE (n 2x2 ) DSPACE (n 2x2 +2x ) ⊆ NSPACE (n 2x2 +2x ).Zusammengenommen bedeutet dies den WiderspruchNSPACE (n (x+1)(x+x) ) NSPACE (n x2 ) ⊆ NSPACE (n 2x2 +2x )= NSPACE (n (x+1)(x+x) ).Unsere Annahme war also falsch. Setzen wir r := x y <strong>und</strong> ε := 1 , so ergibtydies den folgenden Satz:Satz 69 Für reelle r ≥ 0 <strong>und</strong> ε > 0 istNSPACE (n r ) NSPACE (n r+ε ).Die nichtdeterministische Platzhierarchie ist also bereits im polynomialenBereich sehr dicht. Ähnliche Ergebnisse lassen sich auch für dienichtdeterministische Zeithierarchie erzielen. Allerdings benötigt mandort etwas andersartige Überlegungen, da man nicht mehr auf den Satzvon SAVITCH zurückgreifen kann.153
6. Gr<strong>und</strong>züge der Komplexitätslehre6.2 Abstrakte KomplexitätsmaßeDer LückensatzAxiomatischeEntwicklung derKomplexitätstheorieAbstrakteKomplexitätsmaßeDie Eigenschaften von Komplexitätsmaßen, die wir bisher kennengelernthaben, decken sich ziemlich genau mit den intuitiven Vorstellungen, dieman sich üblicherweise von einem Komplexitätsmaß macht. Dies istallerdings nur die Spitze des Eisberges. So hängt beispielsweise dasstete Anwachsen der Platz- bzw. Zeithierarchie wesentlich davon ab,daß die Funktionen, die die Platz- bzw. Zeitbeschränkung liefern selbstplatz- bzw. zeitkonstruierbar sind. Läßt man diese Voraussetzung fallen,so ändern sich die Verhältnisse dramatisch. Als Beispiel dafür darf derLückensatz von BORODIN gelten, der besagt, daßzu jeder rekursiven Funktion r, die stärker als die Identität wächst, einerekursive Funktion S so existiert, daßDSPACE (S) = DSPACE (r ◦ S)ist.Mit Hilfe des Lückensatzes lassen sich durch geeignete Wahl von rbeliebig große Lücken in der Platzhierarchie konstruieren. ÄhnlicheLückensätze gelten auch für andere Komplexitätsmaße wie beispielsweisedie Zeitkomplexität.Die bereits mehrfach aufgetretene Tatsache, daß sich viele Eigenschaftender Platzkomplexität ohne große Schwierigkeiten auch auf die Zeitkomplexität<strong>und</strong> auf die nichtdeterministischen Komplexitätsvarianten übertragenließen, legt natürlich den Gedanken nahe, eine abstrakte Notationvon Komplexitätsmaßen zu entwickeln. Ein derartiger axiomatischer Ansatzzur Entwicklung einer Komplexitätstheorie wurde erstmalig von M.BLUM angegeben. Wir wollen kurz auf diesen Ansatz eingehen, ohne ihnallerdings allzusehr zu vertiefen. Nach BLUM ist ein abstraktes Komplexitätsmaßfür partiellrekursive Funktionen durch die folgenden Axiomegegeben:Definition 70 Eine n + 1-stellige partiellrekursive Funktion Φ heißt einabstraktes Komplexitätsmaß für n-stellige partiellrekursive Funktionen,wenn gilt:1. dom(λ⃗x. Φ(e, ⃗x)) = dom({e})2. Φ hat einen rekursiven Graphen.Ist Φ ein abstraktes Komplexitätsmaß, so nennen wir in Analogie zurPlatz- bzw. Zeitkonstruierbarkeit eine Funktion F Φ-konstruierbar, wennes ein e gibt mit F = λ⃗n. Φ(e, ⃗n). Ist nun F eine partiellrekursive Funktion<strong>und</strong> M eine primitiv rekursive Maschine mit Index e, die F berechnet,so ist Φ(e, ⃗m) :≃ Rz {e} (⃗m) ganz offensichtlich eine Funktion, die die154
6.2. Abstrakte KomplexitätsmaßeBLUMschen Axiome erfüllt. Schon im Abschnitt 2.1 hatten wir klargestellt,daß dom(Rz M ) = dom(Res M ) = dom(F ) ist. Wir müssen unsalso nur noch klar machen, daß die Rechenzeitfunktion einen rekursivenGraphen hat. UmRz {e} (⃗m) ≃ nzu entscheiden, gewinnen wir durch Dekodierung von e die MaschineM <strong>und</strong> lassen M mit Input IN(⃗m) genau n-viele Schritte laufen. Erreichtdie Maschine dann eine Endkonfiguration (k E , ⃗z), so fällt die Antwortpositiv aus, anderenfalls aber negativ. Offenbar liefert dies ein rekursivesEntscheidungsverfahren. In ähnlicher Form läßt sich einsehen, daßdie Anzahl der von einer Turingmaschine im Verlaufe einer Berechnungbesuchten Felder ein Komplexitätsmaß liefert. Es ist auch nicht schwereinzusehen, daß Platz- <strong>und</strong> Zeitbedarf auch für nichtdeterministische MaschinenKomplexitätsmaße liefern, die die BLUMschen Axiome erfüllen.Bei den BLUMschen Axiomen haben wir aus Vereinfachungsgründen angenommen,daß die Komplexität einer natürlichen Zahl n einfach n ist.Gehen wir aber von beliebigen Datenbereichen D <strong>und</strong> einem Komplexitätsmaß|d| auf den Ausgangsdaten d ∈ D aus, so haben wir das ersteBLUMsche Axiom abzuändern zu1’. n ∈ dom(λx. Φ(e, x)) genau dann, wenn die Maschine {e} bei jedemInput w der Komplexität |w| = n hält.Insbesondere erhalten wir damit ein abstraktes Komplexitätsmaß für akzeptierendeMaschinen.Viele Eigenschaften von Komplexitätsmaßen lassen sich bereits aus denBLUMschen Axiomen herleiten. Beispielsweise der Lückensatz. Der Lückensatzhat kuriose Folgerungen. So garantiert er die Existenz einer rekursivenFunktion g, für dieDTIME (g) = NTIME (g) = DSPACE (g) = NSPACE (g)ist. Die Inklusionen ⊆ in der obigen Kette gelten offensichtlich. Dieinverse Inklusion ergibt sich aus der Tatsache, daß zu L ∈ NSPACE (g)eine Konstante c so existiert, daß L ∈ DTIME (c g ) ist. Damit läßt sicheinsehen, daß L schon in DTIME (g g ) ist. Wenden wir nun den Lückensatzfür DTIME auf die Funktion r(x) = x x an, so erhalten wir die Existenzeiner rekursiven Funktion g mit DTIME (g) = DTIME (g g ).Eine weitere merkwürdige Eigenschaft, die sich bereits aus den BLUMschenAxiomen herleiten läßt, ist der sogenannte Beschleunigungssatz.Dieser besagt, daß sich rekursive Funktionen konstruieren lassen, für die Der BLUMschesich keine besten Programme finden lassen. In abstrakter Form läßt er Beschleunigungssatzsich wie folgt formulieren.155
6. Gr<strong>und</strong>züge der KomplexitätslehreSatz 71 (Beschleunigungssatz von BLUM) Sei Φ ein abstraktes Komplexitätsmaß<strong>und</strong> r eine rekursive Funktion. Dann gibt es eine partiellrekursiveFunktion F derart, daß sich zu jedem Index e für F ein Index e b sofinden läßt, daßr(Φ(e b , n)) ≤ Φ(e, n)für fast alle natürlichen Zahlen n gilt.Der Name “Beschleunigungssatz” (Speed-up Theorem) wird verständlich,wenn man das abstrakte Komplexitätsmaß als Zeitkomplexität interpretiert.Dann besagt der Beschleunigungssatz, daß sich zu jedemProgramm e für F , das F (n) in der Rechenzeit T (n) berechnet, einProgramm e b finden läßt, das F (n) in höchstens T b (n)-vielen Schrittenberechnet, wobei fast überall r(T b (n)) ≤ T (n) ist.Der Beschleunigungssatz beruht natürlich wieder auf einer Diagonalisierung.Man konstruiert sich eine Funktion F , die durch kurze Programme(d.h. Programme mit kleinen Indizes) nicht schnell zu berechnen ist. Jelänger man jedoch das Programm macht, desto schneller läßt sich dieFunktion berechnen. Da es (nach dem Satz von RICE) beliebig lange Programmefür F gibt, läßt sich dessen Berechnung durch Verlängerung desProgrammes beliebig beschleunigen.Mit Hilfe abstrakter Komplexitätsmaße läßt sich eine recht elegante Theorieentwickeln. Absolut unbefriedigend ist jedoch die Tatsache, daß sichKomplexitätsmaße angeben lassen, die der Intuition, die wir üblicherweisemit einem Komplexitätsmaß verbinden, eklatant widersprechen.So sollte die Komplexität zweier nacheinander ablaufender Programmedoch mindestens so groß wie die jedes einzelnen Programmes sein. Eslassen sich jedoch Komplexitätsmaße Φ angeben, die die BLUMschenSchwächen Axiome erfüllen, dabei aber die EigenschaftabstrakterKomplexitätsmaße Φ( F ◦ G , n) < Φ( G , n)haben. D.h., daß die Komplexität der nacheinander ablaufenden Programmekleiner werden kann, als die der einzelnen Programme.Eine weitere Eigenschaft, die sich ebenfalls bereits aus den BLUMschenAxiomen folgern läßt, ist der Vereinigungssatz. Ist Φ ein abstraktes Komplexitätsmaß,so seiK Φ (S) := {{e}| (∀d)(Φ(e, d) ≤ S(|d|))}.Interpretieren wir Φ als die deterministische Platzkomplexität, so istK Φ (S) = DSPACE (S), interpretieren wir es als deterministische Zeitkomplexität,ist K Φ (S) = DTIME (S) <strong>und</strong> so fort.Satz 72 (Vereinigungssatz) Sei Φ ein abstraktes Komplexitätsmaß <strong>und</strong>156
6.3. P- <strong>und</strong> NP- entscheidbare Probleme{r i | i ∈ N} eine rekursiv aufzählbare Kollektion rekursiver Funktionenderart, daß für jedes n immer r i (n) < r i+1 (n) gilt. Dann gibt es einerekursive Funktion S mit⋃K Φ (S) = K Φ (r i ).i ∈ NDer Vereinigungssatz, auf dessen Beweis wir nicht näher eingehen wollen,stellt sich als nützlich für die Nomenklatur von Komplexitätsklassenheraus. So können wir die Klassen⋃P = DTIME (n i )i ∈ Nder in polynomialer Zeit deterministisch entscheidbaren Probleme <strong>und</strong>⋃NP = NTIME (n i )i ∈ Nder in polynomialer Zeit nichtdeterministisch entscheidbaren Problemedefinieren. Mit diesen Klassen wollen wir uns im folgenden Abschnittbefassen.In polynomialer ZeitentscheidbareProbleme6.3 P- <strong>und</strong> NP- entscheidbare ProblemeAm Ende des letzten Abschnittes hatten wir die Klassen P <strong>und</strong> NP der inpolynomialer Zeit deterministisch bzw. nichtdeterministisch entscheidbarenProbleme eingeführt. Wie wir zu Beginn des Kapitels bereits erwähnten,hat es sich eingebürgert, die Klasse P als die der praktisch entscheidbarenProbleme zu betrachten. Diese Auffassung wird empirisch dadurchgestützt, daß sich die zur Klasse P gehörenden “natürlichen” Problemein der Regel durch Algorithmen entscheiden lassen, deren Zeitkomplexitätensich durch Polynome niedrigen Grades beschränken lassen. Mankennt jedoch auch eine Reihe von Problemen, für die nichtdeterministischeAlgorithmen bekannt sind, die in polynomialer Zeit zum Abschlußkommen.Es besteht eine gewisse Analogie zwischen der Klasse P <strong>und</strong> den rekursi- Eine Analogieven Mengen einerseits <strong>und</strong> der Klasse NP <strong>und</strong> den rekursiv aufzählbarenMengen andererseits. So ist P gerade die Klasse der praktisch entscheidbarenProbleme, wohingegen Rel r. die Klasse der (theoretisch) entscheidbarenProbleme darstellt. Wir hatten weiter beobachtet, daß die KlasseRel r.e. der rekursiv aufzählbaren Mengen gerade die Klasse der theoretischpositiv entscheidbaren Probleme beschreibt. Ist nun L ∈ NP, sohaben wir einen nichtdeterministischen polynomialen Algorithmus, der157zwischen NP <strong>und</strong>Rel r.e. sowie P <strong>und</strong>Relr.
6. Gr<strong>und</strong>züge der KomplexitätslehreDie COOKscheHypotheseGründe für dieSchwierigkeit derCOOKschenHypothesedas Wortproblem für L entscheidet. Ist w ∈ L zu entscheiden, so denkenwir uns die Berechnung so als Rechenbaum angeordnet, wie wir es in Abbildung6.1 - 1 angedeutet haben. Ist nun w ∈ L, so gibt es einen Pfad indem Berechnungsbaum, in dem w ∈ L bestätigt wird. Dieser Pfad liefertuns aber einen polynomialen Algorithmus, der w ∈ L bestätigt. Damithaben wir in Analogie zur Klasse Rel r.a. die Klasse NP als die Klasse derProbleme, die sich praktisch positiv entscheiden lassen. Allerdings siehtman sofort, daß, zumindest wie wir sie begründet haben, diese Analogieunvollständig ist. Im Falle der rekursiv aufzählbaren Menge läßt sichder Bestätigungsalgorithmus global angeben, wohingegen im Falle einesNP-Problems nur lokale Bestätigungsalgorithmen vorliegen, was heißensoll, daß der Algorithmus, der uns w ∈ L bestätigt, von w abhängenkann.Das Versagen der Analogie schlägt sich auch in Eigenschaften der KlassenP <strong>und</strong> NP nieder. So ließ sich ja ziemlich einfach zeigen, daß dierekursiven Relationen eine echte Teilklasse der rekursiv aufzählbarenRelationen bilden. Die COOKsche HypotheseP NPhingegen ist eines der berühmtesten offenen Probleme der Komplexitätstheorie.Es gibt gewichtige Anzeichen dafür, daß dieses Problem auchsehr schwer zu lösen sein dürfte. Eines ist die Tatsache, daß es bislangallen Lösungsversuchen getrotzt hat. Ein anderes die Arbeit [BAK75]von T. BAKER, J. GILL <strong>und</strong> R. SOLOVAY, in der sie gezeigt haben, daßsich das P = NP? Problem so relativieren läßt, daß relativ zu einer MengeA einmalP A = NP Agilt, man andererseits aber auch eine Menge B angeben kann, für dieP B ≠ NP Bist. Da die in der Rekursionstheorie üblichen Methoden (etwa wie sie indiesem Buch dargestellt wurden) Relativierungen in der Regel überleben,legt das zitierte Ergebnis die Vermutung nahe, daß das Problem mit dergängigen Methodik nicht zu attackieren ist.Neben den Klassen P <strong>und</strong> NP sind auch deren Platzentsprechungen⋃PSPACE := DSPACE (n i )i ∈ N<strong>und</strong>158
⋃NPSACE := NSPACE (n i )i ∈ N6.3. P- <strong>und</strong> NP- entscheidbare Problemevon Interesse. Dabei folgt aus dem Satz von SAVITCH (Satz 67), daßNPSACE = PSPACEist. Innerhalb von PSPACE haben wir die HierarchieDSPACE ( log ) DSPACE ( log 2 ) . . .. . . DSPACE ( log i ) . . . ⊆ PSPACE.Insbesondere folgt damitDSPACE ( log ) ⊆ P ⊆ NP ⊆ PSPACE,<strong>und</strong> wir wissen, daß eine der Inklusionen echt zu sein hat, daDSPACE ( log ) PSPACEist. Offen ist jedoch, welche der Inklusionen echt ist.Die Klasse P hat ähnliche Abschlußeigenschaften, wie die der rekur- Abschlußeigenschaftensiven Relationen. So haben wir Abschluß gegenüber allen booleschen der Klasse POperationen, stark beschränkter Quantifikation <strong>und</strong> der Substitution mitpolynomial berechenbaren Funktionen. Da wir nicht wissen, ob P = NPist, können wir über die Abschlußeigenschaften von NP allerdings wenigsagen. So wissen wir beispielsweise nicht, ob die Klasse CONP derKomplemente von NP-Relationen mit der Klasse NP übereinstimmt.Es ist natürlich nun von besonderem Interesse, den Begriff der Unlösbarkeitsgrade(vgl. Abschnitt 5.1) auf die Klassen P <strong>und</strong> NP zu übertragen,da es ja auch von praktischem Interesse ist, zu wissen, ob sich ein Problemdurch ein deterministisches Programm in polynomialer Zeit lösenläßt, oder ob es einen nichtdeterministischen Algorithmus erfordert.Die Unlösbarkeitsgrade, die sich hier anbieten, sind eine Anpassungder m-Grade, wie wir sie in Abschnitt 5.1 eingeführt haben. Allerdingsmacht es jetzt natürlich keinen Sinn mehr zu fordern, daß die Reduktiondurch eine rekursive Funktion erfolgt. Die angebrachte Anpassung bestehtnatürlich darin, daß man nur Reduktionen über Funktionen zuläßt,die selbst polynomial berechenbar sind.Definition 73 Eine Sprache A über einem Alphabet Σ heißt polynomialm-reduzibel auf eine Sprache B über Σ, wenn es eine polynomialzeitbeschränkte Funktion f : Σ ∗ −→ Σ ∗ gibt, so daßx ∈ A genau dann wenn f(x) ∈ Bfür alle Wörter x ∈ A gilt.159
6. Gr<strong>und</strong>züge der KomplexitätslehreWir notieren die Tatsache, daß A polynomial m-reduzibel auf B ist durchA ≤ p Bp-ReduzibilitätEin natürlichesKomplexitätsmaßfür natürliche Zahlen<strong>und</strong> sprechen oft kurz von p-Reduzibilität.Manche Autoren lassen ganz generell nur DSPACE ( log 2 ) beschränkte Funktionen alsreduzierende Funktionen zu. Alle hier noch zu erwähnenden Ergebnisse, gelten auchfür diesen Reduktionsbegriff.Wenn wir den Begriff der polynomialen Berechenbarkeit auf zahlentheoretische Funktionenanwenden, d.h. Funktionen, die Tupel natürlicher Zahlen in natürliche Zahlenabbilden, müssen wir allerdings etwas vorsichtig sein. Wir haben davon auszugehen,daß wir natürliche Zahlen als Wörter einer geeigneten Sprache darzustellen haben. Esist daher unrealistisch, einer natürlichen Zahl n eine Länge 1 zuzuordnen. In der Darstellungüber dem Alphabet {∗, B}, wie wir sie im Kapitel über maschinenberechenbareFunktionen benützt haben, bekäme n die Komplexität n, was natürlich eine viel zuschlechte Kodierung darstellt. Üblicherweise stützt man sich hier auf die Tatsache, daßzu jeder natürlichen Zahl n eindeutig eine Binärdarstellungk∑n = b i · 2 i mit b i ∈ {0, 1}i=0existiert. Auf diese Weise läßt sich jede natürliche Zahl n durch das Wort b 0 . . . b kder Länge log 2 (n + 1) über dem Alphabet {0, 1} darstellen. Daher wollen wir imfolgenden immer von dem Komplexitätsmaß|n| := log 2 (n + 1)Ein alternativerZugang zupolynomialberechenbarenFunktionenBeschränkteRekursionfür natürliche Zahlen n ausgehen. Für Tupel ⃗n natürlicher Zahlen bedeute |⃗n| das Tupel(|n 1 |, . . . , |n k |).Die Natürlichkeit der Klasse P wird dadurch unterstrichen, daß sich die in polynomialerZeit berechenbaren zahlentheoretischen Funktionen in kanonischer Weise maschinenunabhängigdefinieren lassen. Der Vollständigkeit halber wollen wir einen derartigenZugang skizzieren, ohne dies später jedoch weiter zu vertiefen.Unser Ziel ist es, ähnlich wie wir dies bei den primitiv rekursiven <strong>und</strong> partiellrekursivenFunktionen getan haben, die polynomial berechenbaren Funktionen als Abschluß einerKlasse von Gr<strong>und</strong>funktionen unter gewissen Operationen zu erhalten. Dazu führenwir zunächst den Begriff der beschränkten Rekursion ein, der eine Abschwächung derprimitiven Rekursion darstellt. Seien also g eine n- <strong>und</strong> h eine n + 2-stellige zahlentheoretischeFunktion <strong>und</strong> q <strong>und</strong> p Polynome. Wir sagen, daß die n-stellige Funktionf aus g <strong>und</strong> h durch beschränkte Rekursion mit Platzschranke q <strong>und</strong> Zeitschranke pdefinierbar ist, wenn die folgenden beiden Bedingungen erfüllt sind:• f(⃗m) = Rec(g, h)(⃗m, p(|⃗m|)) für jedes n-Tupel ⃗m.• Für jedes k ≤ |⃗m| ist |Rec(g, h)(⃗m, k)| ≤ q(|⃗m|).Auch bei der Wahl der Gr<strong>und</strong>funktionen müssen wir etwas vorsichtiger sein. Es genügt,hier von den folgenden Funktionen auszugehen:1. Die Nullfunktion 0,2. die Nachfolgerfunktion S,160
3. die Rechtsverschiebungsfunktion λn. ⌊ 1 · n⌋, 24. die Linksverschiebungsfunktion λn. (2 · n),5. die charakteristische Funktion χ ≤ der ≤-Relation,6. die Fallunterscheidungsfunktion Case(k, l, m) :=6.3. P- <strong>und</strong> NP- entscheidbare Probleme{ l, falls k > 0m, falls k = 0.Die kleinste Klasse zahlentheoretischer Funktionen, die die eben angeführten Gr<strong>und</strong>funktionenumfaßt <strong>und</strong> abgeschlossen ist gegenüber Substitutionen <strong>und</strong> beschränkterRekursion ist dann genau die Klasse der in polynomialer Zeit berechenbaren Funktionen.Die Klasse P ergibt sich dann als die Klasse der Prädikate, deren charakteristischeFunktionen sich aus den Gr<strong>und</strong>funktionen durch Substitution <strong>und</strong> beschränkte Rekursiongewinnen lassen.Man nennt nun eine Menge R NP-schwer (englisch “NP-hard”, was wohl NP-schwerezu der auch oft benutzten Bezeichung NP-hart geführt hat), wennA ≤ p R<strong>und</strong> NP-vollständigeProblemefür jedes A ∈ NP gilt.Ist R ∈ NP <strong>und</strong> R darüber hinaus auch NP-schwer, so heißt R NPvollständig.Diese Definitionen übertragen sich sinngemäß auf die übrigen Komplexitätsklassen.Eine weitere amüsante Analogie – die allerdings keine tiefliegendenGründe zu haben scheint – zwischen den Klassen Rel r.a. <strong>und</strong> NP ergibtsich durch die folgenden Beobachtungen: Wir haben in Abschnitt5.3 gesehen, daß die Gültigkeit von Sätzen der Prädikatenlogik unentscheidbarist, indem wir das Halteproblem darauf reduzieren konnten. Dadas Halteproblem aber m-vollständig für die rekursiv aufzählbaren Mengenist <strong>und</strong> nach dem Vollständigkeitssatz der Prädikatenlogik Kalküleexistieren, die alle gültigen Sätze aufzählen, diese also eine rekursivaufzählbare Menge bilden, ist das Entscheidungsproblem der Prädikatenlogikumgekehrt auch auf das Halteproblem reduzierbar <strong>und</strong> somitselbst m-vollständig für Rel r.a. . Im Gegensatz zur Prädikatenlogik spielenin der Aussagenlogik nur die Junktoren ¬, ∧, ∨ (vgl. Abschnitt 5.3)eine Rolle. Zu Ehren von G. BOOLE bezeichnet man diese Junktoren –<strong>und</strong> oft auch alle Operationen, die sich aus ihnen ableiten lassen – alsboolesche Operationen.Ein boolescher Term (oft auch boolesche Formel genannt) setzt sich Boolesche Termeaus Aussagenvariablen u, v, u 0 , v 0 , u 1 , . . . mittels boolescher Operationenzusammen.Eine boolesche Belegung ist eine Zuordnung von einem der Wahrheits- Booleschewerte W oder F zu den Aussagenvariablen. IstBelegungenΦ: Aussagenvariablen −→ {W, F}161
6. Gr<strong>und</strong>züge der KomplexitätslehreWahrheitstafelneine boolesche Belegung, so berechnet sich der Wert t Φ eines booleschenAusdrucks t gemäß den in Abschnitt 5.3 angegebenen Regeln, d.h. diebooleschen Operationen gehorchen den Wahrheitstafeln∧ W FW W FF F F∨ W FW W WF W F¬W = F¬F = W,Das Erfüllbarkeitsproblemfürboolesche TermeDas Erfüllbarkeitsproblemfürboolesche Terme istNP-vollständigdie für die zweistelligen Operationen ∧ <strong>und</strong> ∨ so zu lesen sind, daß daserste Argument in der linken Spalte, das zweite Argument in der oberstenReihe <strong>und</strong> der Funktionswert am Schnittpunkt der zugehörigen Reihe<strong>und</strong> Spalte steht.Ein boolescher Term t heißt erfüllbar, wenn sich eine Belegung Φ sofinden läßt, daß t Φ = W ist. Das Erfüllbarkeitsproblem für die Aussagenlogikbesteht nun darin, zu entscheiden, ob ein vorgegebener boolescherTerm erfüllbar ist. Wir wollen das Erfüllbarkeitsproblem für boolescheTerme mit SAT abkürzen.Es ist natürlich wieder sofort klar, daß der Wert von t Φ nur von derBelegung der in t tatsächlich auftretenden Aussagenvariablen abhängt.Dies sind nur endlich viele, sagen wir n Stück. Also können höchstens2 n -viele Belegungen existieren, für die t Φ verschiedene Werte annehmenkann. Da sich diese alle austesten lassen, ist SAT entscheidbar. Die Fragekann nur noch sein, wie komplex es ist.Ohne auf Einzelheiten eingehen zu können, die zwar nicht sehr schwierig,aber doch langwierig darzustellen wären, wollen wir hier erwähnen,daß SAT ein NP-vollständiges Problem ist. Leicht einzusehen ist die Tatsache,daß SAT in NP liegt. Für jeden booleschen Term t der Länge n <strong>und</strong>jede vorgegebene Belegung Φ läßt sich t Φ in einer durch eine FunktionT ∈ O(n) beschränkten Zeit berechnen. Wir erhalten ein NP Programm,indem wir alle möglichen Belegungen erraten <strong>und</strong> dann parallel auswertenlassen.Viel aufwendiger ist es, zu zeigen, daß SAT NP-schwer ist. Die Ideebesteht darin, einem durch ein Polynom p zeitbeschränkten nichtdeterministischenProgramm P <strong>und</strong> einem Input w einen booleschen Termt P,w so zuzuordnen, daß P das Wort w genau dann akzeptiert, wenn t P,werfüllbar ist. Dies kann so erfolgen, daß t P,w aus w in polynomialer Zeitberechnet werden kann. Damit hat man P ≤ p SAT. Das hört sich allerdingseinfacher an als es ist. Man hat nämlich zu beachten, daß imTerm t P,w der Ablauf des nichtdeterministischen Programmes mit aus-162
6.3. P- <strong>und</strong> NP- entscheidbare Problemesagenlogischen Mitteln axiomatisch beschrieben werden muß. Daß diesgelingt, liegt wesentlich daran, daß das Programm P ein NP-Programmist. Details finden sich beispielsweise in [HOP79] oder [PAUL78].Wir haben eingangs gesehen, daß das Entscheidungsproblem für die vollePrädikatenlogik m-vollständig für die rekursiv aufzählbaren Mengen war.Das Erfüllbarkeitsproblem für die Aussagenlogik ist zwar entscheidbar,aber doch NP-vollständig (<strong>und</strong> damit vermutlich praktisch unentscheidbar).Da das Erfüllbarkeitsproblem eng mit dem Entscheidbarkeitsproblemzusammenhängt (eine Formel F ist genau dann entscheidbar, wenn¬F unerfüllbar ist), zeigt sich hier eine weitere Analogie zwischen denKlassen Rel r.e. <strong>und</strong> NP.Das Ergebnis über die NP-Vollständigkeit des Erfüllbarkeitsproblemsläßt sich noch verschärfen. Dazu betrachtet man sogenannte konjunktiveNormalformen. Um zu beschreiben, worum es sich bei einer konjunktiven KonjunktiveNormalform handelt, wollen wir unter einem Literal eine Aussagenvariableu oder eine einfach negierte Aussagenvariable ¬u verstehen. EineDisjunktion L 1 ∨ . . . ∨ L k von Literalen L i nennen wir dann eine reineDisjunktion der Länge k. Dual nennt man eine Konjunktion von Literaleneine reine Konjunktion. Eine k-konjunktive Normalform ist eine Konjunktionreiner Disjunktionen der Längen k. Eine konjunktive Normalformist eine Konjunktion reiner Disjunktionen, deren Längen beliebig seindürfen. Völlig dual definiert man eine disjunktive Normalform als eineDisjunktion reiner Konjunktionen.Wir nennen zwei boolesche Terme t 1 <strong>und</strong> t 2 äquivalent <strong>und</strong> notieren diesdurcht 1 ≡ t 2 ,wenn t Φ 1 = t Φ 2 für jede boolesche Belegung Φ gilt. Mit den DEMOR-GANschen Regeln¬(A ∧ B) ≡ (¬A ∨ ¬B)¬(A ∨ B) ≡ (¬A ∧ ¬B)Normalformen fürboolesche Termeläßt sich leicht zeigen, daß jeder boolesche Term zu einem äquivalentenTerm in konjunktiver Normalform umgeformt werden kann. Enthielt derursprüngliche Term n Aussagenvariablen, so wird der Term in konjunktiverNormalform nicht mehr als 2 n -viele Aussagenvariablen enthalten.Der Beweis der NP-Vollständigkeit des Erfüllbarkeitsproblems kann so NP-Vollständigkeitgeführt werden, daß sich der ergebende boolesche Term t P,w in konjunktiverNormalform befindet. Damit hat man gezeigt, daß bereits dasErfüllbarkeitsproblem für boolesche Terme in konjunktiver NormalformNP-vollständig ist. Nun kann man sich fragen, wie lang die reinen Dis-163des Erfüllbarkeitsproblemsfür3-konjunktiveNormalformen
6. Gr<strong>und</strong>züge der KomplexitätslehrePraktische RelevanzvonNP-Schwierigkeit<strong>und</strong> -VollständigkeitEin PSPACEvollständigesProblemQuantifizierteboolesche Formelnjunktionen in der konjunktiven Normalform sein müssen, damit nochNP-Vollständigkeit vorliegt. Es läßt sich zeigen, daß bereits 3-konjunktiveNormalformen NP-vollständig sind. Dieses Problem erweist sich oft alsrecht handlich, wenn es darum geht, andere Probleme darauf zu reduzieren.Man kennt sehr viele NP-schwere <strong>und</strong> NP-vollständige Probleme. Vielevon Ihnen sind Probleme der diskreten <strong>Mathematik</strong> <strong>und</strong> lassen sich dahergut in graphentheoretischer Sprache formulieren. Wir werden im Anhangüber Graphentheorie kurz darauf zurückkommen.Die Feststellung, daß ein Problem NP-schwer ist, ist durchaus von praktischerBedeutung. Man hat ohne Erfolg viel Energie darauf verwendet,effiziente (d.h. polynomiale) Algorithmen für Probleme zu entwickeln,die wir heute als NP-schwer oder NP-vollständig erkannt haben. (Ein Beispieldafür ist das Problem des Handlungsreisenden.) Diese Erfahrunglehrt uns, daß es – wenigstens solange nicht P = NP durch einen effizientenAlgorithmus gesichert werden kann, was wenig wahrscheinlich ist –wenig Sinn macht nach polynomialen Algorithmen für Probleme zu suchen,die als NP-schwer nachgewiesen sind. Hier ist es viel besser, nachheuristischen, der speziellen Situation angepaßten Berechnungsverfahrenzu suchen. Generell wissen wir nur, daß Algorithmen mit exponentiellerLaufzeit zur Verfügung stehen, was diese Probleme praktisch unlösbarmacht.Es ist allerdings nicht zwangsläufig, daß selbst wenn P ≠ NP ist,jedes NP-Problem auch wirklich exponentielle Laufzeit beanspruchenmuß. Es ist durchaus vorstellbar, daß es in einer Zwischenklasse, z.B.DTIME (λn. n c· log n ) für eine Konstante c liegen kann. Ließe sich einNP-vollständiges Problem angeben, das in DTIME (λn. n c· log n ) liegt,so folgte bereits NP ⊆ DTIME (λn. n c· log n ). Allerdings sind derartigeProbleme bislang nicht gef<strong>und</strong>en worden.Ausgehend von dem Erfüllbarkeitsproblem SAT für boolesche Formelngelangen wir auch zu einem Problem, das sich als PSPACE - vollständigerwiesen hat. Dazu führen wir den Begriff der quantifizierten booleschenFormel (QBF) ein.Wir erhalten eine QBF, indem wir Aussagenvariablen gegenüber denbooleschen Operationen ¬, ∧, ∨ <strong>und</strong> Quantifikationen (∃u), (∀u) überAussagenvariablen abschließen. Beispiele für QBFs sind(∀u)(u ∨ ¬u)(∃u)(∀v)(u ↔ (v ∧ ¬v)),wobei u ↔ v die boolesche Operation (¬u ∨ v) ∧ (¬v ∨ u) abkürzt.Wie in der Prädikatenlogik sagen wir, daß eine Aussagenvariable u, die164
6.3. P- <strong>und</strong> NP- entscheidbare Problemeim Bereich eines Quantors (∀u) oder (∃u) steht, durch diesen Quantorgeb<strong>und</strong>en wird. Nicht geb<strong>und</strong>ene Aussagenvariablen bezeichnen wir alsfrei. Wir wollen wieder davon ausgehen, daß, wann immer wir eineQBF (∀u)F oder (∃u)F bilden, die Aussagenvariable u nicht geb<strong>und</strong>enin F auftreten darf. Eine QBF heißt geschlossen, wenn sie keine freienAussagenvariablen enthält. Wie bei den booleschen Termen verstehen wirunter einer booleschen Belegung eine Zuordnung von WahrheitswertenW <strong>und</strong> F zu den Aussagenvariablen. Die Auswertung EVAL(F, Φ) einerQBF bei einer booleschen Belegung Φ ist dann einer der WahrheitswerteW oder F, der sich wie folgt berechnet:EVAL(u, Φ) := Φ(u) für Aussagenvariablen u.EVAL(¬F, Φ) = ¬EVAL(F, Φ).EVAL(F 1 ∧ F 2 , Φ) = ∧(EVAL(F 1 , Φ), EVAL(F 2 , Φ)).EVAL(F 1 ∨ F 2 , Φ) = ∨(EVAL(F 1 , Φ), EVAL(F 2 , Φ)).EVAL((∀u)F, Φ) = W genau dann, wenn EVAL(F, Ψ) = W für allebooleschen Belegungen Ψ gilt, die bis auf den Wert Ψ(u) mit Φ übereinstimmen.EVAL((∃u)F, Φ) = W genau dann, wenn EVAL(F, Ψ) = W für eineboolesche Belegung Ψ gilt, die bis auf den Wert Ψ(u) mit Φ übereinstimmt.Dabei seien die Wahrheitsfunktionen ¬, ∧ <strong>und</strong> ∨ wie vorher in denWahrheitstafeln angegeben definiert.Es ist wieder offensichtlich, daß der Wahrheitswert EVAL(F, Φ) einerQBF F bei einer booleschen Belegung Φ nur von der Belegung der Aussagenvariablenabhängt, die tatsächlich in F auftreten. Insbesondere hat jedegeschlossene QBF F einen wohlbestimmten Wahrheitswert EVAL(F ). Eine geschlossene QBF F heißt gültig, wenn EVAL(F ) = W ist. Daeine QBF F , in der höchstens die Aussagenvariablen u 1 , . . . , u n frei vorkommen,genau dann erfüllbar ist, wenn die QBF (∃u 1 ) . . . (∃u n )F gültigist, ist das Erfüllbarkeitsproblem für QBFs gelöst, wenn man einen Algorithmuszur Berechnung von EVAL(F, Φ) hat. Da es immer nur endlichviele (d.h. genau zwei) Möglichkeiten gibt, eine Aussagenvariable zu belegen,ist das oben angegebene Berechnungsverfahren für EVAL(F, Φ)offenbar rekursiv. Damit läßt sich die Frage EVAL(F ) = W? prinzipiellentscheiden. Es ist ebenfalls leicht einzusehen, daß der angegebene Algorithmusmit quadratischem Platzbedarf auskommt. Damit ist klar, daßdas Entscheidungsproblem für QBFs in PSPACE ist. Deutlich schwierigereinzusehen ist die Tatsache, daß es auch PSPACE - schwer ist. Hiersei auf die Literatur (beispielsweise [HOP79]) verwiesen.165
6. Gr<strong>und</strong>züge der KomplexitätslehreDas Wortproblemfür kontextsensitiveSprachen istPSPACE-vollständigEin theoretischentscheidbares, aberpraktischunentscheidbaresProblemEin weiteres, natürliches Problem, das sich als PSPACE - vollständignachweisen läßt, ist das Wortproblem für kontextsensitive Sprachen, daswir in Abschnitt 5.2 als primitiv rekursiv erkannt haben. Auch hier seiauf die Literatur verwiesen. In [HOP79] finden sich auch Beispiele fürP-vollständige Probleme.Wir haben bereits bemerkt, daß bis heute nicht feststeht, ob NP - Problemetatsächlich praktisch unentscheidbar sind. Es sind allerdings Beispielevon Problemen bekannt, die beweisbarerweise exponentielle Ressourcenerfordern <strong>und</strong> somit praktisch unentscheidbar sind.Ein relativ altes <strong>und</strong> demgemäß gut bekanntes Beispiel ist die PresburgerArithmetik. Bei der Presburger Arithmetik handelt es sich um die Theorieder Struktur (N, +). Das zu entscheidende Problem ist die Frage, ob füreinen Satz φ des Sprachfragments L({+}) der Zahlentheorie, das nur dieAddition als nichtlogisches Zeichen zuläßt,(N, +) |= φgilt. Mit Methoden der Modelltheorie läßt sich zeigen, daß dies tatsächlichprinzipiell entscheidbar ist. M. J. FISCHER <strong>und</strong> M. O. RABIN haben jedoch1974 gezeigt, daß jedes Entscheidungsverfahren mindestens eine Zeit2 2O(n) erfordert <strong>und</strong> somit ein praktisch unlösbares Problem vorliegt.Wir wollen diesen Abriß der Komplexitätstheorie nicht beschließen, ohneauf dessen Unvollkommenheit hinzuweisen. Der an weiteren Detailsinteressierte Leser sei auf die Literatur verwiesen, wobei es in Ermangelungumfassender Lehrbücher oft nötig sein wird, auch Originalarbeitenzu studieren.166
A. Gr<strong>und</strong>lagen der GraphentheorieObwohl die diskrete <strong>Mathematik</strong> nicht unbedingt zu den mathematischenGr<strong>und</strong>lagen der <strong>Informatik</strong> zu rechnen ist, stellt sie doch mit eines ihrerwesentlichsten Hilfsmittel dar. Es ist nicht ganz einfach zu beschreiben,was das eigentliche Anliegen diskreter <strong>Mathematik</strong> ist. Der Terminus diskretist wohl als Gegensatz zum Begriff des Kontinuums zu interpretieren,<strong>und</strong> diskrete <strong>Mathematik</strong> als der Teil der <strong>Mathematik</strong> zu interpretieren,der die Phänomene studiert, die auftreten, wenn man das Kontinuum derreellen Zahlen durch diskrete Objekte (wie z.B. Gleitkommazahlen) ersetzt.Es würde den Rahmen dieses Buches bei weitem sprengen, wolltenwir hier eine Beschreibung der Methoden diskreter <strong>Mathematik</strong> beginnen.Ein wesentlicher Bestandteil der diskreten <strong>Mathematik</strong> ist aber sicherlichdie Kombinatorik. Viele kombinatorische Probleme lassen sich bequemin der Sprache der Graphentheorie formulieren. Da wir im vorhergehendenText schon mehrfach Bezug auf graphentheoretische Konzeptegenommen haben, wollen wir die Gr<strong>und</strong>begriffe der Graphentheorie kurzzusammenstellen.A.1 Gr<strong>und</strong>begriffeBeginnen wir mit der formalen Definition eines Graphen.Definition 74 Ein Graph ist ein geordnetes Paar G = (V, E), wobei Veine nicht leere Menge (die Menge der Knoten von G) <strong>und</strong> E (die Mengeder Kanten von G) eine Teilmenge von [V ] ≤2 , der Menge aller Teilmengenvon V mit höchstens zwei Elementen, ist.Ist v ein Knoten <strong>und</strong> e eine Kante mit v ∈ e, so sagen wir, daß der Knotenv auf der Kante e liegt oder, daß v mit e inzident ist.Ist e = {u, v}, so sagen wir, daß e die Knoten u <strong>und</strong> v verbindet. Gibtes eine Kante, die die Knoten u <strong>und</strong> v in einem Graphen G verbindet, soheißen u <strong>und</strong> v in G benachbart oder adjazent.Sehr viel besser als durch diese abstrakte Definition kann man sich einenGraphen graphisch veranschaulichen. Betrachten wir das Beispiel in AbbildungA.1 - 1 so ist die Menge der KnotenFormale Definitioneines GraphenV = {v 1 , . . . , v 4 }<strong>und</strong> die Menge der Kanten geben durch167
A. Gr<strong>und</strong>lagen der Graphentheoriev1v2v3v4Abb. A.1 - 1: Ein ungerichteter Graph mit vier KnotenE = {{v 1 , v 2 }, {v 1 , v 3 }, {v 2 , v 3 }, {v 3 , v 4 }, {v 4 }}.Gerichtete GraphenGraphen dieser Art bezeichnet man als ungerichtete Graphen. Fordernwir in Definition 74 anstatt E ⊆ [V ] ≤2 jedoch E ⊆ V 2 , so hat jede Kantedie Gestalt (u, v) mit Knoten u, v ∈ V , wodurch eine Richtung der Kantevon u nach v vorgegeben ist. Man spricht dann von einem gerichtetenGraphen . In der graphischen Darstellung gerichteter Graphen wird dieRichtung der Kanten durch Pfeile angegeben. Im Beispiel von Abb. A.1- 2 ist wiederV = {v 1 , . . . , v 4 }<strong>und</strong>E = {(v 1 , v 2 ), (v 1 , v 3 ), (v 3 , v 2 ), (v 3 , v 4 ), (v 4 , v 4 )}.v1v2v3v4Abb. A.1 - 2: Ein gerichteter Graph mit vier KnotenDie oben vereinbarten Redeweisen “v liegt auf e” <strong>und</strong> “e verbindet u <strong>und</strong>v” übernehmen wir sinngemäß.168
A.1. Gr<strong>und</strong>begriffeManchmal betrachtet man auch gemischte Graphen, in denen sowohlgerichtete als auch ungerichtete Kanten vorkommen dürfen.Einen noch allgemeineren Zugang stellt der Begriff des Multigraphen Multigraphendar. Ein Multigraph läßt sich als ein Tripel (V, E, φ) definieren, wobei V<strong>und</strong> E disjunkte Mengen sind <strong>und</strong>φ: E −→ Pow(V )eine Abbildung von der Kantenmenge E in die Potenzmenge der KnotenmengeV ist, so daß |φ(k)| ≤ 2 ist. Jeder Kante e wird also eineKnotenmenge φ(e) = {u, v} zugeordnet. Man verwendet wieder dieRedeweise, daß e die Knoten u <strong>und</strong> v verbindet. Der Unterschied zurvorherigen Definition besteht darin, daß nun zwei Knoten durch mehr alsnur eine Kante verb<strong>und</strong>en werden können. Solche Situationen könnenauftreten, wenn man beispielsweise versucht, Straßenkarten als Graphendarzustellen, in dem Plätze oder andere markante Punkte als Knoten auftreten.Die diese Punkte verbindenden Straßenzüge werden durch Kantenrepräsentiert. Da sich zwischen zwei Plätzen in der Regel eine Vielzahlvon verbindenden Straßenzügen finden lassen, würde es hier sinnvollsein, Multigraphen zu betrachten. In einem Multigraphen heißen zweiKanten e 1 ≠ e 2 mit φ(e 1 ) = φ(e 2 ) ein Zweieck.Betrachten wir G = (V, E, φ) mit φ: E −→ V × V , so ist durch φ(e) =(v 1 , v 2 ) wieder eine Richtung von v 1 nach v 2 festgelegt <strong>und</strong> wir erhalteneinen gerichteten Multigraphen.Man kann natürlich auch gemischte Multigraphen betrachten. Im obigenBeispiel wäre dies der Fall, wenn wir die Richtung eventueller Einbahnstraßenim Straßennetz berücksichtigen wollten.Wir haben in unserer Definition nicht ausgeschlossen, daß Knoten ineinem Graphen zu keiner Kante gehören. Wir sprechen dann von isoliertenKnoten. Im folgenden wollen wir jedoch immer stillschweigendvoraussetzen, daß wir Graphen ohne isolierte Knoten vorliegen haben.Ein Graph heißt endlich, wenn seine Kantenmenge endlich ist. Wir werdenim folgenden immer nur von endlichen Graphen sprechen.Eine FolgeP = (v 1 , e 1 , v 2 , e 2 , v 3 , . . . , v n , e n , v n+1 ),(A.1)wobei v 1 , . . . , v n+1 Knoten <strong>und</strong> e 1 , . . . , e n Kanten sind, für die immer(φ)(e i ) = {v i , v i+1 } – bzw. (φ)(e i ) = (v i , v i+1 ) im Falle eines gerichteten(Multi)Graphen – gilt, heißt ein Kantenzug oder Pfad. Der Knoten v 1 heißt Kantenzüge <strong>und</strong>der Ausgangspunkt, v Pfaden+1 der Endpunkt des Pfades. Wir sagen, daß derPfad P die Knoten v 1 <strong>und</strong> v n verbindet. Der Kantenzug heißt geschlossenwenn v 1 = v n ist. Die Länge lg(P ) des Kantenzuges169
A. Gr<strong>und</strong>lagen der GraphentheorieP = (v 1 , e 1 , v 2 , e 2 , v 3 , . . . , v n , e n , v n+1 )EinfacheKantenzüge <strong>und</strong>WegeKreiseLokale Kantenzahl<strong>und</strong> Ordnung einesGraphenist die Zahl n.Wir sprechen von einem einfachen Kantenzug, wenn e i ≠ e j für i ≠ jist <strong>und</strong> von einem Weg, wenn v i ≠ v j für i ≠ j ist. In einem einfachenKantenzug wird also keine Kante zweimal durchlaufen, ein Weg besuchtjeden Knoten höchstens einmal.Ist v 1 = v n+1 <strong>und</strong> v 2 , . . . v n ein Weg, so sprechen wir von einem Kreisoder Zykel . Jeder geschlossene Kantenzug, läßt sich zu einem Kreisverkürzen.Eine Kante e, die den gleichen Knoten verbindet, wird Schlinge genannt.Die lokale Kantenzahl grad G (v) eines Knotens v in einem Graphen Gist die Anzahl (Kardinalzahl) aller Kanten mit denen v inzidiert. Dabeiwerden i.a. Schlingen doppelt gezählt. Die Ordnung eines Graphen G =(V, E) ist dann durchα(G) := ∑v ∈ Vgrad G (v)definiert.Ist G ein schlingenloser Graph ohne Zweiecke, so erhalten wir für dieAnzahl κ(G) der Kanten in G offenbarκ(G) = 1 2 · α(G).Zusammenhangskomponenten<strong>und</strong>zusammenhängendeGraphenVollständigeGraphenZwei Knoten v 1 <strong>und</strong> v 2 heißen zusammenhängend, wenn es einen Wegmit Anfangspunkt v 1 <strong>und</strong> Endpunkt v 2 gibt. Man notiert dies manchmalals v 1 ∼ v 2 . Ganz offensichtlich ist durch ∼ eine Äquivalenzrelation aufden Knoten eines Graphen gegeben. Die Äquivalenzklassen von ∼ ineinem Graphen G heißen die Zusammenhangskomponenten von G. HatG nur eine einzige Zusammenhangskomponente, so sprechen wir voneinem zusammenhängenden Graphen. Es ist leicht einzusehen, daß sichein zusammenhängender Graph nicht als disjunkte Vereinigung zweiernicht leerer Graphen darstellen läßt.Sind u <strong>und</strong> v zwei zusammenhängende Knoten, so definieren wir derenAbstandd G (u, v) := min{lg(P )| P verbindet u mit v}.Ergänzen wir diese Definition um d G (u, v) := ∞, falls u <strong>und</strong> v nichtzusammenhängen, so definiert der Abstand d G eine Metrik auf G.Ein Graph G = (V, E) heißt vollständig, wenn E = [V ] ≤2 ist, d.h.wenn jeder Knoten mit jedem Knoten durch eine Kante verb<strong>und</strong>en ist.Man spricht auch von vollständigen gerichteten Graphen, von denen man170
A.1. Gr<strong>und</strong>begriffeverlangt, daß jede Kante mit jeder durch einen Pfeil verb<strong>und</strong>en ist (d.h.,zu den Knoten u <strong>und</strong> v müssen die Kanten (u, v) <strong>und</strong> (v, u) existieren).In einem vollständigen Graphen G mit α(G)-vielen Knoten, giltgrad G (v) = α(G) − 1.Daher erhalten wir für die Kantenzahlκ(G) = 1 2· α(G)(α(G) − 1).Graphen, in denen alle Knoten den gleichen Grad haben, nennt man regulär.Wie wir eben eingesehen haben, sind vollständige Graphen regulär.Andere Beispiele für reguläre Graphen sind die Oberflächengraphen regulärerPolyeder. Deshalb nennt man einen vollständigen Graphen derOrdnung n oft auch einen n-Simplex <strong>und</strong> bezeichnet ihn mit S(n).Ist (u, v) eine Kante in dem gerichteten Graphen G, so heißt “u ein unmittelbarerVorgänger von v” oder dual “v ein unmittelbarer Nachfolgervon u”.Ein wichtiger Spezialfall eines gerichteten Graphen ist ein Baum. Ein BäumeBaum ist ein gerichteter Graph B, der den folgenden Bedingungen genügt:• B besitzt einen ausgezeichneten Knoten – die Wurzel des Baumes –,der keine unmittelbaren Vorgänger besitzt <strong>und</strong> von dem aus ein Weg zujedem Knoten des Baumes führt.• Mit Ausnahme der Wurzel hat jeder Knoten des Baumes genau einenunmittelbaren Vorgänger.Oft ist es auch nützlich, eine Ordnung auf den unmittelbaren Nachfolgerneines Knotens in einem Baum zu haben. Dazu nimmt man an, daß eineOrdnung auf der Menge V der Knoten des Baumes vorgegeben ist, diedann in kanonischer Weise die unmittelbaren Nachfolger jedes Knotensordnet. Solche Bäume heißen geordnet.Wir können sofort einsehen, daß ein Baum keine Kreise enthalten kann.Nehmen wir nämlich an, wir hätten einen Kreis v = v 1 → . . . → v n = v.Dann hat jeder der Knoten v i einen unmittelbaren Vorgänger <strong>und</strong> kanndaher nicht die Wurzel sein. Auf der anderen Seite gibt es einen Pfad vonder Wurzel w zu jedem der v i . Also muß mindestens einer der Knotenunter den v i mehr als einen unmittelbaren Vorgänger haben, was nach derDefinition eines Baumes nicht möglich ist.Vergessen wir die Richtung der Kanten in einem Baum, so gibt es zu jezwei Knoten v 1 <strong>und</strong> v 2 in dem Baum einen Kantenzug mit Anfangsknotenv 1 <strong>und</strong> Endknoten v 2 , der über die Wurzel führt. Es ist leicht einzusehen,daß jeder solche Kantenzug sich zu einem Weg verkürzen läßt. Alsoist ein Baum – als ungerichteter Graph betrachtet – zusammenhängend.Man definiert daher manchmal etwas allgemeiner einen Baum als einen171
A. Gr<strong>und</strong>lagen der Graphentheoriezusammenhängenden Graphen ohne Kreise.A.2 Subgraphen <strong>und</strong> HomomorphismenSubgraphenHomomorphismen<strong>und</strong> Epimorphismenvon GraphenSei G = (V, E) ein Graph. G ′ = (V ′ , E ′ ) heißt ein Teilgraph von G, wennV ′ ⊆ V <strong>und</strong> E ′ ⊆ E ist. Offenbar ist der leere Graph ∅ = (∅, ∅) einTeilgraph jedes Graphen.Entsteht der Teilgraph G ′ eines Graphen G durch Restriktion der Nachbarschaftsrelation,d.h. giltE ′ = {{x, y} ∈E | x, y ∈ V ′ },so spricht man von einem Unter- oder Subgraphen.Eine Teilmenge V 0 ⊆ V der Knotenmenge von G spannt somit denUntergraphenG(V 0 ) := (V 0 , {{x, y} ∈E | x, y ∈ V 0 })auf. Seien G 1 = (V 1 , E 1 ) <strong>und</strong> G 2 = (V 2 , E 2 ) Graphen. Eine AbbildungF : V 1 −→ V 2 ,mit der Eigenschaft, daß1. für alle {x, y} ∈ E 1 , die eine Kante von G 1 sind, F (x) = F (y) oder{F (x), F (y)} ∈ E 2 gilt,heißt ein Homomorphismus der Graphen G 1 <strong>und</strong> G 2 . Wir notieren diesoft auch alsF : G 1 −→ G 2 .Von größerem Interesse sind jedoch Epimorphismen von Graphen, beidenen es sich um Homomorphismen F handelt, die den folgenden zusätzlichenBedingungen genügen:2. F ist surjektiv3. Zu jeder Kante {x 2 , y 2 } ∈ E 2 gibt es eine Kante {x 1 , y 1 } ∈ E 1 mitF (x 1 ) = x 2 <strong>und</strong> F (y 1 ) = y 2 .Isomorphismen von Graphen sind injektive Epimorphismen.Der Homomorphiesatz der universellen Algebra überträgt sich natürlichauch auf Epimorphismen von Graphen. Um dies zu verdeutlichen, betrachtenwir eine Partition P der Knoten eines Graphen G. Für einenKnoten x bezeichne P x das Element der Partition, das x enthält. AlleKnoten in einer Partition bilden eine Äquivalenzklasse. Zwei Äquivalenzklassenbetrachten wir als benachbart, wenn sie disjunkt sind <strong>und</strong>mindestens eine Kante zwischen beiden verläuft, d.h. wenn P x ≠ P y ist172
A.2. Subgraphen <strong>und</strong> Homomorphismen<strong>und</strong> es x 0 ∈ P x sowie y 0 ∈ P y so gibt, daß {x 0 , y 0 } eine Kante ist. Aufdiese Weise erhalten wir den FaktorgraphenG/Pzusammen mit dem kanonischen Epimorphismusπ: G −→ G/Pπ(x) := P x .Ist nun F : G 1 −→ G 2 ein Epimorphismus der Graphen, so liefert dieMenge P := {F −1 (z)| z ∈ V 2 } eine Partition des Graphen G 1 . Es istdann sofort nachzurechnen, daß die Abbildung˜F : G/P −→ G 2˜F (F −1 (z)) := zwohldefiniert <strong>und</strong> ein Isomorphismus ist, für denF = ˜F ◦ πgilt.Ein EpimorphismusF : G 1 −→ G 2heißt kontraktierend, wenn alle Urbilder F −1 (z) der Knoten von G 2 zusammenhängendeUntergraphen von G 1 aufspannen. Gibt es einen SubgraphenG 0 ⊆ G 1 <strong>und</strong> einen kontraktierenden Epimorphismus von G 0 aufeinen Graphen G 2 , so sagen wir, daß ein c-Homomorphismus aus G 1 inG 2 existiert. Dies notiert man oft alsG 1 ≻ G 2 .Die Relation ≻ ist eine Halbordnung, d.h.reflexive, transitive <strong>und</strong> antisymmetrischeRelation, auf den (Isomorphieklassen von) endlichen Graphen.Anschaulich bedeutet G ≻ G ′ , daß sich G in zusammenhängendeSubgraphen zerlegen läßt, die sich bijektiv auf die Knoten in G’ abbildenlassen, wobei zusammenhängende Subgraphen, die durch mindestenseine Kante verb<strong>und</strong>en sind, auf in G’ benachbarte Knoten abgebildetwerden.Von Interesse sind auch noch Graphen, die durch Identifikation von Knotenentstehen. Dazu gehen wir von einer Teilmenge U ⊆ V der Knotenmengeeines Graphen G aus <strong>und</strong> lassen diese auf einen Punkt zusammenschrumpfen,indem wir alle Knoten, die in U lagen, aus G entfernen <strong>und</strong>einen neuen Punkt hinzufügen, den wir mit den verbliebenen Knoten von173
A. Gr<strong>und</strong>lagen der GraphentheorieG verbinden, die bereits früher einen Nachbarn in U hatten. Wir notierenden neu entstandenen Graphen auch mitG/H,Verwechslungen mit dem Restklassengraphen werden durch den jeweiligenKontext praktisch immer ausgeschlossen. Wählen wir für U spezielleine Kante e = {x, y}, so sagen wir, daß der neue GraphG/edurch Kantenkontraktion entstanden ist. Man kann nun feststellen, daßfür endliche GraphenG ≻ G ′immer genau dann gilt, wenn sich G durch sukzzessive Kantenkontraktionenin einem Graphen überführen läßt, der einen zu G ′ isomorphenTeilgraphen besitzt.A.3 PfadproblemeDas KönigsbergerBrückenproblemEULER-GraphenEines der Ausgangsprobleme, das zur Entwicklung der Graphentheorieführte, war das Königsberger Brückenproblem (vgl. Abb. A.3 - 1). DasProblem besteht darin, eine Spaziergang durch Königsberg zu finden,der genau einmal über jede der sieben Pregelbrücken führt <strong>und</strong> zumAusgangspunkt zurückkehrt. Schon EULER bemerkte, daß sich diesesProblem auf ein Pfadproblem in dem in Abbildung A.3 - 2 dargestelltenMultigraphen reduzieren läßt. Die Knoten in den Graphen sind die durchden Fluß Pregel abgegrenzten Stadtteile Königsbergs, die Kanten dieWege über die Brücken. Gesucht ist nun ein geschlossener Pfad, der alleKanten enthält. EULER hat bereits die Bedingungen untersucht, denen einMultigraph zu gehorchen hat, damit er Pfade enthält, die über alle Kantenführen. Man nennt solche Pfade daher heute EULER-Pfade. Man überlegtsich relativ leicht, daß ein Graph G genau dann ein EULER-Graph ist, d.h.ein Graph mit einem EULER-Pfad, wenn er den folgenden Bedingungengenügt:1. G ist zusammenhängend.2. Für jeden Knoten v in G ist grad G (v) gerade.Damit folgt sofort, daß das Königsberger Brückenproblem unlösbar ist.Man kann nun das Brückenproblem dahingehend erweitern, daß manfür Graphen die Frage nach der kleinsten Zahl stellt, die man benötigt,um einen zusammenhängenden Graphen mit disjunkten Pfaden zu über-174
A.3. PfadproblemeAbb. A.3 - 1: Das Königsberger Brückenproblemdecken. In einem EULER-Graphen ist diese Zahl offensichtlich 1. Besitztein Graph G keinen EULER-Pfad, so existieren k Knoten ungeraden Grades.Man überlegt sich leicht, daß k gerade zu sein hat. Darüber hinausmuß jeder Knoten ungeraden Grades einer der Endpunkte eines Pfadesin der Überdeckung sein. Also existieren mindestens k -viele Pfade in2der Überdeckung <strong>und</strong> man überlegt sich, daß k 2-viele Pfade auch ausreichen,um G zu überdecken. Diese Fragestellung kann man auf gerichteteMultigraphen ausdehnen. Hier zeigt sich, daß ein EULER-Graph natürlichwieder zusammenhängend zu sein hat <strong>und</strong> darüber hinaus jeder Knotenv von G genausoviele eingehende wie ausgehende Kanten besitzen muß.Man kann dem Problem des EULER-Graphen sogar eine gewisse praktischeBedeutung unterlegen. Das Problem tritt beispielsweise auf, wennes darum geht, eine Führungslinie in einem Museum so zu legen, daß jedesExponat besucht wird, ohne daß Wege doppelt zurückgelegt werdenmüssen.Die natürlichere Fragestellung hier wäre allerdings die folgende: Läßtsich ein Weg finden, der zu seinem Ausgangspunkt (dem Ein- <strong>und</strong> Ausgang)zurückführt <strong>und</strong> jedes Exponat genau einmal besucht. In Termender Graphentheorie formuliert wäre dies die Frage nach der Existenz einesKreises, der alle Knoten des Graphen enthält. Solche Kreise nenntman HAMILTONsche Kreise. Ein Graph, der einen HAMILTONschen Kreis HAMILTONscheKreise <strong>und</strong> -Graphenzuläßt, heißt ein HAMILTONscher Graph. Diese Definitionen übertragensich auch auf gerichtete Graphen.Für das Vorliegen eines HAMILTONschen Graphen gibt es kein so einfachesKriterium wie für das eines EULERschen Graphen. Es ist natürlichklar, daß auch ein HAMILTONscher Graph zusammenhängend sein muß.175
A. Gr<strong>und</strong>lagen der GraphentheorieAbb. A.3 - 2: Multigraph des Königsberger BrückenproblemsDarüber hinaus sind aber keine effizienten Algorithmen für das Auffindeneines HAMILTONschen Kreises bekannt. Der Gr<strong>und</strong> dafür ist dieNP-Vollständigkeit dieses Problems. Das HAMILTONsche Problem wirdoft in anschaulicher Weise dargestellt. Eine Form ist das Partyproblem,das die Frage stellt, unter welchen Bedingungen es möglich ist, die Gästeeiner Party so um einen r<strong>und</strong>en Tisch zu plazieren, daß jeder zwischenzwei Fre<strong>und</strong>en zu sitzen kommt. Der Graph, der hier zu betrachten ist,hat die Gäste als Knoten <strong>und</strong> eine Kante zwischen je zwei Gästen, diemiteinander befre<strong>und</strong>et sind.Es gibt jedoch noch viel einfacher anmutende Graphenprobleme, die sichals NP-vollständig herausstellen. Ein Beispiel dafür ist die Frage nach derExistenz einer Knotenüberdeckung. Dabei heißt eine Menge A ⊆ V eineKnotenüberdeckung eines Graphen G = (V, E), wenn für jede Kante{v 1 , v 2 } ∈ E schon v 1 ∈ A oder v 2 ∈ A gilt. Auch dieses Problem istNP-vollständig.Eine weiteres Problem besteht darin, den Kern eines gerichtenen GraphenG = (V, E) zu bestimmen. Dabei heißt eine Menge K ⊆ V ein Kern desGraphen, wenn die Knoten des Kernes K paarweise nichtbenachbart sind<strong>und</strong> jeder Knoten v des Graphen entweder selbst im Kern liegt oder eseinen Pfeil von einem Knoten des Kernes nach v gibt. Auch hier handeltes sich um ein NP-vollständiges Problem.Neben diesen hier angeführten Beispielen lassen sich noch eine ganze LegionNP-vollständiger Probleme finden, die sich zum Teil als Übersetzun-176
A.4. Markierte <strong>und</strong> gefärbte Graphengen praktisch auftretender Probleme in die Sprache der Graphentheorieergeben. Vergleiche dazu beispielsweise [HOP79].A.4 Markierte <strong>und</strong> gefärbte GraphenEine wichtige Rolle spielen markierte <strong>und</strong> gefärbte Graphen. Dabeikönnen sowohl Knoten als auch Kanten markiert werden. Eine Kno- Knotenmarkierungentenmarkierung für einen Graphen G = (V, E) ist eine AbbildungL V : V −→ M V ,wobei wir M V die Menge der Knotenmarken nennen. Analog ist eineKantenmarkierung eine AbbildungKantenmarkierungenL E : V −→ M Evon den Kanten in die Menge der Kantenmarken. Ein markierter Graphist dann einer, der kanten- <strong>und</strong>/oder knotenmarkiert ist.Wir haben markierte Graphen bereits in der Form von Flußdiagrammenfür Maschinenprogramme kennengelernt. Ein Flußdiagramm kann als einmarkierter gerichteter Graph aufgefaßt werden, dessen Knotenmarken dieProgrammarken sind <strong>und</strong> dessen Kanten mit Befehlen markiert sind.Markierte Graphen sind allgegenwärtig. So lassen sich formale Beweise,wie sie durch Kalküle der Prädikatenlogik gegeben werden, als markierte(gerichtete) Bäume auffassen. Die bewiesene Formel erscheint dabei ander Wurzel des Baumes, die Axiome an den Spitzen. Ebenso handelt essich bei Netzplänen um markierte Graphen. Auch viele Optimierungsproblemelassen sich durch markierte Graphen darstellen. Ein wohlbekanntesOptimierungsproblem in einem markierten Graphen ist das Problem des Das Problem desHandelsreisenden. Anschaulich geht es in diesem Problem darum, daß Handelsreisendenein Handelsreisender alle Städte seines Handelsgebietes bereisen <strong>und</strong>zu seinem Ausgangsort zurückkehren soll, wobei die Kosten der Reisemöglichst gering zu halten sind. Graphentheoretisch geht man dazu voneinem vollständigen kantenmarkierten Graphen aus. Die Markierungenin M E ⊆ R bezeichnet man der besseren Anschaulichkeit wegen oftals Kosten. Das Problem des Handelsreisenden besteht nun darin, einenHAMILTONschen Kreis in dem Graphen so zu finden, daß die Summe derKosten der durchlaufenen Kanten minimal wird. Es ist nicht sonderlichüberraschend, daß dieses Problem NP-vollständig ist.Eine Knotenmarkierung L V eines Graphen heißt eine Färbung, wenn fürzwei adjazente Knoten u, v immer L V (u) ≠ L V (v) gilt. Anschaulichhat man sich eine Färbung so vorzustellen, daß M V eine Menge vonFarben ist <strong>und</strong> die Knoten des Graphen so zu färben sind, daß benachbarte177
A. Gr<strong>und</strong>lagen der GraphentheorieChromatische ZahlPlanare GraphenDasVierfarbenproblemNP-Vollständigkeitder DreifärbbarkeitKnoten immer verschiedene Farben erhalten. Die chromatische Zahl einesGraphen ist definiert durchκ(G) := min{|F || (∃φ)[φ: V G −→ F ist Färbung]},wobei |F | die Kardinalität der Menge F der Farben bezeichnet. Einberühmtes Problem in diesem Zusammenhang war die Frage nach derchromatischen Zahl planarer Graphen. Planare Graphen sind Graphen,die sich in der Ebene zeichnen lassen, ohne daß sich dabei Kanten“kreuzen”. (Exakter müßte man den Begriff eines topologischen Grapheneinführen. Dies sind Graphen, deren Kanten homöomorphe Bilderdes Einheitsintervalls [0, 1] – sogenannte Jordan Bögen – sind. PlanareGraphen sind dann die topologischen Graphen des R 2 .) Es ist relativleicht zu zeigen, daß die chromatische Zahl planarer Graphen kleiner odergleich 5 sein muß. Andererseits läßt sich der 4-Simplex S(4), der planarist, mit nur vier Farben färben, woraus folgt, daß für einen beliebigenplanaren Graphen G zumindest4 ≤ κ(G) ≤ 5gilt. Die Frage war nun, ob man mit vier Farben immer auskommenkann. Daher ist dieses Problem auch als das Vierfarbenproblem bekannt.Da man jeden planaren Graphen als eine Landkarte auffassen kann, derenLänder die Knoten des Graphen sind, wobei Länder benachbarter Knoteneine gemeinsame Grenze erhalten, läßt sich das Vierfarbenproblem anschaulichgut beschreiben. Die Aufgabe besteht darin, eine Landkarte sozu färben, daß benachbarte Länder immer verschieden Farben erhalten.Die Frage ist, ob sich dies immer mit vier Farben bewerkstelligen läßt.Neben seiner Schwierigkeit ist sicher auch seine anschauliche <strong>und</strong> allgemeinverständlicheFormulierbarkeit ein Gr<strong>und</strong> für die Berühmtheit desVierfarbenproblems. Es wurde erstmals im Jahre 1850 von F. GUTHRIEexplizit erwähnt <strong>und</strong> hat über h<strong>und</strong>ert Jahre allen intensiven Beweisversuchen(sowohl von Fachleuten als auch von Laien) getrotzt. Erst imJahre 1976 gelang K. APPEL, W. HAKEN <strong>und</strong> J. KOCH nach Vorarbeitenvon H. HEESCH der Beweis, daß vier Farben ausreichen. Interessant andiesem Beweis ist die Tatsache, daß es sich um den ersten mathematischenBeweis handelt, der so komplexe Berechnungen erfordert, daß ernur mit Hilfe von Computern geführt werden kann.Färbungsprobleme sind aber auch im Sinne der Komplexitätstheorieschwierig. So handelt es sich bereits bei der Entscheidung, ob ein vorgegebenerGraph eine chromatische Zahl kleiner oder gleich drei hat, umein NP-vollständiges Problem. Daß sich nichtdeterministisch in polynomialerZeit alle Dreifärbungen ausprobieren lassen, ist offensichtlich.Andererseits läßt sich das Erfüllbarkeitsproblem für boolesche Terme in178
A.4. Markierte <strong>und</strong> gefärbte Graphenkonjunktiver Normalform auf das Dreifärbungsproblem reduzieren. Dazubeobachtet man nur, daß die in Abbildung A.4 - 1 angegebenen GraphenAbb. A.4 - 1: Ein schwaches ∧- <strong>und</strong> ∨- Gatter in dreifärbbaren Graphenbei der Verfügbarkeit von höchstens drei Farben wie ∧- <strong>und</strong> ∨-Gatter indem Sinne arbeiten, daß der rechts stehende Outputknoten genau dannmit der Farbe W gefärbt werden kann, wenn beide bzw. mindestens einerder links stehenden Inputknoten mit W gefärbt war. Jedem booleschenTerm t in konjunktiver Normalform entspricht dann ein Graph G t , der sichin polynomialer Zeit aus t berechnen läßt, so daß t genau dann erfüllbarist, wenn der Graph G t dreifärbbar ist.179
B. LiteraturempfehlungenBei einem Titel wie Mathematische Gr<strong>und</strong>lagen der <strong>Informatik</strong> bestehtimmer die Gefahr, die Erwartungen der Leser zu enttäuschen, die eigentlichein Buch über mathematische Werkzeuge der <strong>Informatik</strong> erwartet haben.Dem Leser, dem es so ergeht, sei die Lektüre des Buches [OBE76]von W. OBERSCHELP <strong>und</strong> D. WILLE empfohlen, in dem eine knapp gehalteneEinführung in die mathematischen Werkzeuge des <strong>Informatik</strong>ersin gut lesbarer Weise gegeben wird.Der vorliegende Band befaßte sich mit der mathematischen Gr<strong>und</strong>lage der<strong>Informatik</strong>, der Berechenbarkeitstheorie. Wer mehr über die Ursprüngeder Berechenbarkeitsthoerie erfahren möchte, dem sei die Lektüre derOriginalarbeiten empfohlen, wie sie beispielsweise in der Antologie vonM. DAVIS [DAV64] zusammengestellt sind. Man wird erstaunt sein, wiemodern viele der dort nachgedruckten Artikel bereits wirken.Lehrbücher über Berechenbarkeitstheorie, die meist weit über das hinausgehen,was hier zusammengestellt wurde, gibt es in großer Zahl.Eine einfach zu lesende Einführung findet man in H. HERMES Buch[HERM61]. Das klassische Werk ist [ROG67] von H. ROGERS JR., indem (in englischer Sprache) eine prof<strong>und</strong>e Einführung in die Theorieder Berechenbarkeit gegeben wird, die bis zur Theorie der analytischenHierarchie führt. Die Theorie wird dort unter mathematischen Aspektenentwickelt. Das Studium dieses Buches erfordert allerdings intensiveMitarbeit des Lesers. Dazu findet man eine große Zahl sehr schönerÜbungsaufgaben in allen Schwierigkeitsgraden.Modernere Darstellungen der Theorie findet man beispielsweise in denBüchern von M. LERMAN [LER83] <strong>und</strong> R. SOARE [SOA85]. Beide Bücherbehandeln die Theorie umfassend, stellen aber ebenfalls hohe Ansprüchean die Mitarbeit des Lesers. Besondere Betonung liegt auf der Theorieder Unlösbarkeitsgrade, die wir nur am Rande erwähnt haben.Ein komplette Darstellung des heutigen Standes der Rekursionstheoriebeabsichtigt P. ODDIFREDDI. Der bereits erschienene erste Band [ODD89]stellt auf ca. 600 Seiten alle wesentlichen Ergebnisse der sogenanntenklassischen Rekursionstheorie dar.Wer Interesse an der Theorie der rekursionstheoretischen Hierarchienhat, die hier nur kurz gestreift wurde, sei auf das Buch von P. HINMAN[HINM78] verwiesen, das diese Theorie erschöpfend behandelt.Eine speziell für <strong>Informatik</strong>er geschriebene Einführung in die Berechenbarkeitstheoriefindet sich in U. SCHÖNINGs Buch [SCHÖ92]. Der informatischeAspekt der Berechenbarkeitstheorie steht auch im Mittelpunkt181
B. Literaturempfehlungendes Buches [SCHN74] von C. P. SCHNORR. Dort findet sich auch ein abstraktesMaschinenkonzept, das dem ähnelt, das wir in dem vorliegendenBuch vorgestellt haben.Die Zahl der Originalarbeiten im Bereich der Berechenbarkeitstheorie,auch im Hinblick auf die Querverbindungen zur <strong>Informatik</strong> ist so groß,daß wir darauf verzichten müssen, einzelne Arbeiten herauszustellen.Eine ausführliche Bibliographie findet sich beispielsweise in [ODD89].Neben den Klassikern [CUR58] von H. B. CURRY, R. FEYS and W.CRAIG sowie [CUR72] von H. B. CURRY, J. R. HINDLEY <strong>und</strong> J. P. SELDINist das moderne Standardwerk für den λ-Kalkül H. BARENDREGTs Buch[BARD81]. Der dort dargestellte Stoff geht natürlich weit über das hinaus,was wir hier anreißen konnten.Informationen über λ-Kalküle mit Typen bieten das Buch von J. Y. GI-RAD, Y. LAFONT <strong>und</strong> P. TAYLOR [GIR89] sowie der Artikel [BARD92]von H. BARENDREGT. Dort finden sich auch weiterführende Literaturhinweise.Unlösbare Probleme werden ausführlich in [HOP79] behandelt. Die Unentscheidbarkeitder Prädikatenlogik findet man in praktisch jedem Lehrbuchder Mathematischen Logik. Man vergleiche hierzu die Literaturhinweisein Band 1.1 dieser Serie.Das Standardwerk zur Einführung in die Komplexitätstheorie ist nochimmer das Buch [HOP79] von J.E. HOPCROFT <strong>und</strong> J. D. ULLMAN, obwohldessen Schwerpunkt mehr in der Theorie der formalen Sprachen liegt. Einneueres Werk ist [BAL88] von J. L. BALCÁZAR, J. DÍAZ <strong>und</strong> J. GABARRÓ,von dem in der Zwischenzeit auch der zweite Band erschienen ist, derspeziellere Fragestellungen behandelt. Immer noch lesenswert ist dieEinführung [PAUL78] von W. PAUL. Als Führer zu den Originalarbeitenkann das Literaturverzeichnis in [BAL88] dienen.Eine knappe Einführung in den für den <strong>Informatik</strong>er relevanten Teilder Graphentheorie wird in [OBE76] gegeben. Hier ist auch das Buch[DÖR73] von W. DÖRFLER <strong>und</strong> J. MÜHLBACHER zu nennen. Ein klassischesWerk ist [ORE62] von O. ORE. Eine etwas neuere Darstellung derGraphentheorie in deutscher Sprache ist [HAL89] von R. HALIN.182
LiteraturverzeichnisLiteraturverzeichnis[APP77a] K. Appel, W. Haken: Every planar graph is fourcolorable.Part I: Discharging. Illinois Journal ofMathematics 21 (1977) pp. 218 - 314[APP77B]K. Appel, W. Haken, J. Koch: Every planar graph isfour-colorable. Part II: Reducibility. Illinois Journal ofMathematics 21 (1977) pp. 491 - 567[BAK75] T. Baker, J. Gill, R. Solovay: Relativations of theP =? NP question. SIAM Journal on Computing 4(1975) pp. 431 - 442[BAL88]J. L. Balcázar, J. Díaz, J. Gabarró: Structural ComplexityI. Springer, Berlin - Heidelberg - New York1988[BARD81] H. P. Barendregt: The Lambda Calculus. North-Holland, Amsterdam - New York 1981[BARD92] H. P. Barendregt: Lambda Calculi with Types. In:S. Abramsky et al.: Handbook of Logic in ComputerScience, Vol. 2. Oxford University Press, Oxford 1992[BARW75][BLUM67][BÖRG85][BÖRG89][BOR72]J. Barwise: Admissible Sets and Structures. Springer,Berlin - Heidelberg 1975M. Blum: A machine-independent theory of the complexityof recursive functions. Journal of the Associationfor Computing Machinery 14 (1967) pp. 322 -336E. Börger: Berechenbarkeit, Komplexität, Logik. Vieweg,Braunschweig 1985E. Börger: Computability. Complexity, Logic. NorthHolland, Amsterdam - New York -Oxford - Tokyo 1989A. Borodin: Computational complexity and the existenceof complexity gaps. Journal of the Associationfor Computing Machinery (ACM) 19 (1972) pp. 158 -174183
Literaturverzeichnis[CHUR36a][CHUR36b][CUR58][CUR72][DAV64][DÖR73][FISCH74][FRIED57][GÖD30]A. Church: An unsolvable problem of elementary numbertheory. The American Journal of Mathematics 58(1936) pp. 345 - 363A. Church: A note on the Entscheidungsproblem. Journalof Symbolic Logic 1 (1936) pp. 40 - 41H. B. Curry, R. Feys, W. Craig: Combinatory Logic,Vol. I. North-Holland, Amsterdam - New York 1958H. B. Curry, J. R. Hindley, J. P. Seldin: CombinatoryLogic, Vol. II. North-Holland, Amsterdam - New York1972M. Davis: The Undecidable. Raven Press, New York1965W. Dörfler, J. Mühlbacher: Graphentheorie für den <strong>Informatik</strong>er.Sammlung Göschen Bd. 6016. De Gruyter,Berlin - New York 1973M. J. Fischer, M. O. Rabin: Super exponential complexitiyof Presburger arithmetic. In: R.M. Karp (ed.):Complexity of Computation. Proceedings of a Symposiumin Applied Mathematics of the AMS and SIAM.Vol. 7. American Mathematical Society, Providence,Rhode Island 1973, pp. 27 - 41R. M. Friedberg: Two recursively enumerable sets ofincomparable degree of unsolvability. Proceedings ofthe National Academy of Sciences of the United Statesof America 43 (1957) pp. 236 - 238K. Gödel: Die Vollständigkeit der Axiome des logischenFunktionenkalküls. Monatshefte für <strong>Mathematik</strong><strong>und</strong> Physik 37 (1930) pp. 394 - 360[GÖD31] K. Gödel: Über formal unentscheidbare Sätze der“Prinzipia Mathematica.” Monatshefte für <strong>Mathematik</strong><strong>und</strong> Physik 38 (1931) pp. 173 - 198[GÖD33][GÖD58][GIR71]184K. Gödel: Zum Entscheidungsproblem des logischenFunktionenkalküls. Monatshefte für <strong>Mathematik</strong> <strong>und</strong>Physik 40 (1933) pp. 433 - 443K. Gödel: Über eine bisher noch nicht benutzte Erweiterungdes finiten Standpunktes. Dialectica 12 (1958)pp. 280 - 287J.-Y. Girard: Une extension de l‘interpretation de Gödelet son application a l’éliminination des coupures dans
[GIR89][HAL89][HERM61][HIL26][HIN72]Literaturverzeichnisl‘analyse et la théorie des types. In: J. E. Fenstadt,(ed.): Proceedings of the Second Scandinavian LogicColloquium. North-Holland, Amsterdam - New York1971 pp. 63 -92J.-Y. Girard, Y. Lafont, P. Taylor: Proofs and Types.Cambridge University Press, Cambridge 1989R. Halin: Graphentheorie. Wissenschaftliche Buchgesellschaft,Darmstadt 1989H. Hermes: Aufzählbarkeit, Entscheidbarkeit, Berechenbarkeit:Einführung in die Theorie der rekursivenFunktionen. Springer, Heidelberg - New York 1961D. Hilbert: Über das Unendliche. Mathematische Annalen95 (1926) pp. 161 - 190J. R. Hindley, B. Lercher, J. P. Seldin: Introductionto Combinatory Logic. Cambridge University Press,Cambridge 1972[HINM78] P. G. Hinman: Recursion-theoretic Hierarchies.Springer, Heidelberg - New York 1978[HOP79] J. E. Hopcroft, J. D. Ullman: Introduction to AutomataTheory, Languages and Computation. Addison-Wesley, Reading, Mass. 1979[KLEE36]S. C. Kleene: General recursive functions of naturalnumbers. Mathematische Annalen 112 (1936) pp. 727- 742[KLEE43] S. C. Kleene: Recursive predicates and quantifiers.Transactions of the American Mathematical Society53 (1943) pp. 41 - 73[KREO91]H.-J. Kreowski: Logische Gr<strong>und</strong>lagen der <strong>Informatik</strong>.Handbuch der <strong>Informatik</strong>, Bd. 1.1. Oldenbourg,München 1991[LER83] M. Lerman: Degrees of Unsolvability. Springer,Berlin - Heidelberg - New York 1983[MUCH57][OBE76]A. A. Muchnik: Negative solution of the reducibilityproblem of Post (Russisch). Uspekhi MatematicheskikhNauk (Fortschritte der <strong>Mathematik</strong>)12/2 (74)(1957) pp. 215-216W. Oberschelp, D. Wille: Mathematischer Einführungskursfür <strong>Informatik</strong>er. Teubner, Stuttgart 1976185
Literaturverzeichnis[ODD89] P. Oddifreddi: Classical Recursion Theory. North-Holland, Amsterdam - New York 1989[ORE62]O. Ore: Theory of Graphs. American MathematicalSociety, Providence, Rhode Island 1962[PAUL78] W. Paul: Komplexitätstheorie. Teubner, Stuttgart 1978[PET34][PET35]R. Péter: Über den Zusammenhang der verschiedenenBegriffe der rekursiven Funktionen. MathematischeAnnalen 110 (1934) pp. 612 - 632R. Péter: Konstruktion nichtrekursiver Funktionen. MathematischeAnnalen 111 (1935) pp. 42 - 60[POST36] E. Post: Finite combinatory processes. Formulation I.The Journal of Symbolic Logic 1 (1936) pp. 103 - 105[POST41][POST44][POST47][PRES29][RICE53]E. Post: Absolutely unsolvable problems and relatively<strong>und</strong>ecidable propositions. Account of an anticipation.In: [DAV64] pp. 340 - 433E. Post: Recursively enumerable sets of positive integersand their decision problems. Bulletin of theAmerican Mathematical Society 50 (1944) pp. 284 -316E. Post: Recursive unsolvability of a problem of Thue.The Journal of Symbolic Logic 12 (1947) pp. 1 - 11M. Presburger: Über die Vollständigkeit eines gewissenSystems der Arithmetik ganzer Zahlen, in welcher dieAddition als einzige Operation hervortritt. In: F. Leia(ed.): Comptes Rendus de 1. Congrès des Mathematiciensdes Pays Slaves. Warschau 1929 pp. 92 - 101,395H. G. Rice: Classes of recursively enumerable sets andtheir decision problem. Transaction of the AmericanMathematical Society 74 (1953) pp. 385 - 366[RICE56] H. G. Rice: On completely recursively enumerableclasses and their key arrays. The Journal of SymbolicLogic 21 (1956) pp. 304 - 308[ROG67][SACH70]186H. Rogers jr.: Theory of Recursive Functions and EffectiveComputability. McGraw Hill, New York 1967H. Sachs: Einführung in die Theorie der endlichen Graphen,I, II. Teubner, Stuttgart 1970, 1972
[SAV70][SCHÜ77][SCHÖ92][SCHN74][SHOE67][SOA85][THUE14][TUR36][TUR39]LiteraturverzeichnisW. J. Savitch: Relationship between nondeterministicand deterministic tape complexity. Journal of Computerand System Sciences 4 (1970) pp. 177 - 192K. Schütte: Proof Theory. Springer, Heidelberg - NewYork 1977U. Schöning: Theoretische <strong>Informatik</strong> kurzgefaßt. BibliographischesInstitut - Wissenschaftsverlag, Mannheim- Leipzig - Wien - Zürich 1992C. P. Schnorr: Rekursive Funktionen <strong>und</strong> ihre Komplexität.Teubner, Stuttgart 1974J. R. Shoenfield: Mathematical Logic. Addison Wesley,Reading, Mass. 1967R. Soare: Recursively Enumerable Sets and Degrees:A Study of Computable Functions and ComputablyGenerated Sets. Springer, Heidelberg - New York 1985A. Thue: Probleme über die Veränderung von Zeichenreihennach gegebenen Regeln. Videnskaps Selskapeti Kristiania. Skrifter Utgit. 1 Mathematisk-Naturvedenskapelig Klasse 10 (1914) p. 34A. M. Turing: On computable numbers with an applicationto the Entscheidungsproblem. Proceedings ofthe London Mathematical Society, ser.2, 42 (1936) pp.230 - 265A. M. Turing: Systems of logic based on ordinals.Proceedings of the London Mathematical Society, ser.2, 45 (1939) pp. 162 - 228[TUT84] W. T. Tutte: Graph Theory. Cambridge UniversityPress, Cambridge 1984187
RegisterRegisterSymboleA ≡ T B, 118A ≤ p , 160A ∗ , 26A + , 26B ≤ T A, 118KGr<strong>und</strong>kombinator, 95Halteproblem, 78K(C), 22M |= A, 132O(g), 145R 1 ≤ 1 R 2 , 119R 1 ≤ m R 2 , 119S Gr<strong>und</strong>kombinator, 95T n , 70U, 70U = β V , 97U →V , 94U → n V , 94U → ∗ V , 1001U → ∗ V , 100We n, 75[e], 56Ap , 107DSPACE(S), 144DTIME(T ), 144FKlasse der rekursiven Funktionen,59System polymorpher Funktionale,115F (k,l) , 30r-RMF (k,l) , 28TurF, 103IF THEN ELSE , 103C(P ), 46NP, 157NSPACE(S), 144NTIME(T ), 144NULL, 104Num , 107Ω ∞ (g), 145Ω, 97Ind(P), 67P, 59P (k,l) , 29r-RMP RM , 30P (k,l) , 28TurPR, 41Ind(PR), 56Φ n , 71Π n , 103Π n j , 103P, 157RS C (k, z), 22Rec(g, h), 40Rz C (d), 25Sb, 101Σ ∗ , 120Σ + , 120Sub(g, h 1 , . . . , h m ), 40Θ(g), 145T, 103α(G), 170188
Registerβ-abgeschlossen, 108S |= F , 131χ P , 46(x) i , 52M , 101F , 55grad G (v), 170BEQ, 27BEQ(z), 25BEQ j , 29CLR, 25DEC j , 29INC j , 29LFT , 25PRT , 27PRT (z), 25Rel r.a. , 74Rel r. , 74RHT , 25λx. Z, 93λx σ . T , 111SPACE(S), 140TIME(T ), 139QBF, 164G f , 41, 80κ(G), 170lh(x), 52|= A, 132µP , 58µf, 58µz ≤ y . , 48µz . P (⃗x, z), 58µz . [f(⃗x, z) ≃ 0], 58µ b (P ), 47ω(g), 145f, 53φ n , 57〈R〉, 73〈f〉, 62〈x 1 , . . . , x n 〉, 52sg, 45sg, 45♯P , 129♯f, 129σ → τ, 110, 114n, 39{e} n (x 1 , . . . , x n ), 70a ·−b, 29f(x) ≃ u, 24f(z) ≃ g(z), 24f = h + O(g), 145f: Q −→ p Z, 23k-konjunktive Normalform, 163l(w), 26m-reduzibel, 119n-Simplex, 171o(g), 145t S [Φ], 130u→ R nv, 121u→ R v, 1211x ⌢ y, 52RS n C (k, z), 22L G , 122O(P 1 , . . . , P n ), 49Res C (d), 25T , 113Übergangsfunktion, 22ACKERMANN, W., 13, 84AL-KHWARIZMI, 11APPEL, K., 178BAKER, T., 158BOOLE, G., 161CHURCH, A., 13, 92, 137CURRY, H. B., 92DAVIS, M., 12FISCHER, M. J., 166FRIEDBERG, R., 118GILL, J., 158GIRARD, J.-Y., 115GÖDEL, K., 12, 13, 110, 113, 134HAKEN, W., 178HEESCH, H., 178HERBRAND, J., 13HILBERT, D., 13189
RegisterHOWARD, W., 113KLEENE, S. C., 13, 14KOCH, J., 178LEIBNIZ, G.W., 11LULLUS, R., 11LÖWENHEIM, L., 12MUCHNIK, A. A., 118PÉTER, R., 13POST, E., 14, 118PRESBURGER, M., 13RABIN, M. O., 166ROSSER, J. B., 13RUSSELL, B., 12SKOLEM, T., 13SOLOVAY, R., 158TAIT, W., 100TARSKI, A,, 13TURING, A. M., 14, 25, 137WHITEHEAD, A.N., 12V. NEUMANN, J., 15, 161-Reduzibilität, 119Abbildung , siehe Funktionabgeleitetes Wort, 122Abschluß einer abstrakten Basismaschine,33abstrakte Komplexitätsmaße, 154abstrakte Basismaschine, 19Ackermannsche Funktion, 84adjazente Knoten, 167allgemeingültige Formelmengen,132Alphabet, 26Anweisungen für Basismaschinen,20Arbeitsfeld, 25arithmetische Differenz, 45arithmetische Hierarchie, 77Basismaschine, 19Baum, 171geordneter, 171Belegung freier Variablen, 130benachbarte Knoten, 167Berechnungsprädikat, 68Beschleunigungssatz, 155beschränkte Quantifikation, 48beschränkte Rekursion, 160beschränkter Suchoperator, 47beweisbar rekursive Funktionder Arithmetik zweiter Stufe,115der PEANO Arithmetik, 113Beweistheorie, 85Bild (range) einer Funktion, 50Binärdarstellung natürlicher Zahlen,160boolesche Belegung, 161boolesche Operationen, 47, 161c-Homomorphismus, 173charakteristische Funktion, 46Chomsky Grammatik, 122chromatische Zahl, 178Churchsche These, 66Cooksche Hypothese, 158Definitionsbereich einer partiellenFunktion, 23Dekodierunsfunktion , 50direkter Ableitungsschritt, 121diskrete <strong>Mathematik</strong>, 164einfacher Kantenzug, 170Endkonfiguration, 23endliche Produkte, 45endliche Typen, 110Endmarke, 23Entscheidbarkeit, 46Entscheidungsproblem, 12, 46Epimorphismuskontraktierender, 173von Graphen, 172erfüllbare Formeln, 131erfüllbar in einer Struktur, 132erfüllbare Formelmengen, 132190
RegisterErfüllbarkeitsproblem, 162erweiterte boolesche Operationen,49Euler-Pfade, 174extensionale Auffassung von Funktionen,41extensionale Gleichheit von Funktionen,41Fakultätsfunktion, 45Fallunterscheidungsfunktionen, 45Flußdiagramme, 20Formelnboolesche, 161der Prädikatenlogik, 129quantifizierte boolesche, 164freie Variablen, 129freie Aussagenvariable, 165Funktionµ-partiellrekursive, 59geeignet universelle, 81maschinenberechenbare, 25, 28,30partielle, 23partiellrekursive, 59, 66platzbeschränkt berechenbare,140platzkonstruierbare, 149polynomial berechenbare, 139primitiv rekursive, 41rekursive, 59totale, 23turingberechenbare, 28universelle, 71, 80vektorwertige primitiv rekursive,62vektorwertige rekursive, 62zeitbeschränkt berechenbare,140zeitkonstruierbare, 149Funktionale endlicher Typen, 113funktionale Prozedur, 32Funktionstermepartiell rekursive, 59primitiv rekursive, 42Funktionszeichen, 129Färbung von Graphen, 177geb<strong>und</strong>ene Aussagenvariablen, 165geb<strong>und</strong>ene Variablen, 129geschlossene λ-Terme, 95geschlossene Formeln <strong>und</strong> -Terme,129geschlossene quantifizierte boolescheFormel, 165geschlossener Kantenzug, 169Grammatik, 122kontextsensitive, 126kontextfreie, 127reguläre, 127Typ 0, 126Typ 1, 126Typ 2, 127Typ 3, 127Grapheiner partiellen Funktion, 80einer Funktion, 41endlicher, 169gefärbter, 177gemischter, 169gerichteter, 168markierter, 177planarer, 178regulärer, 171vollständiger, 170zusammenhängender, 170Graphentheorie, 167Gr<strong>und</strong>funktionen, 40Gr<strong>und</strong>kombinatoren, 95Gr<strong>und</strong>operationen, 41Gödelnummer eines Funktionstermes,55gültige Formelmengen, 132Halteproblem, 79191
RegisterHamiltonsche Kreise, 175Hamiltonscher Graph, 175Homomorphismusvon Basismaschinen, 30von Graphen, 172Indexeiner partiellrekursiven Funktion,70einer primitiv rekursiven Funktion,56Individuenkonstanten, 129intensionale Auffassung von Funktionen,41intensionale Gleichheit, 42Interpretationen von Termen <strong>und</strong>Formeln, 130inzidente Knoten, 167Isomorphismen, 172Junktoren, 129Kanten, 167Kantenkontraktion, 174Kantenmarken, 177Kantenmarkierung, 177Kantenzug, 169Kennmarke, 20Kern eines gerichteten Graphen,176Knoten, 167Knotenmarken, 177Knotenmarkierung, 177Kodierung, 50Kodierungsfunktion , 50Kombinationen, 95kombinatorische Logik, 92Kompaktheitssatz, 133Komplement eines Prädikats, 46Konfigurationsraum, 22Konkatenation von Kodes, 52konsistente Formelmengen, 132konstante Funktionen, 40Kontraktioneiner Relation, 73einer Funktion, 62Konversion von λ-Termen, 94Kreis in einem Graphen, 170limes inferior, 146Literal, 163logische Folgerung, 132logische Zeichen, 129lokale Kantenzahl, 170Längeeines Kantenzuges, 169eines Wortes, 26Längenfunktion einer Kodierung,50m-Grad, 119m-vollständige Relationen, 119many-one reduzibel, 119Marken, 20Maschenlemma, 98Maschineabstrakte, 21deterministische, 22nichtdetermistische, 140universelle, 71Modifikationsanweisungen, 20Modifikationsinstruktionen, 19Multigraphen, 169Nachfolgerfunktion, 39natürliche Zahl, 39nichtlogische Zeichen, 129Normalformdisjunktive, 163eines λ-Terms, 97konjunktive, 163Normalformensatz von KLEENE,70one-one-Reduzibilität, 119Ordnung eines Graphen, 170192
Registerp-Reduzibilität, 160Parser, 128partiellrekursiv, siehe Funktionpartiellrekursiv in einer Funktion,117partiellrekursive Funktionale, 82Pfad, 169Pfeile, 168polymorphe Funktionale, 115polymorphe Typen, 114polynomial m-reduzibel, 159positive boolesche Operationen,75positive Entscheidbarkeit, 72Presburger Arithmetik, 166primitiv rekursive Basismaschinen,62primitiv rekursive Kodierung, 51primitive Rekursion, 40Principia Mathematica, 12Problem des Handelsreisenden, 177ProblemeNP-harte, 161NP-schwere, 161NP-vollständige, 161unlösbare, 117polynomial deterministisch entscheidbare, 157polynomial nichtdeterministischentscheidbare, 157unentscheidbare, 117Programm, 20deterministisches, 22nichtdeterministisches, 140Projektion, mengentheoretische, 24Projektionsfunktion, 40Prädikate, siehe RelationenPrädikatszeichen, 129Quantoren, 129Quelle einer (partiellen) Funktion,23Rechenschrittfunktion, 22Rechenzeitfunktionäußere, 25innere, 23Redex eines λ-Terms, 96Reduktion, 94Reduktionsrelation, 94Regelsystem, 121Registermaschine, 29reine Disjunktion, 163reine Konjunktion, 163rekursiv aufzählbare Menge, 73rekursive Trennbarkeit, 108relationale Prozedur, 32Relationen, 46Π n -, Π 0 n - , 77Σ n -, Σ 0 n - , 77arithmetische, 77Abschlußeigenschaften von, 79primitiv rekursive, 46rekursiv aufzählbare, 73rekursive, 72semirekursive, 73relative Rekursivität, 117Resultatsfunktionäußere, 25innere, 24Schlinge, 170Semantik, 130Semi-THUE-System, 121Signatur einer Sprache, 129Simulation von Maschinen, 33simultane Rekursion, 53Sprache, 120, 122kontextfreie, 127kontextsensitive, 126reguläre, 127Sprungmarke, 20Startkonfiguration, 22Startmarke, 20Startsymbol, 122193
RegisterSteuereinheit, 20, 21Struktur, 130Subgraphen, 172Substitution in Prädikaten, 47Substitution von Funktionen, 40Suchoperator, 58Summation, 45Super-Exponentiation, 44Syntax, 129Sätze der Prädikatenlogik, 129,131Teilgraph, 172Termeäquivalente boolesche, 163boolesche, 161der Prädikatenlogik, 129des λ-Kalküls, 93terminales Alphabet, 122Testanweisungen, 20Testinstruktionen, 20Theorembeweiser, 137Theorie der formalen Sprachen,128Träger einer Struktur, 130Turingmaschine, 25Turingreduzibilität, 118turingäquivalent, 118Typenvariablen, 114Vollständigkeitssatz der Prädikatenlogik,133Vorgängerfunktion, 45Wertverlauf einer Funktion, 53Wertverlaufsrekursion, 53, 54Wortproblem, 120für kontextsensitive Sprachen,127Wurzel eines Baumes, 171Wörter, 26, 120Zeichen, 26Ziel einer (partiellen) Funktion,23Zusammenhangskomponenten, 170zusammenhängende Knoten, 170Zustand einer Maschine, 21Zweieck, 169Zykel, 170ungerichtete Graphen, 168universell, siehe FunktionUnlösbarkeitsgrade, 117, 118unmittelbarer Vorgänger eines Knotens,171unmittelbarer Nachfolger, 171Untergraph, 172Unvollständigkeit logischer Kalküle,134Variable, 129, 161Verkettung von Wörtern, 26Vierfarbenproblem, 178194