到某个节点最近距离                  最短路径当前节点的父节点

完整代码

 #include <iostream>
#include <string>
#include <utility>
#include <vector>
#include <deque>
#include <boost/graph/adjacency_list.hpp>
//A*寻路算法
#include <boost\graph\astar_search.hpp>
//dijsktra
#include <boost\graph\dijkstra_shortest_paths.hpp>
//bellman-Ford算法
#include <boost\graph\bellman_ford_shortest_paths.hpp>
using namespace std;
using namespace boost; void main()
{
//定义节点和边的相关对象和属性
enum { u, v, x, y, z, N };
char name[] = { 'u', 'v', 'x', 'y', 'z' };
typedef std::pair < int, int >E;
E edge_array[] = { E(u, y), E(u, x), E(u, v), E(v, u),
E(x, y), E(x, v), E(y, v), E(y, z), E(z, u), E(z, x) };
int weights[] = { -, , , -, , -, , , , };
int num_arcs = sizeof(edge_array) / sizeof(E); //定义所用的图种类和相关类型
typedef adjacency_list < vecS, vecS, directedS,
no_property, property < edge_weight_t, int > > Graph;
//生成图对象
Graph g(edge_array, edge_array + num_arcs, weights, N);
graph_traits < Graph >::edge_iterator ei, ei_end; //distance用于放置依近到远的路径距离
std::vector<int> distance(N, (std::numeric_limits < short >::max)());
//parent用于放置最短路径生成树的各个顶点的父节点
std::vector<std::size_t> parent(N);
for (int i = ; i < N; ++i)
parent[i] = i; //将源点z对应距离设为0
distance[z] = ;
//应用Bellman-Ford算法
bool r = bellman_ford_shortest_paths
(g, int(N), weight_map(get(edge_weight, g)).distance_map(&distance[]).
predecessor_map(&parent[])); if (r)
{
std::cout << "源点z到各点的最短路径\n";
std::cout << "目的点\t" << "最短路径\t" << "最短路径树的父节点:\n";
for (int i = ; i < N; ++i)
std::cout << name[i] << ": \t" << distance[i]
<< "\t\t" << name[parent[i]] << std::endl;
}
else
std::cout << "negative cycle" << std::endl; system("pause");
}

21.boost Ford最短路径算法(效率低)的更多相关文章

  1. 20.boost dijkstra最短路径算法

    到某个点的最短距离                到终点的最短路径 完整代码 #include <iostream> #include <string> #include &l ...

  2. Dijkstra 单源最短路径算法

    Dijkstra 算法是一种用于计算带权有向图中单源最短路径(SSSP:Single-Source Shortest Path)的算法,由计算机科学家 Edsger Dijkstra 于 1956 年 ...

  3. Bellman-Ford 单源最短路径算法

    Bellman-Ford 算法是一种用于计算带权有向图中单源最短路径(SSSP:Single-Source Shortest Path)的算法.该算法由 Richard Bellman 和 Leste ...

  4. 最短路径算法—Dijkstra(迪杰斯特拉)算法分析与实现(C/C++)

    Dijkstra算法 ———————————最后更新时间:2011.9.25———————————Dijkstra(迪杰斯特拉)算法是典型的最短路径路由算法,用于计算一个节点到其他所有节点的最短路径. ...

  5. 最短路径算法-Dijkstra算法的应用之单词转换(词梯问题)(转)

    一,问题描述 在英文单词表中,有一些单词非常相似,它们可以通过只变换一个字符而得到另一个单词.比如:hive-->five:wine-->line:line-->nine:nine- ...

  6. (转)最短路径算法-Dijkstra算法分析及实践

    原地址:http://www.wutianqi.com/?p=1890 这篇博客写的非常简洁易懂,其中各个函数的定义也很清晰,配合图表很容易理解这里只选取了 其中一部分(插不来图片). Dijkstr ...

  7. Python小白的数学建模课-16.最短路径算法

    最短路径问题是图论研究中的经典算法问题,用于计算图中一个顶点到另一个顶点的最短路径. 在图论中,最短路径长度与最短路径距离却是不同的概念和问题,经常会被混淆. 求最短路径长度的常用算法是 Dijkst ...

  8. Python 图_系列之纵横对比 Bellman-Ford 和 Dijkstra 最短路径算法

    1. 前言 因无向.无加权图的任意顶点之间的最短路径由顶点之间的边数决定,可以直接使用原始定义的广度优先搜索算法查找. 但是,无论是有向.还是无向,只要是加权图,最短路径长度的定义是:起点到终点之间所 ...

  9. Johnson 全源最短路径算法

    解决单源最短路径问题(Single Source Shortest Paths Problem)的算法包括: Dijkstra 单源最短路径算法:时间复杂度为 O(E + VlogV),要求权值非负: ...

随机推荐

  1. USACO 1.4 Mother's Milk

    Mother's Milk Farmer John has three milking buckets of capacity A, B, and C liters. Each of the numb ...

  2. centos cmake 升级

    本以为升级cmake很简单 下载了最新的(3.15),./configure 没问题 make的时候,提示 openssl.c: undefined symbol openssl, openssl-d ...

  3. 40.DOM读取XML

    main.cpp #include <QtGui> #include <iostream> #include "domparser.h" int main( ...

  4. Android Fragment RecycleListView

    1.新建SuperActivity package com.example.ting.criminalintentpractise; import android.os.Bundle;import a ...

  5. 欢迎来到Flask的世界

    不多说,直接上文档链接:Flask的文档 教程 API 快速上手

  6. Ztree自动触发第一个节点的点击事件

    1.代码 $(function () { var setting = { //check属性放在data属性之后,复选框不起作用 //check: { // enable: true //}, dat ...

  7. 用VS2015创建ASP.NET Web Forms 应用程序

    在 Visual Studio 2015 中,按着以下步骤创建一个 Web Forms 应用程序项目: 1.起始页/文件--->新建项目--->已安装--->模板--->Vis ...

  8. MEF example code

    public interface IObjectResolver { } public class ObjectResolver:IObjectResolver { private Compositi ...

  9. input 框输入数字相关

    input框限制只能输入正整数,逻辑与和或运算 有时需要限制文本框输入内容的类型,本节分享下正则表达式限制文本框只能输入数字.小数点.英文字母.汉字等代码. 例如,输入大于0的正整数 代码如下: &l ...

  10. 像素点的Hessian矩阵

    最近开始学习图像处理相关知识,碰到对像素点求黑塞矩阵查了资料才搞懂. 给定一个图像f(x,y)上的一点(x,y).其黑塞矩阵如下: 因为导数的公式是f'(x)=(f(x+dx)-f(x))/dx在数字 ...