【转】来自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 ...
随机推荐
- oracle report err:REP-2103 PL/SQL formula returned invalid value or no value
好多年没用report builder做报表了,最近又开始接触这玩意了,今天修改一个report,调试半天没发现逻辑问题,一直报REP-2103: Column 'CF_report_line_po' ...
- LockSupport的park和unpark
LockSupport是JDK中比较底层的类,用来创建锁和其他同步工具类的基本线程阻塞原语. Java锁和同步器框架的核心AQS:AbstractQueuedSynchronizer,就是通过调用Lo ...
- Android源码分析:HeaderViewListAdapter
http://bj007.blog.51cto.com/1701577/643568 对于手机开发,我一直坚持的是“用iPhone的方式开发iPhone应用,用Android的方式开发Android应 ...
- sqlserver中的锁
NOLOCK(不加锁) 此选项被选中时,SQL Server 在读取或修改数据时不加任何锁. 在这种情况下,用户有可能读取到未完成事务(Uncommited Transaction)或回滚(Roll ...
- MVC小系列(七)【分部视图中的POST】
MVC小系列(七)[分部视图中的POST] 在PartialView中进行表单提交的作用:1 这个表单不止一个地方用到,2 可能涉及到异步的提交问题 这两种情况都可能需要把表单建立在分部视图上, 使用 ...
- 3.redis.3.2 下载,安装、配置、使用、集群主从创建 - 3
当然,集群最主要的就是配置文件: 简单配置如下, port 7001 bind 127.0.0.1 databases 16 appendonly yes appendfilename "a ...
- 学习笔记_过滤器概述(过滤器JavaWeb三大组件之一)
过滤器Filter Filter和Lister是Servlet规范里的两个高级特性.不同于Servlet,它们不用于处理客户端请求,只用于对request.response进行修改或者对context ...
- ios 消息跳转处理
一.消息转发流程 当向Objective-C对象发送一个消息,但runtime在当前类及父类中找不到此selector对应的方法时,消息转发(message forwarding)流程开始启动. 动态 ...
- sqlite3 语句总结
一. iOS客户端设计数据库时一般使用 sqlite,以sqlite3 为例,简单介绍一下. 二. sqlite3常用命令当前目录下建立或打开test.db数据库文件,并进入sqlite命令终端 ...
- Microsoft Windows Installer 工具 Msiexec.exe 的命令行选项
摘自:http://support.microsoft.com/kb/314881/zh-cn 概要 本文列出了 Windows Installer 工具 Msiexec.exe 的命令行选项.Msi ...