[转自Matrix67] 趣题:顶点数为多少的图有可能和自己互补
若干个顶点以及某些顶点和顶点之间的连线,就构成了一个“图”。如果对某个图进行变换,使得原来任意两个有连线的顶点之间都不再有连线,原来任意两个没有连线的顶点之间现在都有连线了,那么所得到的图就是原来那个图的“补图”。如果一个图和它的补图具有本质上完全相同的结构(这意味着,把其中一个图的顶点以适当的方式与另一个图的顶点建立一一对应的关系,那么对于谁和谁之间有连线、谁和谁之间没有连线这样的问题,两个图的情况是完全一样的),我们就说这个图和它自己是互补的。下图显示了一个顶点数为 5 的图以及它的补图,容易看出,它们的本质结构是相同的。这说明,顶点数为 5 的图有可能和自己互补。

下图显示了一个顶点数为 8 的图,它和它的补图也具有同样的本质结构(你能看出来吗)。这说明,顶点数为 8 的图也有可能和自己互补。

我们今天的问题是:对于那些正整数 n ,存在顶点数为 n 的与自己互补的图?
如果一个图有 n 个顶点,那么它总共就有 n(n-1) / 2 条可能的连线。显然,一个图要想和自己互补,它里面的连线数必然是 n(n-1) / 2 的一半,因此 n(n-1) / 2 必须得是偶数。这说明, n 只能等于 1, 4, 5, 8, 9, 12, 13, 16, 17, … ,即那些形如 4k 和 4k + 1 的数。
接下来,我们将会构造性地说明,对于上述的每一个 n ,顶点数为 n 的图都确实有可能和自己互补。当 n = 1 时,整个图只有 1 个顶点,没有任何连线,根据定义,它和它自己是互补的。当 n = 4 时,一条简单的“链”便满足要求:不妨把这 4 个顶点分别记作 x 、 y 、 z 、 w ,那么 x – y – z – w 的补图就是 y – w – x – z ,整个图的本质结构并未发生改变。
另外,对于任意一个有 k 个顶点的且与自己互补的图,在它外面添加一根由 4 个新顶点组成的链条 x – y – z – w ,再把顶点 x 与所有 k 个顶点都相连,把 w 也与所有 k 个顶点都相连。容易看出,整个图现在就有 k + 4 个顶点了,并且这个新的图也和自己是互补的。

因此,我们就可以从 n = 1 和 n = 4 的情形出发,借助上面的扩展方法,依次得到 n = 5, n = 8, n = 9, n = 12, … 的构造。这立即说明,对于所有形如 4k 和 4k + 1 的正整数 n ,顶点数为 n 的图都确实有可能和自己互补。
问题及解答出自 2000 年 Stephan C. Carlson 在 Mathematics Magazine 的一篇文章。我是在 Proofs Without Words 2: More Exercises in Visual Thinking 一书中看到这个问题的。
[转自Matrix67] 趣题:顶点数为多少的图有可能和自己互补的更多相关文章
- HDU 1068 Girls and Boys(最大独立集合 = 顶点数 - 最大匹配数)
HDU 1068 :题目链接 题意:一些男孩和女孩,给出一些人物关系,然后问能找到最多有多少个人都互不认识. 转换一下:就是大家都不认识的人,即最大独立集合 #include <iostream ...
- HDU 4160 Dolls (最小路径覆盖=顶点数-最大匹配数)
Dolls Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submiss ...
- leetcode刷题--两数之和(简单)
一.序言 第一次刷leetcode的题,之前从来没有刷题然后去面试的概念,直到临近秋招,或许是秋招结束的时候才有这个意识,原来面试是需要刷题的,面试问的问题都是千篇一律的,只要刷够了题就差不多了,当然 ...
- Girls and Boys---hdu1068(最大独立集=顶点数-最大匹配)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1068 题意:有n个人,他们之间存在着恋爱关系,现在告诉你每个人和其他人的关系,然后要从这n个人间选出尽 ...
- 代数&数论趣题集萃
暑假总不能只学习平面几何.所以这里也收集一些有趣的代数题或数论题,同时记下解法的一些提示.给未来的自己复习参考用. 多图片预警(请注意流量) 目录: Part 0:其他(8) Part 1:不等式(1 ...
- P2764 最小路径覆盖问题 (最小点覆盖=顶点数-最大匹配)
题意:最小路径覆盖 题解:对于一个有向图,最小点覆盖 = 顶点数 - 最大匹配 这里的最大匹配指的是将原图中每一个点拆成入点.出点, 每条边连接起点的出点和终点的入点 源点S连接每个点的出点,汇点T连 ...
- 【JavaScript】Leetcode每日一题-平方数之和
[JavaScript]Leetcode每日一题-平方数之和 [题目描述] 给定一个非负整数 c ,你要判断是否存在两个整数 a 和 b,使得 a2 + b2 = c . 示例1: 输入:c = 5 ...
- 【python】Leetcode每日一题-丑数2
[python]Leetcode每日一题-丑数2 [题目描述] 给你一个整数 n ,请你找出并返回第 n 个 丑数 . 丑数 就是只包含质因数 2.3 和/或 5 的正整数. 示例1: 输入:n = ...
- 【python】Leetcode每日一题-丑数
[python]Leetcode每日一题-丑数 [题目描述] 给你一个整数 n ,请你判断 n 是否为 丑数 .如果是,返回 true :否则,返回 false . 丑数 就是只包含质因数 2.3 和 ...
随机推荐
- .NET 云原生架构师训练营(KestrelServer源码分析)--学习笔记
目录 目标 源码 目标 理解 KestrelServer 如何接收网络请求,网络请求如何转换成 http request context(C# 可识别) 源码 https://github.com/d ...
- 常用字符的ASCII码
字母 ASCII码 十进制数 0 00110000 48 9 00111001 57 A 01000001 ...
- l线程池抓取lianjia
1. 线程池 的应用 from multiprocessing.dummy import Pool import requests from lxml import etree url="h ...
- chapter3——逻辑回归手动+sklean版本
1 导入numpy包 import numpy as np 2 sigmoid函数 def sigmoid(x): return 1/(1+np.exp(-x)) demox = np.array([ ...
- 微服务架构 | 10.2 使用 Papertrail 实现日志聚合
目录 前言 1. Papertrail 基础知识 1.1 Papertrail 特点 1.2 Papertrail 是什么 2. 使用 Papertrail 进行日志聚合的示例 2.1 创建 Pape ...
- 高性能Kafka
一.概述 消息队列模式: 点对点: 1:1.就是一个队列只能由一个消费者进行消费,这个消费者消费完毕就把消息进行删除,不会再给别的消费者.只能消费者拉消息. 发布/订阅: 1:多 消息队列主动推送消息 ...
- Mysql一个主一备
Mysql主从复制 -- 一主一备 主从复制原理: Mysql的主从复制是mysql本身自带的一个功能,不需要额外的第三方软件可以实现,其复制功能并不是copy文件实现的,而是借助binlog日志文件 ...
- JS中的堆内存与栈内存
在js引擎中对变量的存储主要有两种位置,堆内存和栈内存. 和java中对内存的处理类似,栈内存主要用于存储各种基本类型的变量,包括Boolean.Number.String.Undefined.Nul ...
- JavaScript多元运算符
JavaScript多元运算符 JavaScript多元运算符 **实例:**` function test(9){ var a=4,b=11; return p > 1 ? p<b ...
- IO复习
/* 字节流 输入字节流: ---------| InputStream 所有输入字节流的基类. 抽象类 ------------| FileInputStream 读取文件的输入字节流 ------ ...