启发式搜索:启发式搜索就是在状态空间中的搜索对每一个搜索的位置进行评估,得到最好的位置,再从这个位置进行搜索直到目标。这样可以省略大量无畏的搜索路径,提到了效率。在启发式搜索中,对位置的估价是十分重要的。采用了不同的估价可以有不同的效果。估价函数:从当前节点移动到目标节点的预估费用;这个估计就是启发...
分类:
其他好文 时间:
2015-05-21 17:10:30
阅读次数:
108
以前一直以为分支限界跟回溯差不多,最近又看了看算法,其实两者大不一样。 回溯是对状态空间树进行深度优先搜索,通过约束函数来去除不符合条件的叶子或是树枝(如果某个非叶子节点不符合约束函数,以该节点为根的树杈就可以直接剪掉了,所以回溯其实是一个剪树枝的过程)。到最后没有被剪掉的部分,就是全部的可行解,如...
分类:
其他好文 时间:
2015-05-08 19:57:01
阅读次数:
117
题目:有N个传教士和N个野人要过河,现在有一条船只能承载M个人,在任何时刻,如果有野人和传教士在一起,必须要求传教士的人数多于或等于野人的人数(包括船上和两个岸边)。设M为传教士的人数,C为野人的人数,当N=3, M=2时, 用状态空间法求解此问题的过程如下:(1)设置状态变量并确定值域S、C = ...
分类:
其他好文 时间:
2015-04-13 20:15:15
阅读次数:
179
1.题目描述:点击打开链接
2.解题思路:本题利用迭代加深搜索解决。好久没做这个专题了,感觉这种方法有点力不从心,不会寻找估价函数是硬伤。。。只好学一学别人的代码。
本题要求棋盘中间的8个方格都要是相同的数字。紫书上说是利用状态空间搜索解决,大致模板还是八数码问题的模板。但是写了半天最后WA了,感觉这道题用那个模板写出来会很复杂。最后看别人的代码,才发现大多都是利用迭代加深搜索解决的,代码量也...
分类:
其他好文 时间:
2015-04-11 18:01:30
阅读次数:
161
3.5 有一农夫带一条狼,一只羊和一筐菜欲从河的左岸乘船到右岸,但受下列条件限制:(1)船太小,农夫每次只能带一样东西过河;(2)如果没有农夫看管,则狼要吃羊,羊要吃菜。请设计一个过河方案,是的农夫,狼,羊都能不受损失地过河,画出相应的状态空间图。 提示: (1)用四元组(农夫,狼,羊,菜)表示状态...
分类:
其他好文 时间:
2015-03-20 21:38:37
阅读次数:
216
算法只要懂原理了,代码都是小问题,先看下面理论,尤其是红色标注的(要源码请留下邮箱,有测试用例,直接运行即可)
A*算法
百度上的解释:
A*[1] (A-Star)算法是一种静态路网中求解最短路最有效的直接搜索方法。
公式表示为: f(n)=g(n)+h(n),
其中 f(n) 是从初始点经由节点n到目标点的估价函数,
g(n) 是在状态空间中从初始节点到n节点的实际代价,
h...
分类:
编程语言 时间:
2015-03-18 21:50:21
阅读次数:
259
在软件工程实践中运用形式化方法可以保证软件的正确性。目前,从形式规约到目标软件系统的可实现和可执行角度,已建立的形式化方法分为操作类和描述类。操作类方法基于状态和转移,通过可执行模型来描述系统,而描述类方法基于数学公理和概念,通过逻辑或代数给出系统的状态空间,具有高度抽象的特点。形式证明与验证...
分类:
其他好文 时间:
2015-02-10 20:15:28
阅读次数:
158
只有思路还没有实践这个题一眼看上去就是典型的状态空间搜索问题,a,b,c的每一个不同摆放位置都是一个状态,每一个状态都可以看成无权有向无环状图上的一个节点。又是找移动步数最少的走法,很自然就会想到用BFS。细想上去,这个题稍微麻烦的地方是,如何从一个状态扩展到下一个状态。每个状态有2个或者3个字母需...
分类:
其他好文 时间:
2015-02-03 14:52:12
阅读次数:
121
原题地址从编号为0开始,不断递推到第k个如果用p[i][j]表示第i层,第j个数字,则有递推公式:p[i][j] = p[i-1][j-1] + p[i-1][j]因为只使用了相邻层,因此可以压缩状态空间代码: 1 vector getRow(int rowIndex) { 2 if...
分类:
其他好文 时间:
2015-02-02 17:23:12
阅读次数:
116
原题地址基本动归题可以压缩状态空间代码: 1 int climbStairs(int n) { 2 if (n <= 0) 3 return 0; 4 5 int count = 1; 6 int tm...
分类:
其他好文 时间:
2015-02-02 10:48:05
阅读次数:
111