检查随机图形的颜色是否正确(Python)

时间:2019-01-20 13:52:54

标签: 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 = []
      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()是图的节点和边的列表

1 个答案:

答案 0 :(得分:1)

对于第一部分,您可以直接使用random.choices()

def approx_color(graph):
    colors = [1,2,3,4,5,6,7,8,9]
    s_c = random.choices(colors, k=graph.order())
    colored = dict(zip(graph.nodes(), s_c))

如果没有两个相邻的顶点具有相同的颜色,则图形着色是正确的。 因此,您只需要遍历节点并检查其邻居即可。
因此,您只需定义一个函数即可检查条件是否有效。

for u in graph.nodes():
    for v in graph.neighbors(u):
        if colored[u] == colored[v]:
            return False
return True