ShowGraph [{{E1,E2},{E1,E3}},{E1,E2,E3}]; // 这里有

2019-10-29 18:13发布

不显示在数学图论包“Combinatorica”指定图表。

Answer 1:

要注意的重要一点是,数学有两个或多或少的独立图形框架:在包括一个Combinatorica包和GraphUtilities包。

我我有限的经验, Combinatorica包是一个相当大的机行动起来,你真的有神交使用它的框架。 GraphUtilities ,另一方面很直观,有一个Mathematica的图像和更多的给人的感觉更多的自定义选项。

要绘制您的示例图,你需要的是

Needs["GraphUtilities`"]
GraphPlot[{e1 -> e2, e1 -> e3}, VertexLabeling -> True, DirectedEdges -> True]


Answer 2:

如果你想与3个顶点顶点1和顶点2和顶点1和顶点3之间,下面将做之间的边缘一个普通的无向图:

Needs["Combinatorica`"]
ShowGraph@AddEdges[EmptyGraph[3], {{1, 2}, {1, 3}}]

有关生成,显示和分析图表得多了,跳下去的Mathematica的“代表图” Combinatorica教程 。



Answer 3:

好,感谢所有。 让我来收拾这些讨论。 詹纳斯提到首先,有两种方法来绘制图形的数学。 首先,Combinatorica方式,这是作为在添加。其次,GraphPlot方式是土生土长的Mathematica实现绘制图表。 GraphPlot采用弹簧布局来绘制图表。 正如dreeves说我们使用ShowGraph []绘制图表在Combinatorica方式。

要理解为什么提到代码不工作,我们必须了解ShowGraph []命令非常好。 数学7所限定,

ShowGraph [G]将显示图g。

现在,是什么图形?

图形[E,V,选择采用]表示,其中e为与图形选项注释边缘的列表中的图形对象,v是与图形选项注释顶点列表,并且选择采用的一组全局图形选项”

问题是Combinatorica似乎并没有工作正是上述定义的方式。 让我们来看看......假设你已经创建了一个Combinatorica图名为g的。 现在g[[0]]将打印Graphg[[1]]将打印边缘的列表中g[[2]]将打印OPTS。 哪里是顶点的名单?

正如可以看到的上方,也可以手动创建g[[1]]g[[2]]和饲料它图表。 让我们来创建它:

e = {{1,2}, {{1,3}}}
opts = {{{0,0}}, {{-5,5}}, {{5,5}}}
g = Graph[e, opts]

这将创建一个顶点1,2和3。现在,你怎么能贴上标签的图形? 在Combinatorica,你做ShowGraph []的这个使用VertexLabel选项。 如果您使用VertexLabel->真正的它只会显示默认标签,即1,这里2和3。 要使用自己的标签,请执行以下操作:

ShowGraph[g, VertexLabel->{a,b,c}]

有趣的是,对不对? :)。

现在我的问题的确切答案。 所提到的代码的问题是由于使用了文字值,而不是整数。 Combinatorica仅节选整数值为边缘或顶点一览表。

请记住,虽然它可能是唯一有用的创建小图。 对于较大的图形,你应该使用默认的图形生成器来创建你的图形。 就像,随机图的使用:

g = Random[10, 0.23]

将创建一个图表,10个顶点,用0.23边缘概率。

瓦卡,瓦卡,
这次为Combinatorica!



Answer 4:

ShowGraph[
 Graph[
 {{{1, 2}}, {{2, 3}}, {{3, 1}}}, 
 {{{0, 0}, VertexLabel -> v1}, 
  {{2, 5}, VertexLabel -> v2}, 
  {{5, 5}, VertexLabel -> v3}}
 ]
]

我觉得上面的是你所期待的。

Combinatorica创建图形对象的方式,似乎很繁琐。 我会觉得更容易地创建一个中介的作用,这将产生图形对象,具有类似的语法GraphPlot。 你不会有明确写出来的顶点坐标,也不能使用繁琐这样{{X,Y},选择采用}符号变成{{X,Y}}当你没有选择只指定。

所以,你可以有一个功能,例如:

myGraphPlot[{{e1,e2},{e1,e3}},{e1,e2,e3}]

产生在顶部的代码。



文章来源: ShowGraph[ { {e1,e2}, {e1, e3} }, {e1,e2,e3} ]; // what is the problem here?