[理工] 資料結構 BFS時間複雜度在DS跟ALGO之間

看板Grad-ProbAsk作者 (Mistel)時間6年前 (2019/06/28 09:52), 6年前編輯推噓2(2010)
留言12則, 2人參與, 6年前最新討論串1/1
圖為BFS在DS版本的演算法 https://i.imgur.com/urtXZ57.jpg
https://i.imgur.com/4iUqKgS.jpg
比較表 https://i.imgur.com/FVlF3ni.jpg
想問的是為什麼DS版本是O(e) 而Algo版本O(n+e)? 看上去DS版並沒有將建立array初值需要的時間算進去,但是 for i=1 to n do visited[i] = false 這段應該也要O(n)的時間,跟Algo版本設立初值的時間應該沒有不同...? 為什麼不用算進去呢? 感謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.136.190.122 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Grad-ProbAsk/M.1561686774.A.D4D.html

06/28 11:20, 6年前 , 1F
還有想請問一下 DS的考卷如果要寫演算法可以寫algo版本的
06/28 11:20, 1F

06/28 11:20, 6年前 , 2F
psesudo code嗎? 感謝板上大大們
06/28 11:20, 2F

06/28 14:17, 6年前 , 3F
妳可以重新思考一下 Big-O 的定義,再來思考要不要加
06/28 14:17, 3F

06/28 14:18, 6年前 , 4F
回推文: 老話一句,說明清楚就好了。研究所考試沒有
06/28 14:18, 4F

06/28 14:18, 6年前 , 5F
標準答案
06/28 14:18, 5F
感謝樓上 但是如果這樣思考的話Algo版本的BFS應該也只要寫O(e)就好不是嗎?因為e介於( n-1)~n(n-1)/2之間 也就是O(e)應該介於O(n)~O(n*n)之間 這樣O(n+e)並不會因為多個n而有所變化....? 因為我上課時在想為什麼這邊要加起來,然後回家看原文書也沒有說明為什麼要加起來... 請問我漏掉什麼東西?感謝!! ※ 編輯: mistel (114.136.190.122 臺灣), 06/28/2019 15:06:09 ※ 編輯: mistel (114.136.190.122 臺灣), 06/28/2019 15:07:51

06/28 17:08, 6年前 , 6F
突然想到是不是Algo跟DS之間的時間複雜度定義不一樣 ...
06/28 17:08, 6F

06/28 17:39, 6年前 , 7F
我比較傾向於認為 O(V+E) 這樣的 expression 透漏了較
06/28 17:39, 7F

06/28 17:40, 6年前 , 8F
多資訊在裡面,意即複雜度可能會由該兩項變數所影響
06/28 17:40, 8F

06/28 17:43, 6年前 , 9F
而且 e 真的介於那個範圍嗎? 有人說給定的 Graph 一定
06/28 17:43, 9F

06/28 17:43, 6年前 , 10F
會連通? XD
06/28 17:43, 10F

06/28 18:34, 6年前 , 11F
你說的沒錯 應該不一定會連通才對QQ 那這樣我可以理解了
06/28 18:34, 11F

06/28 18:34, 6年前 , 12F
,感謝你!!!
06/28 18:34, 12F
文章代碼(AID): #1T5NBsrD (Grad-ProbAsk)