Различение разных объектов "График" в Математике 8 - PullRequest
4 голосов
/ 11 декабря 2010

Я хотел бы автоматически определить, является ли данный объект Combinatorica или Mathematica 8.0 Graph.

Не похоже, что у FullForm достаточно информации, чтобы сказать, какая из них

(* output of Combinatorica`CompleteGraph[1] *)
Graph[List[],List[List[List[0,0]]]]

(* output of System`CompleteGraph[1] *)
Graph[List[1],List[]]

Mathematica, однако, может различать их и отображает одну как текстовую строку, а другуюкак визуальный объект.Есть ли

  1. Способ просмотра "скрытой" информации в выражениях, которая не отображается в FullForm
  2. Способ просмотра правил, которые Mathematica использует для отображения выражений?

Обновление : Кажется, что Head дает разные результаты для двух графиков, даже если отображаемые головы идентичны.Определение функции как f [a_System'Graph] и f [a_Combinatorica'Graph] приводит к тому, что правильная версия называется

1 Ответ

3 голосов
/ 12 декабря 2010

Голова возвращает разные значения для двух типов графиков:

In[1]:= g1 = Combinatorica`CompleteGraph[1];

In[2]:= g2 = System`CompleteGraph[1];

In[3]:= Combinatorica`Graph === Head[#] & /@ {g1, g2}

Out[3]= {True, False}

In[4]:= System`Graph === Head[#] & /@ {g1, g2}

Out[4]= {False, True}

Что касается вопроса 1, у вас есть ограниченные возможности для просмотра "скрытой" информации в несимвольных объектахнапример, графики, изображения и т. д. Вы можете вызывать встроенные функции Mathematica, которые имеют доступ к собственному представлению объекта.Существуют функции, специфичные для типов объектов (например, VertextCount или ImageDimensions) или более общие (например, CurrentValue или PropertyValue).Вы находитесь во власти документации MMA, чтобы найти исчерпывающие списки таких функций.Кроме того, иногда вы можете получить полезную информацию, проверив выражение ячейки выходной ячейки, содержащей такой объект.Но это может быть ударом или промахом.

Что касается вопроса 2, WRI обычно защищает правила рендеринга для встроенной функциональности.Кроме того, некоторые функции (например, инструменты рисования и графические редакторы), похоже, встроены непосредственно в интерфейс ноутбука.Возможно, вам повезет, если вы посмотрите на верхние или нижние значения таких функций рендеринга, как MakeBoxes и Формат и т. Д. Опять-таки, это хит или промах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...