資料結構與演算法

要以戴克斯特拉演算法求出正確的最短路徑,關於圖的條件,下列何者正確?

  1. A圖中沒有環路(回到同一頂點的路徑)
  2. B邊沒有方向
  3. C所有邊的權重都在0以上
查看答案與解析

正確答案:C. 所有邊的權重都在0以上

戴克斯特拉演算法會確定未確定頂點中距離最小者。這是基於「經由其他頂點時距離只會增加、不會減少」的前提。若有負權重的邊,之後可能經由其他路徑使距離變短;例如在 S→A 為2、S→B 為3、B→A 為−2 的有向圖中,A 以2確定之後,才找到 S→B→A 的1。有負權重時,要使用貝爾曼-福特演算法等方法。即使有環路或邊有方向,只要權重都在0以上,就能使用戴克斯特拉演算法。

  • A. 即使有環路,只要權重在0以上就能正確求出。道路網中有很多環路。
  • B. 有方向的(有向)圖也能使用。
  • C. 正確。有負權重時,已確定的距離之後可能變短。
練習這個領域 前往領域頁面

相關計算工具

資料結構與演算法的其他題目

  1. 工作 A~E 有「A 在 C 之前」「B 在 C 之前」「C 在 D 之前」「B 在 E 之前」「E 在 D 之前」的順序限制。滿足所有限制的工作順序(拓撲排序的結果)為下列何者?
  2. 函數 f(x, y) 定義為「若 y 為0則回傳 x,否則回傳 f(y, x mod y)」。呼叫 f(84, 36) 時的回傳值,以及 f 被呼叫的次數(含第一次呼叫)的組合為下列何者?
  3. 以遞迴將求費氏數的函數 fib(n) 定義為「若 n 在1以下則回傳 n,否則回傳 fib(n−1) + fib(n−2)」。呼叫 fib(5) 時,含第一次呼叫在內,fib 被呼叫幾次?
  4. 以1圓、4圓、6圓3種硬幣支付8圓。以從大硬幣開始盡量使用的貪婪演算法決定時的枚數,與最少枚數的關係,下列何者正確?
  5. 從(重量, 價值)為 (2, 3)、(3, 4)、(4, 5)、(5, 6) 的4件物品中選擇,放入容量為8的背包。每件物品只有1個,且不能分割。在重量合計8以下的條件下,價值合計的最大值為多少?