转自http://sbp810050504.blog.51cto.com/2799422/883904     
我一直想写一些关于图论学习的收获。一直由于这样或者那样的原因都没有开始。无论如何,现在开始吧!
那么到底什么是图呢?我们这里说的图当然不是像照片一样的东东。最权威的定义:图=顶点集合+边集合。换言之,凡是能抽象成点集合和边集合的东 西都是图。比如:中国地图。地图上的城市是一个个的点,而任意两个相邻城市之间有路。那么地图就是很直观的一种图。为了更方便的表示,我们引入了英语单 词。Vertext(顶点),Edge(边),Graph(图)。不管什么图,就可以用G<V,E>表示了。
地图是一种图,中国的七大水系网也是一种图。很多湖泊可以视为点,而长江、黄河这些可以看作边。由于水流基本上是单向的(当然也有倒流的情况,这里我们理 想化就忽略了),所以,像这样:边有方向的图我们称为有方向的图(长江水只能从喜马拉雅流向东海,而绝对不会反过来的)简称有向图。如果边没有方向,那当 然称为无向图了。
我们还是回到地图。都说条条大路通北京(你说罗马也没错),那么有到底有多少条路到北京呢?在图论里,把这样连接到一个点的边的数量(比如连接到北京的路)称为:度!
对于图的所有顶点,我们可以统计出每个顶点的度。像这样的一串数字,我们称之为:度序列。那么反过来,给定一个序列,能否判断这个序列是可图的 呢?这里有一个定理:Havel-Hakimi定理可以用来判定一个序列是否可图。Poj1659就是用Havel-Hakimi解决的。
Havel-Hakimi定理的内容可百度之。
例题:POJ-1659
Havel-Hakimi定理很容易理解:
三步走就可以了:
比如序列:4 7 7 3 3 3 2 1
下标
1
2
3
4
5
6
7
8
4
7
7
3
3
3
2
1
第一步:把序列按降序排序。
下标
1
2
3
4
5
6
7
8
7
7
4
3
3
3
2
1
第二步:删除第一个数7。序列变成
下标
1
2
3
4
5
6
7
7
4
3
3
3
2
1
第三步:从头开始,数7个数,也就是下标:[1,7]把[1,7]区间里的值都减1
由于第一个数已经删除,那么序列变成这样的了:
下标
1
2
3
4
5
6
7
6
3
2
2
2
1
0
然后:
重复第一步:排序。
重复第二步:删除第一个数6
重复第三步:从头开始数6个数:也就是下标【1,6】,把区间【1,6】中的数删除。序列变成:
下标
1
2
3
4
5
6
2
1
1
1
0
-1
由于已经出现了-1,而一个点的边数(度)不可能为负数。所以,我们就可以判定序列无法构成一个图,所以此序列是不可图的。
下面再举一个例子:
已经排序:
5
4
3
3
2
2
2
1
1
1.
删除第一个数5:
4
3
3
2
2
2
1
1
1.
把前面5个数减1:
3
2
2
1
1
2
1
1
1.
排序:
3
2
2
2
1
1
1
1
1.
删除第一个数3:
2
2
2
1
1
1
1
1.
把前面3个数减1:
1
1
1
1
1
1
1
1.
排序:
1
1
1
1
1
1
1
1.
删除第一个数1:
1
1
1
1
1
1
1.
把前面1个数减1:
0
1
1
1
1
1
1.
排序:
1
1
1
1
1
1
0
删除第一个数1:
1
1
1
1
1
0
把前面1个数减1:
0
1
1
1
1
0
排序:
1
1
1
1
0
0
依此类推:到最后只剩下:
0
0
0
0
由此判断该序列是可图的。

转载于:https://www.cnblogs.com/gj-Acit/archive/2013/03/06/2946190.html

Havel-Hakimi定理相关推荐

  1. Havel—Hakimi定理(度序列)

    对于图的所有顶点,我们可以统计出每个顶点的度.像这样的一串数字,我们称之为:度序列.那么反过来,给定一个序列,能否判断这个序列是可图的呢?这里有一个定理:Havel-Hakimi定理可以用来判定一个序 ...

  2. Havel–Hakimi算法学习笔记(哈维尔算法)详细【Python】

    问题 来源离散数学的图论中 第一个接触到的算法:Havel–Hakimi算法 (哈维尔算法) 判断一个非负序列是否为某无向简单图的度数列的方法(Pyhton代码) 前提提要 1.无向简单图 首先先了解 ...

  3. 【图论】已知度数列情况下的简单无向图的判断方法

    感谢评论区大佬@goodloveyourlove补充的判断度数列是否能构成无向树的方法与例子. 关于度数列是否能构成无向树的判断方法可以移步至评论区. ======================== ...

  4. Codeforces 1091E New Year and the Acquaintance Estimation Erdős–Gallai定理

    题目链接:E - New Year and the Acquaintance Estimation 题解参考: Havel–Hakimi algorithm 和 Erdős–Gallai theore ...

  5. 图的可视化问题、havel-hakimi算法、Erdős–Gallai定理

    图的可视化问题.havel-hakimi算法.Erdős–Gallai定理 简单无向图的可视化问题: 给定一个度数序列D={a1......an},a⊂Z+,aiD=\{a_1......a_n\}, ...

  6. 连通域最小外接矩形算法原理_算法|图论 2W字知识点整理(超全面)

    作者:SovietPower✨ 链接:https://ac.nowcoder.com/discuss/186584 来源:牛客网 度数序列 对于无向图, 为每个点的度数.有 (每条边被计算两次).有偶 ...

  7. 离散数学图论知识总结

    前言 马上过段时间期末就要离散考图论了,很多知识根本记不住(因为一部分是用日语学习的),在这里稍微码一下. 第一部分 图的定义和握手定理 基本定义 给出一个名为G无向图,V(G)表示图的点集合,E(G ...

  8. 如何判断一个度数数列能否构成简单图

    基于"Havel Hakimi"算法的判断是否构成简单图的方法 第一步 观察度数为奇数的数列是不是偶数个,例如2,3,3,1这个数列的度数为奇数的数有奇数个,不能构成简单图 如果满 ...

  9. Degree Sequence of Graph G

    问题描述 王海洋是一个坚强乐观的中国青年.虽然出生和成长在北方内陆城市哈尔滨,但他对无边无际的海洋有着深厚的爱和向往.毕业后,他来到一个沿海城市,在一家海运公司找到了一份工作.在那里,他在一艘货轮上担 ...

  10. [matlab]havel定理证明(笔记)

    [matlab]havel定理证明 是否可以由度序列生成简单图是图论中一个重要的内容. havel定理是解决这一问题的重要方法. havel定理证明 问题引出 简单图化问题 简单图 简单图即是指图上不 ...

最新文章

  1. 如何快速写一个违背双亲委托机制的classloader
  2. keras dense sigmoid_tf.keras一个存在自定义层时加载模型时的小坑
  3. 对于数据库中表示状态或类型字段表示方法的思考
  4. jquery和bottstrap
  5. virsh 关机_KVM virsh常用命令篇
  6. pycharm中安装可以贴图片的Markdown插件
  7. 带有批注的Spring硒测试
  8. Musical Theme POJ - 1743(后缀数组+二分)
  9. koa2后端和php后端,vue+koa2+mongo前后端分离restful,配置和部署到云
  10. PHP 实例 AJAX 与 MySQL
  11. Vert.x(vertx) 认证和授权
  12. 虚拟机文件上传至dsm服务器,群晖还可以这样玩!VMM虚拟机无损尝鲜DSM7.0
  13. tomcat出现404的原因_tomcat访问项目报404是什么原因?
  14. php7.2 eregi,php – 函数eregi()已弃用
  15. Python绘制二元函数图像
  16. web前端项目 - cypress自动化测试运行构建
  17. 如何让word设置连续的页码,解决不同页面页码相同问题
  18. Lambda与Stream流
  19. javaScript用函数的方式实现闰年的判断:输入一个年份,判断是否是闰年(分析+代码)
  20. 宇宙现场面试题目实录

热门文章

  1. 智领先机 惠普推出家庭信息中心HIC
  2. 透视WPF 应用程序的利器
  3. Forefront Security For Exchange文件传送限制测试
  4. C语言字符糊到了一起,C语言速成及格课.docx
  5. 2.1.5 编码与调制
  6. 怎样使用Debussy+ModelSim快速查看前仿真波形
  7. 计算机文档里的东西可以删吗,电脑c盘哪些文件可以删除
  8. dearpygui最新版教程
  9. GreenDao使用注意事项
  10. 微信端图片上传方式2