Path Finding 靜宜大學資工系 蔡奇偉 副教授.

Slides:



Advertisements
Similar presentations
做中国梦 走特色路 —— 宁波电大业余党校时政课 林志标 四川雅安地震 2013 年 4 月 20 日 8 时 02 分四川省雅安市芦山县(北纬 30.3, 东 经 )发生 7.0 级地震。震源深度 13 公里。震中距成都约 100 公里。成都、重庆及陕西的宝鸡、汉中、安康等地均有较.
Advertisements

第四章 搜索策略 4-3 状态空间的启发式搜索.
人工智能原理 第2章 搜索技术 (上).
《高级人工智能》参考书目 马少平,朱小燕。人工智能。清华大学出版社。 蔡自兴,徐光祐。人工智能及其应用。清华大学出版社。
武进区三河口中学欢迎您.
数据结构 Data Structures Prof. Qing WANG 王庆.
第四章 數列與級數 4-1 等差數列與級數 4-2 等比數列與級數 4-3 無窮等比級數 下一頁 總目錄.
Minimum Spanning Trees
Linear Programming: Introduction and Duality
計算機概論 蘇木春 中央大學資工系.
Chap5 Graph.
Supplement Data Mining 工具介紹 楊立偉教授 台灣大學工管系 2014 Fall 1.
Chapter 4 Spanning Trees
Chap5 Graph.
Chapter 6 Graph Chang Chi-Chung
Chapter 17 投資決策經濟分析.
圖論 (Graph Theory) B 電機四 大鳥 B 電機四 酋長 B 電機四 炫大
Graph 2 Michael Tsai 2012/5/1 連載: 學生上課睡覺姿勢大全
4B冊 認識公倍數和最小公倍數 公倍數和最小公倍數的關係.
Graph Theory Graph theory is the study of the properties of graph structures. It provides us with a language with which to talk about graphs.
Simulated Annealing 報告者:李怡緯 OPLAB in NTUIM.
Solving problems by searching 利用搜尋法解決問題
(Circular Linked Lists)
Methods 靜宜大學資工系 蔡奇偉副教授 ©2011.
Chapter 7 圖形與網路 資料結構導論 - C語言實作.
資料結構 第7章 圖形結構.
Informed search algorithms (接收資訊的搜尋演算法)
Chap3 Linked List 鏈結串列.
Chapter12 Graphs Definitions Applications Properties
Ch07 圖形與網路 淡江大學 周清江
Chapter 2 Basic Concepts in Graph Theory
Artificial Intelligence - 人工智慧導論
資料結構 優點 缺點 1 陣列 (Array) 沒有額外變量 (例head, next,...) 運作/操作較簡單 更新資料時,若要保持順序,需要移動較大量資料 靜態結構Static (宣告時已決定了陣列元素多少,不能在程式執行期間增減元素) 2 隊列Queue (FIFO) 容易更新 加入enqueue:
最短路徑 The Shortest Path.
Definition of Trace Function
本章結構 網路簡介 最短路徑問題 最小展開樹問題 最大流量問題 10-1.
遊戲人工智慧 (Game AI) 靜宜大學資工系 蔡奇偉 副教授.
数据结构 Data Structures Prof. Qing WANG 王庆.
计算机问题求解 – 论题 算法方法 2016年11月28日.
圓的定義 在平面上,與一定點等距的所有點所形成的圖形稱為圓。定點稱為圓心,圓心至圓上任意一點的距離稱為半徑,「圓」指的是曲線部分的圖形,故圓心並不在圓上.
蕭志明 老師 Algorithm(演算法) Ext:6779
蕭志明 老師 Algorithm(演算法) /FB:
Class & Object 靜宜大學資工系 蔡奇偉副教授 ©2011.
講師:郭育倫 第2章 效能分析 講師:郭育倫
以四元樹為基礎抽取圖片物件特徵 之 影像檢索
Course 8 回溯、分枝與限制 Backtracking, Branch-and-Bound
MicroSim pspice.
鄧姚文 資料結構 第八章:圖(Graph) 鄧姚文
Efficient Query Relaxation for Complex Relationship Search on Graph Data 李舒馨
赵才荣 同济大学,电子与信息工程学院,智信馆410室
Scratch: 動畫或遊戲編程 任務10:尋找小鬼.
12797: Letters ★★★☆☆ 題組:Problem Set Archive with Online Judge
動畫演示 Node規範了一些基本的方法,像是增加節點、刪除節點、讓節點做一些事、取得第n個節點等等
12.4滑轮和滑轮组 滑轮 定滑轮 动滑轮 滑轮组 巩固练习.
認識H1N1 盧亞人醫院 感控護士 劉秀屏.
MultiThread Introduction
資料結構與C++程式設計進階 期末考 講師:林業峻 CSIE, NTU 7/ 15, 2010.
在直角坐標平面上兩點之間 的距離及平面圖形的面積
All Sources Shortest Path The Floyd-Warshall Algorithm
Advanced Competitive Programming
Advanced Competitive Programming
圖形結構 Graph Structure chapter 9 德明科技大學資訊科技系.
10303: How Many Trees? ★★☆☆☆ 題組:Contest Archive with Online Judge
11506: Angry Programmer ★★★★☆ 題組:Contest Set Archive with Online Judge
指導老師:黃日鉦 組員名單:王友倫.李糧旭.王浩綱.黃種慶.郭宗維
11621 : Small Factors ★★☆☆☆ 題組:Problem Set Archive with Online Judge
4.理財規劃者適格性分析與實作 理財規劃重點 生涯階段 「就業前準備階段」(學習階段) 「初入社會階段」 「確定職涯階段」 「維持職涯階段」
第一章 直角坐標系 1-2 距離公式、分點坐標.
第二十五單元 等高線.
JAVA 程式設計與資料結構 第二十一章 Graph.
Presentation transcript:

Path Finding 靜宜大學資工系 蔡奇偉 副教授

大綱 Introduction Trial and Error 法 Contour Tracing 法 Collision Avoidance Tracks 法 Waypoint Pathfinding 法 Graph Search Algorithms Map Search Structures 美化路徑

Trial and Error 法 物體往目標方向移動 若碰到障礙物,則後退轉 45 度或 90 度,往前走一定距離,然後再轉往目標方向前進。

優點:演算法簡單。 缺點:找到的路徑可能顯得愚笨或不自然(如下圖所示)。

Contour Tracing 法 物體往目標方向移動。若碰到障礙物,則沿輪廓繞過障礙物,繼續往目標方向前進。 缺點:移動顯得笨拙。

Collision Avoidance Tracks 法 先在障礙物周圍(用程式或人工)規劃出避免碰撞的路徑。 物體接近障礙物時,沿著上述的路徑繞過障礙物,再朝目標前進。

Waypoint Pathfinding 法 在遊戲地圖上定義出若干的接駁點(waypoints)與它們之間的連接圖。 兩個接駁點之間的路徑就可以用圖論(Graph Theory)路徑搜尋演算法找出來(見後面的討論)。

Graph Search Algorithms Breadth-first Search Depth-first Search Bidirectional Search Greedy Best-first Search A* Search

Breadth-first Search(BFS) 以起點為中心,由近而遠地全面往「外」搜尋,直至碰到目標點為止。 優點:保證可找到最短路徑。 缺點:需要用大量的記憶體來儲存已展開但尚未檢視的節點。

Depth-first Search(DFS) 從起點開始,單線地往「前」搜尋。若無法再前進,則後退換另一條路線前進。搜尋直至碰到目標點為止。 優點:記憶體的需求較 BFS 低。 缺點:1. 若圖具有無限多個節點,可能無法走到目標。2. 找到的路徑也許不是最短的,

Bidirectional Search 從起點與終點用同樣的方法搜尋,直到發現交會點為止。找到的兩條路徑合併起來即為起點到終點的路徑。 優點:記憶體的需求較低。 缺點:程式比較複雜。

前述的 BFS 和 DFS 方法完全以圖的結構(即端點間的連接關係)來選擇下一個拜訪點。 另有一類搜尋演算法運用外在的資訊來選擇「可能更好」的下一個拜訪點,期望能更快地發現到達目標的路徑。這一類的演算法把已知和外在資訊轉化成一個函式 f(n) 來計算端點 n 目前的預估成本(estimated cost)。如果演算法永遠把具有最小函式值的已知但尚未拜訪的端點選擇為下一個拜訪點,則稱為 Best-first Search。 我們將用下一頁的 Romania 簡化地圖為例來介紹兩種 Best-first Search: Greedy Best-first Search 和 A* Search。

start goal 簡化的 Romania 地圖

Greedy Best-first Search heuristic function h(n) 的定義如下: h(n) = 從端點 n 到目標點路徑的最低成本預估值 此演算法把 h(n) 選為前述的 f(n),即 f(n) = h(n)。 以 Romania 地圖為例來說,我們可以定義 h(n) = hSLD(n) = 都市 n 和目標都市 Bucharest 的直線距離 下一頁表列出 hSLD (n) 的值。

Romania 各都市與 Bucharest 市之間的直線距離

前述演算法實作時必須考慮 backtracking 與排除迴路情況(如 Iasi 與 Neamt 之間) start goal solution

A* Search A*(讀作 A-star)是最著名的 best-first 搜尋法。它的函式 f(n) 定義如下: f(n) = g(n) + h(n) 其中,h(n) 如前所述,g(n) 則是從起點到端點 n 路徑的真實成本。因此, f(n) = 經過端點 n 所有路徑的最低預估成本 譬如:下兩頁顯示 A* 搜尋 Romania 地圖的過程。

start goal

A* Tree Search Algorithm function Search (start, goal) pool ← {start}; loop do if pool is empty return failure; node ← 從 pool 集合中取出 f 值最小的端點; if node is goal then return the solution path; 把與 node 相鄰的端點加入集合 pool 中; ※ 端點可重複展開 註:1. 集合 pool 可以用資料結構 priority queue 來製作。 2. 可以在 node 中記錄 parent 端點,藉以反求出 起點到終點的路徑。

A* Graph Search Algorithm function Search (start, goal) closed ← empty set; // 存放已展開過的端點 open ← {start}; loop do if open is empty return failure; node ← 從 open 中取出 f 值最小的端點; if node is goal then return the solution path; if node 不在集合 closed 中 把 node 加入集合 closed 中; 把與 node 相鄰的端點加入集合 open 中; ※ 端點不可重複展開

A heuristic h(n) is admissible if it never overestimates the cost to reach the goal. A heuristic h(n) is consistent if, for every node n and every successor node n' of n generated by any action a, the following inequality holds: h(n)  c(n, a, n') + h(n') where c(n, a, n') is the cost from n to n' due to action a. c(n, a, n') h(n) h(n') n n' goal

若 h(n) 是 admissible,則 A* Tree Search 演算法找出的路徑一定是最佳路徑。 f(G') = g(G') + h(G') = g(G') > C* 若 n 是最佳路徑上的一個節點,則 f(n) = g(n) + h(n)  C* 所以 f(n)  C* < f(G') 因此演算法會選擇節點 n 展開,繼續尋找最佳路徑。 = 0 start G' G n optimal path 不在最佳路徑上的目標點

若 h(n) 是 consistent,則 A* Graph Search 演算法找出的路徑一定是最佳路徑。 假定 m 是 n 在某路徑中的後繼節點。由 consistent 的定義,我們得到: f(m) = g(m) + h(m) = g(n) + c(n, a, m) + h(m)  g(n) + h(n) 所以 f 沿著路徑, 是一個非遞減函式。 因此,當演算法碰到第一個可展開的目標節點時,即找到了最佳的路徑。

Map Search Structures Retangular grid Quadtree Convex polygons Points of visibility

goal start

Retangular grid

Quadtree

Convex polygons

Points of visibility

美化路徑

References Books Websites: Andre LaMothe. Tricks of the Windows Game Programming Gurus. SAMS. 1999. S. Russell and P. Norvig. Artifucial Intelligence: A Modern Approach 2nd Ed. Prentice Hall. 2003. Mark DeLoura. Game Programming Gems. Charles River Media, Inc. 2000 Websites: Amit's Thoughts on Path-Finding and A-Star (http://theory.stanford.edu/~amitp/GameProgramming/)