3月30日學習彙總

2021-10-23 01:34:31 字數 2178 閱讀 8158

python

狄克斯特拉演算法

三:**實現:

break

goto

使用區別

跳出一層迴圈

直接跳轉至指定處,適用於:1.跳出多重迴圈;2.跳向共同的出口位置,進行退出前的處理工作。

找出當前未處理的最便宜節點

計算前往該節點的各鄰居的開銷(等於起點到此點的開銷加上此點到鄰居點的開銷)

將該點視為已處理點,回頭處理此時未處理的最便宜的節點

對比後續點的新舊開銷,更新資料。

題目來自《演算法**》練習

以第一題為例:

list item

一:程式目標:找出加權有向圖從起點到終點的最短路徑的總權重。

二:設計方案:

處理演算法:

使用狄克斯特拉演算法; 資料

我們需要儲存各節點的鄰居以及到他們的開銷,適合用雜湊表(字典)neighbours來實現,;

我們還需要儲存各點的開銷,我們建立相應的雜湊表costs來實現,其中我們以給點名為key,再建立乙個雜湊表,其中儲存從起點到此點的最小開銷,對此資料我們會在不斷對比中更新,最後保留終點的最短路徑的開銷;

最後為了明確我們最後得來的權重到底是經過怎樣的路線得來的,我們得記錄好最短路徑下每一節點的上一節點是誰,我們把他們稱為父級節點,對此我們同樣可以用雜湊表parents來實現同樣這裡我們始終保持更新父級為最短路徑的情況

乙個列表,用來儲存已經被處理裡的節點,使之不再被二次處理。

三:**實現:

# 定義處理鄰居們時尋找最便宜的函式

operated_nodes =

# 用於存放已經被處理過的節點

neighbours =

,'a':,

'b':

,'c':,

'd':

,'e':}

costs =

parents =

deffind_lowest_cost_node

(costs)

: lowest_cost =

float

("inf"

) lowest_cost_node =

none

# 此處none用於當costs遍歷完之後,無節點可遍歷時作為標識停止迴圈

for node in costs.keys():

cost = costs[node]

if cost < lowest_cost and node not

in operated_nodes:

lowest_cost = costs[node]

lowest_cost_node = node

return lowest_cost_node

defmain()

: node = find_lowest_cost_node(costs)

while node is

notnone

: cost = costs[node]

neighbour = neighbours[node]

for theneighbour in neighbour.keys():

new_cost = cost + neighbour[theneighbour]

if new_cost < costs[theneighbour]

: costs[theneighbour]

= new_cost

parents[theneighbour]

= node # 更新該節點的父級節點

if node ==

'e':

return costs[

'e']

node = find_lowest_cost_node(costs)

if __name__ ==

"__main__"

: num = main(

)print

(num)

這段**花了我很長時間去除錯,問題在於執行到最後,我原來並沒有寫被調出的node與『e』判等,使程式陷入了死迴圈。

3月30日 4月3日課程表

請各位家長注意翻看課程表下方學習指導 時間周一 周二週三 周四周五 9 00 9 25 語文數學 數學語文 英語9 30 9 40 眼操眼操 眼操眼操 眼操9 40 10 00 運動運動 運動運動 運動10 00 10 25 數學語文 語文數學 數學午休 3 00 3 25 生命 美術 體育體育 3...

10月29日10月30日

蜷縮著,蜷縮著,便是四年。丟去的是光陰,丟不去的是你。接連幾天看了一部網路 很久沒這樣看網路 了,原因是室友在看網路 的網劇 實在無聊就去翻了翻 結果 後面 癮就來了 3w 的txt檔案一天晚上看到了3點 第二天起來 搬工作室 頭也沒洗 任自己邋遢 狂躁 第二天晚上看到了1點 早上起來接著看 終於 ...

3月30日 4月3日三年級課程

請各位家長注意翻看課程表下方學習指導 時間周一 周二週三 周四周五 9 00 9 25 數學語文 數學英語 語文9 30 9 40 眼操眼操 眼操眼操 眼操9 40 10 00 運動運動 運動運動 運動10 00 10 25 語文數學 數學 數學午休 3 00 3 25 英語體育 英語體育 美術3 ...