資源簡介
基于A*算法,用python實現十五數碼問題的求解。
十五數碼問題:所要求解的問題:是給定一種初始布局(初始狀態)和一個目標布局(目標狀態),問如何移動數碼實現從初始狀態到目標狀態的轉變。
代碼片段和文件信息
import?numpy?as?np
import?random
import?copy
import?operator
import?time
X?=?input(“維度[enter鍵默認為4]:“)
if?X.isdigit():
????N?=?int(X)
else:
????N?=?4
#?opentb?=?[]
#?closedtb?=?[]
class?State(object):
????“““定義狀態類“““
????weight?=?[1N+211]
????count?=?0
????#?目前為止open和closed表中的總節點數
????def?__init__(self?s?depth?parent?zero_place=[N-1N-1]id=0weight=weight):
????????self.s?=?s
????????self.zero_place?=?zero_place
????????self.id?=?id
????????self.parent?=?parent
????????self.depth?=?depth
????????self.hnself.hn1?=?self.cal_hn()
????????weight_space?=?N+N-self.zero_place[0]-self.zero_place[1]
????????self.fn?=?weight[0]*self.depth?+?weight[1]*self.hn?+?weight[2]*weight_space?+?weight[3]*self.hn1
????def?cal_hn(self):
????????state_hn?=?0
????????stat
- 上一篇:python爬取百度圖片以及圖像批量處理
- 下一篇:經緯度的點到直線距離
評論
共有 條評論