103高考資訊處理-資料結構第6題 - 高考

Eartha avatar
By Eartha
at 2014-09-06T18:05

Table of Contents

我好像摸出一點頭緒了,回來自問自答XD

若 G=(U,E)為一權重圖(weighted graph),每條邊的權重均不為負數,則單源最短路徑
問題(Single Source Shortest Path Problem)可以用著名的 Dijkstra 演算法求得,
回答下列問題:
(一)說明 Dijkstra 演算法的主要觀念。
(二)Dijkstra 演算法在最差情況下(Worst Case Analysis),下列三個功能 Insert、
Delete、Decrease_Key 各自需要執行的次數,可用 Big-Oh 符號表示。
(三)若是要在O(|E|+|V|log|V|)最差情況分析下的時間內執行 Dijkstra 演算法,請問該
選擇使用那種資料結構,並說明其原因。

第(二)小題>>

Insert Delete Decrease_Key
高點答案 O(|V|) O(|V|) O(|E|)
公職王答案 O(1) O(VlogV) O(1)

問題1:想請問哪個答案才是正確的?

以下我原來的想法(深藍色的部分)是錯的!
我自己是偏向高點的答案,
因為題目有說是在最差情況下的執行次數,
而 Dijkstra 演算法的資料結構如為一般heap,
insert/delete/decrease_key,所需花費的時間都是O(log n),
如使用F-heap,除了delete依舊需要O(log n),
其餘的所需花的時間都是O(1),
所以依題意我比較可以理解高點的答案.

後來再我多翻了幾次參考書,還是一樣偏向高點的答案,
但原因跟上面不一樣.
我新的想法是:
1.Dijkstra演算法可分為
Insert 用於加入新選擇的點
Delete 用於選出離出發點邊最小的點
Decrease_key 用於檢查邊,更新最短距離

2.Dijkstra演算法如果使用資料結構:鄰接串列 + Fibonacci heaps(F-heaps)
每次執行時間執行次數

每次執行時間 執行次數
Insert O(log|V|) O(|V|)
Delete O(1) O(|V|)
Decrease_key O(1) O(|E|)

3.總時間 = 每次執行時間*執行次數
= O(log|V|)*O(|V|) + O(1)*O(|V|) + O(1)*O(|E|)
= O(|V|log|V|+|V|+|E|) |V|太小可省略
= O(|E|+|V|log|V|)

從上面三點可以發現,
高點的答案是執行次數,
公職王的答案則是每次執行時間,
所以我覺得高點的答案比較切合題意!

而其中第三點可以回答第(三)小題,
如果所花總時間為O(|E|+|V|log|V|),
資料結構應為鄰接串列 + Fibonacci heaps



問題2:另外想請問為什麼Decrease_Key的時間複雜度是O(|E|)?

應該說Decrease_Key的執行次數是O(|E|),
因為Decrease_Key是用在"用於檢查邊,更新最短距離",
所以執行次數為邊的總和.


--
Tags: 高考

All Comments

Hedy avatar
By Hedy
at 2014-09-08T10:15
最後一個問題,dijkstra在找下個最小權重的點時好像是
Margaret avatar
By Margaret
at 2014-09-12T21:14
用min-heap,已經建好了取出來就照數量取這樣,然後在
考場上我這題全部都用猜的XDDDD
Ingrid avatar
By Ingrid
at 2014-09-14T04:55
decrease key印象中有三種時間 O(E),E*O(logV),E*O(1)
我不是很確定 要回去翻以前考研究所的筆記才能確定
Hedy avatar
By Hedy
at 2014-09-15T23:29
謝謝G大和I大 :))
Sandy avatar
By Sandy
at 2014-09-17T07:49
G大有提到找最小權重的點 我想應該是delete而非decrea
Caroline avatar
By Caroline
at 2014-09-19T07:47
se_key decrease_key是用在檢查邊 找最短路徑
Dora avatar
By Dora
at 2014-09-20T16:46
好像是欸,抱歉講錯了qq,太久沒讀書...
Andy avatar
By Andy
at 2014-09-25T10:23
沒關係啦 我很開心你可以回應我XD 可以一起討論啊~
Dora avatar
By Dora
at 2014-09-28T14:09
完了 我就連自己寫過這題都忘了
Daph Bay avatar
By Daph Bay
at 2014-09-30T01:39
當時好像直接跳過這題了 XD

怎麼改變自己的讀書方式?

Kelly avatar
By Kelly
at 2014-09-06T12:39
※ 引述《kuanfu (黑暗騎士)》之銘言: : 我從學生時代到現在快30歲了 讀書的方式一直都沒有變過 就是看一個科目都會習慣 : 把整本書的觀念K到完 而且過程只要有一個地方觀念搞不懂卡住的時候 我就會很堅持 : 要想辦法弄懂才會繼續往下看 如果沒搞懂就往下看我就沒辦法專心而且很心裡很不踏實 : 當時我 ...

怎麼改變自己的讀書方式?

Agnes avatar
By Agnes
at 2014-09-06T11:36
我從學生時代到現在快30歲了 讀書的方式一直都沒有變過 就是看一個科目都會習慣 把整本書的觀念K到完 而且過程只要有一個地方觀念搞不懂卡住的時候 我就會很堅持 要想辦法弄懂才會繼續往下看 如果沒搞懂就往下看我就沒辦法專心而且很心裡很不踏實 當時我哥就跟我說 我覺得你讀書方式從以前到現在都一樣 喜歡整本書 ...

交通技術

Agnes avatar
By Agnes
at 2014-09-06T11:35
小弟最近看到交通技術錄取率蠻高的 同時錄取名額也不算少 不論在高考或是普考 為何每年的名額這麼多!? - ...

103鐵特佐級養路筆試及格心得

Freda avatar
By Freda
at 2014-09-06T11:18
[心得] 考試、上榜、落榜、讀書...等心得文。 【考試成績】 國文:71 公英:72 鐵工:86 養護:90 平均:79.75 名次10 【背景】 本魯大學就讀台中某夜市大學經濟系,幾乎是在21邊緣畢業,英文程度極差, 學測4級分,指考更是只有3.33分,當完兵之後,待在家裡幫忙家業 ...

103 四等一般行政警察上榜心得

Anthony avatar
By Anthony
at 2014-09-05T23:30
此文為代PO,原作者為我的大學同學,認真又上進,還有一個很可愛的女朋友(???) 因為權限不夠無法發文,因此委我代為分享。 ***以下為他的心得文*** 由於在國考版所獲得的資訊受益良多,今年有幸上榜,與大家分享個人的準備方式,希望 可供參考。 【考試成績】 國文 65 (作 ...