Python 3.x 在Python中获得Hybercubes的所有完美匹配

Python 3.x 在Python中获得Hybercubes的所有完美匹配,python-3.x,graph,networkx,hypercube,Python 3.x,Graph,Networkx,Hypercube,我正在研究超立方体。我目前正在使用python。我读到networkX是一个非常好的图形库。我的问题是 1) 我想构造超立方体Q4和Q5的所有完美匹配 2) 然后我想验证所有的完美匹配总是延伸到超立方体的哈密顿圈 注:已经证明了超立方体中的所有完美匹配总是延伸到超立方体中的哈密顿圈 我想用计算机程序验证这两项任务 我是python新手。我写了一个构建超立方体的代码 import networkx as nx graphSize = 4 hypercube = nx.hypercube_grap

我正在研究超立方体。我目前正在使用python。我读到networkX是一个非常好的图形库。我的问题是

1) 我想构造超立方体
Q4
Q5
的所有完美匹配

2) 然后我想验证所有的完美匹配总是延伸到超立方体的哈密顿圈

注:已经证明了超立方体中的所有完美匹配总是延伸到超立方体中的哈密顿圈

我想用计算机程序验证这两项任务

我是python新手。我写了一个构建超立方体的代码

import networkx as nx

graphSize = 4
hypercube = nx.hypercube_graph(graphSize)
print("Nodes in Q_" + str(graphSize) + " : " + str(nx.Graph.number_of_nodes(hypercube)))
print("Edges in Q_" + str(graphSize) + " : " + str(nx.Graph.number_of_edges(hypercube)))
输出

Q_4中的节点:16

Q_4中的边:32

这个运行得很好。但是我在
networkX
中找不到任何库或函数来获得所有完美匹配的列表。有人能告诉我,在任何python库中是否有任何函数可用于获得图形中的所有完美匹配,或者有人有代码仅为
Q4
Q5
构造所有完美匹配。提前感谢。

1)我想构造超立方体
Q4
Q5
的所有完美匹配

我不知道有哪个库可以直接找到图的所有完美匹配。但是,“包含枚举二部图中所有完美匹配和最大匹配的函数。”因为所有完美匹配都是最大匹配,所以可以使用此函数获取所有最大匹配,并丢弃那些不完美的匹配。下面是在Python2.7中执行此操作的一些代码

将networkx导入为nx
图形大小=4
超立方体=nx.超立方体图(图大小)
#根据bipartitematching.py的要求,设置节点的“bipartite”属性
底部节点,顶部节点=nx.bipartite.set(超立方体)
二部_属性={node:0表示底部_节点中的节点}
更新({node:1表示顶部节点中的节点})
nx.设置节点属性(超立方体、二分体属性、“二分体”)
#现在找到所有最大二部匹配
从BipPartItemMatching导入enumMaximumMatching
匹配=枚举最大匹配(超立方体)
#最后,找到那些最完美的匹配
完美匹配=[]
对于匹配中的匹配:
如果len(匹配)=nx.节点数(超立方体)/2:
完美匹配。追加(匹配)
#有多少人?
打印(len(完美匹配))

我已经验证了这段代码为4d超立方体生成272个,但我没有耐心让它为5d超立方体完成。根据,5d超立方体应该有589185个完美匹配,因此使用此代码查找它们可能会非常慢。

Networkx有一种算法,可以检查一组边是否是完美匹配。但我不知道networkx或其他python软件中有哪种算法可以构造所有这些函数。@Joel,如果你知道任何其他语言的库可以生成图形的所有完美匹配?任何帮助都将不胜感激:)对不起,我帮不了你。我在查找这个问题时发现的最接近的算法是“blossom算法”,但我不清楚如何确定你找到了所有这些算法。我如何才能得到非二部图的所有完美匹配?有什么想法吗?