B.F.M. UNITY
6.0.0
6.0.0
  • 🏁B.F.M. UNITY & U.R.S. & R.V.C.(On war with ShenNanPeng SEQUOIA HongShan & DaHongFei NEO Antshares)
  • 🩸B.F.M. R.V.C. 执行令
  • 沈南鹏,姚期智,去所里办点事吧
    • 沈南鹏,姚期智,去所里办点事吧
  • 🌟BF​M UNITY : A Brief Fantasy of Multiverse
  • 🫀古灵阁米达斯银行,请对洋人使用炼金术吧
  • B.F.M. R.V.C. | 位面简梦复仇做空风投
    • 中国加密项目名录
  • 中国金融机构名录
  • 红杉资本中国生态
  • 红杉资本全球生态
  • Antbot Antshares NEO 生态
  • 币安投资
  • 做市商名单
  • 华尔街RWA
  • 隐私代币
  • 人工智障
  • NFT
  • 跨链桥
  • 隐私代币
  • launchpad
  • BFM Lite | 位面简梦轻量版
    • 🌱新人必看(🔥)
    • 驾驶舱 (运行) (🔥)
      • 私钥云保管 🔑 ☁️
    • BFM Navigation
    • Main Bridge (Navigator)
  • BFM URS|位面简梦联合体储备系统(区块链加密货币宏观调控与货币政策机构)
    • 《位面简梦联合体(BFM-UNITY)储备系统(简称,位面简梦联储,位面联储,BFM-URS)法》
    • 😇历任行长(嵌套螺旋·符文占星·死灵炼金·原语谕示)
    • 🌟新资料片:寒武纪大过滤器与奥陶纪跃迁引擎启动!Smart Beta Neutral ——奎扎尔·科亚特尔计划
    • 战略资产配置——卓尔金历 🕙
      • 卓尔金升级1——拟合函数
      • 卓尔金升级2——误差分析
      • 卓尔金升级3——智能实验
      • 卓尔金升级4——图灵完备
      • 卓尔金升级5——动态图表
      • 卓尔金升级6——分类网络
      • 卓尔金升级7——引力透镜
      • 卓尔金升级8——货币政策
      • 卓尔金升级9——杠杆控制
      • 卓尔金升级A1——市占幂修
      • 卓尔金升级A2——参数读取
      • 卓尔金升级A3——止损熔断
      • 卓尔金升级A4——最大回撤
      • 卓尔金升级A5——波动率止损
      • 卓尔金升级A6——安全带
      • 卓尔金升级A7——在线图表
      • 卓尔金升级A8——商业化
      • 卓尔金升级A9——下拉菜单
      • 卓尔金升级A10——xlwings与Python连接
      • 卓尔金升级A11——KDE核密度估计
      • 卓尔金升级A12——杠杆风险控制,凯利准则
      • Plotly-制作数据仪表盘
      • 如何获取数字货币数据
      • 卓尔金升级A13——无监督学习优化
      • 卓尔金历法旧版页面
    • 战术资产配置——哈布历⌚️
      • 哈布历法1层次
      • 哈布历法2层次
      • 哈布历法3——仓位单元,量子调仓
      • 已废弃
    • 资产配置 🕙 ⌚️(🔥)
    • 时间校准研究
    • 如何碾碎中美政府国际金融部门
    • 如何碾碎中国人民银行
    • 如何碾碎中国三大政策性银行
    • 如何碾碎中国四大国有银行
    • 如何碾碎美联储
  • BFM Unity | 位面简梦联合体
    • 陈列室 (历程)
      • 虚拟资产编号名录
    • 新人指导
      • 【管理】宪章说明
      • 【选择】学区房 or 比特币
    • 【运营】加入组建
      • 群公告备份
    • 【组织】团队构成
  • BFM DA | 位面简梦数产
    • BFM Unity Reserve System
    • BFM Foundation
      • 比坊梦全球互联网 基金
      • 若尘的基金
    • BFM Trading Strategy♟
    • 影银行 (枢纽)
      • 自营业务
      • 个人业务
      • 企业业务
      • 创世业务
    • 会客厅 (赞助) 💰 & 资产公示
    • 财务
  • 🦣BFM Eco. | 位面简梦区块生态
    • BFM Eco. 🛰️
    • 链上数据分析
    • Cross-Chain Bridge
    • ETH - MainNet
      • Layer-2
        • MATIC - Polygon
        • Arbitrum
        • OP - Optimism
      • SHIB - Shiba Inu
    • BNB - BSC
    • AVAX - Avalanche
    • SOL - Solana
    • 其他公链
      • ADA - Cardano
      • ATOM - Cosmos
        • ☠️LUNA - Terra(已亡)
      • FTM - Fantom
      • Flow
      • Near
      • IPFS/FIL
    • BFM Meta
      • BFM DeFi 🦄️👻
      • BFM NFT🃏🧩
      • BFM Meme 🐶 💩
      • BFM GameFi 🎮👾
  • BFM DS|位面简梦数据支撑
    • Page 5
  • BFM OL|位面简梦障碍解除
    • SS/V2Ray 科学上网 ✈️
    • 华谷套件(Google Play商店)
    • 跨境收付
    • 离岸实体
    • Page 3
  • BFM BM|位面简梦区块基础
    • “在座的各位”总集篇
      • 讲师阵容
      • 介绍在座的各位
      • 问候在座的各位
      • 评价在座的各位
    • 《精通比特币》《精通以太坊》
    • 区块链安全
    • 区块链共识算法
    • 区块链分类与层次
    • 区块链要素理论
    • 区块链评级
    • 私钥与BIP44
    • 钱包
    • 交易所
    • 实体挖矿
    • 质押挖矿
    • 云算力挖矿
    • 桥接性钱包&加密银行卡
    • 礼品卡&场外交易
  • BFM Trad. | 位面简梦传统金融
    • FOReign EXchange
    • Cloud-POS,CNP 💳
    • Stock Investment
      • 选股
    • Fund Investment
      • 金融
      • 地产
      • 白酒
      • 医药
      • 互联网
      • 新能源
    • Gold investment
    • 国债逆回购
    • 可转债打新
    • Offshore Finance 🌍
    • Offshore Entity
    • International Phone Number
    • International Bank Card
    • 桥接性数字钱包
    • 礼品卡与场外交易
    • 草稿
  • BFM R-Ins. | 位面简梦科学研究院
    • 数学研究部
    • 算法科学部
      • 【算法】算法描述
        • 【研究】参考文献
        • BFM 维基百科翻译
        • 陵墓
    • 组织架构部
    • 项目流程部
      • 【软件】行动手册 🚩
      • 【软件】其他代码
      • 【软件】Graph algorithms and currency arbitrage
      • 【创新】未来发展
      • 【创新】DeFi - AMM
    • 项目架构部
      • 【架构】架构设计
        • 【规划】发展路线
        • 【规划】AMM下潜
        • 弯路
    • 量子科学部
      • LV5-研究院 (量子) ☢️
    • 数据智能部
      • Page
      • LV6-星魔方 (分类) 🎲
        • 数据分析-精炼
        • 数据分析-实验
        • 人工智能-实验
  • BFM D-Ins. | 位面简梦工程设计院
    • API接口
      • 币安API实验室🚩
    • 高并发
      • 新版本高并发实验室🚩
      • 旧版本高并发实验室
    • 开源项目部
      • 总览
      • Freqtrade 领域级重点实验室
      • HummingBot领域级重点实验室🚩
      • CCXT 领域级重点实验室🚩
        • CCXT文档
        • CCXT手册
      • AIOQuant 实验室
      • Peregrine 领域级重点实验室🚩
      • btrader实验室
      • js实验室1
      • 实验室2
      • py重点实验室
      • 以太坊部署实验室
    • 衍生产品部
    • 量化交易部
  • BFM Univ. | 位面简梦大学
    • 素白 · 密斯卡托尼克大学 🏫
    • Excel 教室
    • Power BI 教室
    • SPSS 教室
    • Python少儿编程教室 👩‍🏫
      • Python 办公自动化 OA
      • Python 金融 Finance
      • Python Project
    • 开发环境搭建教室 👨‍🏫 🚩
    • 文献与数据
    • 网络安全
    • MIS 系统开发
    • WEB 全栈开发
    • 企业战略分析
    • 基础财商教育
    • C#教室
    • 金融考试
    • 计算机考试
    • 发卡卡密交易平台
  • BFM LIB.|位面简梦图书馆
    • Page 1
    • Page 2
  • BFM Cult. | 位面简梦文化
    • 组织文化宣传
    • 设计
    • 组织文化
      • IT超度指南
      • 动漫
      • 漫画
      • 游戏
      • 01城密咒
      • 心理学
    • 风水玄学儒释道瑜伽占卜塔罗吸引力法则灵性修行
    • 【传媒】引起兴趣
  • 风控与合规
    • LICENCE:GNU GPL v3.0
  • 工具
    • AIGC
    • 文章论文生成器
    • 绘画生成器
    • AI 导航网站
    • 发现网站
    • B站视频下载 🎬 ⏬
  • 链接
    • 看板
    • 投资方法论
    • Github托管地址
    • 旧群文件
  • 位面简梦回收站
    • 三角套利程序众筹(中止)
  • 位面简梦后勤部
    • 餐厅
    • 药店
    • 服饰店
    • 数码店
    • 钱包店
    • 家具店
  • BFM AI|位面简梦智能
    • Page 4
Powered by GitBook
On this page
  • Bellman–Ford算法
  • 内容
  • 算法[ 编辑]
  • 正确性证明[ 编辑]
  • 寻找负周期[ 编辑]
  • 路由中的应用[ 编辑]
  • 改进[ 编辑]
  • 琐事[ 编辑]
  • 笔记[ 编辑]
  • 参考[ 编辑]
  1. BFM R-Ins. | 位面简梦科学研究院
  2. 算法科学部
  3. 【算法】算法描述

BFM 维基百科翻译

Previous【研究】参考文献Next陵墓

Bellman–Ford算法

维基百科,自由的百科全书

Bellman–Ford算法

类

数据结构

  • 贝尔曼·福特

清单

相关话题

的Bellman-Ford算法是一种,其计算从单一来源到所有其他顶点的。对于相同的问题, 它比慢,但用途更多,因为它能够处理某些边权重为负数的图形。该算法最初由Alfonso Shimbel()提出,但取而代之的是分别由和分别在和年发布的。 也在1957年发布了相同的算法,因此有时也称为Bellman-Ford-Moore算法。

在图形的各种应用中发现了负边缘权重,因此该算法很有用。 如果图形包含从源头可以到达的“负循环”(即边的总和为负值的),则没有最便宜的路径:在负循环上有点的任何路径都可以绕负周期再,使价格更便宜。在这种情况下,Bellman-Ford算法可以检测并报告负循环。

内容

function BellmanFord(list vertices, list edges, vertex source) is
    ::distance[], predecessor[]

    // This implementation takes in a graph, represented as
    // lists of vertices and edges, and fills two arrays
    // (distance and predecessor) about the shortest path
    // from the source to each vertex

    // Step 1: initialize graph
    for each vertex v in vertices do
        distance[v] := inf             // Initialize the distance to all vertices to infinity
        predecessor[v] := null         // And having a null predecessor
    
    distance[source] := 0              // The distance from the source to itself is, of course, zero

    // Step 2: relax edges repeatedly
    for i from 1 to size(vertices)−1 do //just |V|−1 repetitions; i is never referenced
        for each edge (u, v) with weight w in edges do
            if distance[u] + w < distance[v] then
                distance[v] := distance[u] + w
                predecessor[v] := u

    // Step 3: check for negative-weight cycles
    for each edge (u, v) with weight w in edges do
        if distance[u] + w < distance[v] then
            error "Graph contains a negative-weight cycle"

    return distance[], predecessor[]

引理。在我重复for循环之后,

  • 如果Distance(u)不是无穷大,则它等于从s到u的某些路径的长度;和

  • 如果存在从s到u的路径(最多i个边缘),那么Distance(u)最多是从s到u的最多i个边缘的最短路径的长度。

证明。对于异步的基本情况,考虑i=0和之前的那一刻为首次执行循环。然后,对于源顶点source.distance = 0,这是正确的。对于其他顶点u,这也是正确的,因为从源到u的路径都不存在0条边。 u.distance =`` infinity

对于归纳案例,我们首先证明第一部分。考虑一下顶点距离更新为的时刻 v.distance := u.distance + uv.weight。通过归纳假设,u.distance是从源到u的某些路径的长度。然后u.distance + uv.weight是从源到v的路径的长度,该路径的长度沿着从源到u的路径 ,然后到v。

对于第二部分,请考虑从源到v的最短路径P(可能有不止一条),最多具有i个边缘。令u为该路径上v之前的最后一个顶点。然后,从路径的一部分来源,以ü是从最短路径源到ü至多I-1的边缘,因为如果它不是,那么就必须有一些严格的短路径源到ü最多与I- 1条边,然后我们可以将边uv附加到此路径,以获得一条最多具有i的边界严格小于P-矛盾。通过归纳假设,u.distance在i -1迭代之后,最多是该路径从源到u的长度。因此,uv.weight + u.distance最大为P的长度。在第i 次迭代中,v.distance与进行比较uv.weight + u.distance,如果uv.weight + u.distance较小,则设置为等于。因此,在i次迭代之后,v.distance最多为P的长度,即,从源到v的最短路径的长度最多为i个边缘。

如果没有负权重循环,则每个最短路径最多会访问每个顶点一次,因此在步骤3中无法进行进一步的改进。相反,假设无法进行任何改进。然后对于顶点v [0],...,v [ k -1]的任何循环,

v[i].distance <= v[i-1 (mod k)].distance + v[i-1 (mod k)]v[i].weight

围绕循环进行总结,v [ i ] .distance和v [ i -1(mod k)]。distance项抵消,从而使

0 <= sum from 1 to k of v[i-1 (mod k)]v[i].weight

即,每个周期的权重均为非负数。

  1. 每个节点计算自身与AS中所有其他节点之间的距离,并将此信息存储为表格。

  2. 每个节点将其表发送到所有相邻节点。

  3. 当节点从其邻居接收到距离表时,它会计算到所有其他节点的最短路径,并更新其自己的表以反映所有更改。

在这种情况下,Bellman-Ford算法的主要缺点如下:

  • 它的伸缩性不好。

通过观察以下事实,可以在实践中(尽管不是在最坏的情况下)改进Bellman-Ford算法:如果算法主循环的迭代在不进行任何更改的情况下终止,则可以立即终止该算法,因为随后的迭代将不再进行任何更改。在这种提前终止条件下,在某些情况下,主循环使用的数量可能少于| |。V | − 1次迭代,即使算法的最坏情况保持不变。

  • Shimbel,A.(1955年)。通信网络中的结构。信息网络研讨会论文集。纽约,纽约:布鲁克林理工学院的理工出版社。第199–203页。

(针对加权有向图)

{\ displaystyle \ Theta(| V || E |)}

{\ displaystyle \ Theta(| E |)}

{\ displaystyle \ Theta(| V |)}

和

算法[ ]

在此示例图中,假设A是源,并且以从右到左的最差顺序处理边缘,则需要使用| V | -1或4次迭代,以使距离估计收敛。相反,如果按从左到右的最佳顺序处理边缘,则算法将在一次迭代中收敛。

像一样,Bellman-Ford通过,其中将正确距离的近似值替换为更好的近似值,直到最终找到解。在这两种算法中,到每个顶点的近似距离始终是真实距离的高估,并被其旧值的最小值和新找到的路径的长度所替代。但是,Dijkstra的算法使用来选择尚未处理的最接近的顶点,并在其所有出站边缘执行此松弛过程。相比之下,Bellman-Ford算法只是放松所有边缘,然后执行此操作{\ displaystyle | V | -1} 时间,在哪里 {\ displaystyle | V |}是图中的顶点数。在每个重复中,具有正确计算出的距离的顶点数量会增加,由此得出的结论是所有顶点最终都将具有正确的距离。与Dijkstra相比,此方法允许将Bellman-Ford算法应用于更广泛的输入类别。

贝尔曼-福特参加 {\ displaystyle O(| V | \ cdot | E |)} ,地点{\ displaystyle | V |} 和 {\ displaystyle | E |} 分别是顶点和边的数量。

简而言之,该算法将到源的距离初始化为0,将所有其他节点的距离初始化为无穷大。然后,对于所有边缘,如果可以通过抓住边缘来缩短到目的地的距离,则该距离将更新为新的较低值。在每次迭代中我其边缘扫描时,算法找到至多长度的所有最短路径我边缘(和可能的一些路径长于我边缘)。由于没有循环的可能的最长路径是{\ displaystyle | V | -1} 边缘,必须扫描边缘 {\ displaystyle | V | -1}时间以确保找到所有节点的最短路径。对所有边缘进行最终扫描,如果更新了任何距离,则为长度路径{\ displaystyle | V |} 已发现只有在图形中至少存在一个负循环时才会出现边沿。

正确性证明[ ]

本节未任何。请通过帮助。未采购的材料可能受到挑战并被。查找来源: – · · · · (2019年3月)()

该算法的正确性可以通过:

寻找负周期[ ]

当使用该算法查找最短路径时,存在负循环是一个问题,从而阻止了该算法找到正确的答案。但是,由于它会在找到负循环时终止,因此Bellman-Ford算法可用于寻求该目标的应用程序,例如在分析中的技术中。

路由中的应用[ ]

Bellman-Ford算法的分布式变体用于,例如(RIP)。该算法是分布式的,因为它涉及的多个节点(路由器),是ISP通常拥有的IP网络的集合。它包括以下步骤:

由于更新是逐节点传播的,因此无法快速反映变化。

如果链路或节点故障使某个节点无法从其他一组节点到达某个节点,则,这些节点可能会永远花时间逐渐增加其对与节点的距离的估计,并且与此同时可能存在路由环路。

改进[ ]

对没有负权重循环的图描述了Bellman-Ford算法的另外两个改进。再次,虽然在实践中使算法更快,但他们并没有改变其算法。{\ displaystyle O(| V | \ cdot | E |)}最坏的情况是时间限制。他的第一项改进减少了算法每次迭代中需要执行的松弛步骤的数量。如果顶点v的距离值自上次松弛v以来没有变化,则无需再次使v之外的边缘松弛。这样,随着具有正确距离值的顶点数量的增加,在每次迭代中需要放松的输出边缘的数量会减少,从而为节省了时间常数。

颜的第二个改进是首先在所有顶点上分配一些任意的线性顺序,然后将所有边的集合划分为两个子集。所述第一子集,ê ˚F,包含所有边缘(v 我,v Ĵ),使得我 < Ĵ ; 第二个E b包含边(v i,v j),使得i > j。每个顶点按v 1,v 2,...,v |的顺序访问。V |,从E f的那个顶点放宽每个输出边缘。然后按v | |的顺序访问每个顶点。V | ,v | V | −1,...,v 1,从E b中的那个顶点放宽每个输出边缘。在第一个迭代之后,算法主循环的每次迭代都会在其松弛距离与正确的最短路径距离匹配的一组边缘中至少添加两个边缘:一个来自E f,一个来自E b。此修改从|减少了算法主循环的最坏情况迭代次数。V| − 1至{\ displaystyle | V | / 2}。

另一项改进是用代替了日元第二次改进中所用顶点的任意线性顺序。这种变化使Yen的改进变得最糟(最短路径的边缘在两个子集E f和E b之间严格交替)极不可能发生。使用随机排列的顶点顺序,主循环中所需的迭代次数最多为{\ displaystyle | V | / 3}。

琐事[ ]

在中国,还增加了一个先入先出队列的Bellman-Ford算法,被称为算法,由爱德华·摩尔在1959年,1994年出版,重新发现了Fanding段,深受谁参加学生 [ ] 和。

笔记[ ]

^

。

。

Cormen等人,第二版,问题24-1,第614-615页。

^ 见塞奇威克的为算法。,第4版,演习5和12(检索二○一三年一月三十○日)。

Duan, Fanding (1994), , Journal of Southwest Jiaotong University, 29 (2): 207–212

参考[ ]

原始资料[ ]

(1958)。“关于路由问题”。应用数学季刊。16:87-90。。

(1956年8月14日)。。论文P-923。加利福尼亚州圣莫尼卡:兰德公司。

(1959)。穿过迷宫的最短路径。程序 国际交流。座谈会。转换理论,1957年,第二部分。马萨诸塞州剑桥市:哈佛大学。按。第285–292页。。

颜金Y(1970)。“在通用网络中找到从所有源节点到给定目的地的最短路径的算法”。应用数学季刊。27:526–530。。

密西根州班尼斯特;(2012年)。 (PDF)的。分析算法和组合学(ANALCO12),日本京都。第41–47页。:。:。

次要来源[ ]

Bang-Jensen,Jørgen; 古丁,格雷戈里(2000)。“第2.3.4节:Bellman-Ford-Moore算法”。(第一版)。 。

Schrijver,Alexander(2005)。(PDF)。离散优化手册。爱思唯尔:1-68。

; ; 。麻省理工学院出版社和麦格劳-希尔。, 第二版。麻省理工学院出版社和麦格劳-希尔,2001年。第24.1节:Bellman-Ford算法,第588-592页。问题24-1,第614–615页。第三版。麻省理工学院出版社,2009年。。第24.1节:Bellman-Ford算法,第651-655页。

Heineman,乔治·T。加里·波利斯(Pollice,Gary);斯坦利·瑟尔科(2008)。“第6章:图形算法”。简而言之的算法。。第160–164页。 。

;(2006)。算法设计。纽约:培生教育有限公司

(2002)。“第21.7节:负边权重”。(第3版)。 。(内容存档于2008-05-31)。检索2007-05-28。

:

跳转到导航
跳转到搜索
算法
的最短路径
顶点
加权有向图
[1]
Dijkstra的算法
1955
Richard Bellman
Lester Ford Jr.
1958年
1956
[2]
爱德华·F·摩尔(Edward F. Moore)
[1]
[3]
循环
走一圈
[1]
[4]
1种算法
2正确性证明
3寻找负周期
4路由应用
5项改进
6琐事
7笔记
8参考
8.1原始资料
8.2次要来源
编辑
编辑
归纳证明
编辑
网络流量
循环取消
[1]
编辑
距离矢量路由协议
路由信息协议
自治系统中
自治系统
网络拓扑的
计数到无穷大
编辑
编辑
SPFA
国家省
zh
省信息奥林匹克竞赛
国际大学编程竞赛
[7]
编辑
跳至:a
b
c
d
Bang-Jensen&Gutin(2000)
^
作者(2005)
^
Sedgewick(2002)
^
Kleinberg&Tardos(2006)
^
跳转到:一个
b
幅练习
^
"关于最短路径的SPFA快速算法"
编辑
编辑
理查德·贝尔曼
MR
0102435
福特,小莱斯特·R。
网络流理论
摩尔,爱德华·F
MR
0114710
MR
0253822
Eppstein,D.
Bellman-Ford算法
随机加速
arXiv
1111.5414
Bibcode
2011arXiv1111.5414B
编辑
图:理论,算法和应用
书号
978-1-84800-997-4
“关于组合优化的历史(至1960年)”
Cormen,托马斯H
Leiserson,查尔斯·E
Rivest,Ronald L.
算法简介
ISBN
0-262-03293-7
ISBN
978-0-262-53305-8
奥赖利媒体
书号
978-0-596-51624-6
乔恩·克莱恩伯格
塔多斯·埃瓦
Sedgewick,Robert
Java中的算法
书号
0-201-36121-3
原始
分类
图算法
多项式时间问题
动态编程
单源最短路径问题
图形
最坏情况下的表现
最佳情况下的表现
最坏情况下的空间复杂度
图
树 搜索算法
a – b
一种*
B *
回溯
光束
最佳第一
双向的
博尔夫卡
分支定界
BFS
英国博物馆
D *
DFS
迪克斯特拉
埃德蒙兹
弗洛伊德·沃歇尔
边缘搜索
爬山
IDA *
迭代加深
约翰逊
跳跃点
克鲁斯卡尔
词典BFS
LPA
原始
高中
SPFA
图算法
搜索算法
图算法列表
动态编程
图遍历
树遍历
搜索游戏
v
Ť
Ë
引用
资料
在可靠来源中添加引文来
改进本节
清除
“贝尔曼福特算法”
新闻
报纸
书籍
学者
JSTOR
了解如何以及何时删除此模板消息
Dijkstra的算法
松弛进行
优先级队列
贪婪地
时间
Yen(1970)
密集图
[5]
[6]
Bannister&Eppstein(2012)的
随机置换
预期
[6]