计算用于在python中为图形着色的颜色数

时间:2012-03-25 23:39:34

标签: python graph colors count theory

我需要帮助我的代码来计算用于为图表着色的颜色数量 我写了一个小代码来打印颜色列表,现在我需要计算它们

import networkx as nx
g = nx.Graph()
g.add_nodes_from([1,2,3,4,5])
g.add_edges_from([(1,2),(1,3),(1,4),(1,5),(4,5)])
C = set(xrange(12))
color = {}

for u in g:
    interdits = set([color[v] for v in g.neighbors(u) if color.has_key(v)])
    color[u] = min(C-interdits)

print color

输出:

  
    
{1: 0, 2: 1, 3: 1, 4: 1, 5: 2}
    
  

而不是这个输出我想计算颜色,所以结果应该是3 任何想法或帮助? 提前致谢

2 个答案:

答案 0 :(得分:2)

你绝对应该阅读Python tutorial。您可能还想使用ipython或IDLE,或者您可以轻松查看对象内部的方法,而无需查阅文档,这是一种简单的实验方法。 dir(some_object_name)也可以,但我觉得它不像在ipython中点击标签那样方便,而是YMMV。

无论如何,一旦你有color变量:

>>> color
{1: 0, 2: 1, 3: 1, 4: 1, 5: 2}
>>> color.values()
[0, 1, 1, 1, 2]
>>> set(color.values())
set([0, 1, 2])
>>> len(set(color.values()))
3

(并且只是为了确保您使用的颜色数量,而不是所需的最小颜色数量。)

答案 1 :(得分:1)

使用的最高颜色数字可以在

中找到
max(color.values())

但它们从零开始编号,所以你可能想要

max(color.values()) + 1

虽然这可能并不重要,但与set方法不同,这不需要构建所有使用的颜色列表,也不需要对每个条目进行散列。

此外,不推荐使用has_key。请改用v in color