回答編集履歴

2

後半部分の表現変更

2018/03/21 23:02

投稿

KSwordOfHaste
KSwordOfHaste

スコア18394

test CHANGED
@@ -30,14 +30,20 @@
30
30
 
31
31
  ---
32
32
 
33
+ 最適化について:
34
+
35
+ 上記はA*の戦略の基本部分を述べたものです。比較的小さな領域なら上記のままでもよいと思います。ただ領域が大きくなってくると以下のような最適化の必要性が高まると思います。
36
+
37
+
38
+
33
39
  - A*と上の論理の違い
34
40
 
35
- A*上の論理とどこがうかとえば、(4)で「最もゴールに近そうな格子から先に調べる」という工夫をしているだけです。(ただし!工夫をしているだけとは言いましたがこの工夫は計算量的に大変重要な工夫ですw;)
41
+ A*上の論理違い、(4)で「最もゴールに近そうな格子から先に調べる」という工夫をしているだけです。ただ計算量的に大変重要な工夫です
36
42
 
37
43
 
38
44
 
39
45
  - (4)のnextの見つけ方
40
46
 
41
- 毎回二次元の格子を端から順番に調べるというのは素朴ではありますが愚策です。10x10だとすると毎stepごに100個サーチせねばならずその殆どがスカなのでから。
47
+ 毎回二次元の格子を端から順番に調べるという素朴な方法もありますが、領域が大きめになってくると計算量が問題になってきます。例えばスタート地点やnextに値を書き込むき、その周りの0の格子調べてれをキューに入れると効果的と思います。そうしておくと、キューに入る格子数はたかだか数個ですので、全部の格子を調べるよりはるに高速にnextを見つけれます
42
48
 
43
- こういう点も工夫が必要です。スタート地点やnextに値を書き込むき、その周りの0の格子を調べてそをキューに入れるという方法がよいと思いそうておくと、キュー格子の数はかだか数個ですので、100個のサーチするよりはるかに高速にnextを見つけられます
49
+ (実際問題して10x10程度領域であば大した問題ではありせん。しかし100x100ぐらいと1stepあ10000回、最短経路を見つけでに最悪100万回オーダーのスキャンが必要になるためこうした工夫も考えたくなりま)

1

誤記訂正

2018/03/21 23:01

投稿

KSwordOfHaste
KSwordOfHaste

スコア18394

test CHANGED
@@ -24,7 +24,7 @@
24
24
 
25
25
 
26
26
 
27
- 要するに「格子の数値はスタート地点からその格子へたどり着くための最短経路の距離」だと思えばよいです。初期化する際の「0」という値にはそれほどの意味はなく「最短経路の距離」と区別できる値ならなんでもよいで
27
+ 要するに「格子の数値はスタート地点からその格子へたどり着くための最短経路の距離」だと思えばよいです。また初期化する際の「0」という値にはそれほどの意味はなく「最短経路の距離」と区別できる値ならでもよいでしょう
28
28
 
29
29
 
30
30
 
@@ -40,4 +40,4 @@
40
40
 
41
41
  毎回二次元の格子を端から順番に調べるというのは素朴ではありますが愚策です。10x10だとすると毎stepごとに100個のサーチをせねばならずその殆どがスカなのですから。
42
42
 
43
- こういう点も工夫が必要です。スタート地点やnextに値を書き込むとき、その周りの0の格子を調べてそれをキューに入れるとう方法がよいと思います。そうしておくと、キューに入る格子の数はたかだか数個ですので、100個のサーチをするよりはるかに高速にnextを見つけられます。
43
+ こういう点も工夫が必要です。スタート地点やnextに値を書き込むとき、その周りの0の格子を調べてそれをキューに入れるとう方法がよいと思います。そうしておくと、キューに入る格子の数はたかだか数個ですので、100個のサーチをするよりはるかに高速にnextを見つけられます。