20.boost dijkstra最短路径算法
到某个点的最短距离 到终点的最短路径
完整代码
#include <iostream>
#include <string>
#include <utility>
#include <vector>
#include <deque>
#include <boost/graph/adjacency_list.hpp>
//A*寻路算法
#include <boost\graph\astar_search.hpp>
#include <boost\graph\dijkstra_shortest_paths.hpp>
using namespace std;
using namespace boost; void main()
{
//定义图的种类
typedef adjacency_list<listS, vecS, directedS, no_property, property<edge_weight_t, double>> graph_t;
//定义相关类型
typedef graph_traits<graph_t>::vertex_descriptor vertex_desciptor;
typedef graph_traits<graph_t>::edge_descriptor edge_descriptor;
typedef pair<int, int> Edge; //定义结点和边的相关对象和属性
enum nodes { A, B, C, D, E, F, G, H, N };
char name[] = "ABCDEFGH";
//创建边
Edge edge_array[] = { Edge(A,B),Edge(A,C),Edge(B,D),Edge(B,E),Edge(C,E),
Edge(C,F),Edge(F,G),Edge(G,H),Edge(E,H),Edge(D,E),Edge(D,H) };
//定义边的权重
double weights[] = { ,,1.3,,,,1.2,0.5,1.3,0.4,6.3 };
//边的数量
int num_arcs = sizeof(edge_array) / sizeof(Edge); //生成被建模的图对象
// 边数组头地址 边数组尾地址 定义权重 结点数量
graph_t g(edge_array, edge_array + num_arcs, weights, N); //p用于放置最短路径生成树的各个顶点的下一个节点
std::vector<vertex_desciptor> p(num_vertices(g));
//d用于放置从近到远的路径距离
std::vector<double> d(num_vertices(g));
//待求最短路径的源顶点
vertex_desciptor s = vertex(A, g); //对图g的A顶点(s为它的描述器,即从哪个点开始)应用dijkstra算法
//作为结果的距离矢量保存在d数组中
//最短路径树上的父节点保存在p数组中
dijkstra_shortest_paths(g, s, predecessor_map(&p[]).distance_map(&d[]));
std::cout << "最短路径延时(ms)" << "\t最短路径树的父节点:" << std::endl;
//输出结果到屏幕
graph_traits <graph_t>::vertex_iterator vi, vend;
for (tie(vi, vend) = vertices(g); vi != vend; vi++)
{
std::cout << "路径距离(" << name[*vi] << ") = " << d[*vi] << ",\t";
std::cout << "父节点(" << name[*vi] << ") = " << name[p[*vi]] << endl;
}
cout << endl;
system("pause");
}
20.boost dijkstra最短路径算法的更多相关文章
- Java邻接表表示加权有向图,附dijkstra最短路径算法
从A到B,有多条路线,要找出最短路线,应该用哪种数据结构来存储这些数据. 这不是显然的考查图论的相关知识了么, 1.图的两种表示方式: 邻接矩阵:二维数组搞定. 邻接表:Map<Vertext, ...
- 练习 Dijkstra 最短路径算法。
练习 Dijkstra 最短路径算法. #coding: utf-8 # Author: woodfox, Oct 14, 2014 # http://en.wikipedia.org/wiki/Di ...
- 数据结构(c++)(第二版) Dijkstra最短路径算法 教学示范代码出现重大问题!
前言 去年在数据结构(c++)的Dijkstra教学算法案例中,发现了一个 bug 导致算法不能正常的运行,出错代码只是4行的for循环迭代代码. 看到那里就觉得有问题,但书中只给了关键代码的部分,其 ...
- Dijkstra最短路径算法[贪心]
Dijkstra算法的标记和结构与prim算法的用法十分相似.它们两者都会从余下顶点的优先队列中选择下一个顶点来构造一颗扩展树.但千万不要把它们混淆了.它们解决的是不同的问题,因此,所操作的优先级也是 ...
- 一篇文章讲透Dijkstra最短路径算法
Dijkstra是典型最短路径算法,计算一个起始节点到路径中其他所有节点的最短路径的算法和思想.在一些专业课程中如数据结构,图论,运筹学等都有介绍.其思想是一种基础的求最短路径的算法,通过基础思想的变 ...
- Python 图_系列之纵横对比 Bellman-Ford 和 Dijkstra 最短路径算法
1. 前言 因无向.无加权图的任意顶点之间的最短路径由顶点之间的边数决定,可以直接使用原始定义的广度优先搜索算法查找. 但是,无论是有向.还是无向,只要是加权图,最短路径长度的定义是:起点到终点之间所 ...
- Dijkstra最短路径算法实例
#include <stdio.h>#include <stdlib.h>/* Dijkstra算法 */#define VNUM 5#define MV 65536int P ...
- 7-9 旅游规划(25 分)(Dijkstra最短路径算法)
有了一张自驾旅游路线图,你会知道城市间的高速公路长度.以及该公路要收取的过路费.现在需要你写一个程序,帮助前来咨询的游客找一条出发地和目的地之间的最短路径.如果有若干条路径都是最短的,那么需要输出最便 ...
- 关于Dijkstra最短路径算法
Dijkstra算法,不是很明白,今天找了一些博客看了一下,决定自己也写一个为以后忘记的时候可以看做准备. 实际上,如果理解没错的话,该算法实际上和枚举法有点像,只不过,在选取出发路径的路径都是最短路 ...
随机推荐
- bzoj1790: [Ahoi2008]Rectangle 矩形藏宝地
被统考草翻回来做题不太行啊,线段树和cdq都写挂细节 这题大概就是四维偏序吧,欸n怎么到了20w,只能水70啊 但是这个好像只要有1个在里面就可以ans就可以++了耶 突然想到高中奥数老师说的,大概是 ...
- UESTC--1269--ZhangYu Speech(模拟)
ZhangYu Speech Time Limit: 1000MS Memory Limit: 65535KB 64bit IO Format: %lld & %llu Submit ...
- 杂项-Java:Shiro(Java安全架构)
ylbtech-杂项-Java:Shiro(Java安全架构) Apache Shiro是一个强大且易用的Java安全框架,执行身份验证.授权.密码和会话管理.使用Shiro的易于理解的API,您可以 ...
- js 智能识别收获地址
项目地址https://github.com/wzc570738205/smart_parse 支持以下数据格式 马云,1351111111,北京市朝阳区姚家园3楼 马云1351111111北京市朝阳 ...
- POJ 1414 暴搜
题意比较复杂 (但是很好理解) 大概意思是给你等边三角形(详见题目中的图). 最后一行有n个数,下一次要填的数是c. 里面预先已经填好了数字.(0为未填) 得分的标准是这个分数的连通块周围没有空的地方 ...
- 在Android源码下编译jni所需要知道的事~
以下只是自己的一些总结,欢迎讨论 通过NDK编译jni网上有很多例子,在这我只总结在Android源码下编译 1.android源码环境下编译so包,编出来的.so的包前面不会自动给添加lib,NDK ...
- 微信小程序实现图片双滑缩放大小
在做小程序开发的过程中,后端传来一张图片地图,需要实现双手指滑动,使图片缩放,最终得出了一下代码: js : Page({ data: { touch: { distance: , scale: , ...
- DateUtil时间工具类
package utils; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util. ...
- Java对象、Json、Xml转换工具Jackson使用
在Java项目中將一个对象转换成一段Json格式的字符串是非常常见的,能够实现这种需求的工具包也比较多,例如Gson.JSON-lib.Jackson等等.本文主要介绍Jackson的使用,Jacks ...
- IE,表头固定
<html> <head> <title>表头固定</title> <style type="text/css"& ...