首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >找到最可靠的路径-Dijkstra算法

找到最可靠的路径-Dijkstra算法
EN

Stack Overflow用户
提问于 2020-11-24 09:39:39
回答 1查看 1.7K关注 0票数 2

给出了一个有向图G= ( v,E),其中每个边(u,v)∈E有一个相关联的值r(u,v),它是0≤r(u,v)≤1范围内的实数,表示从顶点u到顶点v的通信通道的可靠性,我们将r(u,v)解释为从u到u的通道不会失败的概率,我们假设这些概率是独立的。给出了在两个给定顶点之间寻找最可靠路径的有效算法。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
     a
    / \
   b<--c         a directed to c; c directed to b; b directed to a 

假设这是图G= (V,E);顶点a是根,其中一个边是a to c,a=u&c=v,所以边是(u,v)。我想用Dijkstra的算法来解决这个问题,但不确定如何解决。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
     a
      \
   b<--c          path c: a -> c   &    b: a -> c -> b

有人能用最简单的方法解释最可靠的路径吗?

这个问题来自于算法导论,第三版,chp 24.3

提前感谢!

EN

回答 1

Stack Overflow用户

发布于 2020-11-24 09:52:24

我们将r(u,v)解释为从u到u的通道不会失败的概率,并假定这些概率是独立的。

由此可以推断,给定路径不会失败的概率等于构成该路径的所有边的r(u,v)(u,v)的乘积。

你想要最大限度地利用这个产品。

这就像最短路径问题,对于这个问题,你肯定知道一个算法,除了最小化一个和,你在试图最大化一个乘积。

从积到和有一个很酷的工具:它是对数。对数是一个递增函数,因此最大化一个乘积就等于使该乘积的对数最大化。但对数具有额外的酷特性,即产品的对数等于对数之和:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
log(a * b * c * d * ...) = log(a) + log(b) + log(c) + log(d) + ...

因此,使可信赖性r(u,v)的乘积最大化与使日志可靠性log(r(u,v))之和最大化一样。

由于可靠性是边的概率,所以它们是0(排除)和1(包括)之间的值。可以排除0,因为如果边的可靠性为0,则可以从图中删除该边。因为0 < r(u,v) <= 1,所以log(r(u,v))是负值或0。

所以你试图最大化一个负值之和。这与最小化相反值的和完全相同。

因此:应用最短路径算法,使用-log(r(u,v))作为边的长度.

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64991937

复制
相关文章
Mongoose多表查询运用实例
在开发内容管理系统时,经常会用到多表关联查询场景,如文章分类、文章详情、文章作者三张表,UML图如下:
越陌度阡
2020/11/26
1.7K0
Mongoose多表查询运用实例
mongoose验证
enum: [‘html’, ‘css’, ‘javascript’, ‘node.js’]
Qwe7
2022/05/23
2.4K0
Mongoose aggregate 多表关联查询
使用Mongoose操作MongoDB数据库进行关联查询是一种比较常见的操作,操作方式有哪几种呢?下面用一个具体的案例来演示。
越陌度阡
2020/11/26
3.6K0
48、mongoose入门
现在假设我们想把看到的每一只猫都用数据库给记录下来,即每只猫都是一条document(数据行)。
Ewall
2018/11/21
2K0
Mongoose中的修饰符
Mongoose提供了修饰符功能用于对存取的数据进行一些加工,常用的修饰符有以几下几种:
越陌度阡
2020/11/26
1.2K0
mongoose食用姿势!
Mongoose库简而言之就是对node环境中MongoDB数据库操作的封装,一种对象模型工具,可以将数据库中的数据转换为JavaScript对象供我们使用。
十月梦想
2018/08/29
1.5K0
Mongoose 数据校验
Mongoose为了保证数据库数据的一致性,提供了对数据校验的功能,常用的校验有以下这些:
越陌度阡
2020/11/26
1K0
四、mongoose的使用
2.定义路由 分模块开发,将路由的方法写在/constroller/stu.js文件中。
Dreamy.TZK
2020/07/09
1.9K0
使用 Mongoose 操作 MongoDB
Mongoose是在node.js环境下对mongodb进行便捷操作的对象模型工具。
4O4
2022/04/25
1.7K0
使用 Mongoose 操作 MongoDB
Egg 中结合Mongoose操作Mongodb
1. 安装模块 npm i egg-mongoose --save 2. 配置 egg-mongoose 插件 // config/plugin.js 'use strict'; exports.ejs = { enable: true, package: 'egg-view-ejs', }; // 配置egg-mongoose插件 exports.mongoose = { enable: true, package: 'egg-mongoose' }; 3. 配置连接数据库
越陌度阡
2020/11/26
2.2K0
mongoose官方文档总结
你也可以设定虚拟值的 setter ,下例中,当你赋值到虚拟值时,它可以自动拆分到其他属性:
六个周
2022/10/28
20.7K0
mongoose根据关键字模糊查询(包括前端模糊查询)
后端: 使用new RegExp()实例对象 eg: const Schema = mongoose.model("modelName") let reg = new RegExp("查询关键词") awati Schema.fine || where(say:reg).exec().then(res=>{ 成功回调}) .catch(err=>{ 失败回调 }) 前端: eg: var arr = ['草莓','苹果'] newArr = [] for(var i = 0;i<arr.length;i++
biaoblog.cn 个人博客
2022/08/11
2.8K0
针对Mongoose自定义分页查询通用方法
直接上代码: var mongoose = require('mongoose'); var Schema = mongoose.Schema; var async = require('async'); var pageQuery = function (page, pageSize, Model, populate, queryParams, sortParams, callback) { var start = (page - 1) * pageSize; var $page = {
飞奔去旅行
2019/06/13
2.8K0
使用Mongoose做关联查询的设计方案
在关系型数据库中,我们通常将这两个对象设计成一对多的关系,一个User对应多个Article。而使用mongoose我们可以如此设计:
飞奔去旅行
2019/06/13
2.8K1
使用Mongoose的populate方法实现多表关联查询
MongoDB在3.2以上的版本有类似于 join 的 $lookup 聚合操作符,其实 Mongoose 有一个更强大的替代方法,叫做populate ( ),它允许你在其他集合中引用文档,实现更简洁优雅的查询操作。
越陌度阡
2020/11/26
3.7K0
使用Mongoose的populate方法实现多表关联查询
Mongoose学习参考文档
一、快速通道 1.1 名词解释 Schema : 一种以文件形式存储的数据库模型骨架,不具备数据库的操作能力 Model : 由Schema发布生成的模型,具有抽象属性和行为的数据库操作对 Entity : 由Model创建的实体,他的操作也会影响数据库 注意: 1.本学习文档采用严格命名方式来区别不同对象,例如: var PersonSchema; //Person的文本属性 var PersonModel; //Person的数据库模型 var Per
庞小明
2018/03/07
24.2K0
Mongoose 实现关联查询和踩坑记录
本文源自工作中的一个问题,在使用 Mongoose 做关联查询时发现使用 populate() 方法不能直接关联非 _id 之外的其它字段,在网上搜索时这块的解决方案也并不是很多,在经过一番查阅、测试之后,有两种可行的方案,使用 Mongoose 的 virtual 结合 populate 和 MongoDB 原生提供的 Aggregate 里面的 $lookup 阶段来实现。
五月君
2020/08/20
26.5K0
Mongoose 实现关联查询和踩坑记录
mongodb操作之mongoose
/** * Created by chaozhou on 2015/10/6. */ var mongoose = require("mongoose"); var db = mongoose.c
用户1141560
2017/12/26
1.4K0
初试MongoDB学习之Mongoose的使用
在MongoDB中,多个Document可以组成Collection(以下简称集合),多个集合又可以组成数据库。我们想要操作MongoDB数据,那就得先要具备上面所说的包含数据的“文档”,文档又是什么意思呢,请看如下介绍。
九旬
2020/10/23
5.9K0
初试MongoDB学习之Mongoose的使用
Mongoose模块化实践
Mongoose为操作MongoDB数据库提供了很大的方便,在实际开发过程中,为了保证可扩展与可维护性,通常会将Mongoose进行模块化,下面记录一个模块化的实例,便于在以后的项目中复用。
越陌度阡
2020/11/26
1K0

相似问题

findOne mongoose查询未正常工作

118

分页不能正常工作的Mongoose查询

120

populate返回空查询mongoose

127

Mongoose查询返回空数组

10

Mongoose查询返回空数组

120
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文