在数学图论包'Combinatorica‘中不显示指定的图形。
发布于 2010-10-27 00:17:27
好的,谢谢大家。让我把这些讨论打包。首先,正如Janus所提到的,在Mathematica中有两种绘制图形的方法。首先,Combinatorica方式,它是一个插件。其次,GraphPlot方式,这是一个本地的数学实现来绘制图形。GraphPlot使用Spring布局来绘制图形。正如德雷夫斯所说,我们使用ShowGraph[]以Combinatorica方式绘制图形。
为了理解为什么前面提到的代码不能工作,我们必须很好地理解ShowGraph[]命令。Mathematica 7定义,
ShowGraphg将显示图形g。
现在,什么是图?
Graphe,v,opts表示图形对象,其中e是用图形选项注释的边的列表,v是用图形选项注释的顶点列表,opts是一组全局图形选项“
问题是Combinatorica似乎并不完全按照上面定义的方式工作。让我们来检查一下。假设您已经创建了一个名为g的组合图。现在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!
发布于 2010-06-01 21:37:25
需要注意的重要一点是,Mathematica有两个或多或少独立的绘图框架:一个包含在Combinatorica包中,另一个包含在GraphUtilities包中。
在我有限的经验中,Combinatorica包是一台相当大的机器,你必须摸索框架才能使用它。另一方面,GraphUtilities非常直观,有更多的图形定制选项和更多的数学感觉。
要绘制您的示例图,您只需要
Needs["GraphUtilities`"]
GraphPlot[{e1 -> e2, e1 -> e3}, VertexLabeling -> True, DirectedEdges -> True]发布于 2010-05-31 21:16:32
如果您想要一个具有3个顶点的通用无向图,其边位于顶点1和顶点2之间以及顶点1和顶点3之间,则可以执行以下操作:
Needs["Combinatorica`"]
ShowGraph@AddEdges[EmptyGraph[3], {{1, 2}, {1, 3}}]有关生成、显示和分析图形的更多信息,请跳转到Mathematica的Combinatorica Tutorial中的“表示图形”。
https://stackoverflow.com/questions/2941727
复制相似问题