博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
图论中一类问题的总结 :必须边(点) 可行边(点)
阅读量:5019 次
发布时间:2019-06-12

本文共 1036 字,大约阅读时间需要 3 分钟。

很多图论问题之所以复杂 是因为这个模型本身是不唯一的,举个例子,一个二分图的最大匹配可能有很多个,而一个无向图的MST(最小生成树)也可能有不同的形态,这就导致了这样一类问题的诞生:1.某条边(或点)是否是满足这个模型的前提下必须存在的 2.可不可能使得这条边存在的前提下满足这个模型

当然这个问题还可以延伸出许多变种,例如所有边都是必须边,那么这个模型唯一

1.无向图固定起点S和终点T,某条边是否能够成为S-T最短路上的一条边?

这个问题比较容易,对S和T 分别做一次SSSP(单源最短路),到各个点的最短路分别记为distS[]和distT[],那某条边x-y,边权为w 能成为最短路的条件显然是distS[x]+w+distT[y]==distS[T]

 

2.某条边能否成为无向图MST上的可行边?

结论:某条边e能成为MST上的一条边的充要条件是在图中不存在一个环使得e为环上权值最大的边

证明:

引1:MST的回路性质:不妨设图中所有边权各不相同,C为图G上任意回路,边e为C上权值最大的边,则图G上的MST 不包含e

该命题很显然,利用反证法即可证明

充分性:由回路性质直接可以得到不存在一个环使得e为环上权值最大的边

必要性:

假设存在不包含e的MST为T,我们在T中加入一条边e则会形成一个回路,由于不存在一个回路使得e为最大值,所以我们删去回路上的最大值的边,此时仍然是树的结构设为T'  且T'包含边e,w(T)<w(T’) 和T是MST矛盾 QED.

相关问题:

 

3.某个点是否是二分图最大匹配的必须点?

算法:这个算法比较多,介绍一种比较好理解的

先跑一边二分图的最大匹配,然后在原有匹配的基础上,我们依次把X部对应Y部匹配的点标记,然后对X部的这个点再次增广,如果能够增广,显然标记的这个点不是必须点

时间复杂度O(2VE)也就是跑两次匈牙利的时间

 附:同理,判断某条边是否是必须边也可用此法

 

4.二分图最大匹配的所有可行边

算法:跑一遍二分图的最大匹配构造初始匹配,然后把初始匹配的匹配边看成点,向原来X部指向Y部的边建边,然后跑一次强连通即可(貌似不太容易说明白,另一种建图方式是把初始最大匹配的边反向建边,其它边不变 然后跑强连通)

某条边是二分图匹配的可行边当且仅当这条边的两个顶点所在的强连通分量相同

 

to be continue

转载于:https://www.cnblogs.com/philippica/p/4152955.html

你可能感兴趣的文章
icon fonts入门
查看>>
【Django】如何按天 小时等查询统计?
查看>>
HDU2191(多重背包)
查看>>
测试用例(一)
查看>>
【转】 mysql反引号的使用(防冲突)
查看>>
转载【微信支付】jsapi支付之传参问题(使用微信官方SDK之PHP版本) V3之WxpayPubHelper 亲测有效,V3WxpayAPI_php_v3.zip版未测试,理论上也是一样的。...
查看>>
邮件中的样式问题
查看>>
AJAX 状态值与状态码详解
查看>>
php面向对象编程(oop)基础知识示例解释
查看>>
1.在数组中找到与给定总和的配对
查看>>
树的子结构
查看>>
关于根据Build Platform或者OS 加载x86或者x64 dll的问题
查看>>
程序员高效开发的几个技巧
查看>>
js-权威指南学习笔记19.2
查看>>
hexo 搭建博客
查看>>
关于 UIWebView 几个高级用法
查看>>
maven创建的项目中无法创建src/main/java 解决方案
查看>>
华为软件开发云测评报告二:代码检查
查看>>
集合1
查看>>
js 原生 ajax
查看>>