Data Structure
  • 資料結構自學筆記
  • 1 - Stack & Queue
    • 1.1 - Stack
    • 1.2 - Queue
    • 1.3 - Stack and Queue
  • 2 - Tree & Binary Tree
    • 2.1 - Tree
    • 2.2 - Binary Tree
    • 2.3 - Binary Tree Traversal
    • 2.4 - Binary Search Tree
    • 2.5 - Heap
    • 2.6 - Thread Binary Tree
    • 2.7 - Tree and Binary Tree Conversion
    • 2.8 Advanced Trees
      • 2.8.1 - Min-Max Heap
      • 2.8.2 - Deap
      • 2.8.3 - Symmetric Min-Max Heap
      • 2.8.4 - Extended Binary Tree
      • 2.8.5 - AVL Tree
      • 2.8.6 - M-Way Search Tree
      • 2.8.7 - B Tree
      • 2.8.8 - Red-Black Tree
      • 2.8.9 - Optimal Binary Search Tree
      • 2.8.10 - Splay Tree
      • 2.8.11 - Leftest Heap
      • 2.8.12 - Binomial Heap
  • 3 - Search & Sort
    • 3.1 - Searching
    • 3.2 - Elementary Sorting
      • 3.2.1 - Insertion Sort
      • 3.2.2 - Selection Sort
      • 3.2.3 - Bubble Sort
      • 3.2.4 - Shell Sort
    • 3.3 - Sophisticated Sorting
      • 3.3.1 - Quick Sort
      • 3.3.2 - Merge Sort
      • 3.3.3 - Heap Sort
      • 3.3.4 - Radix Sort
      • 3.3.5 - Bucket Sort
      • 3.3.6 - Counting Sort
    • 3.4 - Summary
  • 4 - Graph
    • 4.1 - Intro
    • 4.2 - Graph Traversal
    • 4.3 - Spanning Tree
      • 4.3.1 - Kruskal's algorithm
      • 4.3.2 - Prim's algorithm
      • 4.3.3 - Sollin's algorithm
    • 4.4 - Shortest Path Length
      • 4.4.1 - Dijkstra's algorithm
      • 4.4.2 - Bellman-Ford algorithm
      • 4.4.3 - Floyd-Warshall algorithm
    • 4.5 - AOV Network
    • 4.6 - AOE Network
    • 4.7 - Others
Powered by GitBook
On this page
  • 1. 介紹
  • 2. 使用Dynamic Programing解OBST
  • 3. 範例
  1. 2 - Tree & Binary Tree
  2. 2.8 Advanced Trees

2.8.9 - Optimal Binary Search Tree

Previous2.8.8 - Red-Black TreeNext2.8.10 - Splay Tree

Last updated 6 years ago

1. 介紹

給予n個內部節點加權值 pip_{i}pi​ 、n+1個外部節點加權值 qiq_{i}qi​ ,在 1n+1(2nn)\frac{1}{n+1}{2n \choose n}n+11​(n2n​) 個不同的Binary Search Trees中,具有最小的搜尋總成本的稱為最佳化二元搜尋樹(Optimal Binary Search Tree);可能大於一棵。

搜尋總成本=成功搜尋成本+失敗搜尋成本搜尋總成本=成功搜尋成本+失敗搜尋成本搜尋總成本=成功搜尋成本+失敗搜尋成本

成功搜尋成本=∑i=1n(內部節點i的level值)∗pi成功搜尋成本=\sum_{i=1}^{n}(內部節點_{i}的level值)*p_{i}成功搜尋成本=∑i=1n​(內部節點i​的level值)∗pi​

失敗搜尋成本=∑j=0n(外部節點i的level值)∗qi失敗搜尋成本=\sum_{j=0}^{n}(外部節點_{i}的level值)*q_{i}失敗搜尋成本=∑j=0n​(外部節點i​的level值)∗qi​

其中,level值即是比較次數。

2. 使用Dynamic Programing解OBST

內部節點: ai+1, ai+2, ...,aja_{i+1},\ a_{i+2},\ ..., a_{j}ai+1​, ai+2​, ...,aj​ 且 ai+1<ai+2<...<aja_{i+1}<a_{i+2}<...<a_{j}ai+1​<ai+2​<...<aj​

內部節點加權值: pi+1, pi+2, ...,pjp_{i+1},\ p_{i+2},\ ..., p_{j}pi+1​, pi+2​, ...,pj​

外部節點加權值: qi, qi+1, ...,qjq_{i},\ q_{i+1},\ ..., q_{j}qi​, qi+1​, ...,qj​

Ti,jT_{i,j}Ti,j​: 由 ai+1, ai+2, ...,aja_{i+1},\ a_{i+2},\ ...,a_{j}ai+1​, ai+2​, ...,aj​所組成的OBST

Ci,jC_{i,j}Ci,j​: 表示Ti,jT_{i,j}Ti,j​的總成本

Ri,jR_{i,j}Ri,j​: 表示Ti,jT_{i,j}Ti,j​的Root

Wi,jW_{i,j}Wi,j​: 表示Ti,jT_{i,j}Ti,j​的內、外部節點加權值總和

Ti,iT_{i,i}Ti,i​代表空樹,Ci,j=0C_{i,j}=0Ci,j​=0,Ri,jR_{i,j}Ri,j​為NULL,Wi,j=qiW_{i,j}=q_{i}Wi,j​=qi​

從內部節點中ai+1, ai+2, ...,aja_{i+1},\ a_{i+2},\ ..., a_{j}ai+1​, ai+2​, ...,aj​,挑選出一個節點 aka_{k}ak​ 作為Root,則其左子樹有ai+1, ...,ak−1a_{i+1},\ ..., a_{k-1}ai+1​, ...,ak−1​,最佳二元搜尋數樹為 Ti, k−1T_{i,\ k-1}Ti, k−1​ ;右子樹有ak+1, ...,aja_{k+1},\ ..., a_{j}ak+1​, ...,aj​,最佳二元搜尋數樹為 Tk+1, jT_{k+1,\ j}Tk+1, j​

3. 範例

  • 空樹(外部節點是2, 3, 1, 1, 1以此類推)

  • 1個內部節點+2個外部節點

  • 2個內部節點+3個外部節點

  • 3個內部節點+4個外部節點

  • 3個內部節點+4個外部節點

Ci,j=pk+(Ci, k−1+Wi, k−1)+(Ck, j+Wk+1, j)       =Wi,j+Ci,k−1+Ck,jC_{i,j}=p_{k}+(C_{i,\ k-1}+W_{i,\ k-1})+(C_{k,\ j}+W_{k+1,\ j})\\\ \ \ \ \ \ \ =W_{i,j}+C_{i,k-1}+C_{k,j}Ci,j​=pk​+(Ci, k−1​+Wi, k−1​)+(Ck, j​+Wk+1, j​)       =Wi,j​+Ci,k−1​+Ck,j​

min{Ci,j}=Wi,j+min⁡i+1≤k≤j{Ci,k−1+Ck,j}min\{C_{i, j}\}=W_{i,j}+\min_{i+1≤k≤j}\{C_{i,k-1}+C_{k,j}\}min{Ci,j​}=Wi,j​+mini+1≤k≤j​{Ci,k−1​+Ck,j​}

4個內部節點: a1, a2, a3, a4a_{1},\ a_{2},\ a_{3},\ a_{4}a1​, a2​, a3​, a4​ 且 a1<a2<a3<a4a_{1}<a_{2}<a_{3}<a_{4}a1​<a2​<a3​<a4​

內部節點加權值: (p1, p2, p3, p4)=(3,3,1,1)(p_{1},\ p_{2},\ p_{3},\ p_{4})=(3,3,1,1)(p1​, p2​, p3​, p4​)=(3,3,1,1)

外部節點加權值: q0, q1, q2, q3, q4=(2,3,1,1,1)q_{0},\ q_{1},\ q_{2},\ q_{3},\ q_{4}=(2,3,1,1,1)q0​, q1​, q2​, q3​, q4​=(2,3,1,1,1)

R0,1=1,W0,1=a1+q0+q1=3+2+2=8,C0,1=8R_{0,1}=1,W_{0,1}=a_{1}+q_{0}+q_{1}=3+2+2=8,C_{0,1}=8R0,1​=1,W0,1​=a1​+q0​+q1​=3+2+2=8,C0,1​=8

R1,2=2,W1,2=a2+q1+q2=3+3+1=7,C1,2=7R_{1,2}=2,W_{1,2}=a_{2}+q_{1}+q_{2}=3+3+1=7,C_{1,2}=7R1,2​=2,W1,2​=a2​+q1​+q2​=3+3+1=7,C1,2​=7

R2,3=3,W2,3=a3+q2+q3=1+1+1=3,C2,3=3R_{2,3}=3,W_{2,3}=a_{3}+q_{2}+q_{3}=1+1+1=3,C_{2,3}=3R2,3​=3,W2,3​=a3​+q2​+q3​=1+1+1=3,C2,3​=3

R3,4=4,W3,4=a4+q3+q4=1+1+1=3,C3,4=3R_{3,4}=4,W_{3,4}=a_{4}+q_{3}+q_{4}=1+1+1=3,C_{3,4}=3R3,4​=4,W3,4​=a4​+q3​+q4​=1+1+1=3,C3,4​=3

W0,2=a1+a2+q0+q1+q2=3+3+2+3+1=12C0,2=W0,2+min⁡1≤k≤2{C0,k−1+Ck,2}=W0,2+(C0,0+C1,2)=12+0+5=17R0,2=1W_{0,2}=a_{1}+a_{2}+q_{0}+q_{1}+q_{2}=3+3+2+3+1=12\\C_{0,2}=W_{0,2}+\min_{1≤k≤2}\{C_{0,k-1}+C_{k,2}\}\\=W_{0,2}+(C_{0,0}+C_{1,2})=12+0+5=17\\R_{0,2}=1W0,2​=a1​+a2​+q0​+q1​+q2​=3+3+2+3+1=12C0,2​=W0,2​+min1≤k≤2​{C0,k−1​+Ck,2​}=W0,2​+(C0,0​+C1,2​)=12+0+5=17R0,2​=1

W1,3=a2+a3+q1+q2+q3=3+1+3+1+1=9C1,3=W1,3+min⁡2≤k≤3{C1,k−1+Ck,3}=W1,3+(C1,1+C2,3)=9+0+3=12R1,3=2W_{1,3}=a_{2}+a_{3}+q_{1}+q_{2}+q_{3}=3+1+3+1+1=9\\C_{1,3}=W_{1,3}+\min_{2≤k≤3}\{C_{1,k-1}+C_{k,3}\}\\=W_{1,3}+(C_{1,1}+C_{2,3})=9+0+3=12\\R_{1,3}=2W1,3​=a2​+a3​+q1​+q2​+q3​=3+1+3+1+1=9C1,3​=W1,3​+min2≤k≤3​{C1,k−1​+Ck,3​}=W1,3​+(C1,1​+C2,3​)=9+0+3=12R1,3​=2

W2,4=a3+a4+q2+q3+q4=1+1+1+1+1=5C2,4=W2,4+min⁡3≤k≤4{C2,k−1+Ck,4}=W2,4+(C2,2+C3,4)=5+0+3=8R2,4=3W_{2,4}=a_{3}+a_{4}+q_{2}+q_{3}+q_{4}=1+1+1+1+1=5\\C_{2,4}=W_{2,4}+\min_{3≤k≤4}\{C_{2,k-1}+C_{k,4}\}\\=W_{2,4}+(C_{2,2}+C_{3,4})=5+0+3=8\\R_{2,4}=3W2,4​=a3​+a4​+q2​+q3​+q4​=1+1+1+1+1=5C2,4​=W2,4​+min3≤k≤4​{C2,k−1​+Ck,4​}=W2,4​+(C2,2​+C3,4​)=5+0+3=8R2,4​=3

W0,3=a1+a2+a3+q0+q1+q2+q3=3+3+1+2+3+1+1=14C0,3=W0,3+min⁡1≤k≤3{C0,k−1+Ck,3}=W0,3+(C0,1+C2,3)=14+8+3=25R0,3=2W_{0,3}=\\a_{1}+a_{2}+a_{3}+q_{0}+q_{1}+q_{2}+q_{3}\\=3+3+1+2+3+1+1=14\\C_{0,3}=W_{0,3}+\min_{1≤k≤3}\{C_{0,k-1}+C_{k,3}\}\\=W_{0,3}+(C_{0,1}+C_{2,3})=14+8+3=25\\R_{0,3}=2W0,3​=a1​+a2​+a3​+q0​+q1​+q2​+q3​=3+3+1+2+3+1+1=14C0,3​=W0,3​+min1≤k≤3​{C0,k−1​+Ck,3​}=W0,3​+(C0,1​+C2,3​)=14+8+3=25R0,3​=2

W1,4=a2+a3+a4+q1+q2+q3+q4=3+1+1+3+1+1+1=11C1,4=W1,4+min⁡2≤k≤4{C1,k−1+Ck,4}=W1,4+(C1,1+C2,4)=11+8=19R1,4=2W_{1,4}=a_{2}+a_{3}+a_{4}+q_{1}+q_{2}+q_{3}+q_{4}\\=3+1+1+3+1+1+1=11\\C_{1,4}=W_{1,4}+\min_{2≤k≤4}\{C_{1,k-1}+C_{k,4}\}\\=W_{1,4}+(C_{1,1}+C_{2,4})=11+8=19\\R_{1,4}=2W1,4​=a2​+a3​+a4​+q1​+q2​+q3​+q4​=3+1+1+3+1+1+1=11C1,4​=W1,4​+min2≤k≤4​{C1,k−1​+Ck,4​}=W1,4​+(C1,1​+C2,4​)=11+8=19R1,4​=2

W0,4=a1+a2+a3+a4+q0+q1+q2+q3+q4=3+3+1+1+2+3+1+1+1=16C0,4=W0,4+min⁡1≤k≤4{C0,k−1+Ck,4}=W0,4+(C0,1+C2,4)=16+8+8=32R0,4=2W_{0,4}=a_{1}+a_{2}+a_{3}+a_{4}+q_{0}+q_{1}+q_{2}+q_{3}+q_{4}\\=3+3+1+1+2+3+1+1+1=16\\C_{0,4}=W_{0,4}+\min_{1≤k≤4}\{C_{0,k-1}+C_{k,4}\}\\=W_{0,4}+(C_{0,1}+C_{2,4})=16+8+8=32\\R_{0,4}=2W0,4​=a1​+a2​+a3​+a4​+q0​+q1​+q2​+q3​+q4​=3+3+1+1+2+3+1+1+1=16C0,4​=W0,4​+min1≤k≤4​{C0,k−1​+Ck,4​}=W0,4​+(C0,1​+C2,4​)=16+8+8=32R0,4​=2

W0,0=2W_{0,0}=2W0,0​=2
W1,1=3W_{1,1}=3W1,1​=3
W2,2=1W_{2,2}=1W2,2​=1
W3,3=1W_{3,3}=1W3,3​=1
W4,4=1W_{4,4}=1W4,4​=1
C0,0=0C_{0,0}=0C0,0​=0
C1,1=0C_{1,1}=0C1,1​=0
C2,2=0C_{2,2}=0C2,2​=0
C3,3=0C_{3,3}=0C3,3​=0
C4,4=0C_{4,4}=0C4,4​=0
R0,0=0R_{0,0}=0R0,0​=0
R1,1=0R_{1,1}=0R1,1​=0
R2,2=0R_{2,2}=0R2,2​=0
R3,3=0R_{3,3}=0R3,3​=0
R4,4=0R_{4,4}=0R4,4​=0