AI與Python人工智能啟發(fā)式搜索概念理解
啟發(fā)式搜索在人工智能中起著關鍵作用。在本章中,您將詳細了解它。
AI中的啟發(fā)式搜索的概念
啟發(fā)式是一個經(jīng)驗法則,它引導我們找到可能的解決方案。人工智能中的大多數(shù)問題具有指數(shù)性,并且具有許多可能的解決方案。您不確切知道哪些解決方案是正確的,并且檢查所有解決方案將非常昂貴。
因此,啟發(fā)式的使用縮小了對解決方案的搜索范圍并消除了錯誤的選項。使用啟發(fā)式在搜索空間中引導搜索的方法稱為啟發(fā)式搜索。啟發(fā)式技術非常有用,因為在使用它們時可以提高搜索速度。
不知情和知情搜索之間的區(qū)別
有兩種類型的控制策略或搜索技術:不知情和知情。這里給出了詳細解釋 -
不知情的搜索
它也被稱為盲目搜索或盲目控制策略。之所以這樣命名,是因為只有關于問題定義的信息,并且沒有關于狀態(tài)的其他額外信息。這種搜索技術將搜索整個狀態(tài)空間以獲得解決方案。廣度優(yōu)先搜索(BFS)和深度優(yōu)先搜索(DFS)是不知情搜索的示例。
知情搜索
它也被稱為啟發(fā)式搜索或啟發(fā)式控制策略。它的名字是因為有一些關于狀態(tài)的額外信息。此額外信息對于計算要探索和擴展的子節(jié)點之間的首選項很有用。將存在與每個節(jié)點相關聯(lián)的啟發(fā)式功能。最佳首次搜索(BFS),A *,均值和分析是知情搜索的示例。
約束滿足問題(CSP)
約束意味著限制或限制。在人工智能中,約束滿足問題是在某些約束條件下必須解決的問題。重點必須是在解決此類問題時不要違反約束。最后,當我們達到最終解決方案時,CSP必須遵守限制。
約束滿足解決現(xiàn)實問題
前面的部分涉及創(chuàng)建約束滿足問題。現(xiàn)在,讓我們將其應用于現(xiàn)實世界的問題。通過約束滿足解決的現(xiàn)實世界問題的一些例子如下 -
解決代數(shù)關系
在約束滿足問題的幫助下,我們可以解決代數(shù)關系。在這個例子中,我們將嘗試解決一個簡單的代數(shù)關系a * 2 = b。它將在我們定義的范圍內(nèi)返回a和b的值。
完成這個Python程序后,您將能夠理解解決約束滿足問題的基礎知識。
注意,在編寫程序之前,我們需要安裝名為python-constraint的Python包。您可以借助以下命令安裝它 -
pip install python-constraint
以下步驟顯示了使用約束滿足來解決代數(shù)關系的Python程序 -
使用以下命令導入約束包 -
from constraint import *
現(xiàn)在,創(chuàng)建一個名為problem()的模塊對象,如下所示 -
problem = Problem()
現(xiàn)在,定義變量。注意,這里我們有兩個變量a和b,我們將10定義為它們的范圍,這意味著我們在前10個數(shù)字中得到了解。
problem.addVariable('a', range(10)) problem.addVariable('b', range(10))
接下來,定義我們要在此問題上應用的特定約束。注意,我們在這里使用約束a * 2 = b。
problem.addConstraint(lambda a, b: a * 2 == b)
現(xiàn)在,使用以下命令創(chuàng)建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}]
魔術廣場
幻方是在方形網(wǎng)格中排列不同數(shù)字(通常是整數(shù))的排列,其中每行和每列中的數(shù)字以及對角線中的數(shù)字都加起來稱為“魔術常數(shù)”的相同數(shù)字。
以下是用于生成幻方的簡單Python代碼的逐步執(zhí)行 -
定義一個名為magic_square的函數(shù),如下所示 -
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
現(xiàn)在,給出矩陣的值并檢查輸出 -
print(magic_square([[1,2,3], [4,5,6], [7,8,9]]))
您可以觀察到輸出將為False,因為總和不是相同的數(shù)字。
print(magic_square([[3,9,2], [3,5,7], [9,1,6]]))
您可以觀察到輸出將為True,因為總和是相同的數(shù)字,即此處為15。
以上就是AI與Python啟發(fā)式搜索概念理解的詳細內(nèi)容,更多關于AI Python啟發(fā)式搜索的資料請關注腳本之家其它相關文章!
相關文章
Python中DataFrame判斷兩列數(shù)據(jù)是否相等的方法
本文主要介紹了DataFrame判斷兩列數(shù)據(jù)是否相等的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2023-04-0420行Python代碼實現(xiàn)一款永久免費PDF編輯工具
本文主要介紹了Python代碼實現(xiàn)一款永久免費PDF編輯工具,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2022-07-07使用Django開發(fā)簡單接口實現(xiàn)文章增刪改查
這篇文章主要介紹了使用Django開發(fā)簡單接口實現(xiàn)文章增刪改查,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-05-05Python利用selenium建立代理ip池訪問網(wǎng)站的全過程
selenium控制瀏覽器也是可以使用代理ip的,下面這篇文章主要給大家介紹了關于Python利用selenium建立代理ip池訪問網(wǎng)站的相關資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下2022-03-03Python實現(xiàn)合并多個Excel文件中的指定sheet
這篇文章主要為大家介紹了一個用于合并多個Excel文件中指定sheet的Python代碼,這個功能可以方便地整理和分析數(shù)據(jù),文中的示例代碼簡潔易懂,需要的可以參考下2023-10-10使用python對多個txt文件中的數(shù)據(jù)進行篩選的方法
今天小編就為大家分享一篇使用python對多個txt文件中的數(shù)據(jù)進行篩選的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-07-07