[筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 58

重念一次早該補起來的「資料結構與演算法」。這篇筆記下背包 Knapsack Problem 問題。

[筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 74


課程相關資訊

[連結]:https://hiskio.com/courses/572/lectures/29991

本篇範圍:Chapter 12

請注意:本系列文章為個人對應課程的消化吸收後,所整理出來的內容。換言之,並不一定會包含全部的課程內容,也有可能會添加其他資源來說明。


內容

0 / 1 背包問題

找到放入或是不放入,使所得最大化的類型。

可以使用 Branch and bond、暴力解或是 backTracking

暴力解

全部的解法一共會有 2^n 種。例如有 5 個東西要做取捨,全部的選法就是 2^5 = 32。

BackTracking

從暴力解衍生,結果其實產生了一組完整的 Binary Tree。中間的過程都可以當成一個節點,如果中途有違反的,那就可以回朔上一層直到根節點為止。

Branch and Bound

1. 先算出每一個 Item 的 Profit / Weight 的值
2. c -> 若將題目當做 Fractional 問題,所能得到的值
3. lowerbound -> 以最簡單的方式,能獲得的最小利潤

lowerbound 會是變動的。如果你的 lowerbound 的值變得比原本還小,那就表示這不是一個好的拿法,那就不往後考慮了


系列文章

  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 9
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 81
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 80
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 8
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 79
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 78
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 77
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 76
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 75
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 74
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 73
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 72
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 71
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 70
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 7
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 69
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 68
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 67
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 66
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 65
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 64
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 63
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 62
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 61
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 60
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 6
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 59
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 57
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 56
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 55
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 54
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 53
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 52
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 51
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 50
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 5
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 49
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 48
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 47
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 46
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 45
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 44
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 43
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 42
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 41
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 40
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 4
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 39
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 38
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 37
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 36
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 35
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 34
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 33
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 32
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 31
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 30
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 3
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 29
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 28
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 27
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 26
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 25
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 24
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 23
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 22
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 21
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 20
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 2
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 19
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 18
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 17
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 16
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 15
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 14
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 13
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 12
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 11
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 10
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 1
  • 按讚加入粉絲團

    延伸閱讀