4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

日本語プログラミング言語Mind で経路検索

Posted at

日本語プログラミング言語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行  複数改行し
          「  **  最短コースは  」を  表示し          
            最短地点数で  回数指定し
                    最短経路(回数)を  番号に 入れ
                  地名(番号)を  表示し
                    回数が  最短地点数より  小さい
                      ならば 「→」を  表示し  
                      つぎに
         繰り返し     
    繰り返しする。

実行結果

keiro.png

4
1
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?