检查随机图着色是否正确(Python)
因此,我尝试了一种不同的图形着色方法,我所做的基本上是将随机颜色分配给图形的节点,我想做的是,在分配这些颜色后,检查着色是否正确(没有相邻节点具有相同的颜色),换句话说,检查节点及其各自的颜色,确保相邻节点没有相同的颜色 以下是我迄今为止所做的工作:检查随机图着色是否正确(Python),python,graph,networkx,approximation,graph-coloring,Python,Graph,Networkx,Approximation,Graph Coloring,因此,我尝试了一种不同的图形着色方法,我所做的基本上是将随机颜色分配给图形的节点,我想做的是,在分配这些颜色后,检查着色是否正确(没有相邻节点具有相同的颜色),换句话说,检查节点及其各自的颜色,确保相邻节点没有相同的颜色 以下是我迄今为止所做的工作: def approx_color(graph): colors = [1,2,3,4,5,6,7,8,9] xr = random.randint(0, len(graph.nodes)) s_c = []
def approx_color(graph):
colors = [1,2,3,4,5,6,7,8,9]
xr = random.randint(0, len(graph.nodes))
s_c = []
for i in range(len(graph.nodes)):
s_c.append(random.choice(colors))
colored = dict(zip(graph.nodes,s_c))
print(colored)
编辑:
“graph”变量是由networkx库生成的图形,
graph.nodes()
graph.edges()
是可以直接使用的第一部分的图形的节点和边的列表
如果没有两个相邻顶点具有相同的颜色,则图的着色是正确的。
因此,您只需迭代节点并检查它们的邻居。因此,您可以定义一个函数来检查条件是否有效
for u in graph.nodes():
for v in graph.neighbors(u):
if colored[u] == colored[v]:
return False
return True
这个问题不清楚。什么是
图形
变量?你想“检查”是什么意思?你说的“颜色是正确的”是什么意思?请看一看和。这些页面可能会帮助你更好地阐述问题。我编辑了我的帖子,我希望现在一切都清楚了。酷,现在你问的问题已经清楚了:)但是,你的问题在哪里还不清楚。现在您需要再次检查节点并将其与相邻节点进行比较。是的,工作正常,我没有读太多关于networkx库的内容,我也不知道邻居是预定义的。谢谢你的回答:D
for u in graph.nodes():
for v in graph.neighbors(u):
if colored[u] == colored[v]:
return False
return True