7

我正在尝试访问GraphMathematica 8 中的对象内的信息。由于某种原因,该Part命令似乎不起作用。

myGraph是我想要访问的对象。

下面的第一行显示 myGraph。其他人负责检查它。

myGraph

myGraph // FullForm  
myGraph // InputForm  
myGraph // OutputForm    
myGraph[[1]]
myGraph[[2]]  

我的图表

为什么不myGraph[[1]]回来List[1,3,4,2,5] ?[我检查到第 2 级,以防Graph被一些看不见的包装纸包裹着。 Level[myGraph,1],简单地返回{}。并FullForm[myGraph][[1]]返回图形本身的图片。

我必须忽略一些明显的东西。


编辑

这是我用来生成图表的代码。其中大部分与手头的问题无关。但至少您将使用我正在使用的相同代码。

ClearAll[edges, compatibleQ, adjacentCourses, g];
edges[w_, b_] := 
 Most /@ Accumulate /@ 
   Flatten[Permutations[#] & /@ IntegerPartitions[w, All, b], 1]

compatibleQ[j_, k_, edg_] := 
 If[Intersection[edg[[j]], edg[[k]]] == {}, {j, k}, False]

adjacentCourses[edg_] := 
 Module[{len = Length[edg]},
  Cases[Flatten[Table[compatibleQ[j, k, edg], {j, len}, {k, j, len}], 
    1], {v_, w_} :>  v \[UndirectedEdge] w]]

myGraph =  Graph[adjacentCourses[edges[9, {2, 3}]], VertexLabels -> "Name", 
ImagePadding -> 10]
4

3 回答 3

8

尽管出现了,但 Mathematica 8 中引入的图形对象并不是“正常”的符号表达式。以下 SO 问题详细讨论了这个问题和其他此类问题,包括提取部分图形定义的方法:

Mathematica 8.0 中的新图表

于 2011-06-11T14:36:35.353 回答
5

这可能对您有用,以回答
“如何以编程方式访问有关 Mathematica 8 中的 'Graph' 对象的信息?”的问题。
似乎有许多新功能可用于获取有关图的信息,如下所示 http://reference.wolfram.com/mathematica/guide/GraphRepresentation.html
在您的示例中,您似乎希望图形的顶点列表以正确的顺序排列。函数VertixList似乎可以做到这一点。
这是文档中属性和关系部分的屏幕截图:

在此处输入图像描述

于 2011-06-11T13:34:18.710 回答
5

事实证明,我的问题有一些直截了当的答案。

的文档包含从对象Graph中检索信息的几种方法。Graph(我为没有检查而感到羞耻。)在我看来,最有用的命令是:

VertexList[]
VertexCount[]
EdgeList[]
EdgeCount[]
EdgeRules[] 
VertexIndex[]
EdgeIndex[]
PropertyValue[]

我们通常需要在操作完图形对象之后从图形对象中获取信息。我可以很容易地找到我构建的 Graph 中包含哪些信息,但是如果输出派生 Graph,例如来自 NeighborhoodGraph,我不会在没有探测的情况下知道它的属性。

感谢 @dbJohn 提供 Wolfram 文档的链接。

特别感谢@WReach在之前关于该对象的 SO 讨论中提供了指向他的评论的链接。Graph

于 2011-06-12T05:58:20.727 回答