看板 Grad-ProbAsk 關於我們 聯絡資訊
定義:由一些Binomial tree組成,滿足heap性質,具以下特徵: 1、B 的Binomial tree具有B 個Bnomial tree K K-1 (就是B1由B0組成,B2由B1、B0組成,B3由B2 B1 B0見下圖 ) k 2、B的Binomial tree具有2 個節點 高度 ○ ∥ ○ ∥ ○ ∥ ○ -----------0 ∥ │ ∥ ╱ ╲ ∥ ╱︱╲ ∥ ○ ∥ ∥ ╱ ︱ ╲ ∥ ∥ B0 ------1 ∥ ∥ ╱︱ B0 ∥ ∥ B1○ ○ ------------2 ∥ ∥ ∥ B1 ∥ ∥ ∥ --------------------3 ∥ ∥ ∥ B2 ∥ ∥ ∥ B0 ∥ B1 ∥ B2 ∥ B3 3.Bk的高度,例如像上面的B3,它的高度是3 =================================以下是combine======================= 將兩個binomial heap化成一個binomial heap step1:將兩個binomail heap按照degree大小由小而大來排列 例: heap1─121 ─── 7 heap2─18 3 ────5 ╱︳ ╱︱╲          23 13 15     37 30 10 44 ╱︳ 19 40 31 28 50 ==>heap ─1218─── 1 ── 3 ─── 7 ───── 5 ╱︳ ╱︱╲ 23 37 13 15 30 10 44 ╱︳ ︳ 19 40 31 28 50 代表degree0 代表degree1 代表degree2 代表degree3 step2:將degree合併較小的degree 較小的數值放在上面 所以上面的結果變成以下 先合併degree 0的 ==>heap ─ 12 ─── 1 ── 3 ─── 7 ───── 5 ︳ ︳ ╱︳ ╱︱╲ 18 23 37 13 15 30 10 44 ︳ ╱︳ ︳ 19 40 31 28 ︳ 50 在合併degreee1的(記得數字小的放上面) ==>heap ─ 12 ─── 1 ── 7 ───── 5 │ ╱︳ ╱︳ ╱︱╲ 18 3 23 13 15 30 10 44 ︳ ╱︳ ︳ 37 19 40 31 28 ︳ 50 合併degree2的 ==>heap ─ 12 ─── 1 ───── 5 │ ╱︳╲ ╱︱╲ 18 7 3 23 30 10 44 ╱︳ ︳ ╱︳ ︳ 13 15 37 40 31 28 19 50 最後合併degree3的 ==>heap ─ 12 ───── 1 ╱︳﹨╲ 18 ╱ ︳ ﹨ ╲ ╱ ︳ ﹨ ╲ 5 7 3 23 ╱︳╲ ︱﹨ ︳ 30 10 44 13 15 37 ╱︳︱ ︱ 40 31 28 19 50 =================================以下為insert============================ 這個就有點像是combine了 反正就是先插入節點(18) 然後執行合併 heap1─12─ 1 ─── 7─18 ︳ ╱︳          23 13 15     │ 19 ↓ heap1─12 ─ 1 ─── 7 ︳ ╱︳      18  23 13 15     │ 19 ==============================最後是del min========================== 刪除最小值後會分成好幾個heap,最後在執行合併 heap ─ 12 ── 1 ────7 ╱︳ ╱︱╲ 10 23 5 13 15 │ ╱︳ ︱ 16 11 17 19 ︱ 28 刪除1以後變成兩顆heap heap ─ 12 ──10──23 ────7 ╱︱╲ 16 5 13 15 ╱︳ ︱ 11 17 19 ︱ 28 執行合併 heap ─ 12 ──10───7 ︱ ╱︱╲ 23 16 5 13 15 ╱︳ ︱ 11 17 19 ︱ 28 ↓ heap ──10──────7 ╱︳ ╱︱╲ 12 16 5 13 15 ╱︳ ︱ 23 11 17 19 ︱ 28 感謝你耐心看完 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 211.74.246.46 ※ 編輯: whisp1222 來自: 211.74.246.46 (04/30 17:55)
bernachom:很清楚,前輩謝謝您,麻煩您寫這麼詳細的資料,感謝 04/30 18:19