Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
检查随机图着色是否正确(Python)_Python_Graph_Networkx_Approximation_Graph Coloring - Fatal编程技术网

检查随机图着色是否正确(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