The Boost Graph Library
在工程data-structure中,我们介绍了graph的概念,本章介绍c++中的实现:boost的graph library。
Table of Contents: the Boost Graph Library
NOTE: 原网站对文档的组织呈现地不直观,不便于直观地了解文档的所有内容,所以首先将TOC放到这里。
The Boost Graph Library (BGL)
通过原文的第一段我们可以看出,BGL所采用的设计思想和STL的设计思想是相同的,核心思想是generic-programming,在原文对两者进行了对比。
Genericity in the Boost Graph Library
Like the STL, there are three ways in which the BGL is generic.
Algorithm/Data-Structure Interoperability
NOTE: 简而言之就是使用iterator、adapter pattern
Extension through Visitors
NOTE: 简而言之就是visitor pattern
Vertex and Edge Property Multi-Parameterization
NOTE: graph结构是比list等结构要复杂的,它有node、edge,并且node和edge有各自的一些property(比如edge的weight、node的label等等),在BGL中,这些都parameterization了,用户可以通过template parameter对它们进行调整。
更多的parameter,能够带来BGL的genericity,同时它也带来了实现的复杂、使用的复杂。
Algorithms
NOTE: core algorithm pattern是基础的algorithm,它是其他几种algorithm的building block。
Data Structures
NOTE: 本段所描述的是如何来存储图