【转】来自GDXB大大大大的小总结
一 最短路
模型一 增加限制
例:给定一个图,求起点到终点的最短路,其中你可以使用最多k次机会使某条边的边权变为x。
解法:把每个点拆成k个点,分别表示还能使用多少次机会,构造新图。

模型二 一个点集(点非常多,不能两两建边)之间两两可到达,求最短路。
解法:新开一个点,每个点都连一条无向边到新点。
二 二分图最大匹配
二分图最大匹配 = 最小点覆盖 = n-最大点独立集
最小点覆盖:选取最少的点覆盖所有的边
最大点独立集:一个点集,其中的点两两不可到达。
大致证明:
最大匹配=最小点覆盖:如果还能匹配,那就证明还有边没被覆盖。
最小点覆盖=n-最大点独立集:如果独立集可以增大k,那就证明有k个点间两两没边,那最小点覆盖就可以删去这k个点。N个点,去掉最小点覆盖的,剩下的两两没边,就是最大点独立集。
最小边覆盖=n-最大匹配:本来是n条边(每个点要被一条边覆盖),每匹配一对,就相当于减少了一条边。
三、 无向图 最小边覆盖:选择最少的边,覆盖所有的点。
拆点,构造二分图,因为额原图是无向边,所以要一次add两条边。然后无向图最小边覆盖=n-最大匹配/2(n是原图总点数,因为拆点,所以要除以二)
四 最小路径覆盖(有向无环图)
(1)每个点有且只有被一条路径覆盖。

解法:把n个点拆成2n个点,变成二分图建边,然后 最小路径覆盖 = n-二分图最大匹配
原因:本来是n条路径(每个点作为一条路径),每匹配一对,就相当于减少了一条路径。因为是二分图匹配,所以每个点只会在一条路径上。
(2)每个点可被多条路径覆盖。
解法一:在原图中用一次floyd,则上图新建了边(1,5)(2,4)(2,5),再把它当成每个点只能陪一条路径覆盖来做。因为路径2->3->4与路径1->3->5相当于2->3->4与1->5,即一条覆盖了k个点的路径可以看作是覆盖了<=k个点的路径。
解法二:

用网络流(最大流)跑出最大匹配。在二分图的右边按照原图建边,边权全为正无穷,则原理跟上面一样,路径1-3-5相当于路径1-5,则跑出的最大匹配就是一个点可在多条边上的。
http://www.cnblogs.com/KonjakJuruo/p/5471008.html
2016-10-25 21:47:40
【转】来自GDXB大大大大的小总结的更多相关文章
- 来自python自学者的小问题
我想使用python的第三方库,但是我的IDE给我一个错误代码: D:\untitled\venv\Scripts\python.exe "D:/py code/venv/sxsxsxsxs ...
- 微信小程序之明源商城系列-01-商城介绍及开发准备
1,效果展示 数据来自于写的一个小爬虫爬了明源商城部分的数据.由于价格的保密性,下列产品价格和真实的都不同. 1.1 主页及开发文件结构 1.2 产品的详细页面 1.2 产品分类页面 1.3 产品 ...
- 《微信小程序七日谈》- 第一天:人生若只如初见
<微信小程序七日谈>系列文章: 第一天:人生若只如初见: 第二天:你可能要抛弃原来的响应式开发思维: 第三天:玩转Page组件的生命周期: 第四天:页面路径最多五层?导航可以这么玩 微信小 ...
- 一个python爬虫小程序
起因 深夜忽然想下载一点电子书来扩充一下kindle,就想起来python学得太浅,什么“装饰器”啊.“多线程”啊都没有学到. 想到廖雪峰大神的python教程很经典.很著名.就想找找有木有pdf版的 ...
- file_put_contens小trick
file_put_contents tricks 0x01 trick1 来自于P神的实例: <?php $text = $_GET['text']; if(preg_match('[<& ...
- 实用,小物体检测的有监督特征级超分辨方法 | ICCV 2019
论文提出新的特征级超分辨方法用于提升检测网络的小物体检测性能,该方法适用于带ROI池化的目标检测算法.在VOC和COCO上的小物体检测最大有5~6%mAP提升,在Tsinghua-Tencent 10 ...
- 小程序canvas文本换行生成图片
一.图片透明及旋转 let ctx = wx.createCanvasContext('shareImg') ctx.drawImage('../../../' + res[0].path, 0, 0 ...
- mapReduce编程之Recommender System
1 协同过滤算法 协同过滤算法是现在推荐系统的一种常用算法.分为user-CF和item-CF. 本文的电影推荐系统使用的是item-CF,主要是由于用户数远远大于电影数,构建矩阵的代价更小:另外,电 ...
- 《JavaScript权威指南》学习笔记 第六天 开始学习DOM了。
昨天学习了window对象的一些方法.window对象主要是针对当前视窗的操作.window对象提供了一些列API来帮助我们了解当前窗口的信息.例如history对象可以让我们获取浏览历史.nvaig ...
随机推荐
- ubuntu系统安装redis
Redis是一种高级key-value数据库.它跟memcached类似,不过数据可以持久化,而且支持的数据类型很丰富.有字符串string,链表list,集 合set和有序集合zset.支持在服务器 ...
- elasticsearch学习一、安装和配置
原文链接:http://jingyan.baidu.com/article/48206aead42b53216bd6b372.html ElasticSearch是一个基于Lucene的搜索服务器.它 ...
- hibernate篇章四-- Hibernate配置文件中hiberante.hbm2ddl.auto四个参数的配置
我们在搭建环境的时候,在配置文件中有一个属性标签为: <property name="hibernate.hbm2ddl.auto"> </propert ...
- Character Studio
- Android中log4j的运用
网上一查关于android上面运用Log4j的运用,各种说需要添加多样的包的,照着log4j的官网教程看了下,给了个简单的输出到console上面的代码,似乎没什么用.看网上关于Log4j更多是在ja ...
- Android 自定义Gallery浏览图片
之前写的<Android ImageSwitcher和Gallery的使用>一文中提到我在教室一下午为实现那个效果找各种资料.期间在网上找了一个个人觉得比较不错的效果,现在贴图上来: 其实 ...
- ios 阻止GDB依附
GDB,IDE是大多数hackers的首选,阻止GDB依附到应用的常规办法是: . #import <sys/ptrace.h> . . int main(int argc, charch ...
- 学习XAML中的一些基本语法
1:slider 控件 2:x:名称空间的使用 3:事件处理器 event handler { <Button x:Name="button1" Click=" ...
- iOS 获取当前媒体音量
#import <AVFoundation/AVAudioSession.h> AVAudioSession *audioSession = [AVAudioSession sharedI ...
- javascript dom编程艺术笔记之图片库的改进
dom的操作要遵守的原则 1.平稳退化 2.分离javascript 3.向后兼容 4.性能考虑 改进后的显示图片方法 function showpic(whichpic){ if(!document ...