日本語プログラミング言語mind で 最短経路検索プログラムを書いてみました。
距離表をハードコーディングしていますが、実用にする場合は、外部ファイルから読み込むように改造する必要があります。
地点名の前に番号を付けているので、実行時に2重に表示されますが、プログラミングを分かり易くするためです。
各種mind で動くはずです。
mindインストールサイト (無料です)
経路検索プログラム
※ 最短経路および距離を表示
地点数は 数値 11箇所。
地点数+1は 数値 12箇所。
地名は 文字列定数配列
「1青森」 「2仙台」 「3新潟」 「4東京」 「5名古屋」
「6福井」 「7大阪」 「8岡山」 「9鳥取」 「10松江」 「11広島」。
距離一覧表は 構造体
距離は 変数
出発地ごとの距離表は 地点数ぶんの 距離
全体は 地点数ぶんの 出発地ごとの距離表。
出発地は 変数。
目的地は 変数。
番号は 変数。
通過地は 地点数+1の 変数。
通過済?は 地点数の 変数。
pは 変数。
経過距離は 変数。
最短距離は 変数。
最短地点数は 変数。
最短経路は 地点数+1の 変数。
最大値は 数値 99999km。
距離に最大値を入れるとは
地点数を 回数指定して
回数を 出発地に 入れ
地点数を 回数指定して
最大値を 距離(出発地、回数)に 入れる
繰り返す
繰り返すこと。
設定とは
w距離は 変数
目的地と w距離に 入れ
w距離を 距離(出発地、目的地)に 入れ
w距離を 距離(目的地、出発地)に 入れること。
距離の設定処理とは
距離に最大値を入れ
1を 出発地に 入れ
2まで 350km 設定 3まで 600km 設定
2を 出発地に 入れ
3まで 270km 設定 4まで 370km 設定
3を 出発地に 入れ
4まで 320km 設定 5まで 480km 設定
6まで 380km 設定
4を 出発地に 入れ
5まで 350km 設定
5を 出発地に 入れ
6まで 170km 設定 7まで 180km 設定
6を 出発地に 入れ
7まで 230km 設定 9まで 300km 設定
7を 出発地に 入れ
8まで 180km 設定 9まで 190km 設定
8を 出発地に 入れ
9まで 120km 設定 10まで 180km 設定
11まで 170km 設定
9を 出発地に 入れ
10まで 120km 設定
10を 出発地に 入れ
11まで 180km 設定すること。
出発地および目的地の入力とは
ここから
改行し
「出発地番号を入力(0なら終了) → 」と 表示し
数値入力し 出発地に 入れ
出発地が 0と 等しい
ならば 終わり
つぎに
出発地が 1 以上 かつ 出発地が 地点数 以下
ならば 打ち切り
つぎに
繰り返し
ここから
改行し
「目的地番号を入力 → 」と 表示し
数値入力し 目的地に 入れ
目的地が 1 以上 かつ 目的地が 地点数 以下
かつ
目的地が 出発地と 異なる
ならば 打ち切り
つぎに
繰り返すこと。
p-1は pから 一つ引いたもの。
p+1は pに 一つ加えたもの。
後退地は 通過地(p-1)。
現在地は 通過地(p)。
前進地は 通過地(p+1)。
前進とは
経過距離を 距離(現在地、前進地)だけ 増加し
通過済?(前進地)を セットし
pを 一つ増加し
通過地(p+1)を クリアすること。
後退とは
経過距離を 距離(後退地、現在地)だけ 減少し
通過済?(現在地)を クリアし
pを 一つ減少すること。
到着処理とは
経過距離を 最短距離に 入れ
通過地を 最短経路に 入れ
pを 最短地点数に 入れること。
最短経路を探すとは
1を pに 入れ
通過済み?と 通過地を クリアし
通過済み?(出発地)を セットし
出発地を 通過地(1)に 入れ
最大値を 最短距離に 入れ
ここから
通過地(p+1)を 一つ増加し
[p = 1] かつ [通過地(2) > 地点数]
ならば 終り
つぎに
[通過地(p+1) > 地点数]
ならば 後退し もう一度
つぎに
通過済?(前進地)
ならば もう一度
つぎに
[(経過距離 + 距離(現在地、前進地)) >= 最短距離]
ならば もう一度
つぎに
前進し
現在地が 目的地に 等しい
ならば 到着処理し
後退し もう一度
つぎに
繰り返す。
メインは
距離の設定処理し
「最短距離計算を開始します。」と 表示し 2行 複数改行し
地点数で 回数指定し
回数を 四桁で数値表示し 空白表示し
地名(回数)を 表示し
繰り返し
ここから
出発地および目的地の入力をし
出発地が 0と 等しい
ならば 打ち切り
つぎに
2行 複数改行し
地名(出発地)を 表示し 「から 」を 表示し
地名(目的地)を 表示し 「まで 」を 表示し
最短経路を探し
「 ** 最短距離は 」を 表示し
最短距離を 数値表示し 「km」を 表示し
2行 複数改行し
「 ** 最短コースは 」を 表示し
最短地点数で 回数指定し
最短経路(回数)を 番号に 入れ
地名(番号)を 表示し
回数が 最短地点数より 小さい
ならば 「→」を 表示し
つぎに
繰り返し
繰り返しする。
