PowerPoint Presentation
|
|
|
- いおり おとじま
- 6 years ago
- Views:
Transcription
1 幅優先探索アルゴリズム 復習 Javaでの実装 深さ優先探索 復習 Javaでの実装 1
2 探索アルゴリズムの一覧 問題を解決するための探索 幅優先探索 深さ優先探索 深さ制限探索 均一コスト探索 反復深化法 欲張り探索 山登り法 最良優先探索 2
3 Breadth-first search ( 幅優先探索 ) 探索アルゴリズムはノードやリンクからなる階層的なツリー構造で構成された状態空間を探索するアルゴリズムです 幅優先探索アルゴリズムは根ノード (Root node) から隣接している全てのノードを順番に探索していき これを繰り返すことでゴールノードをみつけます ゴールノードが見つかるか すべてのノードが探索されたら探索は終了です つまり ある階層をすべて調べ それが終わるとひとつ深い階層をすべて調べることを繰り返します 横型探索ともいいますアルゴリズムの流れ : 1. キューを作成し スタートノードを加える. 2. ループ : - もしキューが空なら探索失敗として探索を終了する - 先頭のノードを開きキューから取り除く - もし開いたノードがゴールなら それを解決策として探索を終了する. - 開いたノードの子ノードをキューの後ろに追加する 3
4 例 : 1-> 2->3->4->5->6 -> 4
5 子ノードを最後に追加する FIFO 型 (First In First Out) のデータ構造キューが実装に用いられる 5
6 6
7 擬似コード ( 幅優先探索 ) ArrayList queue = new ArrayLsit() ; 1 queue.add(initialnode) ; 2 while (queue.size()> 0) { 3 SearchNode testnode = (SearchNode)queue.firstElement() ; queue.remove(0) ; 3.1 if (testnode.state.equals(goalstate)) return testnode ;// ゴールを発見 3.2 if (!testnode.expanded) { testnode.expand(queue,searchnode.last); return null ;
8 public void breadthfirst() { ArrayList<Node> open = new ArrayList<Node>(); open.add(start); ArrayList<Node> closed = new ArrayList<Node>(); boolean success = false; int step = 0; g.setcolor(color.red); while (true) { 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 = open.get(0); open.remove(0); if (node == goal) { success = true; break; else { ArrayList<Node> children = node.getchildren(); closed.add(node); for (int i = 0; i < children.size(); i++) { Node m = children.get(i); if (!open.contains(m) &&!closed.contains(m)) { num++; m.setpointer(node); if (m == goal) { open.add(0, m); node.gethm().get(m).draw(g, num); sleep(); break; else { open.add(m); node.gethm().get(m).draw(g, num); sleep(); if (success) { String result = printsolution(goal, ""); showdaialog(result); reset.setvisible(true); else { String result = " 探索失敗 "; showdaialog(result); reset.setvisible(true); 8
9 講義内の課題 なぜ 2 つの ArrayList(open, closed) を使用するのか説明しなさい : Figure 1 Figure 1 において, open に保存されているノードを書きなさい [ ] Closed に保存されているノードを書きなさい [ ] 9
10 Depth-first search( 深さ優先探索 ) 深さ優先探索アルゴリズムはルートノード木の最初のノード (Root node) から ゴールノードが見つかるか葉 ( 子の無いノード Leaf node) に行き着くまで深く掘り下げて探索を行います もしゴールノードが見つからなかったら引き返し 次のまだ通っていないノードから葉ノードに到達するまで探します つまり 深く進んでいき 行き止まったら引き返して また深く進みながらゴール目指します 縦型探索ともいう アルゴリズムの流れ : 1. キューを作成し スタートノードを加える. 2. ループ : - もしキューが空なら探索失敗として探索を終了する - 先頭のノードを開きキューから取り除く - もし開いたノードがゴールなら それを解決策として探索を終了する. - 開いたノードの子ノードをキューの先頭に追加する 10
11 例 : 11
12 子ノードを先頭に追加する LIFO 型 (Last In First Out) のデータ構造キューが実装に用いられる 12
13 13
14 擬似コード ( 深さ優先探索 ) ArrayList queue = new ArrayLsit() ; 1 queue.add(initialnode) ; 2 while (queue.size()> 0) { 3 SearchNode testnode = (SearchNode)queue.firstElement() ; queue.remove(0) ; 3.1 if (testnode.state.equals(goalstate)) return testnode ;// ゴールを発見 3.2 if (!testnode.expanded) { testnode.expand(queue,searchnode.front); return null ;
15 public void breadthfirst() { ArrayList<Node> open = new ArrayList<Node>(); open.add(start); ArrayList<Node> closed = new ArrayList<Node>(); boolean success = false; int step = 0; g.setcolor(color.red); while (true) { 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 = open.get(0); open.remove(0); if (node == goal) { success = true; break; else { ArrayList<Node> children = node.getchildren(); closed.add(node); for (int i = 0; i < children.size(); i++) { Node m = children.get(i); if (!open.contains(m) &&!closed.contains(m)) { num++; m.setpointer(node); if (m == goal) { open.add(0, m); node.gethm().get(m).draw(g, num); sleep(); break; else { open.add(m); node.gethm().get(m).draw(g, num); sleep(); if (success) { String result = printsolution(goal, ""); showdaialog(result); reset.setvisible(true); else { String result = " 探索失敗 "; showdaialog(result); reset.setvisible(true); 赤文字が子ノードを調べて ArrayListに追加している部分 15 どう変更すべきか?
16 講義内の課題 1. breathfirst() メソッドを理解する 2. SearchingApplet.java を実行する 3. breathfirst() メソッドと depthfirst() で異なる点を書く 4. 参考サイト 16
17 宿題 プログラムのコメントを参考にして Applet 上に表示する都市の数を増やす breathfirst() メソッドを理解し depthfirst() メソッドを実装する depthfirst() メソッドのコードと説明を A4 の紙に印刷して再来週提出 ( 提出日 :10 月 24 日 ). 17
グラフの探索 JAVA での実装
グラフの探索 JAVA での実装 二つの探索手法 深さ優先探索 :DFS (Depth-First Search) 幅優先探索 :BFS (Breadth-First Search) 共通部分 元のグラフを指定して 極大木を得る 探索アルゴリズムの利用の観点から 利用する側からみると 取り替えられる部品 どちらの方法が良いかはグラフに依存 操作性が同じでなければ 共通のクラスの派生で作ると便利 共通化を考える
人工知能入門
藤田悟 黄潤和 探索とは 探索問題 探索解の性質 探索空間の構造 探索木 探索グラフ 探索順序 深さ優先探索 幅優先探索 探索プログラムの作成 バックトラック 深さ優先探索 幅優先探索 n 個の ueen を n n のマスの中に 縦横斜めに重ならないように配置する 簡単化のために 4-ueen を考える 正解 全状態の探索プログラム 全ての最終状態を生成した後に 最終状態が解であるかどうかを判定する
alg2015-6r3.ppt
1 アルゴリズムとデータ 構造 第 6 回探索のためのデータ構造 (1) 補稿 : 木の巡回 ( なぞり ) 2 木の巡回 ( 第 5 回探索 (1) のスライド ) 木の巡回 * (traverse) とは 木のすべての節点を組織だった方法で訪問すること 深さ優先探索 (depth-first search) による木の巡回 *) 木の なぞり ともいう 2 3 1 3 4 1 4 5 7 10
人工知能論 第1回
知能システム学 第 8 回ー第 9 回 探索による問題解決 (1) ソフトウェア情報学部 David Ramamonjisoa 問題解決エージェントの例 旅行者 ( エージェント ) が, ルーマニアの都市 Arad に滞在している. エージェントは, 次の日 Bucharest から飛び立つチケットを持っている. どうすればよいか. ゴールの定式化 : ドライブして Bucharest に行く を,
Microsoft PowerPoint - 06graph3.ppt [互換モード]
I118 グラフとオートマトン理論 Graphs and Automata 担当 : 上原隆平 (Ryuhei UEHARA) [email protected] http://www.jaist.ac.jp/~uehara/ 1/20 6.14 グラフにおける探索木 (Search Tree in a Graph) グラフG=(V,E) における探索アルゴリズム : 1. Q:={v { 0 }
Microsoft PowerPoint - uninformed.ppt
知能情報処理探索 (2) 先を読んで知的な行動を選択するエージェント 知識なしの探索 しらみつぶしの探索 (Uninformed Search) 探索戦略とその評価基準幅優先探索 (BFS) 深さ優先探索 (DFS) 反復深化探索 (ID) 前回の授業では, 一般的な探索アルゴリズムを学んだが, 今回はさらに具体的なアルゴリズムとして,,, を学ぶ. これらのアルゴリズムは, 与えられた探索空間の性質について特別な知識がないことを前提としたもので,
ALG2012-A.ppt
21279 ([email protected]) http://www.info.kochi-tech.ac.jp/k1sakai/lecture/alg/212/index.html (, )ε m = n C2 = n ( n 1) / 2 m = n ( n 1) 1 11 11 111 11 111 111 1111 1 1 11 1 11 11 111 4-dimentional
アルゴリズムとデータ構造1
1 2005 7 22 22 (sakai.keiichi@kochi [email protected]) http://www.info.kochi-tech.ac.jp/k1sakai/lecture/alg/2005/index.html tech.ac.jp/k1sakai/lecture/alg/2005/index.html f(0) = 1, f(x) =
untitled
21174 ([email protected]) http://www.info.kochi-tech.ac.jp/k1sakai/lecture/alg/211/index.html tech.ac.jp/k1sakai/lecture/alg/211/index.html html (, )ε m = n C2 = n ( n 1) / 2 m = n ( ( n
AI 三目並べ
ame Algorithms AI programming 三目並べ 2011 11 17 ゲーム木 お互いがどのような手を打ったかによって次にどのような局面になるかを場合分けしていくゲーム展開を木で表すことができる 相手の手 ゲームを思考することは このゲーム木を先読みしていく必要がある ミニマックス法 考え方 では局面が最良になる手を選びたい 相手は ( 自分にとって ) 局面が最悪となる手を選ぶだろう
ALG ppt
2012614 ([email protected]) http://www.info.kochi-tech.ac.jp/k1sakai/lecture/alg/2012/index.html 1 2 2 3 29 20 32 14 24 30 48 7 19 21 31 4 N O(log N) 29 O(N) 20 32 14 24 30 48 7 19 21 31 5
1/8 ページ Java 基礎文法最速マスター Java Javaの文法一覧です 他の言語をある程度知っている人はこれを読めばJavaの基礎をマスターしてJavaを書くことができるようになっています 簡易リファレンスとしても利用できると思いますので これは足りないと思うものがあれば教えてください 1. 基礎 class の作成プログラムはclassに記述します たとえばSampleという名前のclassを作る場合
K227 Java 2
1 K227 Java 2 3 4 5 6 Java 7 class Sample1 { public static void main (String args[]) { System.out.println( Java! ); } } 8 > javac Sample1.java 9 10 > java Sample1 Java 11 12 13 http://java.sun.com/j2se/1.5.0/ja/download.html
アルゴリズムとデータ構造1
1 200972 (sakai.keiichi@kochi [email protected]) http://www.info.kochi ://www.info.kochi-tech.ac.jp/k1sakai/lecture/alg/2009/index.html 29 20 32 14 24 30 48 7 19 21 31 Object public class
Exam : 1z1-809-JPN Title : Java SE 8 Programmer II Vendor : Oracle Version : DEMO Get Latest & Valid 1z1-809-JPN Exam's Question and Answers 1 from Ac
Actual4Test http://www.actual4test.com Actual4test - actual test exam dumps-pass for IT exams Exam : 1z1-809-JPN Title : Java SE 8 Programmer II Vendor : Oracle Version : DEMO Get Latest & Valid 1z1-809-JPN
Microsoft PowerPoint - algo ppt [互換モード]
( 復習 ) アルゴリズムとは アルゴリズム概論 - 探索 () - アルゴリズム 問題を解くための曖昧さのない手順 与えられた問題を解くための機械的操作からなる有限の手続き 機械的操作 : 単純な演算, 代入, 比較など 安本慶一 yasumoto[at]is.naist.jp プログラムとの違い プログラムはアルゴリズムをプログラミング言語で表現したもの アルゴリズムは自然言語でも, プログラミング言語でも表現できる
8 if switch for while do while 2
(Basic Theory of Information Processing) ( ) if for while break continue 1 8 if switch for while do while 2 8.1 if (p.52) 8.1.1 if 1 if ( ) 2; 3 1 true 2 3 false 2 3 3 8.1.2 if-else (p.54) if ( ) 1; else
明解Javaによるアルゴリズムとデータ構造
74 searching 3 key Fig.3-1 75 2を探索 53を探索 3-1 5 2 1 4 3 7 4 を探索 Fig.3-1 76 3 linear searchsequential search 2 Fig.3-2 0 ❶ ❷ ❸ 配列の要素を先頭から順に走査していく 探索すべき値と等しい要素を発見 Fig.3-2 6 4 3 2 3-2Fig.3-3 77 5 Fig.3-3 0
Java講座
~ 第 1 回 ~ 情報科学部コンピュータ科学科 2 年竹中優 プログラムを書く上で Hello world 基礎事項 演算子 構文 2 コメントアウト (//, /* */, /** */) をしよう! インデントをしよう! 変数などにはわかりやすい名前をつけよう! 要するに 他人が見て理解しやすいコードを書こうということです 3 1. Eclipse を起動 2. ファイル 新規 javaプロジェクト
メソッドのまとめ
メソッド (4) 擬似コードテスト技法 http://java.cis.k.hosei.ac.jp/ 授業の前に自己点検以下のことがらを友達に説明できますか? メソッドの宣言とは 起動とは何ですか メソッドの宣言はどのように書きますか メソッドの宣言はどこに置きますか メソッドの起動はどのようにしますか メソッドの仮引数 実引数 戻り値とは何ですか メソッドの起動にあたって実引数はどのようにして仮引数に渡されますか
Java演習(4) -- 変数と型 --
50 20 20 5 (20, 20) O 50 100 150 200 250 300 350 x (reserved 50 100 y 50 20 20 5 (20, 20) (1)(Blocks1.java) import javax.swing.japplet; import java.awt.graphics; (reserved public class Blocks1 extends
r3.dvi
00 3 2000.6.10 0 Java ( 7 1 7 1 GSSM 1? 1 1.1 4 4a 4b / / 0 255 HTML X 0 255 16 (0,32,255 #0020FF Java xclock -bg #0020FF xclock ^C (Control C xclock 4c 1 import java.applet.applet; import java.awt.*;
PowerPoint Template
プログラミング演習 Ⅲ Linked List P. Ravindra S. De Silva e-mail: [email protected], Room F-413 URL: www.icd.cs.tut.ac.jp/~ravi/prog3/index_j.html 連結リストとは? 一つひとつの要素がその前後の要素との参照関係をもつデータ構造 A B C D 連結リストを使用する利点 - 通常の配列はサイズが固定されている
文字列操作と正規表現
文字列操作と正規表現 オブジェクト指向プログラミング特論 2018 年度只木進一 : 工学系研究科 2 文字列と文字列クラス 0 個以上の長さの文字の列 Java では String クラス 操作 文字列を作る 連結する 文字列中に文字列を探す 文字列中の文字列を置き換える 部分文字列を得る 3 String クラス 文字列を保持するクラス 文字列は定数であることに注意 比較に注意 == : オブジェクトとしての同等性
Brekeke PBX - Version 2.1 ARSプラグイン開発ガイド
Brekeke PBX Version 2.1 ARS プラグイン開発ガイド Brekeke Software, Inc. バージョン Brekeke PBX v2.1 ARS プラグイン開発ガイド, 2008 年 2 月 著作権本書の著作権は Brekeke Software, Inc. にあります Copyright 2003-2008 Brekeke Software, Inc. 本書の一部または全部を
Java プログラミング Ⅰ 7 回目 switch 文と論理演算子 今日の講義講義で学ぶ内容 switch 文 論理演算子 条件演算子 条件判断文 3 switch 文 switch 文 式が case のラベルと一致する場所から直後の break; まで処理しますどれにも一致致しない場合 def
Java プログラミング Ⅰ 7 回目 switch 文と論理演算子 今日の講義講義で学ぶ内容 switch 文 論理演算子 条件演算子 条件判断文 3 switch 文 switch 文 式が case のラベルと一致する場所から直後の まで処理しますどれにも一致致しない場合 default: から直後の まで処理します 式の結果 ラベル 定数 整数または文字 (byte, short, int,
JavaプログラミングⅠ
Java プログラミング Ⅰ 6 回目 if 文と if else 文 今日の講義で学ぶ内容 関係演算子 if 文と if~else 文 if 文の入れ子 関係演算子 関係演算子 ==,!=, >, >=,
新・明解Javaで学ぶアルゴリズムとデータ構造
第 3 章 探索 Arrays.binarySearch 743 3-1 探索 探索 searching key 配列 探索 Fig.3-1 b c 75 a 6 4 3 2 1 9 8 2 b 64 23 53 65 75 21 3-1 53 c 5 2 1 4 3 7 4 Fig.3-1 a 763 3-2 線形探索 線形探索 linear search sequential search 2
: : : TSTank 2
Java (8) 2008-05-20 Lesson6 Lesson5 Java 1 Lesson 6: TSTank1, TSTank2, TSTank3 java 2 car1 car2 Car car1 = new Car(); Car car2 = new Car(); car1.setcolor(red); car2.setcolor(blue); car2.changeengine(jet);
Java updated
Java 2003.07.14 updated 3 1 Java 5 1.1 Java................................. 5 1.2 Java..................................... 5 1.3 Java................................ 6 1.3.1 Java.......................
haskell.gby
Haskell 1 2 3 Haskell ( ) 4 Haskell Lisper 5 Haskell = Haskell 6 Haskell Haskell... 7 qsort [8,2,5,1] [1,2,5,8] "Hello, " ++ "world!" "Hello, world!" 1 + 2 div 8 2 (+) 1 2 8 div 2 3 4 map even [1,2,3,4]
離散数学
離散数学 最小全域木と最大流問題 落合秀也 今日の内容 最小全域木 プリムのアルゴリズム 最大流問題 フォード ファルカーソンのアルゴリズム 今日の内容 最小全域木 プリムのアルゴリズム 最大流問題 フォード ファルカーソンのアルゴリズム 最小全域木を考える Minimum Spanning Tree Problem ラベル付 ( 重み付 ) グラフ G(V, E) が与えられたとき ラベルの和が最小となる全域木を作りたい
PowerPoint プレゼンテーション
ループ ループとは? ある条件を満たすまで 指定の命令を繰り返す Do... Loop For Next For Each Next While WEnd ループの種類 Do Loop Do While 条件 ステートメント Loop Do ステートメント Loop While 条件 Do Until 条件 ステートメント Loop Do ステートメント Until Loop 条件 Do Loop
アルゴリズムとデータ構造1
1 2007 6 26 26 (sakai.keiichi@kochi [email protected]) http://www.info.kochi-tech.ac.jp/k1sakai/lecture/alg/2007/index.html tech.ac.jp/k1sakai/lecture/alg/2007/index.html FIFO (46 ) head,
class IntCell { private int value ; int getvalue() {return value; private IntCell next; IntCell next() {return next; IntCell(int value) {this.value =
Part2-1-3 Java (*) (*).class Java public static final 1 class IntCell { private int value ; int getvalue() {return value; private IntCell next; IntCell next() {return next; IntCell(int value) {this.value
TestDesign for Web
発行日 2012/6/21 発行元 株式会社アープ 本書は Web でのテスト自動化における Test Design の一連の操作方法まとめたものです Test Design のメニューの説明やより詳細な使い方については ユーザーズガイド を参照してください 目次 1. はじめに... 1 2. 環境構築... 2 2.1. Selenium のサイトについて... 2 2.2. Selenium
データ構造
アルゴリズム及び実習 7 馬青 1 表探索 定義表探索とは 表の形で格納されているデータの中から条件に合ったデータを取り出してくる操作である 但し 表は配列 ( 連結 ) リストなどで実現できるので 以降 表 の代わりに直接 配列 や リスト などの表現を用いる場合が多い 表探索をただ 探索 と呼ぶ場合が多い 用語レコード : 表の中にある個々のデータをレコード (record) と呼ぶ フィールド
Android プログラム ガイド
モバイルプリンター Android モジュールプログラムガイド ESC/POS, CPCL Ver. 1.00 更新履歴 日付 バージョン 対象 SDK 履歴 2012/11/29 0.08 新規 2014/03/18 1.00 1.064 USB インターフェース対応 1 1. 目次 Android モジュールプログラムガイド... 0 更新履歴... 1 1. 目次... 2 2. はじめに...
プログラミング入門1
プログラミング入門 1 第 5 回 繰り返し (while ループ ) 授業開始前に ログオン後 不要なファイルを削除し て待機してください Java 1 第 5 回 2 参考書について 参考書は自分にあったものをぜひ手元において自習してください 授業の WEB 教材は勉強の入り口へみなさんを案内するのが目的でつくられている これで十分という訳ではない 第 1 回に紹介した本以外にも良書がたくさんある
Android Layout SDK プログラミング マニュアル
プログラミングマニュアル Version 1.3.0 用 更新履歴 年月日 バージョン 履歴 2014.09.08 1.2.0.0 新規 (Layout Utilities ユーザーズ ガイド ) 2016.08.16 1.3.0.0 モバイル端末用レイアウトで直線部品と矩形部品に対応 モバイル端末用レイアウトファイルを CLFX から XML へ変更 Layout Print Engine から
やさしいJavaプログラミング -Great Ideas for Java Programming サンプルPDF
pref : 2004/6/5 (11:8) pref : 2004/6/5 (11:8) pref : 2004/6/5 (11:8) 3 5 14 18 21 23 23 24 28 29 29 31 32 34 35 35 36 38 40 44 44 45 46 49 49 50 pref : 2004/6/5 (11:8) 50 51 52 54 55 56 57 58 59 60 61
break 文 switch ブロック内の実行中の処理を強制的に終了し ブロックから抜けます switch(i) 強制終了 ソースコード例ソースファイル名 :Sample7_1.java // 入力値の判定 import java.io.*; class Sample7_1 public stati
Java プログラミング Ⅰ 7 回目 switch 文と論理演算子 今日の講義で学ぶ内容 switch 文 論理演算子 条件演算子 条件判断文 3 switch 文 switch 文 式が case のラベルと一致する場所から直後の まで処理しますどれにも一致しない場合 default: から直後の まで処理します 式は byte, short, int, char 型 ( 文字または整数 ) を演算結果としますラベルには整数リテラル
プログラミング入門1
プログラミング入門 2 第 8 回表形式データ (1) 1 テーマ : 表形式データ (1) 配列と複合データを用いた表形式データ データの登録 データの検索 データの更新 実際的はソフトウェアでは 表形式データの ( 例えば データベースのデータ ) を利用する場面が非常に多く とても重要である そこで 表形式を扱うプログラミングを繰り返しとりあげる 2 テーマ : 表形式データ (1) 配列と複合データを用いた表形式データ
r02.dvi
172 2017.7.16 1 1.1? X A B A X B ( )? IBMPL/I FACOM PL1 ( ) X ( ) 1.2 1 2-0 ( ) ( ) ( ) (12) ( ) (112) (131) 281 26 1 (syntax) (semantics) ( ) 2 2.1 BNF BNF(Backus Normal Form) Joun Backus (grammer) English
(Java/FX ) Java CD Java version Java VC++ Python Ruby Java Java Eclipse Java Java 3 Java for Everyone 2 10 Java Midi Java JavaFX Shape Canvas C
(Java/FX ) Java CD Java version 10.0.1 Java VC++ Python Ruby Java Java Eclipse Java Java 3 Java for Everyone 2 10 Java Midi Java JavaFX Shape Canvas Canvas Eclipse Eclipse M... 1 javafx e(fx)clipse 3.0.0
新・明解Java入門
537,... 224,... 224,... 32, 35,... 188, 216, 312 -... 38 -... 38 --... 102 --... 103 -=... 111 -classpath... 379 '... 106, 474!... 57, 97!=... 56 "... 14, 476 %... 38 %=... 111 &... 240, 247 &&... 66,
main
14 1. 12 5 main 1.23 3 1.230000 3 1.860867 1 2. 1988 1925 1911 1867 void JPcalendar(int x) 1987 1 64 1 1 1 while(1) Ctrl C void JPcalendar(int x){ if (x > 1988) printf(" %d %d \n", x, x-1988); else if(x
