我想自动确定给定的对象是Combinatorica还是Mathematica 8.0 Graph。在Mathematica中分辨不同的“图形”对象8
它似乎并不认为FullForm有足够的信息来分辨出哪个是
(* output of Combinatorica`CompleteGraph[1] *)
Graph[List[],List[List[List[0,0]]]]
(* output of System`CompleteGraph[1] *)
Graph[List[1],List[]]
数学,但是,能够告诉他们分开,并呈现一个为文本字符串,另一个视觉对象。有
- 的方式来查看表达式中“隐藏”的信息并不在FullForm显示
- 方式来看待Mathematica使用渲染表达式的规则?
更新: 看来头给出了两个图不同的结果,即使显示的头是相同的。定义函数为f [a_System'Graph]和f [a_Combinatorica'Graph]导致正确的版本被称为
Head [g] ===图可以表示根据$ ContextPath的System'Graph或Combinatorica'Graph。某些功能会自动将“Combinatorica”添加到上下文路径。一种解决方案是检查“Combinatorica”是否处于上下文路径中并将其删除,不知道它是多么健壮 – 2010-12-11 23:21:00
好吧,它看起来像是一个显示问题,你是对的,即使它们可能在FullForm中显示相同 – 2010-12-11 23:40:27