检查其是否为汉密尔顿循环,使用python创建无向图

时间:2019-03-15 15:22:23

标签: python file graph undirected-graph hamiltonian-cycle

我需要写一个代码,告诉一个周期是否是汉密尔顿。

首先我有两个文本文件:

1.file: 第一行包含顶点和边的数量,其余的是一对相连的两个顶点,就像0 1表示这两个顶点之间有一条边。

2.file: 一条带有数字(顶点)的线,我们需要检查它是否为汉密尔顿循环。

首先,如何将图形记录下来而没有无向的循环?因为我听不懂,所以给我错误。

我尝试过:

def read_graph(f,l):
"""
Read a graph from a text file.

:param f: the file to read
:return: the edge-list, the starting and final vertex of path
"""

header = f.readline().split()
n, m = [int(s) for s in header]

graph = dict((i, []) for i in range(n))
for j in range(m):
    edge = f.readline().split()
    u, v = [int(s) for s in edge]
    graph[u].append(v)
"second file"
header2=l.readline().split()
k=[]
for s in header2:
    k.append(s)
graph2=dict((i,[]) for i in range (len(k)))
for g in range(len(k)-1):
    edge2=l.readline().split()
    w,z=[int(s) for s in edge2]
    graph2[w].append(z)


return graph, graph2




 ......


if __name__ == '__main__':
    import sys
    with open(sys.argv[1], 'r') as f:
        with open(sys.argv[1], 'r') as l:
            graph = read_graph(f,l)
        print(graph)

第二个问题:

您如何检查周期是否为汉密尔顿? 首先,我计划检查是否确实是一个周期,然后检查是否仅出现一个顶点。
我还有什么其他方法可以得到我的答案,建议或更简单的方法?

谢谢您的回复。

0 个答案:

没有答案