12coin
2015-11-24 21:00:08 6 举报
十二硬币问题程序流程图(dfs+启发式函数+优先队列)
作者其他创作
大纲/内容
开始
返回false
是
否
返回true
对每个状态,新建一个优先队列Q,在优先队列Q中,启发式函数值小的点排前面
子结点是最末端结点?
结束
拓展下层结点成功,函数Expend()返回true?
三个子结点都拓展成功?
对每种天平放置方案,生成其左倾结点、平衡结点和右倾结点
利用六重循环生成当前状态下的天平放置方案
对每种天平放置方案,新建一个结点,存储当前状态、天平放置方案、左倾结点、平衡结点、右倾结点以及启发式函数的值,此时启发式函数的值取三个子结点中启发式函数值的最大值
在枚举完所有的放置方案后,通过遍历当前优先队列Q中的点来遍历当前状态的所有子结点,优先队列Q中的点按启发式函数值排序,启发式函数值小的排在前
将新建的结点加入到当前状态的优先队列Q中
三个末端结点都可行?
输出解决方案
递归调用Expend()函数从子结点开始继续拓展
0 条评论
下一页