图论
来源:互联网 发布:新云软件 解压密码 编辑:程序博客网 时间:2024/05/13 15:42
著名的算法有:求最小生成树的Kruskal算法,求最短路径的Dijkstra算法和Floyd算法、求两部图最大匹配的匈牙利算法、求一般图最大匹配的Edmonds花算法、求网络最大流和最小流的算法
显示图:路径问题、连通性问题、可平面性检验、着色问题和网络优化(顶点、边和权重)(邻接矩阵、邻接链表)(深度优先搜索算法、广度优先搜索算法)
隐式图:二维表格上提出的问题,八皇后问题、老鼠走迷宫、五子棋、象棋(子集树、排列树)(不用专门存储)(回溯法、分枝法)
搜索算法:穷举法、启发式搜索(|提前判断哪些状态尽快找到问题解或某个情况不能得到最优解)
树中每个结点确定所求解问题的一个问题状态,由根结点到其他结点的所有路径,就确定了这个问题的状态空间。
解状态:由根到S的那条路径确定了该解空间中的一个元组
答案状态:由根到S的这条路径确定了该问题的一个解
问题状态 ----> 解状态 -----> 答案状态
活结点 -----> E-结点 ------> 死结点
广度优先搜索
算法设计思路:
1. 确定图的存储方式
2. 设计图搜索过程中的操作
3. 输出问题的结论
算法框架:
活结点的扩展是按先来先处理的原则,算法中要用“队”来存储每个E-结点扩展出的活结点
应用
宽度【1】若干个城市的地图,求一个城市到另一个城市的路径,经过的城市最少
用线性数组作为活结点队列存储空间,队列每个节点有两个成员,入队的城市、前驱城市在队列中的下标
【2】走迷宫问题
数组做队列的存储空间,队中结点有3个成员:行号、列号和前一个方格在队列中下标,搜索过的方格元素设置为-1
循环体用数组fx[]={1,-1,0,0} fy[]={0,0,-1,1}模拟上下左右搜索的下标的变化过程
深度【3】走迷宫
【4】割点
回溯【八皇后】
加约束条件的枚举算法;非递归回溯(深度搜索);递归算法
【马遍历问题】n*m棋盘上,马只能走“日”字,每格走一次,且只走一次
搜索过程:任意一点出发,按深度优先的原则,从8个方向中尝试一个可以走的点,知道走过棋盘上所有n*m个点,用递归调用算法
dep深度,走过的点数;经过用1,未经过用0
分支限界法
在问题解空间上进行搜索尝试的算法。所谓“分支”是采用广度优先的策略,一次搜索E-结点的所有分支。在生成结点中,抛弃那些不满足约束条件的结点,其余结点加入活节点表,然后从表中选择一个结点作为下一个E-结点,继续搜索。有FIFI搜索,LIFO搜索,优先队列式搜索
- 图论
- 图论
- 图论
- 图论
- 图论
- 图论
- 图论
- 图论
- 图论
- 图论
- 图论
- 图论
- 图论~~!!!
- 图论
- 图论
- 图论
- 图论
- 图论
- zend studio 7.0、7.1 注册码、注册机、激活码
- 大一统的Netfilter-一种Linux防火墙优化方法
- 如何用C#编写程序监测某个文件夹内是否有文件进行了增,删,改的动作?
- 应用正则表达式验证用户注册信息(上)
- 转:如何用gcc编译生成动态链接库*.so文件 动态库
- 图论
- 牛腩新闻发布系统笔记9:存储过程
- qdot 调试错误
- tomcat + apache配置
- css中table-layout:fixed 属性的用法
- 替换原生系统apk
- Schtasks 计划任务参数 详解
- 用QQ时如何隐藏IP?
- 浅谈在软件开发中的开发与测试 - 下