Graphs & Networks
图作为计算机科学最基础的研究对象,在M8中,终于作为内置对象嵌入到系统中,并被分类到Graphs & Networks类别下。
首先看图的构造,Construction of Graphs
Graph在7.0中实际上就已经存在了,但是被放在 Combinatorica Package 中,而且帮助文档很匮乏。8.0中,Graph作为构造图对象的基本方式,得到了充分的介绍。
除了Graph之外,M8还提供了更多丰富的特殊图构造法,比如 ButterflyGraph(快速傅里叶变换),ChemicalData(化学分子式), DegreeGraphDistribution(根据顶点度数分布构造),IncidenceGraph(根据顶点度数构造)。
图的操作 Graph Operations and Modifications
都是比较基础的,包括求子图,修改边和顶点,对偶图等。比较有意思的是GraphPower,这个在做图算法的过程中会比较有用。
关于图的特性检测,属性获取都很基本,没有多少出彩的地方。
最核心的还是看图算法的一些实现吧。
首先是路径算法 Paths and Cycles
最短路
提供了Dijkstra和BellmanFord 两种算法,算法是自动选取的。
拓扑序列TopologicalSort
欧拉回路FindEulerianCycle
哈密顿回路 FindHamiltonianCycle
算法速度很快,具体算法没有给出明确的说明。
关于更多的图算法和图编程,将在下一篇文章中测试。