(AI)人工智慧導論實驗 A 演算法

2021-10-16 17:44:28 字數 4110 閱讀 3358

原始碼

"""

實驗內容:假設在乙個 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 近來成為 報道的熱點話題。它擁有像 大資料 雲 等毫無意義的流行詞語的地位,也只是時間問題。通常情況下,我是人工智慧的堅定支持者。在人工智慧領域...