当前位置: 首页 > wzjs >正文

镜像网站是如何做的3g微网站是什么

镜像网站是如何做的,3g微网站是什么,营销策略有哪些内容,工业设计好就业吗Boost Graph Library (BGL) 介绍与使用示例 Boost Graph Library (BGL) 是 Boost 库中用于图论计算的模块,提供了处理图数据结构的通用接口和多种图算法实现。 BGL 主要特性 提供多种图表示方式:邻接表、邻接矩阵等包含常用图算法:DFS、BF…

Boost Graph Library (BGL) 介绍与使用示例

Boost Graph Library (BGL) 是 Boost 库中用于图论计算的模块,提供了处理图数据结构的通用接口和多种图算法实现。

BGL 主要特性

  1. 提供多种图表示方式:邻接表、邻接矩阵等
  2. 包含常用图算法:DFS、BFS、最短路径、最小生成树等
  3. 高度可扩展的通用接口
  4. 支持有向图和无向图

基本使用方法

1. 包含头文件

#include <boost/graph/adjacency_list.hpp>
#include <boost/graph/graph_traits.hpp>
using namespace boost;

2. 图的表示

最常用的是 adjacency_list,它提供了灵活的图表示方式:

typedef adjacency_list<listS, vecS, directedS> Graph;
  • 第一个模板参数:边的存储方式(listS, setS, vecS等)
  • 第二个模板参数:顶点的存储方式
  • 第三个模板参数:有向(directedS)或无向(undirectedS)

示例代码

示例1:创建图并添加顶点和边

#include <iostream>
#include <boost/graph/adjacency_list.hpp>using namespace boost;int main() {// 定义图类型 - 使用vector存储顶点,list存储边,有向图typedef adjacency_list<listS, vecS, directedS> Graph;// 创建图对象Graph g;// 添加顶点auto v1 = add_vertex(g);auto v2 = add_vertex(g);auto v3 = add_vertex(g);auto v4 = add_vertex(g);// 添加边add_edge(v1, v2, g);add_edge(v2, v3, g);add_edge(v3, v4, g);add_edge(v4, v1, g);add_edge(v1, v3, g);// 输出图的基本信息std::cout << "Number of vertices: " << num_vertices(g) << "\n";std::cout << "Number of edges: " << num_edges(g) << "\n";return 0;
}

示例2:图的遍历(BFS)

#include <iostream>
#include <boost/graph/adjacency_list.hpp>
#include <boost/graph/breadth_first_search.hpp>using namespace boost;int main() {typedef adjacency_list<vecS, vecS, undirectedS> Graph;Graph g;// 添加顶点和边auto v0 = add_vertex(g);auto v1 = add_vertex(g);auto v2 = add_vertex(g);auto v3 = add_vertex(g);add_edge(v0, v1, g);add_edge(v0, v2, g);add_edge(v1, v3, g);add_edge(v2, v3, g);// 定义访问器来记录遍历顺序std::vector<default_color_type> colors(num_vertices(g));// 从顶点v0开始BFSbreadth_first_search(g, v0, visitor(make_bfs_visitor(record_distances(&colors[0], on_tree_edge())));// 输出遍历结果for (size_t i = 0; i < colors.size(); ++i) {std::cout << "Vertex " << i << " has distance " << colors[i] << "\n";}return 0;
}

示例3:Dijkstra最短路径算法

#include <iostream>
#include <boost/graph/adjacency_list.hpp>
#include <boost/graph/dijkstra_shortest_paths.hpp>using namespace boost;int main() {typedef adjacency_list<listS, vecS, directedS, no_property, property<edge_weight_t, int>> Graph;typedef graph_traits<Graph>::vertex_descriptor Vertex;// 创建图Graph g;// 添加顶点Vertex v0 = add_vertex(g);Vertex v1 = add_vertex(g);Vertex v2 = add_vertex(g);Vertex v3 = add_vertex(g);// 添加带权重的边add_edge(v0, v1, 1, g);add_edge(v0, v2, 4, g);add_edge(v1, v2, 2, g);add_edge(v1, v3, 5, g);add_edge(v2, v3, 1, g);// 存储距离和前驱节点std::vector<Vertex> predecessors(num_vertices(g));std::vector<int> distances(num_vertices(g));// 计算从v0到其他顶点的最短路径dijkstra_shortest_paths(g, v0,predecessor_map(&predecessors[0]).distance_map(&distances[0]));// 输出结果for (size_t i = 0; i < num_vertices(g); ++i) {std::cout << "Distance from v0 to v" << i << " = " << distances[i] << "\n";std::cout << "Predecessor of v" << i << " = v" << predecessors[i] << "\n";}return 0;
}

示例4:拓扑排序

#include <iostream>
#include <vector>
#include <boost/graph/adjacency_list.hpp>
#include <boost/graph/topological_sort.hpp>using namespace boost;int main() {typedef adjacency_list<vecS, vecS, directedS> Graph;Graph g;// 添加顶点auto v0 = add_vertex(g);auto v1 = add_vertex(g);auto v2 = add_vertex(g);auto v3 = add_vertex(g);// 添加边(表示依赖关系)add_edge(v0, v1, g);add_edge(v1, v2, g);add_edge(v2, v3, g);add_edge(v0, v3, g);// 存储排序结果std::vector<Graph::vertex_descriptor> sorted_vertices;// 执行拓扑排序topological_sort(g, std::back_inserter(sorted_vertices));// 输出排序结果(注意是逆序)std::cout << "Topological order (reverse): ";for (auto v : sorted_vertices) {std::cout << v << " ";}std::cout << "\n";return 0;
}

编译与链接

使用Boost Graph Library需要链接Boost库,编译时通常需要添加以下选项:

g++ your_program.cpp -o your_program -lboost_graph

对于较新版本的Boost,可能需要使用:

g++ your_program.cpp -o your_program -lboost_graph -lboost_system

BGL提供了丰富的图论算法和灵活的数据结构,适用于各种图论问题的求解。更多高级功能可以参考Boost官方文档。


文章转载自:

http://TWQekbj2.mprky.cn
http://rny9iw07.mprky.cn
http://ZSTuDu8F.mprky.cn
http://Sqh5fp5g.mprky.cn
http://iVJ4HYy7.mprky.cn
http://utGFMr6t.mprky.cn
http://fE54jTH4.mprky.cn
http://la0uEAd1.mprky.cn
http://GCa6axGb.mprky.cn
http://SEINh1Tf.mprky.cn
http://QAqMjhtx.mprky.cn
http://4LCF5FtO.mprky.cn
http://caWZeSyu.mprky.cn
http://nRQkuo1K.mprky.cn
http://tTZWfBtm.mprky.cn
http://Nms9pFEx.mprky.cn
http://yeYaCWOm.mprky.cn
http://5Oajpgtn.mprky.cn
http://txvrMFN1.mprky.cn
http://NdHju8SS.mprky.cn
http://zAsHeQdz.mprky.cn
http://tdFYjPcv.mprky.cn
http://WkL14vy6.mprky.cn
http://AjqGzVSk.mprky.cn
http://StMfg3r8.mprky.cn
http://Q2bUGKmB.mprky.cn
http://VV2ChrgG.mprky.cn
http://81ucjlGH.mprky.cn
http://ga5VY6Ni.mprky.cn
http://rA8RCIYu.mprky.cn
http://www.dtcms.com/wzjs/766959.html

相关文章:

  • 什么软件可以做网站html深圳电力建设公司网站
  • 太原网站建设列表网网站上的链接怎么做的
  • wap微信网站模板黑龙江 哈尔滨
  • 兰州做网站es5188谷歌上怎样做网站
  • 网站代码建设 实例白色网站配色
  • 佛山市建设局网站互联网平台是什么意思
  • 网站建设技能wordpress 后台制作
  • 给人家做网站服务器自己搭吗wordpress网站怎么优化
  • 建立企业网站的详细步骤线上商城系统
  • 网站开发实战 王机械外协加工网最新订单
  • 如何建平台网站杭州网站做的好公司哪家好
  • 网站做电子公章违法吗网站管理建设的总结
  • 网站建设首选易网宣网页设计品牌故事
  • 网站上怎么做返回主页链接公司官网制作多少钱
  • 娄底市住房和城乡建设局官方网站h5网站制作网站开发
  • 网站开发有什么网站广东网站建设公司排名
  • 信息图表制作网站江山有做网站开发吗
  • 不备案 国内网站新乡建网站
  • 阿里云虚拟机怎么做多个网站.net 创建网站项目
  • 专业的南昌网站建设网站网页设计专业公司
  • 数据查询网站制作网站哪里好
  • wordpress 导入用户济南网站seo技术
  • 珠海企业模板建站东莞南城网站开发公司电话
  • 织梦网站搭建如何加强网站安全建设
  • 做网站的属于什么工作类型大理石在哪些网站做宣传
  • 开源外贸网站公司在百度做网站
  • 深圳做响应式网站制作贷款公司通过做网站来给予平台贷款
  • 沈阳专业网站建设报价有批量做基因结构的网站吗
  • 太原建站公司有哪些网站建设公司哪个好呀金融网站建设
  • 专业网站的建设网站模板编辑工具