...

情報工学演習Ⅰ 「認知システム論」 2013 年 6 月 3 日

by user

on
Category: Documents
16

views

Report

Comments

Transcript

情報工学演習Ⅰ 「認知システム論」 2013 年 6 月 3 日
2013 年 6 月 3 日
情報工学演習Ⅰ 「認知システム論」
 「探索」に関する以下の設問に解答し,授業時間内に提出してください.
 時間内に提出できないときは,6 月 7 日(金)までに佐藤助教(8-03 室)に提出してください.
1
以下の文の空所にあてはまる適切な用語を答えなさい.
1
探索問題は,1つの
2
,
1
3
の集合,
4
検査手続き,および
から
3
に達するまでの
一般的な探索アルゴリズムは,
5
と呼ばれるデータ構造を用いて,探索を制御する.
類の情報からなる.
2
の4種
の列を,その探索問題の解
という.
1
まず,アルゴリズムの実行開始時点で,
6
する.つぎに,その
2
に対して適用可能な
8
と
をすべて適用してすべての後続状態
6
を生成し,その1つ1つを表すノードを生成する.そして,
各ノードを
6
を表すノードを生成し,探索木の
を
7
,生成された
とし,その2つのノードを,親子関係を表す辺で結ぶ.
8
今度は,いま生成された
6
のそれぞれが
る.すなわち,一般に,アルゴリズムは探索木の
9
の役割を果たして同様な処理を続け
のどれか1つを
7
として選び,
そのノードが表す状態に対して適用可能なオペレータをすべて適用してすべての後続状態を
生成し,その1つ1つを表す
7
長させていく.
8
8
から
を生成し,親と子を辺で結ぶことによって,探索木を成
10
の集合を作る操作を
10
本動作は,このようにノードを次々と
して
5
という.アルゴリズムの基
3
を成長させていき,
ノー
ドが生成されるのを待つことである.
このような探索アルゴリズムの実装は,ノードのリストを用いたつぎのような考え方で行
うことができる.まず,
5
10
に含まれるノードは未
10
か
済みかのいずれ
10
かである.これらのノードを分けて,それぞれリストに並べて保持しておく.未
11
ードのリストを
ぶ.
11
7
リストの中から
12
から取り除いて
済みノードのリストを
を選ぶときには先頭から選び,それを
を
11
リストに追加するときには,何らかの
いて適切な位置に挿入する.その特別な場合として,
14
このリストは,
ムは
16
呼ばれる
15
と呼ばれる
探索となる.一方,
18
12
リストと呼
11
リスト
13
に基づ
リストに移す.
8
一方,生まれた
10
リストと呼び,
ノ
8
8
を常に先頭に追加する場合は,
型(LIFO)のデータ構造となり,そのアルゴリズ
を常に末尾に追加する場合は,リストは
型(FIFO)のデータ構造となり,そのアルゴリズムは
19
17
と
探索となる.
ノードはいくつかのフィールドからなる構造データとして実装し,そのうちの1つのフィ
ールドには,
7
に,それをたどれば
問題の解となる.
を指し示す
6
20
を格納しておけば,
3
ノードを発見したとき
までの経路が得られるので,それを逆順に出力したものが,探索
2
下図の迷路に関して,A から Y までの 25 個の状態からなる状態空間を考え,入口 A か
ら出口 Y までの経路を発見する探索問題を考える.迷路の中では,A→G のように斜めには
進めないものとする.また,A→B→A のように直前の地点にただちに戻ることはしないもの
とする.
以下の設問に回答しなさい.ただし,設問(1)~(3)においては,探索方向に迷ったとき(親
ノードの評価値が同じであるため,選択を一意に行えないとき)は,アルファベット順が小
さいもの(たとえば,F より B)を優先するものとする.また,異なる2つのノードが同じ
状態(地点)を表すものかどうかはチェックせず,そのようなノードは探索木に重複して出
現するものとする.
(1) 幅優先探索によって経路を求めたときの探索木を示し,探索の順番(展開したノードの
順番)をそのノードに付記しなさい.
(2) 深さ優先探索では経路が求められないことを説明しなさい.また,深さ優先探索によっ
て経路を求めるためのアルゴリズムの修正案を簡単に述べ,実際に経路が求められたと
きの探索木を示し,探索の順番をそのノードに付記しなさい.
(3) A*アルゴリズムによって経路を求めたときの探索木を示し,探索の順番をそのノード
に付記しなさい.ただし,評価関数は, f (n) = g (n) + h(n) とする. g (n) は A から地点
n までの移動距離である. h(n) はヒューリスティック関数であり,迷路に壁がないと
仮定したときの地点 n から Y までの移動距離(マンハッタン距離)である.
(4) 上記(3)で用いたヒューリスティック関数 h(n) は許容的であることを説明しなさい.
3
つぎのように定式化された探索問題について考える.
•
状態の集合は,自然数全体の集合 {1, 2,3,} である.
•
初期状態は,1 である.
•
オペレータとして,以下に示す A, B の2つがある.
A( x) =
x + 1, B ( x) =
3x
すなわち, A は現在の状態に 1 を加えた状態に遷移させ, B は現在の状態を 3 倍した状態
に遷移させる.たとえば,初期状態 1 から最初に A ,次に B を適用すると,状態は 1 → 2 → 6
と遷移する.
•
各状態遷移には 1 だけコストがかかり,状態遷移列(経路)のコストはその状態遷移の回
数(経路の長さ)に等しい.たとえば,上記の経路 1 → 2 → 6 のコストは 2 である.
•
目標状態(ゴール)は,状態 12 である.
(1) この探索問題を A*アルゴリズムで解いたときに,最初に見つかる解を示しなさい.解が得
られた時点での探索木も,あわせて図示すること.ただし,状態 n から目標状態までの最小
コストの見積もり,すなわちヒューリスティック関数をつぎのように定義する.
12 − n if x ≤ 12
h( n) = 
 ∞ if x > 12
(2) 上で求めた解は最適解(最小コストの解)ではないことを示しなさい.
4
つぎのような初期配置のブロック並べパズルについて考える.
B
B
B
黒い駒 B が3個,白い駒 W が3個と空所
W
W
W
が1カ所ある.このパズルは,つぎのように
プレイする.
(a) 1個の駒は,隣の空所へ単位コスト(1)で移動できる.
(b) 1個の駒は,2個以上の駒を飛び越して移動できる.そのときのコストは,飛び越した
駒の数に等しい.
(駒を1個だけ飛び越すということはできない.
)
パズルの目標は,すべての白い駒がすべての黒い駒の左に置かれることである.
(空所は無
視する.)
この問題に対するヒューリスティック関数 h(n) の案を1つ考え,A*アルゴリズムによって
作られる探索木を示しなさい.ただし,直前の状態にただちに戻るような状態遷移は考えな
いものとする.
h(n) の案が1つも思い付かないときは,探索木のすべてのノード n について h(n) = 0 とし
なさい.ただし,その場合には,かなり大きな探索木になることがあるので覚悟が必要であ
る。
Fly UP