分布式并行最短路径

此前我 “自然而然” 做了两个小算法,最短路径最小生成树,我喜欢大自然的第一性原理,最小作用量,梯度下降,爆炸,河水泛滥,本质上都是一回事。

大自然另一风格是分布式并行,没外力的熵增本身就是分布式并行过程,它和上述那些例子殊途同归,但如果熵减过程也如此,就可用于自组织了。以最短路径为例,rip 路由协议就如此,但 ospf 不是,后者通过交互形成统一视图,再集中计算,颇具人为风格,并不自然。

如果时间精确任意小,sleep(v) 样式的排序算法最快,且完全可扩展,与排序规模无关,这是另一种自然而然的算法,与人类风格的串行 + 统筹方法的风格截然相反,计算机无疑模拟了人的风格。
推而广之,整个自然界一直在执行 sleep(v) 样式的算法。

今天(自入梅每天都冒大雨甚至暴雨跑环城河)冒大雨跑环城河一圈,途中想到一个自然风格的最短路径算法:
在这里插入图片描述

非常自然,用计算机做却非常笨拙,就像计算机做 sleep(v) 风格的排序一样被人诟病,因为太慢!难道不是因为计算机太笨了吗?如果计算机调度时间精度可低到冒泡,快排的指令时间,这种算法就能逞能了。

若用计算机做上面烧绳子算法,简单来讲也能 sleep:

  • 初始化,构建所有节点邻居表,设所有节点属性为 false,设 S 为 p;
  • 为 p 每个 false 邻居生成一个 thread,在 thread 中 sleep(边权重),若无邻居,终止;
  • thread wakeup 后:
    • 若邻居节点为 false,设为 true,重复上一步;
    • 若邻居节点为 true,将该边 block,终止 thread;

很简单,无需任何主动松弛操作,靠自然力松弛,但在计算机看来却非常笨拙。

计算机看它笨拙前面提到,是计算机的时间精度太粗糙,但在本身就更大的时间尺度,这种算法就高尚,类似 rip,stp 都是消息交换驱动的分布式算法,本算法也不例外,它的目标就是一棵最短路径树,天然解决了 rip 的环路问题,很高尚。

与这个类似的就是前面那个 最小生成树 算法,都是分布式并行操作。

浙江温州皮鞋湿,下雨进水不会胖。

  • 6
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值