LC1514. 概率最大的路径
迪杰斯特拉
def maxProbability(self, n, edges, succProb, start, end):""":type n: int:type edges: List[List[int]]:type succProb: List[float]:type start: int:type end: int:rtype: float"""r = [0]*nmp = [{} for i in range(n)]r[start] = 1s = [(-1,start)]heapq.heapify(s)for i,(x,y)in enumerate(edges):mp[x][y] = succProb[i]mp[y][x] = succProb[i]while s:p,cur = heapq.heappop(s)p = -pif p < r[cur]: #因为在入队的时候可能重复,并不是最大的也入队了所以这里加个判断减少程序执行次数continuefor neighbor,weight in mp[cur].items():if r[neighbor] < r[cur]*weight:r[neighbor] = r[cur]*weightheapq.heappush(s,(-r[neighbor],neighbor))return r[end]
弗洛伊德多源最短路(超时)
def maxProbability(self, n, edges, succProb, start, end):""":type n: int:type edges: List[List[int]]:type succProb: List[float]:type start: int:type end: int:rtype: float"""mp = [[0]*n for i in range(n)]for i,(x,y)in enumerate(edges):mp[x][y] = succProb[i]mp[y][x] = succProb[i]for i in range(n):mp[i][i] = 1for k in range(n):for i in range(n):for j in range(n):if mp[i][j] < mp[i][k]*mp[k][j]:mp[i][j] = mp[i][k]*mp[k][j]return mp[start][end]
SPFA 用于有负权边的单源最短路问题
def maxProbability(self, n, edges, succProb, start, end):""":type n: int:type edges: List[List[int]]:type succProb: List[float]:type start: int:type end: int:rtype: float"""r = [0]*nr[start] = 1mp = [{} for i in range(n)]for i,(x,y)in enumerate(edges):mp[x][y] = succProb[i]mp[y][x] = succProb[i]queue = deque([start])visited = set()visited.add(start)while queue:cur = queue.popleft()visited.remove(cur)for neighbor, t in mp[cur].items():if r[neighbor] < r[cur] * t:r[neighbor] = r[cur]*tif neighbor not in visited:visited.add(neighbor)queue.append(neighbor)return r[end]
LC1514. 概率最大的路径相关推荐
- 自动驾驶路径规划——基于概率采样的路径规划算法(RRT、RRT*)
目录 1. RRT算法背景 1.1 RRT算法核心思想 1.2 RRT算法优缺点 2. 经典RRT算法 2.1 RRT算法流程 2.2 RRT伪代码 3. 基于目标概率采样 4. RRT*算法 4.1 ...
- 获得有向无环图中起点到终点的所有路径_力扣1514——概率最大的路径
本题主要和图的遍历求解最短路径相关,可以用 Dijkstra 或者 Bellman-Ford 算法进行解决. 原题 给你一个由 n 个节点(下标从 0 开始)组成的无向加权图,该图由一个描述边的列表组 ...
- 自动驾驶路径规划——基于概率采样的路径规划算法(PRM)
目录 1. PRM算法流程 1.1 预处理 1.2 搜索 2. PRM算法案例 2.1 构型采样 2.2 邻域计算 2.3 图搜索(A*搜索) 3. 采样数量的影响 4. 采样策略 4.1 基于障碍物 ...
- 对Probabilistic Road Map(PRM)概率路图路径规划方法的理解
PRM的总体思路 基于采样的路径规划方法在原理上与基于搜索的路径方法有较大区别.基于搜索的路径方法,如A*和Dijkstra,常常用于grid地图.它们需要搜索目标点到终点间的所有栅格.基于采样的路径 ...
- 图Graph--最短路径算法(Shortest Path Algorithm)
文章目录 1. 算法解析 BFS,DFS 这两种算法主要是针对无权图的搜索算法. 针对有权图,图中的每条边都有权重,如何计算两点之间的最短路径(经过的边的权重和最小)呢? 像Google地图.百度地图 ...
- 【VRP】基于matlab模拟退火算法求解单中心多车辆路径规划问题【含Matlab源码 1072期】
⛄一.模拟退火算法简介 1 模拟退火算法的原理 模拟退火算法(SA)是一种适用于大规模组合优化问题的有效近似算法,来源于对固体退火过程的模拟.统计力学表明,在给定初始温度的条件下,通过将温度缓慢降低, ...
- Opencv读取图像时候的路径问题
目前准备系统学习opencv,之前只是在项目中使用过,而且大部分代码都是直接CV不经过自己的消化,接下来会把自己学习过程中遇到的问题以Blog的形式记录下来,一个为了之后方便查阅,一个方便与大家一同交 ...
- 【路径规划】基于matlab模拟退火算法结合LNS求解车辆路径规划问题【含Matlab源码 2333期】
⛄一.模拟退火算法简介 1 模拟退火算法的原理 模拟退火算法(SA)是一种适用于大规模组合优化问题的有效近似算法,来源于对固体退火过程的模拟.统计力学表明,在给定初始温度的条件下,通过将温度缓慢降低, ...
- 条件随机场(CRF) - 4 - 学习方法和预测算法(维特比算法)
声明: 1,本篇为个人对<2012.李航.统计学习方法.pdf>的学习总结,不得用作商用,欢迎转载,但请注明出处(即:本帖地址). 2,由于本人在学习初始时有很多数学知识都已忘记,所以为了 ...
最新文章
- 目前python主要应用领域零售_python3读取HDA零售企业数据(一)
- 在EXCEL中如何将一列中的相同值的数据行找出来?
- 2016和2017的区别就是昨晚和今早
- Wpf Binding.Path设置
- JStorm2.1.1集群的安装和使用
- OpenWrt项目:针对嵌入式设备的Linux操作系统
- excel函数手册_一个函数高手的成长之路
- Apex 获取真正的IP地址
- 每个开发人员应该拥有的K8S工具
- ZedGraph _WINFORM中设置ZEDGRAPH的曲线符号SYMBOL以及对应关系
- 计算机组成原理定点源码一位乘,计算机组成原理课程设计-定点原码一位乘法器的设计.doc...
- 《数值分析》-- 数值计算中的误差与有效数字
- 弧度制和角度制的换算
- 怎么 如何劫持DNS 加速 转发 教程
- 剧透, 本届以太坊大会都有哪些牛逼的开发者……
- 基金套利是怎么玩的?
- jq 评论源码+动态评论回复
- 上海亚商投顾:沪指缩量跌0.44% 医药股全线反弹
- python pycharm的安装及其使用
- 微信小程序中根据字母选择城市