構造化プログラムの定理を証明する方法は?


7

ウィキペディア

構造化プログラムの定理[...]は、[...]アルゴリズムは3つの制御構造のみを使用して表現できると述べています。彼らです

  • 1つのサブプログラムを実行してから、別のサブプログラム(シーケンス)を実行する
  • ブール式(選択)の値に従って2つのサブプログラムの1つを実行する
  • ブール式が真になるまでサブプログラムを実行する(反復)

この定理は、次の論文で開発されました。

  • C.ベーム、「チューリングマシンと関連プログラミング言語のファミリーについて」、ICC Bull。、3、185〜194、1964年7月。
  • C.ベーム、G。ヤコピニ、「流れ図、チューリングマシン、および2つの形成ルールのみを持つ言語」、Comm。ACMの9(5):366–371,1966。

残念ながら、1つ目は実際には利用できず、2つ目は(少なくとも私にとって)少し不可解であることに加えて、1つ目を参照しているため、証明を理解するのに問題があります。誰か助けてもらえますか?証拠を提示する現代の紙や本はありますか?ありがとう。


更新

正確には、CACMペーパーの第2部(セクション3)を理解したいと思います。著者はセクション1で次のように書いています。

論文の2番目の部分(C.Böhm著)では、以前の論文のいくつかの結果が報告されており[8]、次にこの論文の最初の部分の結果を使用して、すべてのチューリングマシンが決定的な感覚は、構成と反復のみを形成規則として認める言語で書かれたプログラムと同等です。

ここで[8]は利用できないICC Bulletinペーパーを指します。ウィキペディアからの上記の引用がCACM論文のこの2番目の部分を参照していることは容易に理解できます(チューリングマシンはアルゴリズムの正確な定義として機能します。「構成」はシーケンスを意味します。反復により選択を置き換えることができます)。


最初の論文で説明されている原始言語P ''のWikipediaエントリを読むことをお勧めします。
2013年

1
ところで、その最初の論文では、ベームは実際に、任意の計算可能な関数を計算するのに役立つ基本的な関数のセットのそれぞれに対して明示的なP ''プログラムを提供しました。(「更新」の引用は言語P ''を参照しています。)
res

1
@resはい、Pに関する情報を見つけることができましたが、それでも元のICC Bulletinペーパーを読みたいと思います。Martin Davisはそれについて簡単なレビューを書いています:「著者はすべての部分的な再帰関数が特に単純な種類のチューリングマシンで計算できることを証明します。プログラミング言語の技術を利用した証明は簡潔で簡潔です。」これは私に興味を
起こさ

1
それが役に立ったら、ここにUCLA / SRLF WorldCatリンク(そのページの「Worldwide libraries」項目をクリック)を示します。これには、ヨーロッパを含む、International Computation Center Bulletinのコピーを所有する多くのライブラリが表示されます。(私は、約10年前のSRLFでの研究中にベームの1964年の論文に出会った後、Pに関するWikipediaの記事を作成しました。)
res

@resありがとうございます!私はUCLA / SRLFのドキュメントデリバリーサービスにリクエストを送信した:library.ucla.edu/service/...
KOL

回答:


10

ベーム・ヤコピニの定理は基本的に、「goto」に基づくプログラムは「while」と「if」で構成されるプログラムと同等の機能であると述べています。

以下の講義ノートに基づく証明のスケッチ:

一連のステートメントで構成されるプログラムがあるとします。各ステートメントの前にラベル、既存のgotoステートメントを更新して正しい場所を指すようにします。ロケーション変数宣言し、最後のステートメントに到達するまで続くwhileループで接頭辞付きステートメントをラップします。SiSiLi:Sil1while(lM) do S

次の書き換えルールを適用します。S

  • Gotoルール:を置き換えますLi goto Ljif (l=i) then lj
  • if-gotoルール:をLi:if (cond) then goto Ljif (l=i(cond)) then lj else ll+1
  • それ以外の場合のルール:をLi:Siif l=i then Si,ll+1

結果のプログラムには、2つのパラダイム間の対応を示すgotoステートメントが含まれていません。

より正式な証明は、2番目のリファレンスで提供されます。

更新

論文を詳しく調べた後、これが私の解釈です。

CACMでの定義に基づいて、言語表されるチューリングマシンのクラスとするフロー図をカバーしています。ましょうチューリングマシンのクラスは、言語によって表現することが上記の変換をカバーする。B=D(α,{λ,R})PB=E(α,{λ,R})P

CACMによれば、によって記述されたチューリングマシンのファミリーにチューリングマシンが存在する場合、対応するチューリングマシンのファミリーにチューリングマシンが存在することを著者は証明したいと考えています。によって記述されます。MBMB

著者の証明のスケッチ:彼は、導出された関係および(定義(5))から描画して設定します。関係アップします。各コンポーネントに対して、彼はコンポーネントとの1対1のマッピングを描画します。したがって、を介してと間にブリッジを確立することにより、著者は証明します。MBME()ME()E()E()MME()MBMB


どうもありがとうございました!CACM論文の第2部(セクション3)で、著者たちはこれらの結果をP ''言語(ICC Bulletin論文で定義されている)とTuringマシンに結び付けています。このつながりについても少し説明していただけますか?
2013年

彼らは、「論文の2番目の部分[...]最初の部分の結果[...]は、すべてのチューリングマシンが次のように書かれたプログラムに還元可能であるか、または決定された意味で同等であることを証明するために使用されます。フォーメーションは作曲と反復のみを認める言語で。」ウィキペディアからの上記の引用はこの2番目の部分を参照しており、これは私が理解したいCACM論文の一部です。
2013年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.