我正在寻找一些关于存储条纹图样数据库中所有可能的排列的建议.
所以15块瓷砖的问题有16块!可能的排列,但是存储fringe
的值,因此0(空块)、3、7、11、12、13、14、15是16!/(16-8)!=518,918,400排列.
我希望将所有这些排列与启发式函数的值一起存储在数据 struct 中(每次广度第一次搜索的迭代都会递增),到目前为止,我正在这样做,但速度非常慢,我花了5分钟来存储60,000,这是我没有的时间!
目前,我有一个这样的 struct .
Value Pos0 Pos3 Pos7 Pos11 Pos12 Pos13 Pos14 Pos15
在那里我存储给定数字的位置.我必须使用这些位置作为ID,因为当我计算启发式值时,我可以快速搜索到给定的构图并检索该值.
这一点我不太确定.拼图的状态由数组示例表示:
int[] goalState = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}
我的问题是,存储这些值的最佳数据 struct 是什么?也是找回它们的最好方法.
(这个问题最初是基于存储在数据库中的,但现在我想以某种形式的本地数据 struct 存储它们-因为从数据库检索很慢)