L12: A Wumpus World Project To be checked on 16 th January 11:10~12:40 In Lab1.

Slides:



Advertisements
Similar presentations
SPIN. Seach Optimization Exhaustive search requires so much time and memory to perform verification realistically, must perform some shortcuts –reduce.
Advertisements

SPSSによるHosmer-Lemeshow検定について
あなたは真夜中に 山の頂上を目指す登山者です
7.n次の行列式   一般的な(n次の)行列式の定義には、数学的な概念がいろいろ必要である。まずそれらを順に見ていく。
9.線形写像.
時間的に変化する信号. 普通の正弦波 は豊富な情報を含んでいません これだけではラジオのような複雑な情報 を送れない 振幅 a あるいは角速度 ω を時間的に変化 させて情報を送る.
情報処理A 第10回 Excelの使い方 その3.
九州大学 岡村研究室 久保 貴哉 1. 利用中のAPの数の推移 2 横軸:時刻 縦軸:接続要求数 ・深夜では一分間で平均一台、 昼間では平均14台程度の接続 要求をAPが受けている。 ・急にAPの利用者数が増えてく るのは7~8時あたり.
麻雀ゲーム 和島研究室 ソ 小林巧人
5.連立一次方程式.
相関.
ノイズ. 雑音とも呼ばれる。(音でなくても、雑 音という) 入力データに含まれる、本来ほしくない 成分.
青森大学 5 号館の 模型の設計と製作 ソ 小山 内 拓真
広告付き価格サービ ス 小園一正. はじめに 世の中には様々な表現方法の広告があり ます。その中でも私たち学生にとって身 近にあるものを広告媒体として取り入れ られている。 価格サービス(無料配布のルーズリー フ)を体験したことにより興味を惹かれ るきっかけとなった。主な目的は、これ.
素数判定法 2011/6/20.
フーリエ係数の性質. どこまで足す? 理想的には無限大であるが、実際に はそれは出来ない これをフーリエ解析してみる.
1章 行列と行列式.
本宮市立白岩小学校. 1 はじめに 2 家庭学習プログラム開発の視点 ① 先行学習(予習)を生かした 確かな学力を形成する授業づく り ② 家庭との連携を図った家庭学習の習慣化.
プログラミングⅠ( 1 組) 第 9 回
フーリエ級数. 一般的な波はこのように表せる a,b をフーリエ級数とい う 比率:
プログラミング入門2 第4回 式文 代入式 論理演算子 ループの脱出、スキップ 情報工学科 篠埜 功.
3.エントロピーの性質と各種情報量.
Excelによる積分.
1 6.低次の行列式とその応用. 2 行列式とは 行列式とは、正方行列の特徴を表す一つのスカ ラーである。すなわち、行列式は正方行列からスカ ラーに写す写像の一種とみなすこともできる。 正方行列 スカラー(実数) の行列に対する行列式を、 次の行列式という。 行列 の行列式を とも表す。 行列式と行列の記号.
計算のスピードアップ コンピュータでも、sin、cosの計算は大変です 足し算、引き算、掛け算、割り算は早いです
線形符号(10章).
1 0章 数学基礎. 2 ( 定義)集合 集合については、 3セメスタ開講の「離散数学」で詳しく扱う。 集合 大学では、高校より厳密に議論を行う。そのために、議論の 対象を明確にする必要がある。 ある “ もの ” (基本的な対象、概念)の集まりを、 集合という。 集合に含まれる “ もの ” を、集合の要素または元という。
1 0章 数学基礎. 2 ( 定義)集合 集合については、 3セメスタ開講の「離散数学」で詳しく扱う。 集合 大学では、高校より厳密に議論を行う。そのために、議論の 対象を明確にする必要がある。 ある “ もの ” (基本的な対象、概念)の集まりを、 集合という。 集合に含まれる “ もの ” を、集合の要素または元という。
人工知能特論II 第7回 二宮 崇.
信号測定. 正弦波 多くの場合正弦波は 0V の上下で振動する しかし、これでは AD 変換器に入れら れないので、オフ セットを調整して データを取った.
1 9.線形写像. 2 ここでは、行列の積によって、写像を 定義できることをみていく。 また、行列の積によって定義される写 像の性質を調べていく。
アルゴリズムとデータ構造 補足資料 7-4 「単純交換ソート exsort.c 」 横浜国立大学 理工学部 数物・電子情報系学科 富井尚志.
3.プッシュダウンオートマトンと 文脈自由文法
ビット. 十進数と二進数 十進数  0から9までの数字を使って 0、1、2、3、4、5、6、7、8、9、 10、11、12 と数える 二進数  0と1を使って 0、1、10、11、100、101、11 0、111 と数える.
3.正方行列(単位行列、逆行列、対称行列、交代行列)
プログラミング演習B ML編 第3回 2010/6/15 (コミ) 2010/6/16 (情報・知能) 住井 ~sumii/class/proenb2010/ml3/
トランスフォームロボット の設計と製作 矢萩研究室 ソ 神貴浩 創作ゼミナールⅠ 計画発表.
伝わるスライド 中野研究室 M2 石川 雅 信. どのようなスライドを作れば良 いか 伝えたいこと.
7班 加地 健太郎 (MadaiPage 担当) 熊谷 勇人( MapPage 担当) 田原春 勝太 (TopPage 担当) 森 健樹(パワーポイント、 photo 担当)
JPN 311: Conversation and Composition 許可 (permission)
地図に親しむ 「しゅくしゃくのちがう 地図を 使ってきょりを調べよ う1」 小学4年 社会. 山口駅裁判所 県立 美術館 サビエル 記念聖堂 山口市役所 地図で探そう 市民会館 県立 図書館.
方程式を「算木」で 解いてみよう! 愛媛大学 教育学部 平田 浩一.
C言語応用 構造体.
Servlet 入門 大岩研究室 川村昌弘. そもそも WEB アプリってなんやね ん n この研究会のテーマは『 WEB アプリケー ションの開発』でした. n じゃぁ WEB アプリケーションって何です か? o WEB アプリってどんなものがありますか? 検索エンジン 乗換え案内サイト 翻訳.
子供の判断支援システム 03k0014 岸原大祐. システム概要 天気データと個人データの二つから、 条件に応じて服装、行動等に対し、親 の代わりに子供に対してアドバイスを 行う。
JPN 312 (Fall 2007): Conversation and Composition 文句 ( もんく ) を言う.
移動エージェントプログラムの 動作表示のためのアニメーション言 語 名古屋大学情報工学コース 坂部研究室 高岸 健.
8.任意のデータ構造 (グラフの表現とアルゴリズム)
図書館の使い方 webペー ジ企画 グループ:いよかん メンバー: c07133 c クライアント情報  情報大学図書館の使い方  学生や学外からの来館者向け.
メニューに戻る メニューに戻る | 前表示スライド 前表示スライド G*power 3 の web ページ Windows はこちら Mac はこちら ダウンロード後,実行してインストール.
実験5 規則波 C0XXXX 石黒 ○○ C0XXXX 杉浦 ○○ C0XXXX 大杉 ○○ C0XXXX 高柳 ○○ C0XXXX 岡田 ○○ C0XXXX 藤江 ○○ C0XXXX 尾形 ○○ C0XXXX 足立 ○○
オセロの思考アルゴリズムについて 1103072 岩間 隆浩.
LANG3910 Japanese Ⅲ Lesson 14 依頼・現在進行形. 学習項目 1. 「て -form 」 2. 依頼表現 An expression of request 3. 相手の意向を尋ねる Ask someone’s mind 4. 現在進行形 Actions in Progress.
Exercise IV-A p.164. What did they say? 何と言ってましたか。 1.I’m busy this month. 2.I’m busy next month, too. 3.I’m going shopping tomorrow. 4.I live in Kyoto.
音の変化を視覚化する サウンドプレイヤーの作成
プログラミングの基礎知識 プログラミングの手順と重要概念 アルゴリズム. プログラミングの手順 コーディング エディタなどでコードを記述 コンパイル・インタープリタ 実行可能な形に翻訳 デバッグ(虫取り、不具合の調整) 完成!
HCC Hair Color Change. メンバー ソ 渋谷麻美 ソ 渋谷麻美 ソ 清野理衣子 ソ 清野理衣子 ソ 三上貴大 ソ 三上貴大.
本文. 考えながら読みましょ う 「いろいろなこと」( 3 行目)は何で すか 「①電話料金はコンビニで支払いをしていま す。いつでも払えますから、便利です。」 「②夕食はコンビニで買います。お弁当やお かずがいろいろありますから。」今、若者に 人気のあるコンビニは、いろいろなことをす るのに非常に便利な場所になった。
L6: Searching Program in Java Breadth-first search vs depth-first search.
1 Decisions in games Minimax algorithm  -  algorithm Tic-Tac-Toe game Decisions in games Minimax algorithm  -  algorithm Tic-Tac-Toe game.
L5: Searching Program in Java Breadth-first search vs depth-first search.
たくさんの人がいっしょに乗れる乗り物を 「公共交通」といいます バスや電車 と 自動車 の よいところ と よくない ところ よいところ と よくない ところ を考えてみよう!
Factory Method Pattern S. Yukita
1 Knowledge Representation Propositional Logic Vumpus World Knowledge Representation Propositional Logic Vumpus World.
1 PAGE of designing an agent Problem types Search Strategies PAGE of designing an agent Problem types Search Strategies.
1 Forward Chaining based rule base system. Reasoning with Rules  Knowledge represented as if-then rules –Natural –Easy to understand –Each rule as a.
英語勉強会 名手⇒詫間 2015/10/22. 原文 This study says acquiring motor skills support system. There is how to acquire moor skills that coach advises learner. Motor.
創造工学設計 I 電子情報工学科4年(前期) 9 回目 ( 18/6/2015) 担当 古山彰一
Where is Wumpus Propositional logic (cont…) Reasoning where is wumpus
地球儀と様々な地図. 1 球体としての地球 こうした現象はあることをイ メージすると理解できる。
Presentation transcript:

L12: A Wumpus World Project To be checked on 16 th January 11:10~12:40 In Lab1

Project Description: The wumpus world is a grid of squares surrounded by walls, where each square can contain an agent and objects as in Figure 1. The agent always starts in the lower left corner, a square that we will label [1,1]. The agent’s task is to find the gold, return to the start, the square [1,1]. Percepts: Breeze, Glitter, Smell Actions: go to left, go to right, go up, go down Goals: Get gold back to the start without entering pit or wumpus square Environment: squares adjacent to wumpus are smelly and square adjacent to pit are breezy (鬼の周り 4 マスは匂いがあり、穴の周り 4 マスには風がある。エージェント は鬼の場所、穴の場所は知らないが、推測することで回避する) PAGE Description: 鬼が島は壁で囲まれた格子状の正方形群で表されます。それぞれのマ スは図1で現れるような情報(注:鬼と穴情報を除く、匂いと風、財 宝のみ)を保持します。エージェントは常に左下(ラベル的に [1 , 1] )から行動を開始します。エージェントの目的は財宝を手に入れ、 スタート地点(ラベル的に [1, 1] )に戻ります。

Wumpus world s p START g g w b A p p b b b b b s s A b g g p s w Agent Breeze Gold Pit Stench Wumpus 0 Figure 1. Wumpus world description

Wumpus world s p START g g w b A p p b b b b b s s A b g g p s w Agent Breeze Gold Pit Stench Wumpus ok 0 Figure 1. Wumpus world description

Wumpus world START g g A A b g g p s w Agent Breeze Gold Pit Stench Wumpus ok 0 Figure 1. Wumpus world description

Project Goal: Find a path From the square where there is the gold to the node[0]. Hints: Redefine Node class  This class should be able to include at least the following variables; nodeIdgoldStatesafeState the following methods; setNodeId()setGoldState()setSafeState() Redefine makeStateSpace() method  This method sets each node’s id, goldState, safeState gets the node’s id (where there is the gold) and sets this node as the start node builds a tree in which the start node is the root node, each node’s children nodes are neighboring safe nodes.

Depth First Search parentID 0 : 1 : 4 : last parentID 1 : 0 : 5 : last parentID 4 : 5 : 0 : last parentID 5 : 4 : 6 : 9 : 1 : last parentID 6 : 5 : last parentID 9 : 5 : last STEP:0 OPEN:[9] closed:[] STEP:1 OPEN:[5] closed:[9] STEP:2 OPEN:[4, 6, 1] closed:[9, 5] STEP:3 OPEN:[0, 6, 1] closed:[9, 5, 4] *** Solution *** 0 <- 4 <- 5 <- 9 Breadth First Search parentID 0 : 1 : 4 : last parentID 1 : 0 : 5 : last parentID 4 : 5 : 0 : last parentID 5 : 4 : 6 : 9 : 1 : last parentID 6 : 5 : last parentID 9 : 5 : last STEP:0 OPEN:[9] closed:[] STEP:1 OPEN:[5] closed:[9] STEP:2 OPEN:[4, 6, 1] closed:[9, 5] STEP:3 OPEN:[0, 6, 1] closed:[9, 5, 4] *** Solution *** 0 <- 4 <- 5 <- 9 実行例 1 :

Depth First Search parentID 0 : 1 : 4 : last parentID 1 : 0 : 5 : last parentID 4 : 5 : 0 : last parentID 5 : 6 : 4 : 9 : 1 : last parentID 6 : 5 : last parentID 9 : 5 : last STEP:0 OPEN:[9] closed:[] STEP:1 OPEN:[5] closed:[9] STEP:2 OPEN:[6, 4, 1] closed:[9, 5] STEP:3 OPEN:[4, 1] closed:[9, 5, 6] STEP:4 OPEN:[0, 1] closed:[9, 5, 6, 4] *** Solution *** 0 <- 4 <- 5 <- 9 Breadth First Search parentID 0 : 1 : 4 : last parentID 1 : 0 : 5 : last parentID 4 : 5 : 0 : last parentID 5 : 6 : 4 : 9 : 1 : last parentID 6 : 5 : last parentID 9 : 5 : last STEP:0 OPEN:[9] closed:[] STEP:1 OPEN:[5] closed:[9] STEP:2 OPEN:[6, 4, 1] closed:[9, 5] STEP:3 OPEN:[4, 1] closed:[9, 5, 6] STEP:4 OPEN:[0, 1] closed:[9, 5, 6, 4] *** Solution *** 0 <- 4 <- 5 <- 9 実行例 2 :

parentID 0 : 1 : 4 : last parentID 1 : 0 : 5 : last parentID 4 : 0 : 5 : last parentID 5 : 1 : 4 : 6 : 9 : last parentID 6 : 5 : last parentID 9 : 5 : last STEP:0 OPEN:[9] closed:[] STEP:1 OPEN:[5] closed:[9] STEP:2 OPEN:[1, 4, 6] closed:[9, 5] STEP:3 OPEN:[0, 4, 6] closed:[9, 5, 1] *** Solution *** 0 <- 1 <- 5 <- 9 Breadth First Search parentID 0 : 1 : 4 : last parentID 1 : 0 : 5 : last parentID 4 : 0 : 5 : last parentID 5 : 1 : 4 : 6 : 9 : last parentID 6 : 5 : last parentID 9 : 5 : last STEP:0 OPEN:[9] closed:[] STEP:1 OPEN:[5] closed:[9] STEP:2 OPEN:[1, 4, 6] closed:[9, 5] STEP:3 OPEN:[0, 4, 6] closed:[9, 5, 1] *** Solution *** 0 <- 1 <- 5 <- 9 実行例 3 :

Define a Node class  Construct a tree or a graph  Searching class Node { String name; // Add necessary variables Vector children; Node pointer; // 解表示のためのポイン タ Node(String theName){ name = theName; children = new Vector(); } // Add necessary methods …… } import java.util.*; public class Search{ Node node[]; Node goal; Node start; Search(){ makeStateSpace(); } private void makeStateSpace(){ // Rewrite this method } public void breadthFirst(){ … } public void depthFirst(){ … } public void printSolution(Node theNode){ … } public static void main(String args[]){ … (new Search()).breadthFirst(); (new Search()).depthFirst(); … }

class Node { String name; Vector children; Node pointer; // 解表示のためのポインタ Node(String theName){ name = theName; children = new Vector(); } public String getName(){ return name; } public void setPointer(Node theNode){ this.pointer = theNode; } public Node getPointer(){ return this.pointer; } public void addChild(Node theChild){ children.addElement(theChild); } public Vector getChildren(){ return children; } public String toString(){ String result = name; return result; } 1 private void makeStateSpace(){ node = new Node[10]; node[0] = new Node("L.A.Airport"); start = node[0]; node[1] = new Node("UCLA"); node[2] = new Node("Hoolywood"); node[3] = new Node("Anaheim"); node[4] = new Node("GrandCanyon"); node[5] = new Node("SanDiego"); node[6] = new Node("Downtown"); node[7] = new Node("Pasadena"); node[8] = new Node("DisneyLand"); node[9] = new Node("Las Vegas"); goal = node[9]; node[0].addChild(node[1]); node[0].addChild(node[2]); node[1].addChild(node[2]); node[1].addChild(node[6]); node[2].addChild(node[3]); node[2].addChild(node[6]); node[2].addChild(node[7]); node[3].addChild(node[4]); node[3].addChild(node[7]); node[3].addChild(node[8]); node[4].addChild(node[8]); node[4].addChild(node[9]); node[5].addChild(node[1]); node[6].addChild(node[5]); node[6].addChild(node[7]); node[7].addChild(node[8]); node[7].addChild(node[9]); node[8].addChild(node[9]); } 2 Rewrite this method!! Redefine this class!!

public void breadthFirst(){ Vector open = new Vector(); open.addElement(node[0]); Vector closed = new Vector(); boolean success = false; int step = 0; for(;;){ System.out.println("STEP:"+(step++)); System.out.println("OPEN:"+open.toString()); System.out.println("closed:"+closed.toString()); if(open.size() == 0){// open は空か? success = false; break; } else { Node node = (Node)open.elementAt(0); open.removeElementAt(0); if(node == goal){ success = true; break; } else { Vector children = node.getChildren(); closed.addElement(node); for(int i = 0 ; i < children.size() ; i++){ Node m = (Node)children.elementAt(i); if(!open.contains(m) && !closed.contains(m)){ m.setPointer(node); if(m == goal){ open.insertElementAt(m,0); } else { open.addElement(m); } } } } } } if(success){ System.out.println("*** Solution ***"); printSolution(goal); } public void depthFirst(){ Vector open = new Vector(); open.addElement(node[0]); Vector closed = new Vector(); boolean success = false; int step = 0; for(;;){ System.out.println("STEP:"+(step++)); System.out.println("OPEN:"+open.toString()); System.out.println("closed:"+closed.toString()); if(open.size() == 0){ success = false; break; } else { Node node = (Node)open.elementAt(0); open.removeElementAt(0); if(node == goal){ success = true; break; } else { Vector children = node.getChildren(); closed.addElement(node); int j = 0; for(int i = 0 ; i < children.size() ; i++){ Node m = (Node)children.elementAt(i); if(!open.contains(m) && !closed.contains(m)){ m.setPointer(node); if(m == goal){ open.insertElementAt(m,0); } else { open.insertElementAt(m,j); } j++; } } } } } if(success){ System.out.println("*** Solution ***"); printSolution(goal); } } 3

public void printSolution(Node theNode){ if (theNode == start) { System.out.println(theNode.toString()); } else { System.out.print(theNode.toString()+" <- "); printSolution(theNode.getPointer()); } public static void main(String args[]){ if(args.length != 1){ System.out.println("USAGE:"); System.out.println("java Search [Number]"); System.out.println("[Number] = 1 : Bredth First Search "); System.out.println("[Number] = 2 : Depth First Search "); } else { int which = Integer.parseInt(args[0]); switch(which){ case 1: // 幅優先探索 System.out.println("\nBreadth First Search"); (new Search()).breadthFirst(); break; case 2: // 深さ優先探索 System.out.println("\nDepth First Search"); (new Search()).depthFirst(); break; default: System.out.println(" Please input numbers 1 to 2 "); }