AI與Python人工智能啟發式搜索概念理解

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

AI中的啟發式搜索的概念

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

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

不知情和知情搜索之間的區別

有兩種類型的控制策略或搜索技術:不知情和知情。這裡給出瞭詳細解釋 –

不知情的搜索

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

知情搜索

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

約束滿足問題(CSP)

約束意味著限制或限制。在人工智能中,約束滿足問題是在某些約束條件下必須解決的問題。重點必須是在解決此類問題時不要違反約束。最後,當我們達到最終解決方案時,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)

您可以按如下方式觀察上述程序的輸出 –

[{'a': 4, 'b': 8}, {'a': 3, 'b': 6}, {'a': 2, 'b': 4}, {'a': 1, 'b': 2}, {'a': 0, 'b': 0}]

魔術廣場

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

以下是用於生成幻方的簡單Python代碼的逐步執行 –

定義一個名為magic_square的函數,如下所示 –

def magic_square(matrix_ms):
   iSize = len(matrix_ms[0])
   sum_list = []

以下代碼顯示瞭正方形的代碼 –

for col in range(iSize):
   sum_list.append(sum(row[col] for row in matrix_ms))

以下代碼顯示瞭正方形的水平代碼 –

sum_list.extend([sum (lines) for lines in matrix_ms])

以下代碼顯示瞭正方形水平的代碼 –

dlResult = 0
for i in range(0,iSize):
   dlResult +=matrix_ms[i][i]
sum_list.append(dlResult)
drResult = 0
for i in range(iSize-1,-1,-1):
   drResult +=matrix_ms[i][i]
sum_list.append(drResult)
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。

以上就是AI與Python啟發式搜索概念理解的詳細內容,更多關於AI Python啟發式搜索的資料請關註WalkonNet其它相關文章!

推薦閱讀: