1. 程式人生 > >人工智慧學習:python實現一致代價搜尋演算法

人工智慧學習:python實現一致代價搜尋演算法

執行例項:

input src city

Zerind

input dst city

Urziceni

dealnode:state:Zerind        parentstate:None        path cost:0

childnode:state:Oradea path cost:71

 add child to frontier

childnode:state:Arad path cost:75

 add child to frontier

dealnode:state:Oradea        parentstate:Zerind        path cost:71

childnode:state:Zerind path cost:142

childnode:state:Sibiu path cost:222

 add child to frontier

dealnode:state:Arad        parentstate:Zerind        path cost:75

childnode:state:Zerind path cost:150

childnode:state:Sibiu path cost:215

 replace state: Sibiu old cost:222 new cost:215

childnode:state:Timisoara path cost:193

 add child to frontier

dealnode:state:Timisoara        parentstate:Arad        path cost:193

childnode:state:Arad path cost:311

childnode:state:Lugoj path cost:304

 add child to frontier

dealnode:state:Sibiu        parentstate:Arad        path cost:215

childnode:state:Oradea path cost:366

childnode:state:Arad path cost:355

childnode:state:Fagaras path cost:314

 add child to frontier

childnode:state:Rimnicu Vilcea path cost:295

 add child to frontier

dealnode:state:Rimnicu Vilcea        parentstate:Sibiu        path cost:295

childnode:state:Sibiu path cost:375

childnode:state:Craiova path cost:441

 add child to frontier

childnode:state:Pitesti path cost:392

 add child to frontier

dealnode:state:Lugoj        parentstate:Timisoara        path cost:304

childnode:state:Timisoara path cost:415

childnode:state:Mehadia path cost:374

 add child to frontier

dealnode:state:Fagaras        parentstate:Sibiu        path cost:314

childnode:state:Sibiu path cost:413

childnode:state:Bucharest path cost:525

 add child to frontier

dealnode:state:Mehadia        parentstate:Lugoj        path cost:374

childnode:state:Lugoj path cost:444

childnode:state:Drobeta path cost:449

 add child to frontier

dealnode:state:Pitesti        parentstate:Rimnicu Vilcea        pathcost:392

childnode:state:Rimnicu Vilcea path cost:489

childnode:state:Craiova path cost:530

childnode:state:Bucharest path cost:493

 replace state: Bucharest old cost:525 newcost:493

dealnode:state:Craiova        parentstate:Rimnicu Vilcea        pathcost:441

childnode:state:Drobeta path cost:561

childnode:state:Rimnicu Vilcea path cost:587

childnode:state:Pitesti path cost:579

dealnode:state:Drobeta        parentstate:Mehadia        path cost:449

childnode:state:Mehadia path cost:524

childnode:state:Craiova path cost:569

dealnode:state:Bucharest        parentstate:Pitesti        path cost:493

childnode:state:Fagaras path cost:704

childnode:state:Pitesti path cost:594

childnode:state:Giurgiu path cost:583

 add child to frontier

childnode:state:Urziceni path cost:578

 add child to frontier

dealnode:state:Urziceni        parentstate:Bucharest        path cost:578

 this node is goal!

from city: Zerind tocity Urziceni search success

Zerind->Arad->Sibiu->RimnicuVilcea->Pitesti->Bucharest->Urziceni

可見,本演算法能找出最優解。在導航過程中,用Zerind->Arad->Sibiu替代了Zerind->Oradea->Sibiu,用Sibiu->Rimnicu Vilcea->Pitesti->Bucharest替代了Sibiu->Rimnicu Vilcea->Pitesti->Bucharest。


相關推薦

人工智慧學習python實現一致代價搜尋演算法

執行例項:input src cityZerindinput dst cityUrzicenidealnode:state:Zerind        parentstate:None        path cost:0childnode:state:Oradea path cost:71 add chil

機器學習Python實現聚類算法(三)之總結

.fig ask class ted ssi 缺點 處理 blob ron 考慮到學習知識的順序及效率問題,所以後續的幾種聚類方法不再詳細講解原理,也不再寫python實現的源代碼,只介紹下算法的基本思路,使大家對每種算法有個直觀的印象,從而可以更好的理解函數中

機器學習Python實現純程式碼邏輯迴歸演算法

之前寫了一篇邏輯迴歸的理論知識,寫得還算詳盡,包含了公式的詳細推導過程。這篇文章將結合之前的理論推導,通過Python程式碼實現邏輯迴歸演算法,並用來預測鳶尾花種類。由於這篇文章是對照著之前的理論文章進行講解的,所以最好先看前一篇理論文章,再看這篇實踐文章。理論的文章連結為:https://blog

人工智慧python 實現 第十章,NLP 第四天 A Bag Of Words

使用用詞袋(a bag of words)模型提取頻繁項文字分析的主要目標之一是將文字轉化為數值形式。以便使用機器進行學習。我們考慮下,數以百萬計的單詞文件,為了去分析這些文件,我們需要提取文字 並且將其轉化為數值符號。機器學習演算法需要處理數值的資料,以便他們能夠分析資料並

吳恩達機器學習作業Python實現(六)SVM支援向量機

1 Support Vector Machines 1.1 Example Dataset 1 %matplotlib inline import numpy as np import pandas as pd import matplotlib.pyplot

人工智慧python 實現 第十一章,使用隱馬爾科夫模型生成資料

使用隱馬爾科夫模型生成資料  是一個強大的分析時間序列資料的分析工具。假定被建模的系統是帶有隱藏狀態的馬爾可夫過程,這意味著底層系統可以是一組可能的狀態之一,系統經歷一系列的狀態轉換,從而產生一系列輸出。我們僅能觀察輸出,而無法觀測狀態,因為這些狀態被隱藏了。我們的目標是對這

吳恩達機器學習作業Python實現(一)線性迴歸

單變數線性迴歸 在本部分的練習中,您將使用一個變數實現線性迴歸,以預測食品卡車的利潤。假設你是一家餐館的執行長,正在考慮不同的城市開設一個新的分店。該連鎖店已經在各個城市擁有卡車,而且你有來自城市的利潤和人口資料。 您希望使用這些資料來幫助您選擇將哪個城市擴充

人工智慧python 實現 第十章,NLP 第二天 基於詞義的詞形還原

基於詞義的詞形還原lemmatization 是另一種詞形還原的方式。 在前一節中,我們可以明白從詞幹中提取詞的基本形式沒有任何意義。例如,三個三個詞幹提取器都顯示calves的基本形式是calv,但它並不是一個真正的單詞。Lemmatization 採取了一種更具結構化的方

遞歸python 實現2分查找

search n) arch pytho elif range int 查找 ear 2分查找 def data_search(n,m): mid = int(len(n)/2) if len(n)>=1: if n[mid]>m:

python(4)- 簡單練習python實現購物車的優化

list x11 int 退出 .html htm src keyword 結算 簡單版本,鏈接如下: http://www.cnblogs.com/c-x-m/p/7819220.html 購物車程序優化題目要求: 1. 用戶退出時打印商品列表時,按以下格式

案例python實現名字漢字驗證,密碼驗證

pythonimport re # 定義正則表達式對象(全局變量大寫) # 驗證漢字 RE_CHINESE = re.compile(r‘^[\u4e00-\u9fa5]{1,8}$‘) # 驗證密碼,字母開頭,包含字母,數字,下劃線 RE_PASSWORD = re.compile(r‘^[a-zA-Z]

案例python實現聊天機器人

pythonimport pickle data = {"你有女朋友嗎":"沒有","我們可以交往嗎":"可以","今晚約不約":"約","去哪家餐廳":"麥當勞"} with open("db.pkl",‘wb‘) as f: f.write(pickle.dumps(data)) with

案例python實現代碼文件備份機

案例 文件備份機 管理目錄與文件 只想要我要的文件格式 # 遍歷 import re re_filename = re.compile(‘(.*pdf$)|(.*docx$)|(.*xlsx$)‘) for root,dir,files in os.walk(‘.‘): # 遍歷 當前路徑、

學習隨筆 --python實現熵權法

信息論 href tle ima 值轉換 計算公式 ray img python 一、熵權法介紹 熵最先由申農引入信息論,目前已經在工程技術、社會經濟等領域得到了非常廣泛的應用。 熵權法的基本思路是根據指標變異性的大小來確定客觀權重。

Python基礎python實現樹結構

樹是我們常見的一種一對多的資料結構。 最近為了處理一些事情,寫了一顆三層的樹。每層的子節點數目均不確定,動態新增。 為了方便管理,寫成了巢狀樹。 class ModelTree(): #第一層樹,建立樹是必須指定根結點,不支援建立空樹。 #整顆樹儲存在tree_

人工智慧】用Python實現一個簡單的人臉識別,原來我和這個明星如此相似

近幾年來,興起了一股人工智慧熱潮,讓人們見到了AI的能力和強大,比如影象識別,語音識別,機器翻譯,無人駕駛等等。總體來說,AI的門檻還是比較高,不僅要學會使用框架實現,更重要的是,需要有一定的數學基礎,如線性代數,矩陣,微積分等。 幸慶的是,國內外許多大神都已經給我們造好“輪子”,我們可以直接來使用某些模型

【深度學習Python實現2層神經網路的誤差反向傳播法學習

前言 基於計算圖的反向傳播詳解一篇中,我們通過計算圖的形式詳細介紹了構建神經網路需要的層,我們可以將其視為元件,接下來我們只需要將這些元件組合起來就可以實現誤差反向傳播法。 首先我們回顧下神經網路的學習步驟如下: 從訓練資料中隨機選擇一部分資料(mini-batch)

【深度學習Python實現基於數值微分的神經網路的學習

回顧 \quad\quad 在之前的神經網路的學習過程一篇中,我們介紹瞭如何獲取批量資料、損失函式、梯度以及梯度下降

C#委託學習委託實現窗體之間簡單傳值

實現功能描述: 從窗體點選按鈕,並記錄點選次數,將點選的次數傳遞給主窗體展示。 UI設計: 主窗體:拖放兩個Label:label1和lblCounter,label1的Text屬性設定為“從窗體被點選次數:”,lblCounter的Text屬性設定為“0”。從窗體:拖放一個Button