AI與Python 啟發式搜尋

2021-09-16 21:35:08 字數 2575 閱讀 1096

啟發式搜尋在人工智慧中起著關鍵作用。在本章中,您將詳細了解它。

啟發式是乙個經驗法則,它引導我們找到可能的解決方案。人工智慧中的大多數問題具有指數性,並且具有許多可能的解決方案。您不確切知道哪些解決方案是正確的,並且檢查所有解決方案將非常昂貴。

因此,啟發式的使用縮小了對解決方案的搜尋範圍並消除了錯誤的選項。使用啟發式在搜尋空間中引導搜尋的方法稱為啟發式搜尋。啟發式技術非常有用,因為在使用它們時可以提高搜尋速度。

有兩種型別的控制策略或搜尋技術:不知情和知情。這裡給出了詳細解釋 -

它也被稱為盲目搜尋或盲目控制策略。之所以這樣命名,是因為只有關於問題定義的資訊,並且沒有關於狀態的其他額外資訊。這種搜尋技術將搜尋整個狀態空間以獲得解決方案。廣度優先搜尋(bfs)和深度優先搜尋(dfs)是不知情搜尋的示例。

它也被稱為啟發式搜尋或啟發式控制策略。它的名字是因為有一些關於狀態的額外資訊。此額外資訊對於計算要探索和擴充套件的子節點之間的首選項很有用。將存在與每個節點相關聯的啟發式功能。最佳首次搜尋(bfs),a *,均值和分析是知情搜尋的示例。

約束意味著限制或限制。在人工智慧中,約束滿足問題是在某些約束條件下必須解決的問題。重點必須是在解決此類問題時不要違反約束。最後,當我們達到最終解決方案時,csp必須遵守限制。

前面的部分涉及建立約束滿足問題。現在,讓我們將其應用於現實世界的問題。通過約束滿足解決的現實世界問題的一些例子如下 -

在約束滿足問題的幫助下,我們可以解決代數關係。在這個例子中,我們將嘗試解決乙個簡單的代數關係a * 2 = b。它將在我們定義的範圍內返回a和b的值。

完成這個python程式後,您將能夠理解解決約束滿足問題的基礎知識。

注意,在編寫程式之前,我們需要安裝名為python-constraint的python包。您可以借助以下命令安裝它 -

pip install python-constraint
以下步驟顯示了使用約束滿足來解決代數關係的python程式 -

使用以下命令匯入約束包 -

from constraint import *
現在,建立乙個名為problem()的模組物件,如下所示 -

problem = problem()
現在,定義變數。注意,這裡我們有兩個變數a和b,我們將10定義為它們的範圍,這意味著我們在前10個數字中得到了解。

problem.addvariable('a', range(10))

problem.addvariable('b', range(10))

接下來,定義我們要在此問題上應用的特定約束。注意,我們在這裡使用約束a * 2 = b。

problem.addconstraint(lambda a, b: a * 2 == b)
現在,使用以下命令建立getsolution()模組的物件-

solutions = problem.getsolutions()
最後,使用以下命令列印輸出 -

print (solutions)
您可以按如下方式觀察上述程式的輸出 -

[, , , , ]
幻方是在方形網格中排列不同數字(通常是整數)的排列,其中每行和每列中的數字以及對角線中的數字都加起來稱為「魔術常數」的相同數字。

以下是用於生成幻方的簡單python**的逐步執行 -

定義乙個名為magic_square的函式,如下所示 -

def magic_square(matrix_ms):

isize = len(matrix_ms[0])

sum_list =

以下**顯示了正方形的** -

for col in range(isize):
以下**顯示了正方形的水平** -

sum_list.extend([sum (lines) for lines in matrix_ms])
以下**顯示了正方形水平的** -

dlresult = 0

for i in range(0,isize):

dlresult +=matrix_ms[i][i]

drresult = 0

for i in range(isize-1,-1,-1):

drresult +=matrix_ms[i][i]

if len(set(sum_list))>1:

return false

return true

現在,給出矩陣的值並檢查輸出 -

print(magic_square([[1,2,3], [4,5,6], [7,8,9]]))
您可以觀察到輸出將為false,因為總和不是相同的數字。

print(magic_square([[3,9,2], [3,5,7], [9,1,6]]))
您可以觀察到輸出將為true,因為總和是相同的數字,即此處為15。

啟發式搜尋

啟發式搜尋 heuristically search 又稱為有資訊搜尋 informed search 它是利用問題擁有的啟發資訊來引導搜尋,達到減少搜尋範圍 降低問題複雜度的目的,這種利用啟發資訊的搜尋過程稱為啟發式搜尋。例題 八數碼問題 運用優先佇列,根據目前已經確定的位置算出目前的價值,並匯入...

啟發式搜尋

啟發式搜尋 啟發式搜尋就是在狀態空間中的搜尋對每乙個搜尋的位置進行評估,得到最好的位置,再從這個位置進行搜尋直到目標。這樣可以省略大量無謂的搜尋路徑,提高了效率。在啟發式搜尋中,對位置的估價是十分重要的。採用了不同的估價可以有不同的效果。在啟發式搜尋中,我們每次找到當前 最有希望是最短路徑 的狀態進...

啟發式與元啟發式演算法

啟發式演算法 heuristic algorigthm 是一種基於直觀或經驗構造的演算法,在可接受的花費 指計算時間 計算空間等 給出待解決優化問題的每一例項的乙個可行解,該可行解與與最優解的偏離程度一般不可以事先預計。啟發式演算法是一種技術,這種演算法可以在可接受的計算費用內找到最好的解,但不一定...