Havel--Hakimi定理判断可图化 python

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

时间: 2024-12-29 09:10:15

Havel--Hakimi定理判断可图化 python的相关文章

POJ 1659 Frogs&#39; Neighborhood Havel-Hakimi定理判断可图

1,Havel-Hakimi定理主要用来判定一个给定的序列是否是可图的. 2,首先介绍一下度序列:若把图 G 所有顶点的度数排成一个序列 S,则称 S 为图 G 的度序列. 3,一个非负整数组成的有限序列如果是某个无向图的序列,则称该序列是可图的. 4,判定过程:(1)按降序排序,进入步骤(2).(2)将第[2,2+s[1]-1]全部减1,若出现负数则不可图,判定结束.若[2,2+s[1]-1]全部变为0,则可图,判定结束.将s[1]删除,跳至步骤(1). #include <algorithm

Havel-Hakimi定理---通过度数列判断是否可图化

0.可图:一个非负整数组成的序列如果是某个无向图的度序列,则该序列是可图的. 1.度序列:Sequence Degree,若把图G所有顶点的度数排成一个序列,责成该序列为图G的一个序列.该序列可以是非递增序的.可以是非递减序列.可以是任意无序的. 2.Havel-Hakimi定理:给定一个非负整数序列{d1,d2,...dn},若存在一个无向图使得图中各点的度与此序列一一对应,则称此序列可图化.进一步,若图为简单图,则称此序列可简单图化. 定理描述:由非负整数组成的有限非递增序列,S={d1,d

HDU 2454 Degree Sequence of Graph G(Havel定理 判断简单图的存在)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2454 Problem Description Wang Haiyang is a strong and optimistic Chinese youngster. Although born and brought up in the northern inland city Harbin, he has deep love and yearns for the boundless oceans.

关于可图化序列的一点结论 NEU 1429

Graphic Sequence A graphic sequence is a sequence of numbers which can be the degree sequence of some graph. A sequence can be checked to determine if it is graphic using GraphicQ[g] in the Mathematica package Combinatorica` . Erd?s and Gallai (1960)

算法之判断一个图是否有环

在一些经典算法中,经常需要判断一些图是否具有环路,比如拓扑排序,需要在最初判断该图是否有环路,如有有环路,则无法找到最长的一条线,比如dijkstra算法,每找到一条最短的边,都要判断找到的边和现有的树是否已经构成了环路. 因此,在这篇博客,我们重点来说一个判断图是否有环的算法. 首先我们介绍一个对于无向图和有向图通用的算法,先讲算法思路: 1.统计各个图中各个点的入度数(能够到达这个点的点). 2.然后找出入度数为0的点(无向图找入度数为1的点). 3.删除入度数为0的点,将其边也删除. 4.

图结构练习——判断给定图是否存在合法拓扑序列

图结构练习——判断给定图是否存在合法拓扑序列 Time Limit: 1000MS Memory limit: 65536K 题目描述 给定一个有向图,判断该有向图是否存在一个合法的拓扑序列. 输入 输入包含多组,每组格式如下. 第一行包含两个整数n,m,分别代表该有向图的顶点数和边数.(n<=10) 后面m行每行两个整数a b,表示从a到b有一条有向边. 输出 若给定有向图存在合法拓扑序列,则输出YES:否则输出NO. 示例输入 1 0 2 2 1 2 2 1 示例输出 YES NO #inc

图结构练习——判断给定图是否存在合法拓扑序列(sdutoj)

#include<stdio.h>#include<string.h>int d[15],map[15][15],vis[15];int main(){    int i,j,k,f,n,m,u,v;    while(~scanf("%d%d",&n,&m))    {        memset(d,0,sizeof(d));        memset(map,0,sizeof(map));        memset(vis,0,size

ZOJ 1015 Fishing Net(判断弦图)

题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=15 题意:给定一个图.判断是不是弦图? 思路:(1)神马是弦图?对于一个无向图,若该图的任意一个长度大于3的环中存在一条边连接这个环上不相邻的两点,则此图称作弦图. (2)什么是团?团是原图的一个子图,子图就是包含了原图的某些点,那么就要包含这些点之间的边.并且团不是一般的子图而是一个完全子图,就是这个子图的任意两个顶点之间都有边.下面的ABCD就是原图的一个团. (

poj Transferring Sylla(如何快速的判断一个图是否是3—连通图,求割点,割边)

Transferring Sylla 首先,什么是k连通图?k连通图就是指至少去掉k个点使之不连通的图. 题目: 题目描述的很裸,就是给你一张图要求你判断这图是否是3-连通图. 算法分析: ///////////////////////////////////////////////////////////////////// (网上别人的分析,分析的很好所以直接引用了) 考虑一下不可行的情况,就是存在两点间的路径条数<3情况,那么我们可以去枚举两个点a和b,然后将其和相邻的边删除,然后判断联通