zoukankan      html  css  js  c++  java
  • 一道有趣的图论思考题

    求证:任意多边体满足面数+点数-2=边数

    思考这个问题我还是花了一些功夫,主要原因是一开始方向错了,从把一个多边体沿边剪开,剪成若干个多边形的思路

    从这个方向研究是很困难的,原因是剪开边时边数和点数的变化很复杂,有三种情况,而且随着不同的剪开顺序而改变

    但是这个方向给我们一个重要提示:试图把球面上的图转化为简单平面图

    只需沿某一个多边形面的边把这个面拿掉,剩下的面一定可以展开为平面图形,进而抽象为简单平面图

    为什么?

    考虑这个问题前,要先研究一下平面图和球面图的性质(主要研究其异同)

    不难发现,区分平面和球面最主要的标志是是否存在一条环路,使得其余所有面都在环路的内侧,定义这条路径为平面图形的外缘

    (有关内侧的定义其实还需要更严谨的分析,不过限于篇幅和智力这里就不再进一步分析了)

    那么当把某个面拿掉后,剩下的图形的外缘实际就是被去掉的多边形的边

    为了方便讨论,我们只拿掉一个简单多边形,即内部没有边的多边形

    这样就把问题转化为研究平面上的图形

    将顶点抽象为结点,边抽象为结点之间的边,那么原先的平面图形就转化为平面简单图,原先的多边形就转化为图中的简单圈(或者叫简单环)

    研究圈数和点数边数的关系应该从哪个角度?

    当然是生成树啦(不用对偶图,不要想复杂了)

    对这个图,假设共有n个点m条边,那么做生成树就需要用掉n-1条边

    接下来添加剩下的边,由生成树的性质易知,每添加一条边就多出一个圈

    图论中点和边是可以随意移动的,这种说法实际上并不正确,这里为了方便研究,假设点和边是固定的

    由于图是从多边形上拆下来的,保证边之间不会相交,我们就可以只考虑内部没有其他边的圈,如此一来,增加一个圈的说法就是正确的了

    (后面的论证破坏了图的性质,只不过为了方便描述仍旧使用图的术语来表示,把它完全看作平面图形来研究其实也是可以的)

    为了方便对图论不熟悉的选手阅读,这里还是证一下吧

    需要注意圈的一种判断方式:如果两个点之间存在不相交的路径,那么这两条路径就组成一个圈

    由于生成树的定义,一开始保证任意两个点之间都有唯一的简单路径(简单路径指每个点至多只经过一次的路径)

    接下来每添加一条边,都有两种情况:

    ①边的两个顶点原先只有唯一路径

    这种情况显然增加了一个圈

    ②边的两个顶点有多条不相交的简单路径

    这时实际上是把这两个点所在的圈一分为二,仍然是增加了一个圈

    (图论中也不应该有一分为二这样的说法,但是由于和上文同样的原因,假设点和边是固定的,我们就可以说一个圈被分为两个圈)

    综上所述,每添加一条边就多出一个圈

    总共又添加了m-n+1条边,那么就多出了m-n+1个圈

    根据之前我们定义的,平面图和平面图形的对应关系,就可以得到面数=边数-点数+1,也就是面数+点数-1=边数

    别忘了把刚才拿掉的多边形盖上,点数和边数都不变,面数多了1,那么计算边数的时候要再让面数-1

    最终就可以得到面数+点数-2=边数啦!

    最后给出拓扑学中关于此问题的更具一般性的结论:

  • 相关阅读:
    java中的 equals 与 ==
    String类的内存分配
    SVN用命令行更换本地副本IP地址
    npoi 设置单元格格式
    net core 微服务框架 Viper 调用链路追踪
    打不死的小强 .net core 微服务 快速开发框架 Viper 限流
    net core 微服务 快速开发框架 Viper 初体验20201017
    Anno 框架 增加缓存、限流策略、事件总线、支持 thrift grpc 作为底层传输
    net core 微服务 快速开发框架
    Viper 微服务框架 编写一个hello world 插件02
  • 原文地址:https://www.cnblogs.com/cdcq/p/14352062.html
Copyright © 2011-2022 走看看