原始碼
"""
實驗內容:假設在乙個 n * m 的迷宮裡,入口座標和出口座標分別為(1,1)和(5,5),
每乙個座標點有兩種可能:0 或 1,其中 0 表示該位置允許通過,1 表示該位置不允許通過
如地圖:
0 0 0 0 0
1 0 1 0 1
0 0 1 1 1
0 1 0 0 0
0 0 0 1 0
最短路徑應該是:
a b 0 0 0
1 c 1 0 1
e d 1 1 1
f 1 j k l
g h 1 1 m
估價函式
估價函式 evaluation function
f(n) = g(n) + h(n)
估價 = 代價 + 啟發
代價即 移動到該點的耗費
啟發即 該點移動到終點的預計耗費
open 表根據 f 排序,取 open 表首元素為下一步
"""# def increase(dot, n, m):
defincrease
(dot)
: flag =
0 n =
int(dot[0]
) m =
int(dot[1]
)print
('n, m:'
, n, m)
increase_open_list =
# 先排序,再放入 open 表
if m -
1>
0and list_map[n]
[m -1]
!=1: point =
(n, m -1)
print
(point)
point =
(n, m -
1, f(point)
)print
(point)
if point not
in close_list and point not
in wrong_list:
flag =
1if n -
1>
0and list_map[n -1]
[m]!=1:
point =
(n -
1, m)
print
(point)
point =
(n -
1, m, f(point)
)if point not
in close_list and point not
in wrong_list:
flag =
1if m +
1<=
5and list_map[n]
[m +1]
!=1: point =
(n, m +1)
print
(point)
point =
(n, m +
1, f(point)
)if point not
in close_list and point not
in wrong_list:
flag =
1if n +
1<=
5and list_map[n +1]
[m]!=1:
point =
(n +
1, m)
print
(point)
point =
(n +
1, m, f(point)
)if point not
in close_list and point not
in wrong_list:
flag =
1if flag:
global open_list
increase_open_list.sort(key=
lambda x: x[2]
, reverse=
false
) open_list = increase_open_list + open_list
return
true
return
false
deff
(dot)
: valuation = g(dot)
+ h(dot,(5
,5))
return valuation
defg
(dot)
: cost =
1return cost
defh
(dot, end)
:# 這個啟發式演算法僅僅是上下左右計算到終點的耗費
inspire =
abs(end[0]
- dot[0]
)+abs(end[1]
- dot[1]
)return inspire
open_list =
close_list =
wrong_list =
d0 =[1
,1,1
,1,1
,1]d1 =[1
,0,0
,0,0
,0]d2 =[1
,1,0
,1,0
,1]d3 =[1
,0,0
,1,1
,1]d4 =[1
,0,1
,0,0
,0]d5 =[1
,0,0
,0,1
,0]list_map =
[d0, d1, d2, d3, d4, d5]
# list_map =
# m = int(input('m:'))
# for i in range(int(input('n:'))):
# list_n =
# for j in range(m):
# start = (1, 1)
# end = (5, 5)
# spot = tuple()
i =1
j =1
spot =
(i, j)
spot =
(i, j, f(spot)
)stop =
0while
1<= i <=
5and
1<= j <=5:
# if increase(spot, 5, 5):
if increase(spot)
:print
('cl:'
, close_list)
# open_list.sort(key=lambda x: x[2], reverse=false)
print
('ol:'
, open_list)
spot = open_list[0]
print
('spot:'
, spot)
i =int(spot[0]
) y =
int(spot[1]
)if i ==
5and y ==5:
print
('arrival terminal.'
)break
else
: wrong_way = open_list.pop(0)
print
('wrong_way:'
, wrong_way)
spot = open_list[0]
stop +=
1if stop ==20:
break
傳送:加深理解啟發函式
如果圖形中允許朝八個方向移動,則可以使用對角距離\
如果圖形中允許朝任何方向移動,則可以使用歐幾里得距離(euclidean distance)$$n
d.end.
end.
md位址.
人工智慧導論
人工智慧 能力 是智慧型機器所執行的通常與人類智慧型 有關的智慧型行為,如判斷 推理 證明 識別 感知 理解 通訊 設計 思考 規劃 學習和問題求解等 思維活動。凡是固定了演算法的,基本上都不算ai 弱人工智慧 在某個方面的智慧型 應用效果很強 強人工智慧 綜合的多方面的人工智慧 現實應用效果差 機...
人工智慧導論
1 人工智慧 讓機器像人一樣具有一些能力,擴充套件人的智慧型。2 機器學 不顯式程式設計地賦予計算機能力的研究領域。3 aiops artificial intelligence for it operations,智慧型化運維,將人工智慧應用於運維領域,基於已有的運維資料 日誌 監控資訊 應用資訊...
人工智慧 AI
編者按 羅布 史密斯 robsmith 是 pecabu 首席執行官 編者按 羅布 史密斯 robsmith 是 pecabu 首席執行官。人工智慧 ai 近來成為 報道的熱點話題。它擁有像 大資料 雲 等毫無意義的流行詞語的地位,也只是時間問題。通常情況下,我是人工智慧的堅定支持者。在人工智慧領域...