2011-09-12 58 views
1

根据我读到的书,他们经常使用值范围从1到n的顶点构建图,所以每个顶点都有唯一的名称。[graph]:建立关系图

如果我要建立使用顶点,其值是字符串的图表,说

V = {'Arm', 'Bob', 'Lin', 'Kok'} #vertices 
E = {('Arm', 'Lin'), (Bob, 'Lin'), ('Bob', 'Kok')} #edges 

我应该这些字符串顶点整数映射之前我建立他们的图形? 我可以参考的任何例子?

+0

我没有看到任何理由将它们映射到数字。我不确定你使用的是什么软件,但是如果你使用pygraphviz进行绘图,你可以使用名字。 – Owen

+0

@Owen,其实我试图实现一些图算法,如DFS和BFS,我从书中学到的方法是标记每个发现的顶点灰色或黑色,并且每个顶点都分配一个从1到n的数字,所以他们的颜色可以用数组颜色[i]表示,但如果顶点是字符串,我怎么做着色工作?所以我想我应该将每个字符串顶点映射到数字i,范围从1到n。我对吗? – Alcott

+0

你可以做到这一点。您也可以将颜色存储在节点本身中(使它们成为对象),或者将颜色保存为字典并使用'color [name]'获取颜色。 – Owen

回答

1

我要去上肢体和猜测你与pygraphviz

使用字符串而非数字绘画,在simple.py例子看起来像:

import pygraphviz as pgv 

A=pgv.AGraph() 

A.add_edge('foo', 'bar') 
A.add_edge('bar', 'baz') 
A.add_edge('baz', 'foo') 

A.write('simple.dot') 

B=pgv.AGraph('simple.dot') 
B.layout() 
B.draw('simple.png') 

或者,如果你”不要绘图,只是建立,你发布的代码是表示图形的好方法;当字符串正常工作时不需要使用数字。