close

摘自 演算法筆記

中文譯作「分支定界」,以遞迴的方式,來列舉數據範圍、數據區間,找出數據界限的方法。

先把一段數據區間分成幾段較小的區間。如果有一段區間,我們當下看不出它是不是正確區間,就把該區間分得更細,並遞迴下去,釐清細節;如果能看出,就停止遞迴。

branch 是指當一段區間不確定界限,就分割區間,並遞迴下去。 bound 是指當一段區間確定了界限,並停止遞迴。

 

期中後第一次小考題目

3 93 13 33 9 57
4 77 42 24 16 34
45 17 36 16 28 25
39 90 80 56 7 91
28 46 88 33 25 57
3 88 18 46 92 7
44 26 33 27 84 39

 

 

 

 

 

 

 

 

 

 

 

為了讓每行每列都有0,每列先減掉每列的最小值,接著觀察每行,該行沒有0,就該行整行減掉剛行的最小值

0 83 9 30 6 50 3
0 66 37 17 12 26 4
29 1 19 0 12 5 16
32 83 66 49 0 80 7
3 21 56 7 0 28 25
0 85 8 42 89 0 3
18 0 0 0 58 13 26
    7 1     4  

基本 cost 等於 紅字 加起來 = 96

接著尋找每行每列的0,

把那個0拿走,可以增加最多的lower bound

未命名  

最大的點出現在第4列第六行

現在分兩個cost = 96 + 32 = 128 (沒有劃掉的0)

把第四列,和第六行刪除,然後將第六行.第四列設成無限大42->

未命名1  

0 83 9 30 50
0 66 37 17 26
29 1 19 0 5
3 21 56 7 28
0 85 8 89 0
18 0 0 0 58

更新後表格長這樣

然後又要找哪一行or哪一列沒有0(第四列的3)

所以另一個cost = 96+3 = 99

0 83 9 30 50
0 66 37 17 26
29 1 19 0 5
0 19 53 4 25
0 85 8 89 0
18 0 0 0 58

有好多0 O口O

又到了一個一個0尋找lower bound的時間了

未命名2 

選18刪除,然後找該行該列的相反補上∞(無限大)

直到結束

可以得到這棵樹

0  

 

接著是

A Job Scheduling Problem 

擷取  

T1 T2 T3 T4 T5 T6 T7 T8 T9
3 2 2 2 4 5 3 2 3

 

表格代表每個時間能做幾件工作

Tree代表必須先完成哪項工作才能往下做甚麼

先把完成後可以做更多工作的工作先完成

T1 T2 T3 T4 T5 T6
A B C H M J
* D I L E K
*       F N
        P O
          G

最快可以在T6時全部做完#

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 cc08310112tw 的頭像
    cc08310112tw

    墨墨喵喵喵

    cc08310112tw 發表在 痞客邦 留言(0) 人氣()