spfa通常用來解決最短路問題
在圖論中,又有一類特殊的最短路模型一一dag
眾所周知,dag可以通過dp解決,當然求最短路的演算法也同樣適用於dag
而普通的圖,可能會含有環,這就造成了後效性,所以不能用dp解決,但可以仿照dp的思想,寫乙個類似dp的方程
令$dis_u$表示源點到$u$的最短路徑長度,$v$表示與$u$相連的節點,$w$為邊權
有$$dis_v = min\left \ $$
這和dp中刷表法的寫法一模一樣($f_v = min\left \$),都是順推的寫法(當然也可以逆推)
而spfa則是通過迭代的方式使所有狀態收斂(不能再更新)(引自 演算法競賽高階指南)
spfa的靈魂是佇列優化,而一般的最短路題目中,spfa佇列中儲存的是"可能會更新子節點(無向圖可看作互為子節點)的點"
相應的,只有被更新(值發生改變)的點才有可能更新子節點
spfa就可以求解這樣的具有後效性的dp(或者不能叫dp)
如p4042,就是這樣的例子
最短路的一些理解
dij是單源的,只是從乙個頂點出發到其它點的最短距離,並且它的全值都是正的,不能夠有負值 bellman ford 也是單源的,但是他能夠完成負權值的圖,這是dij無法達到的,並且能夠判斷是否存在負環,經過修改可以求最長路 spfa是在bellman ford上優化的,所以跟快 floyd演算法可以...
從資源配置的角度理解IT領域的一些場景
網際網路產業急速膨脹也帶來軟硬體技術的更新換代,比如雲計算 大資料 人工智慧 ict融合等,在這些大概念的下面是各種不勝列舉的新的語言 框架 架構等,比如golang 非同步io generator 容器 微服務 nosql tensorflow等。網際網路是技術發展的乙個必然產物,本文僅僅試圖從資...
對Linux inode的一些理解
檔名 inode device block 一 inode是什麼?理解inode,要從檔案儲存說起。檔案儲存在硬碟上,硬碟的最小儲存單位叫做 扇區 sector 每個扇區儲存512位元組 相當於0.5kb 作業系統讀取硬碟的時候,不會乙個個扇區地讀取,這樣效率太低,而是一次性連續讀取多個扇區,即一次...