日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長(zhǎng)提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請(qǐng)做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線(xiàn)咨詢(xún)客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會(huì)員:747

貝爾曼福特算法(Bellman Ford)可以找到從目標(biāo)節(jié)點(diǎn)到加權(quán)圖其他節(jié)點(diǎn)的最短路徑。這一點(diǎn)和Dijkstra算法很相似,貝爾曼福特算法可以處理負(fù)權(quán)重的圖,從實(shí)現(xiàn)來(lái)看也相對(duì)簡(jiǎn)單。

貝爾曼福特算法原理詳解

貝爾曼福特算法通過(guò)高估從起始頂點(diǎn)到所有其他頂點(diǎn)的路徑長(zhǎng)度,迭代尋找比高估路徑更短的新路徑。

因?yàn)槲覀円涗浢總€(gè)節(jié)點(diǎn)的路徑距離,可以將其存儲(chǔ)在大小為n的數(shù)組中,n也代表了節(jié)點(diǎn)的數(shù)量。

實(shí)例圖

1、選擇起始節(jié)點(diǎn),并無(wú)限指定給其他所有頂點(diǎn),記錄路徑值。

2、訪(fǎng)問(wèn)每條邊,并進(jìn)行松弛操作,不斷更新最短路徑。

3、我們需要這樣做N-1次,因?yàn)樵谧顗牡那闆r下,最短節(jié)點(diǎn)路徑長(zhǎng)度可能需要重新調(diào)整N-1次。

4、注意右上角的節(jié)點(diǎn)是如何調(diào)整其路徑長(zhǎng)度的。

5、在所有節(jié)點(diǎn)都有路徑長(zhǎng)度之后,再檢查是否存在負(fù)環(huán)路。

Python實(shí)現(xiàn)貝爾曼福特算法

class Graph:

    def __init__(self, vertices):
        self.V = vertices   # Total number of vertices in the graph
        self.graph = []     # Array of edges

    def add_edge(self, s, d, w):
        self.graph.append([s, d, w])

    def print_solution(self, dist):
        print("Vertex Distance from Source")
        for i in range(self.V):
            print("{0}\t\t{1}".format(i, dist[i]))

    def bellman_ford(self, src):

        dist = [float("Inf")] * self.V
        dist[src] = 0

        for _ in range(self.V - 1):
            for s, d, w in self.graph:
                if dist[s] != float("Inf") and dist[s] + w < dist[d]:
                    dist[d] = dist[s] + w

        for s, d, w in self.graph:
            if dist[s] != float("Inf") and dist[s] + w < dist[d]:
                print("Graph contains negative weight cycle")
                return

        self.print_solution(dist)

g = Graph(5)
g.add_edge(0, 1, 5)
g.add_edge(0, 2, 4)
g.add_edge(1, 3, 3)
g.add_edge(2, 1, 6)
g.add_edge(3, 2, 2)

g.bellman_ford(0)

登錄后復(fù)制

分享到:
標(biāo)簽:算法的概念
用戶(hù)無(wú)頭像

網(wǎng)友整理

注冊(cè)時(shí)間:

網(wǎng)站:5 個(gè)   小程序:0 個(gè)  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會(huì)員

趕快注冊(cè)賬號(hào),推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過(guò)答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫(kù),初中,高中,大學(xué)四六

運(yùn)動(dòng)步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動(dòng)步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績(jī)?cè)u(píng)定2018-06-03

通用課目體育訓(xùn)練成績(jī)?cè)u(píng)定