ルート探索のプログラム
まず、 正多面体の頂点間を結ぶ各辺の結線情報をファイルから読み込むことから
考えましょう。ファイル形式はテキストファイルになります。以下に、そのファイル内
容を示します(正四面体の場合)。 結線がある部分については、 その情報は1で、
無い部分については、0になります。 また、自分同士の場合も、0としています。 数
字は半角で記述します。
A B C D
A 0,1,1,1
B 1,0,1,1
C 1,1,0,1
D 1,1,1,0
課題(その1)
正六面体・ 正八面体・ 正十二面体・ 正二十面体のそれぞれに関して、頂点間を
結ぶ各辺の結線情報を作成してください。
正六面体に関するプログラムを作ってみます。ルートを探索するアルゴリズムは二
つの部分からなります。 最初は、 上記の結線情報に基づいて始点から終点までの
間に6点を経由するルートを探すアルゴリズムです。各点でランダムに次に進む方
向を決めているので、ループになっているルートも含まれます。二番目は、これらの
ルートからループ状のものを取り除くと同時に、終点が指定された点になっているも
のに限定するアルゴリズムです。 モンテカルロ法の一種のようなプログラムになっ
ています。 このプログラムを修正して、正十二面体や正二十面体に適用する時に
は、試行回数を十分大きく取ってプログラムを実行してください。回数が十分でない
と、一部のルートを見逃す可能性があります。
次に、プログラムの詳細を示します。 プログラムはメインプログラムとルートを探索
するROUTEという外部副プログラムから構成されます。 プログラムを実行すると
二つの頂点を入力するための入力ウィンドウ とテキストウィンドウ が同時に開き
ます。始点と終点を順番に入力してOKボタンをクリックしてください。数秒後に、二
頂点間の全てのルートがテキストウィンドウ上に表示されます。
<十進BASICを使用>
正四面体については、 試行回数は100程度でも構いませんが、 ルート数が著しく
増える正六面体の場合はより大きく取ってください。 上のプログラムでは、10000
にしています。
以下の結果は、 上記のプログラムを使って求めた点Aから点Bまでのルートです。
全部で15のルートがあります。
また、点Aから点Fまでと点Aから点Gまでのルートに関しても示します。 それぞれ、
16と18のルートがあることが判ります。
RANDOMIZEを使っているので、ルート数は変わりませんが、個々のルートの順
番はプログラムを実行する度に変わってきます。
課題(その2)
正八面体・正十二面体・正二十面体に関する頂点間のルートを探すプログラムを
作成してください。