質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
アルゴリズム

アルゴリズムとは、定められた目的を達成するために、プログラムの理論的な動作を定義するものです。

Q&A

解決済

1回答

799閲覧

【アルゴリズム】ダイクストラ法で迷路を解きたい

nnahito

総合スコア2004

アルゴリズム

アルゴリズムとは、定められた目的を達成するために、プログラムの理論的な動作を定義するものです。

0グッド

0クリップ

投稿2017/08/05 06:44

質問概要

ダイクストラ法で迷路を解く際、迷路の隣接行列はどうすればいい?

質問

ダイクストラ法で迷路を最短距離で求める場合なのですが、
色々資料を見て回ったところ、隣接行列を使ってコストを定義するというところにたどり着きました。

しかし、その迷路のコストを定義する隣接行列はどのように生成するのでしょうか?

例えば、6*6の迷路があった場合、隣接行列は6行*6列=36行列となってしまいます。(あってますか?)
そして、隣接しているマス目のコスト(例えば1)を入れると、
1行目は
0 ,1 ,0 ,0 ,0 ,0 ,1 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0
のようになります。

こういった考え方であっているのでしょうか?
もっとスマートなやり方が有る気がします。

そのあたりのお知恵を貸していただけないでしょうか?
よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

例えば、66の迷路があった場合、隣接行列は6行6列=36行列となってしまいます。(あってますか?)

いえ、マス目とマス目を移動するコストを入れますので、36*36の行列になります。

隣接しているマス目のコスト(例えば1)を入れると、

隣接していないところが0の場合、そっちのほうが低コストになってしまいます。巨大な値(全マス目の数より大きな値や無限大)を入れておく必要があります。

投稿2017/08/05 06:53

maisumakun

総合スコア145184

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nnahito

2017/08/05 06:55

ご回答ありがとうございます。 > いえ、マス目とマス目を移動するコストを入れますので、36*36の行列になります。 お恥ずかしい…… たしかにそうですねw > 隣接していないところが0の場合、そっちのほうが低コストになってしまいます。巨大な値(全マス目の数より大きな値や無限大)を入れておく必要があります。 こちら、参考にしていたサイトさんだと、動けるのは1以上の数値のマス目でやっていたので、 そのまま書いておりました。 結局のところ、このやり方が最適というお話でよろしいでしょうか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問