关于平面图到对偶图的转化

关于平面图到对偶图的转化闲话哇对偶图真的是个好东西,昨天考NOI2010的时候前两道很快做完了,看着t3发呆了1个多小时,啥也想不出来.看着网格图突然想到听说bzoj1001狼抓兔子可以用对偶图求解.对偶图是啥我也不知道,听说把面看成点,连边后跑一边最短路就可以了.但是当时想到这个突然发现自己不会建对偶图,看时间还有一个多小时,于是建了8种可能的图,每一个都跑一遍spfa,发现有一个可以过样例,手

大家好,又见面了,我是你们的朋友全栈君。

闲话

哇对偶图真的是个好东西, 昨天考NOI2010的时候前两道很快做完了, 看着t3发呆了1个多小时, 啥也想不出来. 看着网格图突然想到听说bzoj1001狼抓兔子可以用对偶图求解. 对偶图是啥我也不知道, 听说把面看成点, 连边后跑一边最短路就可以了. 但是当时想到这个突然发现自己不会建对偶图, 看时间还有一个多小时, 于是建了8种可能的图, 每一个都跑一遍spfa, 发现有一个可以过样例, 手动模拟一下觉得这种建图没错, 就交上去了. 没想到居然还对了, 哈哈NOI2010我居然290(spfa被卡了一个点), 心中狂喜, 但是一想到t1做过, t3蒙对也就不敢说什么了, 而且这是10年的题了, 时代在进步啊…

什么是平面图?

平面图的定义就是所有的边只在顶点处相交, 这里就是一个例子.


这里写图片描述


你看, 边与边之间没有相交吧~.
其实这是论文PPT的图, 本人画的太丑就不挂出来了.

So…对偶图?

对于每一个平面图, 都有与其相对应的对偶图. 我们假设上面的例图是图G, 与其对应的对偶图G*, 那么对于G*来说, G*上面的每一个点, 对应的是G里面的每一个面. 比如说下面就是G*.

这里写图片描述

上面的点就是对偶图G里的点.
那么关于对偶图G*里的边呢 ? 对于G中本来的每条边e, 他是两个面(比如说面f1和f2)的交边, 那么在对偶图里, 我们对这两个面(f1, f2)所映射在G*里的点连线(f1* 连向f2*). 如果f1 == f2(比如说G中5, 6这条边, 边的两侧都是同一个面, 那我们就建一条回边.
图就长这样(回边在5, 6那里).


这里写图片描述


这个就是对偶图了.

平面图与对偶图之间的关系

1.G*中的环与G中的割一一对应.(割就是一些边, 如果割掉这些边使图分成两个互不连通的子图的话, 就称之为割).
举例: 1*-2*-3*-4*这个G*里的环, 对应的是G中1-3, 2-3, 3-4, 3-5这个割.
TIPS:这个性质对于平面图的最小割有巨大的作用.

2.G的面数等于G*的点数, G与G*的边数相同.

The END

希望能对大家有所帮助. 平面图转对偶图在平面图网络流问题里面作用巨大. 最小割转对偶图最短路问题解法:Click Here.

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/141132.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • sql中ddl和dml(数据库表与视图的区别)

    DDL和DML的定义和区别1、DML(DataManipulationLanguage)数据操纵语言:适用范围:对数据库中的数据进行一些简单操作,如insert,delete,update,select等.对表(索引和序列)中数据操作就是DML,对数据库中的(表,索引,序列,同义词等)都是DDL操作 2、DDL(DataDefinitionLanguage)数据定义语言:适用范围:对数据库…

    2022年4月17日
  • Maven–如何下载JSONObject相关依赖架包

    Maven–如何下载JSONObject相关依赖架包一、开发场景Java开发当中经常需要Json格式的数据,这就用到JSONObject类,本文章只提供以下两种JSONObject对应架包的下载方式。com.alibaba.fastjson.JSONObject(依赖1个架包fastjson-1.2.28.jar)net.sf.json.JSONObject(依赖6个架包commons-beanutils-1.9.3.jar、commons-c…

    2022年7月12日
  • Swift — 面向对象中类和对象的属性

    Swift — 面向对象中类和对象的属性

    2022年2月2日
  • pl sql 循环_sql循环语句怎么写

    pl sql 循环_sql循环语句怎么写1、Loop……endLoop语句标准格式:LOOP statement_list–循环代码块 IFexit_conditionTHEN EXIT;–满足IF条件退出循环 ENDIF;ENDLOOP;–从1开始打印,当i=10退出循环。pl/sql中“=”表示比较,“:=”表示赋值。DECLAREiNUMBER;BEGIN i:=0; LOOP i:=i+1; dbms_output.put_line(i); IF i=

    2022年10月9日
  • 网络爬虫——scrapy入门案例

    网络爬虫——scrapy入门案例一、概述Scrapy,Python开发的一个快速、高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据。Scrapy用途广泛,可以用于数据挖掘、监测和自动化测试.其最初是为了页面抓取(更确切来说,网络抓取)所设计的,后台也应用在获取API所返回的数据(例如AmazonAssociatesWebServices)或者通用的网络爬虫.Scrapy吸引人的地方在于它是一个框架,任何人都可以根据需求方便的修改。它也提供了多种类型爬虫的基类,如BaseSpider

    2022年6月26日
  • 解决:navicat for mysql连接失败[通俗易懂]

    解决:navicat for mysql连接失败[通俗易懂]1、问题描述:在navicatformysql连接mysql8.0.23时,出现如下错误。2、原因:通过百度翻译,发现是由于navicat版本的问题,出现连接失败的原因。这也就是说需要升级navicat版本。通过搜索,发现navicat是收费的,升级将会面临其他不可控的问题。于是需要寻找其他方法。通过查阅资料以及他人的经历分享。我得知了:mysql8之前的版本中加密规则是mysql_native_password,而在mysql8之后,加密规则是caching_sha2_password

    2022年10月14日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号