Havel--Hakimi定理推断可图化 python
介绍:
哈维尔[1955]——哈吉米[1962]算法能够用来判读一个度序列d是否是可图化的。
哈维尔[1955]——哈吉米[1962]定理:
对于N > 1,长度为N的度序列d可以可图化当且仅当d*可以可图化
(d*是将d中最大的度delta删除,然后将当中delta个最大的度分别减去1得到的。
最小的可图化序列式d(1) = 0。)
证明:
充分性:
若N = 1。则是平庸的。对于N > 1。如果d为d(1) ≥ d(2) ≥ ...... ≥ d(n) 。
如果简单图G*拥有度序列d*,能够在G*中加入一个顶点V。
使得V与G*中度为d(2) - 1......d(delta+1) - 1的顶点邻接。
这些d(i)是d中的delta个最大度顶点,不一定是d*中的delta个最大度顶点。
必要性:
简单图G生成度序列d,然后G生成一个子图G*有度序列d*。让w为d中最大度delta的点。
S为delta个点的集合,当中有所期望的d(2)........d(delta + 1)。假设N(w) = S
则将w删除得到G*。
假设不然,则有些在S中的点与N(w)中的不同样,这时候。
能够通过在不改变每一个顶点的度的情况下。改变G的画法来添加| N(w) ∩ S |的个数。
因为| N(w) ∩ S |最多添加delta次。能够反复这一过程将G转化为G#
(拥有d且S中的点为w的邻接顶点)。
然后从G#中删除w得到拥有d*的G*。
因为N(w) ≠ S,能够选择点x属于S,点z∉s。且w与z有边,w与x无边。
我们希望通过在w与x之间加入边,删除w与z之间的边,但又不希望改变顶点的度。
因为d(x) ≥ d(z)而且w是z相连,则必定有一个点y与x邻接却不与z邻接。
这是採用一个2调换,加入边集{ wz, xy },删除{ wx, yz }来添加| N(w) ∩ S |。
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcGFuZG9yYV9tYWRhcmE=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" width="300" height="300" alt="">
算法:
先将序列d逆序排序,得d(1) ≥ d(2) ≥ d(3) ≥ ........ ≥ d(n-1) ≥ d(n)。
delta = d1,将d1从d中删除。将d2一直到d(delta+1)的值都减去1得到新的度序列d*。
然后再将d*排序,循环。直到d*当中出现小于0的度,则不可能可图化,或者直到d*中全为0,则为可图化。
本质:
贪心算法
list1 = [ 4, 7, 7, 3, 3, 3, 2, 1 ]
list2 = [ 5, 4, 3, 3, 2, 2, 2, 1, 1, 1 ] def havel_hakimi_algo( degree_list ): degree_list.sort( reverse = True )
print degree_list
for degree in degree_list:
if degree < 0:
return False
if degree != 0:
remove_val = degree_list.pop( 0 )
for index in range( remove_val ):
degree_list[index] -= 1
havel_hakimi_algo( degree_list )
return True print havel_hakimi_algo( list1 )
print havel_hakimi_algo( list2 )
Havel--Hakimi定理推断可图化 python的更多相关文章
- POJ1659 Frogs' Neighborhood(Havel–Hakimi定理)
题意 题目链接 \(T\)组数据,给出\(n\)个点的度数,问是否可以构造出一个简单图 Sol Havel–Hakimi定理: 给定一串有限多个非负整数组成的序列,是否存在一个简单图使得其度数列恰为这 ...
- HDU 2454 Degree Sequence of Graph G(Havel定理 推断一个简单图的存在)
主题链接:pid=2454">http://acm.hdu.edu.cn/showproblem.php?pid=2454 Problem Description Wang Haiya ...
- Havel-Hakimi定理---通过度数列判断是否可图化
0.可图:一个非负整数组成的序列如果是某个无向图的度序列,则该序列是可图的. 1.度序列:Sequence Degree,若把图G所有顶点的度数排成一个序列,责成该序列为图G的一个序列.该序列可以是非 ...
- docker容器化python服务部署(supervisor-gunicorn-flask)
docker容器化python服务部署(supervisor-gunicorn-flask) 本文系作者原创,转载请注明出处: https://www.cnblogs.com/further-furt ...
- poj Transferring Sylla(怎样高速的推断一个图是否是3—连通图,求割点,割边)
Transferring Sylla 首先.什么是k连通图? k连通图就是指至少去掉k个点使之不连通的图. 题目: 题目描写叙述的非常裸.就是给你一张图要求你推断这图是否是3-连通图. 算法分析: / ...
- 14 张思维导图构建 Python 核心知识体系
ZOE是一名医学生,在自己博客分享了很多高质量的思维导图.本文中所列的 14 张思维导图(高清图见文末),是 17 年作者开始学习 Python 时所记录的,希望对大家有所帮助.原文:https:// ...
- 关于可图化序列的一点结论 NEU 1429
Graphic Sequence A graphic sequence is a sequence of numbers which can be the degree sequence of som ...
- poj 1659 Frogs' Neighborhood 度序列可图化 贪心
题意: 对一个无向图给出一个度序列,问他是否可简单图化. 分析: 依据Havel定理,直接贪心就可以. 代码: //poj 1659 //sep9 #include <iostream> ...
- 使用七牛云存储----大家自己的图床[python]
##写博客什么的总得贴图吧,图床选来选去还是七牛吧.嗯,就是你了 [OSchaina 源码] 结合FastStone Capture 简直爽歪歪. FastStone Capture 自动保存图片到文 ...
随机推荐
- 微软自家的.Net下的JavaScript引擎——ClearScript
之前我介绍过一个开源的.Net下的Javascript引擎Javascript .NET,今天发现微软自己也开源了一个JavaScript引擎——ClearScript(当然,也支持VB Script ...
- win8 下脚本安装IIS
@echo off echo 正在添加IIS8.0 功能,依据不同的网络速率,全程大约需要5分钟时间... start /w pkgmgr /iu:IIS-WebServerRol ...
- (转)MFC的GUI窗口使用Console输出函数printf
原文链接 在GUI程序中使用printf函数: #include <io.h> #include <fcntl.h> void InitConsole() { ; FILE* ...
- 使用Python开发SQLite代理服务器(转载)
转载:https://mp.weixin.qq.com/s?timestamp=1498531736&src=3&ver=1&signature=Eq6DPvkuGJi*G5s ...
- 通过案例对SparkStreaming透彻理解三板斧之一
本节课通过二个部分阐述SparkStreaming的理解: 一.解密SparkStreaming另类在线实验 二.瞬间理解SparkStreaming本质 Spark源码定制班主要是自己做发行版.自己 ...
- require.js - 详解
测试结构如下 index.html <!DOCTYPE html> <html lang="en"> <head> <meta chars ...
- 详解Python中的迭代器和使用
对于一个列表,a = [1, 2, 3, 4],我们最常见的遍历方式就是: a = [1, 2, 3, 4] for item in a: print item 这里我们研究一种新的方式,就是迭代器. ...
- utf8和utf-8的区别?
utf8和utf-8的区别? utf-8和utf8的区别? 今天再次区别 相信很多程序员刚开始也会有这样的疑惑,如题,我也是. 其实,他们可以这样来区分. 一.在php和html中设置编码,请 ...
- mui 选项卡
方法一:通过css 实现选项卡 <div id="slider" class="mui-slider"> <div id="slid ...
- Spring 对没有实现接口的类使用aspect的时候,可以使用CGLIB
AspectJ中使用CGLIB 在spring中,当对没有实现接口的类使用aspect的时候,可以使用CGLIB, <aop:aspectj-autoproxy proxy-target-cla ...