Как получить программный доступ к информации об объекте 'Graph` в Mathematica 8?

Я пытаюсь получить доступ к информации в Graph объект в Mathematica 8. По какой-то причине Part Команда, похоже, не работает.

myGraph это объект, к которому я хочу получить доступ.

Первая строка ниже отображает myGraph. Остальные служат для его проверки.

myGraph

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

myGraph

Почему не 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]

3 ответа

Решение

Несмотря на видимость, графовые объекты, представленные в Mathematica 8, не являются "нормальными" символическими выражениями. Следующий вопрос SO подробно обсуждает эту и другие подобные проблемы, в том числе способы извлечения частей определения графа:

новый график в Mathematica 8.0

Оказывается, на мой вопрос было несколько простых ответов.

Документация для Graph содержит несколько способов извлечения информации из Graph объект. (Позор мне за то, что я не проверял.) Самые полезные команды, на мой взгляд, таковы:

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

Нам нужно получить информацию OUT объекта графа обычно после того, как мы им манипулировали. Я легко могу найти, какая информация поступила в построенный мной график, но если будет выведен производный график, например, из NeighborhoodGraph, я не узнаю его свойства без исследования.

Спасибо @dbJohn за ссылку на документацию Wolfram.

Особая благодарность @WReach за ссылку на его комментарии в предыдущем обсуждении SO Graph объект.

Это может быть полезно для вас, чтобы ответить на вопрос
"Как я могу программно получить доступ к информации об объекте 'Graph` в Mathematica 8?"
Похоже, есть ряд новых функций для получения битов информации о графиках, перечисленных здесь http://reference.wolfram.com/mathematica/guide/GraphRepresentation.html.
В вашем примере вы, кажется, хотите список вершин графа в правильном порядке. Кажется, функция VertixList делает это.
Вот скриншот из раздела "Свойства и отношения" в doc:

Другие вопросы по тегам