【算发设计】近似算法
来源:互联网 发布:域名net用的多么 编辑:程序博客网 时间:2024/06/15 20:29
输入: 无向图G=(V,E)
输出: CÍV,满足 (1)."(u,v)ÎE,uÎC或者vÎC (2).C是满足条件(1)的最小集合。
令A={(u, v) | (u, v)是算法第4步选中的边}。若(u,v)属于A,则与(u, v)邻接的边皆从E’中删除。于是,A中无相邻接边。第5步的每次运行增加两个结点到C, |C|=2|A|。设C*是优化解,C*必须覆盖A.由于A中无邻接边,C*至少包含A中每条边的一个结点。于是,|A|<=|C*|,|C|=2|A|<=2|C*|,即|C|/|C*|<2。
旅行商问题
近似算法
1. 选择一个r属于V[G]作为生成树的根;2. 调用MST-Prim(G, C, r)生成一个最小生成树T;3. 先序遍历T,形成有序结点表L;4. 按照L中的顺序访问各结点,形成哈密顿环.
第2步: O(|E|+|V|log|V|)=O(|V|^2+|V|log|V|)=O(|V|^2)第3步: O(|E|)=O(|V|^2), 因为G是完全图, 第4步: O(|V|)
故:T(G)=O(|V|^2)
设H*是TSP问题的优化解, H是算法产生的近似解.我们需要证明C(H)<=2C(H*).从H*中删除任意一条边, 可以得到G的一个生成树T’.
设T是算法第2步产生的导致H的最小生成树, 则C(T)<=C(T')<=C(H*).T的一个full walk W列出了所有结点(第一次访问的和以后从一个子树返回时再访问的). 由于W通过每条边两次, C(W)=2C(T), 进而C(W)<=2C(H*).W不是哈密顿环, 因为它通过某些结点多于一次. 根据三角不等式, 我们可以从W中删除对一个结点的任何访问, 而不增加代价. (例如:从u→v→w 删除v得u→w)反复地应用上述操作, 我们可以从W中删除所有对任何结点的非第一次访问, 得到一个算法中的preoder walk. 由于T的preoder walk导致H, 我们有C(H<=C(W), 即 C(H)<=2C(H*)
- 【算发设计】近似算法
- 近似算法
- 近似算法
- 算法设计与分析笔记之(9):近似算法
- 字符串近似匹配算法
- 拉普拉斯近似算法小结
- 01背包-近似算法
- 拉普拉斯近似算法小结
- 概率算法和近似算法
- 概率型算法&&近似算法
- 求点到线段的近似算法
- 2点距离近似算法
- 近似算法求解调度问题
- 各类近似优化算法学者
- LIRS算法的近似实现
- 装箱问题近似算法概述
- LIRS算法的近似实现
- 近似算法---首次适宜法
- ProgressBar 样式大全
- 关于schema文档
- Timer与ScheduledExecutorService间的抉择
- Java RandomAccessFile用法
- matlab 在 ocr 问题中的简单实现
- 【算发设计】近似算法
- 算术操作 标准库bitset类型
- redis配置文件
- Struts2、Hibernate、Spring整合的泛型DAO,以及通用的分页技术
- UML 中几种关系总结
- jplogic之activiti modeler流程设计器集成案例(非spring集成)
- PowerDesigner逆向工程(Oracle)
- x264源码分析 -- get_ref
- iOS学习爬坑记录3:plist文件的读写,以及向NSMutableArray中写入NSDictionary元素失败