我需要编写一个代码来判断一个循环是否是汉密尔顿。
首先我有两个文本文件:
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)
第二个问题:
你如何检查循环是否是汉密尔顿?首先我打算检查它是否真的是一个循环,然后如果是,然后检查顶点是否只出现一个。
我还应该做些什么来获得我的答案、建议或更简单的方法吗?
谢谢你的回复。