不显示在数学图论包“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]]
将打印Graph
, g[[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}]
产生在顶部的代码。