Boost--Graph
图论是一种数学抽象,它对于解决多种计算机科学问题是非常有用的, Boost.Graph提供了一个基于图论的通用编程接口.
Boost.Graph是一个图的封装,在《数据结构》的教科书里,一般都会讲到数组、链表、队列、堆栈、堆、树、图论等。其中前面几个已经在C++标准库(STL)中实现了(如vector,list,stack,queue,heap等),却没有提供一个与树或图对应的实现,实在说不过去。于是这个艰巨而又光荣的任务就落到了作为标准库的预备役的Boost身上, Boost.Graph诞生啦!
Boost.Graph分成数据结构和算法两个大部分(为了便于区分,后文称"图结构"和"图算法"),其中"图结构"相当于 STL里的容器,自带了邻接表(adjacency_list)、邻接矩阵(adjacency_matrix)和CSR图 (compressed_sparse_row_graph)三种。“图算法”相当于STL里的算法,就象std::sort不能用于std::list 一样,对于不同的“图结构”,“图算法”也有不同的适用范围。
“图算法”的适用范围按“概念(Concept)”划分,“图结构”根据它的结构特点被分为“可变图”、“关联图”、“双向图”、“邻接图”、“点表 图”、“边表图”、“属性图”、“可变属性图”几个概念。一种“图结构”可能支持其中的一部分概念而不支持其它的概念,于是也就决定了这种“图结构”所支 持的“图算法”。
图的概念以及对应的算法:
表格中g为图对象,u,v为源和目标顶点,e为边,iter为边的迭代器类型,p为谓词函数(或函数对象)
概念 Concept | 支持函数 | ||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
可变图(Mutable Graph) 允许添加、删除顶点和边 |
|
||||||||||||||||||||
关联图(Incidence Graph) |
|
||||||||||||||||||||
双向图(Bidirectional Graph) |
|
||||||||||||||||||||
邻接图(Adjacency Graph) |
|
||||||||||||||||||||
点表图(Vertex List Graph) |
|
||||||||||||||||||||
边表图(Edge List Graph) |
|
||||||||||||||||||||
属性图(Property Graph) 可以为每个顶点和边加入附加属性 |
|
||||||||||||||||||||
可变属性图(Mutable Property Graph) |
|
Boost--Graph相关推荐
- boost::graph::distributed::mpi_process_groupboost::graph::用法的测试程序
boost::graph::distributed::mpi_process_groupboost::graph::用法的测试程序 实现功能 C++实现代码 实现功能 boost::graph::di ...
- boost::graph::distributed::hohberg_biconnected_components用法的测试程序
boost::graph::distributed::hohberg_biconnected_components用法的测试程序 实现功能 C++实现代码 实现功能 boost::graph::dis ...
- boost::graph::distributed::distributed_queue用法的测试程序
boost::graph::distributed::distributed_queue用法的测试程序 实现功能 C++实现代码 实现功能 boost::graph::distributed::dis ...
- boost::graph::page_rank用法的测试程序
boost::graph::page_rank用法的测试程序 实现功能 C++实现代码 实现功能 boost::graph::page_rank用法的测试程序 C++实现代码 #include < ...
- boost::graph::dimacs_basic_reader用法的测试程序
boost::graph::dimacs_basic_reader用法的测试程序 实现功能 C++实现代码 实现功能 boost::graph::dimacs_basic_reader用法的测试程序 ...
- boost::graph模块实现分布式压缩稀疏行图类型的测试
boost::graph模块实现分布式压缩稀疏行图类型的测试 实现功能 C++实现代码 实现功能 boost::graph模块实现分布式压缩稀疏行图类型的测试 C++实现代码 #include < ...
- boost::graph::distributed用法的测试程序
boost::graph::distributed用法的测试程序 实现功能 C++实现代码 实现功能 boost::graph::distributed用法的测试程序 C++实现代码 #include ...
- boost::graph模块实现广度优先搜索算法的使用示例
boost::graph模块实现广度优先搜索算法的使用示例 实现功能 C++实现代码 实现功能 boost::graph模块实现广度优先搜索算法的使用示例 C++实现代码 #include <b ...
- boost::graph::isomorphism用法的测试程序
boost::graph::isomorphism用法的测试程序 实现功能 C++实现代码 实现功能 boost::graph::isomorphism用法的测试程序 C++实现代码 #include ...
- boost::graph模块实现Graphviz DOT 语言阅读器
boost::graph模块实现Graphviz DOT 语言阅读器 实现功能 C++实现代码 实现功能 boost::graph模块实现Graphviz DOT 语言阅读器 C++实现代码 #def ...
最新文章
- 自动驾驶车辆何时实现?近期不会实现的五大原因
- 粒子物理标准模型错了?电子“表哥”磁性超出理论预计,物理学家找到未知粒子存在证据...
- FAST300M无线宽带路由器FW300R(从)桥接TPLINK路由器(主)
- 新年巨献!祝所有朋友新一年闪闪发光
- Java中Filter、Listener,拦截器的学习,listener、 filter、servlet 加载顺序及其详解
- Wireshark抓包分析TCP建立/释放链接的过程以及状态变迁分析
- 分布式开放消息系统 ( RocketMQ ) 的原理与实践
- 智慧零售erp通用版管理系统+门店管理+商品管理+厂商管理+财务管理+销售管理+仓储管理+Axure高保真交互ERP通用版零售行业web端简易版管理系统
- [SHOI2015] 超能粒子炮·改
- 机器视觉:PCI和PCI-E总线简介
- python零基础能学吗-python 零基础该怎么学?
- Flex 4 的ComboBox下拉框滚动条Scroller(VerticalScrollBar)的thumb过小问题的解决
- 【day4】【洛谷算法题】-P5708三角形面积-刷题反思集[入门1顺序结构]
- 二年级上册计算题_二年级数学脱式计算题600道
- 微服务中的服务发现是什么?
- wincc7.3与MYSQL_Wincc7.3学习之——如何建立起数据库链接
- 用c语言写鸡兔同笼问题
- 网站长尾关键词怎么布局 提升搜索排名
- 探究 PHP_CodeSniffer 的代码静态分析原理
- 计算机技术应用体验,2018教师信息技术应用体验学习个人心得体会2篇
热门文章
- 语义SLAM开源代码汇总
- 用OpenCV实现超轻量的NanoDet目标检测模型!
- 李飞飞团队最新论文:基于anchor关键点的类别级物体6D位姿跟踪
- TypeError: Caught TypeError in DataLoader worker process 0.
- 【错误总结】LaTex Warning: citation undefined
- 决策树算法(六)——构建决策树
- 拿到offer可以不去吗_2020应届毕业生求职难吗?不难!教你四招,拿到心动的Offer...
- 积微论坛报告视频+PPT:用微生物组时序数据重现生物膜装配动态过程
- NAR:宏基因组网络分析工具MetagenoNets
- 【疯狂的消化之旅】消化系统简介