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其它相關文章!
推薦閱讀:
- Python中的復雜數據類型(list、tuple)
- Python序列的推導式實現代碼
- 如何利用Python實現簡單C++程序范圍分析
- python3使用迭代生成器實現減少內存占用
- Python實現曲線擬合的最小二乘法