Das strukturierte Programm [...] besagt, dass [...] jeder Algorithmus mit nur drei Kontrollstrukturen ausgedrückt werden kann. Sie sind
- Ausführen eines Unterprogramms und dann eines anderen Unterprogramms (Sequenz)
- Ausführen eines von zwei Unterprogrammen gemäß dem Wert eines booleschen Ausdrucks (Auswahl)
- Ausführen eines Unterprogramms, bis ein boolescher Ausdruck wahr ist (Iteration)
Dieser Satz wird in den folgenden Abhandlungen entwickelt:
- C. Böhm, "Über eine Familie von Turing-Maschinen und die zugehörige Programmiersprache", ICC Bull., 3, 185–194, Juli 1964.
- C. Böhm, G. Jacopini, "Flussdiagramme, Turingmaschinen und Sprachen mit nur zwei Formationsregeln", Comm. of the ACM, 9 (5): 366–371,1966.
Leider ist der erste praktisch nicht verfügbar, und der zweite ist nicht nur ein bisschen kryptisch (zumindest für mich), sondern bezieht sich auch auf den ersten, sodass ich Probleme habe, den Beweis zu verstehen. Kann mir jemand helfen? Gibt es ein modernes Papier oder Buch, das den Beweis darstellt? Vielen Dank.
AKTUALISIEREN
Um genau zu sein, möchte ich den zweiten Teil des CACM-Papiers (Abschnitt 3) verstehen . Die Autoren schreiben in Abschnitt 1 Folgendes:
Im zweiten Teil des Papiers (von C. Böhm) werden einige Ergebnisse eines früheren Papiers berichtet [8], und die Ergebnisse des ersten Teils dieses Papiers werden dann verwendet, um zu beweisen, dass jede Turing-Maschine in oder in reduzierbar ist Ein entschlossener Sinn ist gleichbedeutend mit einem Programm, das in einer Sprache geschrieben ist, die als Formation nur Komposition und Iteration zulässt.
Hier bezieht sich [8] auf das nicht verfügbare ICC Bulletin Paper. Es ist leicht zu erkennen, dass sich das obige Zitat aus Wikipedia auf diesen zweiten Teil des CACM-Papiers bezieht (die Turing-Maschine dient als genaue Definition von Algorithmen; "Komposition" bedeutet Sequenz; eine Iteration kann eine Auswahl ersetzen).
Antworten:
Das Böhm-Jacopini-Theorem besagt im Wesentlichen, dass ein auf 'goto' basierendes Programm eine Funktionalität ist, die einer aus 'while' und 'if' besteht.
Beweisskizze anhand folgender Vorlesungsunterlagen :
Angenommen, Sie haben ein Programm, das aus einer Folge von Anweisungen bestehtSi ;; Stellen Sie jeder Anweisung ein Label voranS′i←Li:Si und aktualisieren Sie vorhandene goto-Anweisungen, um auf die richtigen Positionen zu verweisen. Deklarieren Sie eine Standortvariable.l←1 und schließen Sie die vorangestellten Anweisungen in eine while-Schleife ein, die fortgesetzt wird, bis die letzte Anweisung erreicht ist. while(l≠M) do S′ .
Wenden Sie die folgenden Umschreiberegeln auf anS′ ::
Das resultierende Programm ist dann frei von goto-Anweisungen, die die Entsprechung zwischen den beiden Paradigmen zeigen.
Ein formellerer Beweis ist in Ihrer zweiten Referenz enthalten .
Aktualisieren
Nachdem ich die Arbeit genauer studiert habe, ist dies meine Interpretation:
Basierend auf den Definitionen in CACM, lassen SieB′=D(α,{λ,R}) sei die Klasse der Turing-Maschinen, die durch die Sprache repräsentiert werden P′ das umfasst Flussdiagramme. LassenB′′=E(α,{λ,R}) sei die Klasse der Turing-Maschinen, die durch die Sprache repräsentiert werden P′′ das deckt die oben behandelte Transformation ab.
Laut CACM möchte der Autor nachweisen, dass eine Turingmaschine in der von beschriebenen Turingmaschinenfamilie existiertM∈B′ , dann gibt es eine entsprechende Turingmaschine in der Familie der von beschriebenen Turingmaschinen M∗∈B′′ .
Skizze des Beweises des Autors: Er tut dies, indem er aus der abgeleiteten Beziehung schöpftM∈B′ und M∈E(⋯) (Definition (5)) und richtet dann die Beziehung ein M∗∈E∗(⋯) . Für jede Komponente vonE(⋯) er zeichnet eine Eins-zu-Eins-Zuordnung mit denen von E∗(⋯) . So durch die Herstellung der Brücke zwischenM und M∗ durch E(⋯) der Autor beweist M∈B′⟹M∗∈B′′ .
quelle