平面图转换成对偶图的应用

转自:http://blog.sina.com.cn/s/blog_60707c0f01011fnn.html

一个图G=(V,E),若能将其画在平面上,且任意两条边的交点只能是G的顶点,则称G可嵌入平面,或称G是可平面的。可平面图在平面上的一个嵌入称为一个平面图。如下图左边黑色的图为平面图,右边红色的图不属于平面图:

由平面图的边包围而成,其中不含图的顶点。也称为面。包围面R的所有边组成的回路称为该面的边界,回路长度称为该面的度,记为deg(R)。具有相同边界的面称为相邻面。由平面图的边包围且无穷大的面称为外部面。一个平面图有且只有一个外部面。如下面的平面图中,R0是外部面R0与R1, R2, R3均相邻。deg(R0)=8, deg(R1)=4, deg(R2)=5(R2经过的顶点序列为v7-v4-v6-v4-v5-v7), deg(R3)=1:

利用欧拉公式和数学归纳法可以证明平面图G的所有面的度之和等于其边数|E|的2倍,即:

下面我们引入对偶图,设有平面图G=(V,E),满足下列条件的图G‘= (V‘,E‘) 称为图G的对偶图:G的任一面Ri内有且仅有一点Vi‘;对G的域Ri和Rj的共同边界Ek,画一条边Ek‘=(Vi‘,Vj‘)且只与Ek交于一点;若Ek完全处于Ri中,则Vi‘有一自环Ek‘,如下图G‘是G的对偶图:

1 最大流的应用

如果网络流中的图G可以转化为一个平面图,那么其对偶图G‘中的环对应G中的割,利用最大流最小割定理转化模型,根据平面图G‘与其对偶图的关系,先求出最小割。首先连接s和t,如下图蓝色虚线,得到一个附加面,我们设附加面对应的点为s‘,无界面对应的点为t‘,求该图的红色的对偶图G‘,最后删去s‘和t‘之间的边:

一条从s‘到t‘的路径,就对应了一个s-t割,更进一步,如果我们令每条边的长度等于它的容量,那么最小割的容量就等于最短路的长度。这样时间复杂度大大降低了。

时间: 2025-01-02 16:25:30

平面图转换成对偶图的应用的相关文章

平面图最小割 对偶图

平面图最小割 对偶图: 平面图G的性质: (1)满足n个点,m条边,f个面 f = m - n + 2; (2)存在与其对应的对偶图G*; 对偶图:将原图中每个面变成一个点,外边界的无限大的面看成一个点,后连线即成对偶图: G的面数等于G*的点数,边数相等: 详解请看 最大最小定理(平面图最小割 对偶图)周冬 对于平面图的最大流(最小割)只需转化为对偶图,直接跑最短路即可: ps:觉得建图是最复杂的,各种RE(边数就是原来的边数,只是点数变成了原来的面数,,不注意就RE了):还有现在行数列数都变

WORD2010如何把全角字母和数字批量转换成半角

个人觉得全角字符看起来相当别扭,如果文档中存在大量全角形式的字母和数字,要如何把它们全部转化成半角的呢? 全角和半角 全角是指一个字符占用两个标准字符位置的状态.汉字字符和规定了全角的英文字符及国标GB2312-80中的图形符号和特殊字符都是全角字符. 半角的显示内码都是一个字节,英文字母.罗马数字.西方语言的符号都是半角形式. END 如何实现全角半角间的转换 全角字符占用更多字符,看起来也不够美观,如何将全角字符转换成半角的呢?这里我们可以利用word来实现.   不论是txt文档还是其他什

Spark2 加载保存文件,数据文件转换成数据框dataframe

hadoop fs -put /home/wangxiao/data/ml/Affairs.csv /datafile/wangxiao/ hadoop fs -ls -R /datafile drwxr-xr-x - wangxiao supergroup 0 2016-10-15 10:46 /datafile/wangxiao -rw-r--r-- 3 wangxiao supergroup 16755 2016-10-15 10:46 /datafile/wangxiao/Affairs

ArcGIS中利用ArcMap将地理坐标系转换成投影坐标系(从WKID=4326到WKID=102100)

原文:ArcGIS中利用ArcMap将地理坐标系转换成投影坐标系(从WKID=4326到WKID=102100) 对于非地理专业的开发人员,对与这些生涩的概念,我们不一定都要了解,但是我们要理解,凡是以经纬度为单位的都是地理坐标系,因为它归根结底是一个椭球体,只不过各个国家为了反映该国家所在区域地球的真实形状,而采用不同的数学模型对本不是椭球体的地球进行椭球体化.而投影坐标系,是对地理坐标系按照某种方式投影到平面上的,所以可以认为它是一个平面坐标系,单位自然是米或千米. 我们在做开发的时候,尤其

如何在AJAX的毁掉函数中传递JSON数据?如何在控制器中接受并转换成数组?

首先,我们经过测试(或者你平时的开发经验)知道,在AJAX的回调函数中使用get或者post方式可以传递字符串(不信可以自己去写实例测试,不过要注意:get方式有数据量的限制): 方法一:我们将ajax的请求放回的JSON数组转换成字符串,然后在回调函数中get过去: a.html页面的AJAX请求代码: b.后台两个处理函数(尤其注意第二个是回调函数指向的处理函数): 方法二:我们在回调函数中直接处理发送一个新的AJAX请求(也可以写成匿名函数),将ajax请回来的JSON数组转化为字符串作为

在C#中将金额转换成中文大写金额

具体代码如下: /// <summary> /// 金额转换成中文大写金额 /// </summary> /// <param name="LowerMoney">eg:10.74</param> /// <returns></returns> public static string MoneyToUpper(string LowerMoney) { string functionReturnValue = nu

将华氏温度转换成摄氏温度或将摄氏温度转化成华氏温度。(需考虑多种不合法的情况尽量转化为合法的)

//华氏温度与摄氏温度转换,编写一个程序,将华氏温度转换成摄氏温度或将摄氏温度转化成华氏温度. //要求程序运行时从控制台读入温度值及单位,并输出另一种温度值及单位,例如:若用户输入27 C则 //程序输出 81F:若用户输入96 F,则程序输出36 C(其中C代表摄氏温度,F代表华氏温度),华氏温度与摄氏温度转化的公式为: //C = 5 (F - 32) / 9 //F = 9 C / 5 + 32 //要求输入的温度值是整数,输出的温度值也是四舍五入后的整数. package 第三天_练习

第13题:整数转换成罗马数字&amp;第14题:罗马数字转换成整数

写在前面: 这两道题合起来写吧,其实整数转罗马数字我前天就写完了,当我想写罗马数转整数的时候竟然脑子一片空白,想了几分钟就想起来Map,本着学习的目的最终还是不想用Map,坚持C语言,今天脑子里直接涌出了Switch方式转换,看来"蹲在马桶上编程"的方式还是蛮不错的o(^▽^)o 整数转罗马数字:主要建立对应关系,输出时有点像百钱百鸡 罗马数字转整数:输入罗马数字(其实就是字符数组)后,for循环遍历,找出对应,这个再看不懂的建议去看看罗马数字表示方法. 第13题:整数转换成罗马数字

Java中的List转换成JSON报错(一)

1.错误描述 Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/lang/exception/NestableRuntimeException at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:800) at java.