图搜索算法
来源:互联网 发布:微信数据库 编辑:程序博客网 时间:2024/06/16 10:04
从起始状态,经过一系列的转移(或者说操作),达到最终状态。
图搜索解决思路\模型:
- 记住前一步。当你走到新的一步的时候,要记得你是从哪走过来的,要不然等你走到了B点,却又不知道怎么走回去,便是白走了。
- 判断当前一步。判断当前步是否为最终状态,如果是,就别再走了,沿路返回吧。
- 走好下一步。当你有很多下一步的选择的时候,你需要去选择哪个作为你的下一步(这便是几个算法最大的不同),由于走错可以重来,倒也只是时间代价的问题。
不断重复以上三步,直到找到终点,或者你再也找不到可选的下一步了
- 将当前一步的指针指向前一步,从而记录前一步的走法。
- 将当前一步与最终点B进行对比,若相同,则通过每一步所留下的前一步的指针找回到初始位置便是一条路。
- 把所有接下来可选的下一步列出来,作为下一步的参考方向。根据不同的算法,有不同的做法。
那么问题已经很清晰了,所有的算法基本上都只对第三步起作用,前两步是完全相同的,那么最基本的三种算法都做了哪些工作呢。
广度优先算法(BFS):
我们直接根据上文考虑第三步,广度优先算法顾名思义便是我从某点可能去的某个方向之后,返回前一个方向继续试没走过的方向,直到前一步能去的所有方向都试完之后才从另一个方向试,并且去过的我就不再傻傻的再去了。
深度优先算法(DFS):
考虑第三步,深度优先算法顾名思义便是我从某点可能去的方向挑一个去,并且下一步不返回原点,继续在走过的基础上再走下去,并且去过的我就不再傻傻的再去了。
A*算法,又名启发式算法。
考虑第三步,首先去过的地方我是不会再去了,然后可选的下一步地方我都列出来,通过某种科学的评估方式,判定哪个下一步比较靠谱,就走哪一步。
上面三种方法描述不够严谨,但是却很简明的体现出了这三种方法的特点,深度和广度优先算法都被称作盲目搜索,因为在选择下一步的时候只是通过自己的某种“习惯”作搜索而已,A*搜索通过了某种科学的评估方式,所以显得就比较“智能”了。
0 0
- 一般图搜索算法
- 图的搜索算法
- 图的搜索算法
- 图算法--人肉搜索
- 图论算法-搜索
- 图搜索算法
- 图搜索算法(一):图搜索的一般算法
- [算法] 基本图算法:深度优先搜索、广度优先搜索
- 图搜索的通用算法
- 图的搜索算法javascript
- 图算法:深度优先搜索
- 算法之图搜索算法(一)
- 算法之图搜索算法(一)
- 算法之图搜索算法(一)
- 算法导论中的图搜索算法范例
- 搜索算法
- 搜索算法
- 算法 搜索
- python基础---装饰器模式
- 解决android app statusbar 启动时闪烁
- Java之Semaphore
- 算法训练 关联矩阵
- mysql错误:1064
- 图搜索算法
- svn切换登录用户名跟密码
- 用openssl验证证书和私钥是否有效
- Android 控件属性(2) EditText
- JQuery库远程调…
- PHP随机插入字符串到HTML中,跳过HTML标签
- android librtmp 推送h264流 aac流 基本过程总结三 移植faac
- Ubuntu16.10之间ssh连接设置
- 复选框 单选框 样式