首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >绘制一个具有1800哈密顿路径的7顶点简单图

绘制一个具有1800哈密顿路径的7顶点简单图
EN

Stack Overflow用户
提问于 2016-11-29 19:57:32
回答 1查看 271关注 0票数 1

在“图论概论”课程准备考试时,我遇到了这个问题。如果有人给出方法来处理这样的问题,我会非常感激的(在这里,您指定顶点数、Hamiltonian路径或欧几里德路径,并询问图的结构)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-12-04 09:34:16

似乎没有带有这个性质的7个顶点图。至少我没找到-)

在完整的7个顶点图(K_7)中有7个!路径(与置换数相同: 5040.)从K_7中删除一个边缘会产生5*6!路径(3600)

移除几乎完全图中的一条边会移除许多路径。正因为如此,才能产生准确的1800条路径,最多可去除3条边。下面是一个python脚本,它检查没有一、二和三条边的路径数。

代码语言:javascript
复制
without_edges = (
    # One edge
    ('01',),
    # Two edges
    ('01', '23'),
    ('01', '12'),
    # Three edges
    ('01', '23', '45'),
    ('01', '02', '34'),
    ('01', '02', '23'),
    ('01', '02', '03'),
    # Four edges, few for testing
    ('01', '23', '45', '06'),
    ('01', '23', '45', '02'),
    ('01', '02', '34', '56'),
    ('01', '02', '34', '45'),
    ('01', '02', '34', '05'),
    # ...
)

for w_edges in without_edges:
    w_e = w_edges + tuple(e[::-1] for e in w_edges)
    n = 0
    for p in permutations('0123456'):
        p = ''.join(p)  # Represent permutation as a string
        if all(e not in p for e in w_e):
            n += 1
    print n, w_edges

产出如下:

代码语言:javascript
复制
3600 ('01',)
2640 ('01', '23')
2400 ('01', '12')
1968 ('01', '23', '45')
1824 ('01', '02', '34')
1632 ('01', '02', '23')
1440 ('01', '02', '03')
1392 ('01', '23', '45', '06')
1272 ('01', '23', '45', '02')
1392 ('01', '02', '34', '56')
1320 ('01', '02', '34', '45')
1152 ('01', '02', '34', '05')

没有确切的1800条路径的图,但路径的方向并不重要,因为K_7减去一条边有1800个路径。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40874696

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档