Хорошо, спасибо всем. Позвольте мне собрать все эти обсуждения. Прежде всего, как упоминал Янус, в Mathematica есть два способа рисования графиков. Во-первых, способ Combinatorica, который идет как надстройка. Во-вторых, способ GraphPlot, который является родной реализацией Mathematica для рисования графиков. GraphPlot использует Spring макет для рисования графиков. Как сказали дривы, мы используем ShowGraph [] для рисования графиков Combinatorica.
Чтобы понять, почему упомянутый код не работает, мы должны очень хорошо понимать команду ShowGraph []. Mathematica 7 определяет,
ShowGraph [g] отображает график г.
Теперь, что такое график?
График [e, v, opts] представляет объект графа, где e - список ребер, аннотированных графическими опциями, v - список вершин, аннотированных графическими опциями, и opts представляет собой набор глобальных опций графа "
Проблема в том, что Combinatorica, похоже, не работает точно так, как указано выше. Давайте рассмотрим ... предположим, что вы создали граф 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 вы делаете это с помощью опции VertexLabel ShowGraph []. Если вы используете VertexLabel-> True, он будет показывать только метки по умолчанию, то есть 1, 2 и 3 здесь. Чтобы использовать свои собственные ярлыки, сделайте следующее:
ShowGraph[g, VertexLabel->{a,b,c}]
Интересно, правда? :.)
Теперь к точному ответу на мой вопрос. Проблема упомянутого кода связана с использованием литеральных значений вместо целых. Combinatorica исключает только целочисленные значения как список ребер или вершин.
Запомните, хотя это возможно, полезно только создавать небольшие графики. Для больших графиков вы должны использовать генераторы графиков по умолчанию для создания вашего графика. Мол, для случайного графа используйте:
g = Random[10, 0.23]
Создает граф с 10 вершинами с вероятностью ребра 0,23.
Вака, вака,
на этот раз для Combinatorica!