好的,谢谢大家。让我收拾所有这些讨论。首先,正如 Janus 所提到的,在 Mathematica 中有两种绘制图形的方法。首先,Combinatorica 方式,它是一个插件。其次,GraphPlot 方式,它是一个原生的 Mathematica 实现来绘制图形。 GraphPlot 使用 Spring 布局来绘制图形。正如 dreeves 所说,我们使用 ShowGraph[] 以 Combinatorica 的方式绘制图形。
要理解为什么上述代码不起作用,我们必须非常了解 ShowGraph[] 命令。 Mathematica 7 定义,
ShowGraph[g] 显示图形 g。
现在,什么是图?
Graph[e , v, opts] 表示一个图形对象,其中 e 是带有图形选项注释的边列表,v 是带有图形注释的顶点列表options,而 opts 是一组全局图形选项”
问题是 Combinatorica 似乎不能完全按照上面定义的方式工作。让我们检查一下……假设您创建了一个名为 g 的 Combinatorica 图。现在g[[0]] 将打印Graph,g[[1]] 将打印边缘列表,g[[2]] 将打印opts。顶点列表在哪里??
如上所示,您可以手动创建g[[1]] 和g[[2]] 并将其提供给Graph。让我们创建它:
e = {{1,2}, {{1,3}}}
opts = {{{0,0}}, {{-5,5}}, {{5,5}}}
g = Graph[e, opts]
这将创建一个包含顶点 1、2 和 3 的图形。现在,如何标记它们?在 Combinatorica 中,您可以使用 ShowGraph[] 的 VertexLabel 选项来执行此操作。如果您使用 VertexLabel->True 它将只显示默认标签,即此处的 1、2 和 3。要使用您自己的标签,请执行以下操作:
ShowGraph[g, VertexLabel->{a,b,c}]
很有趣,对吧? :)。
现在我的问题的确切答案。上述代码的问题是由于使用了文字值而不是整数。 Combinatorica 仅将整数值作为边或顶点列表除外。
请记住,尽管它可能只对创建小图有用。对于较大的图形,您应该使用默认图形生成器来创建图形。就像,对于随机图使用:
g = Random[10, 0.23]
将创建一个有 10 个顶点的图,边概率为 0.23。
瓦卡,瓦卡,
这次是 Combinatorica!