Tree Search(樹狀搜尋)

一、什麼是 Tree Search(樹狀搜尋)? 在人工智慧(AI)與演算法中,許多問題都可以表示成一棵樹(圖一): 起點(A) / | \ B C D /|\ | / \ E F G H I J 每個節點(Node)代表一種狀態(State)。 例如: 迷宮中的位置 棋局的盤面 路徑規劃中的城市 遊戲中的決策 搜尋演算法的目的: 從起點找到目標節點(Goal Node) 二、Breadth First Search (BFS) 核心思想 先搜尋離起點最近的節點。 一層一層往外擴展。 Level 0: A Level 1: B C D Level 2: E F G H I J 搜尋順序: A B C D E F G H I J 圖一結果: A → B → C → D → E → F → G → H → I → J 使用資料結構 Queue(佇列) FIFO: First In First Out 先進先出 例如: Queue: A 取出A 加入B,C,D Queue: B,C,D BFS特性 優點 如果邊權重相同: BFS一定找到最短路徑。 缺點 需要大量記憶體。 假設每個節點有10個子節點: 深度5: 10^5 = 100000 需要保存很多節點。 時間複雜度 O(V + E) V = Vertex(節點數) E = Edge(邊數) 三、Depth First Search (DFS) 核心思想 一路往下走到底。 不能走才回頭。 A | B | E 然後: A | B | F 搜尋順序 圖一結果: A B E F G C H D I J 使用資料結構 Stack(堆疊) LIFO Last In First Out 後進先出 例如: push(B) push(C) push(D) pop() => D DFS特性 優點 記憶體需求小。 只需保存: 目前路徑 即可。 缺點 可能找到很差的解。 例如: A ├── Goal └── 巨大子樹 DFS可能先跑完整個巨大子樹。 時間複雜度 O(V+E)...

Webduino Blockly 編輯器如何在本機端運行

Webduino Blockly是網頁式的線上程式積木編輯器,採用JavaScript的語法,本文要說明如何在自己的機器上建立本機端的Webduino Blockly 編輯器。

所需軟體如下:
1. Python版本:2.7 (或 3.6)
2. Node.js
3. Browser瀏覽器:Google Chrome

底下是在安裝上述軟體的一些注意事項。

Python 安裝

記得勾選「Add Python 3.6 to PATH」

Node.js安裝

筆者是下載64-bit的安裝檔

Chrome安裝

這部分使用預設的安裝選項即可。


下載Webduino Blockly程式碼

安裝完上述軟體後,到 https://github.com/webduinoio/webduino-blockly 下載程式碼的ZIP壓縮檔:


解壓縮後紀錄資料夾的路徑。筆者是在 E:\Download\webduino-blockly-gh-pages

接著從Windows的【開始】開啟命令提示字元

切換到webduino-blockly程式碼的資料夾,須根據Webduino Blockly程式碼解壓後的路徑來下指令,此處提供筆者所用的指令畫面做為參考:

e:  這個指令是用來切換到硬碟E槽。

cd 切換資料夾(change directory)


接著使用python內建的SimpleHTTPServer模組,
Python 2.7 指令為 python -m SimpleHTTPServer
Python 3.6 指令為 python -m http.server


接著用瀏覽器開啟 http://127.0.0.1:8000

大功告成,以上就會形成一個區域網路了。

筆者用一台筆電使用Wifi無線上網,用這台筆電當Webduino Blockly主機,就可以讓相同的Wifi區網中的平板電腦來使用Webduino Blockly了。
若您覺得文章寫得不錯,請點選文章上的廣告,來支持小編,謝謝。

留言

這個網誌中的熱門文章