Wie kann man den Satz des strukturierten Programms beweisen?

7

Wikipedia :

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).

kol
quelle
Vielleicht möchten Sie den Wikipedia-Eintrag über die im ersten Artikel beschriebene primitive Sprache P '' lesen .
Res
1
Übrigens hat Böhm in diesem ersten Artikel tatsächlich ein explizites P '' - Programm für jede Reihe von Grundfunktionen bereitgestellt, die zusammen dazu dienen, jede berechenbare Funktion zu berechnen. (Das Zitat in Ihrem "Update" bezieht sich auf die Sprache P ''.)
Res
1
@res Ja, ich konnte Informationen zu P '' finden, aber ich würde trotzdem gerne das Originalpapier des ICC Bulletins lesen. Martin Davis schrieb eine kurze Rezension darüber: "Der Autor beweist, dass jede teilweise rekursive Funktion von einer Turing-Maschine einer besonders einfachen Art berechnet werden kann. Der Beweis, der Programmiersprachentechniken verwendet, ist ordentlich und kurz." Das macht mich neugierig :)
Kol
1
Wenn es von Nutzen ist, finden Sie hier einen UCLA / SRLF WorldCat-Link (klicken Sie auf das Element "Weltweite Bibliotheken" auf dieser Seite), auf dem viele Bibliotheken - einschließlich einiger in Europa - aufgeführt sind, die Kopien des International Computation Center Bulletin besitzen . (Ich habe diesen Wikipedia-Artikel über P '' erstellt, nachdem ich vor etwa zehn Jahren während der Recherche am SRLF auf Böhms Artikel von 1964 gestoßen war .)
Res
@res Danke! Ich habe eine Anfrage an den Document Delivery Service der UCLA / SRLF gesendet: library.ucla.edu/service/…
kol

Antworten:

10

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 besteht Si;; Stellen Sie jeder Anweisung ein Label voranSiLi:Siund aktualisieren Sie vorhandene goto-Anweisungen, um auf die richtigen Positionen zu verweisen. Deklarieren Sie eine Standortvariable.l1und schließen Sie die vorangestellten Anweisungen in eine while-Schleife ein, die fortgesetzt wird, bis die letzte Anweisung erreicht ist. while(lM) do S.

Wenden Sie die folgenden Umschreiberegeln auf an S::

  • Gehe zu Regel: Ersetzen Li goto Lj mit if (l=i) then lj
  • If-goto-Regel: Ersetzen Li:if (cond) then goto Lj mit if (l=i(cond)) then lj else ll+1
  • Ansonsten Regel: Ersetzen Li:Si mit if l=i then Si,ll+1

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 Sie B=D(α,{λ,R}) sei die Klasse der Turing-Maschinen, die durch die Sprache repräsentiert werden Pdas 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 existiert MB, dann gibt es eine entsprechende Turingmaschine in der Familie der von beschriebenen Turingmaschinen MB.

Skizze des Beweises des Autors: Er tut dies, indem er aus der abgeleiteten Beziehung schöpft MB und ME() (Definition (5)) und richtet dann die Beziehung ein ME(). 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 MBMB.

GEL
quelle
Vielen Dank! Im zweiten Teil des CACM-Papiers (Abschnitt 3) verbinden die Autoren diese Ergebnisse mit der P '' - Sprache (definiert im ICC Bulletin Paper) und Turing-Maschinen. Würden Sie bitte auch ein paar Worte über diesen Zusammenhang schreiben?
Kol
Sie schreiben: "Im zweiten Teil der Arbeit [...] werden die Ergebnisse des ersten Teils [...] verwendet, um zu beweisen, dass jede Turing-Maschine in ein geschriebenes Programm reduzierbar oder in einem bestimmten Sinne äquivalent zu diesem ist." in einer Sprache, die als Formationsregeln nur Komposition und Iteration zulässt. " Das obige Zitat aus Wikipedia bezieht sich auf diesen zweiten Teil, und dies ist der Teil des CACM-Papiers, den ich verstehen möchte.
Kol