Optimal Binary Search Tree-1
Optimal Binary Search Tree-1
As we know that in binary search tree, the nodes in the left subtree have lesser value
than the root node and the nodes in the right subtree have greater value than the root
node.
We know the key values of each node in the tree, and we also know the frequencies of
each node in terms of searching means how much time is required to search a node.
The frequency and key-value determine the overall cost of searching a node. The cost of
searching is a very important factor in various applications. The overall cost of searching
a node should be less. The time required to search a node in BST is more than the
balanced binary search tree as a balanced binary search tree contains a lesser number of
levels than the BST. There is one way that can reduce the cost of a binary search tree is
known as an optimal binary search tree.
In the above tree, all the nodes on the left subtree are smaller than the value of the root
node, and all the nodes on the right subtree are larger than the value of the root node.
The maximum time required to search a node is equal to the minimum height of the
tree, equal to logn.
Now we will see how many binary search trees can be made from the given number of
keys.
For example: 10, 20, 30 are the keys, and the following are the binary search trees that
can be made out from these keys.
The cost required for searching an element depends on the comparisons to be made to
search an element. Now, we will calculate the average cost of time of the above binary
search trees.
In the above tree, total number of 3 comparisons can be made. The average number of
comparisons can be made as:
In the above tree, the average number of comparisons that can be made as:
In the above tree, the average number of comparisons that can be made as:
In the above tree, the total number of comparisons can be made as 3. Therefore, the
average number of comparisons that can be made as:
In the above tree, the total number of comparisons can be made as 3. Therefore, the
average number of comparisons that can be made as:
In the third case, the number of comparisons is less because the height of the tree is
less, so it's a balanced binary search tree.
Till now, we read about the height-balanced binary search tree. To find the optimal
binary search tree, we will determine the frequency of searching a key.
AD
Let's assume that frequencies associated with the keys 10, 20, 30 are 3, 2, 5.
The above trees have different frequencies. The tree with the lowest frequency would be
considered the optimal binary search tree. The tree with the frequency 17 is the lowest,
so it would be considered as the optimal binary search tree.
Dynamic Approach
Consider the below table, which contains the keys and frequencies.
AD
When i = 1, j=1, then j-i = 0
Now to calculate the cost, we will consider only the jth value.
The cost of c[0,1] is 4 (The key is 10, and the cost corresponding to key 10 is 4).
The cost of c[1,2] is 2 (The key is 20, and the cost corresponding to key 20 is 2).
The cost of c[2,3] is 6 (The key is 30, and the cost corresponding to key 30 is 6)
The cost of c[3,4] is 3 (The key is 40, and the cost corresponding to key 40 is 3)
o When i=0 and j=2, then keys 10 and 20. There are two possible trees that can be
made out from these two keys shown below:
o When i=1 and j=3, then keys 20 and 30. There are two possible trees that can be
made out from these two keys shown below:
AD
o When i=2 and j=4, we will consider the keys at 3 and 4, i.e., 30 and 40. There are
two possible trees that can be made out from these two keys shown as below:
o When i=0, j=3 then we will consider three keys, i.e., 10, 20, and 30.
The following are the trees that can be made if 10 is considered as a root node.
In the above tree, 10 is the root node, 20 is the right child of node 10, and 30 is the right
child of node 20.
Cost would be: 1*4 + 2*2 + 3*6 = 26
In the above tree, 10 is the root node, 30 is the right child of node 10, and 20 is the left
child of node 20.
In the above tree, 20 is the root node, 30 is the right child of node 20, and 10 is the left
child of node 20.
The following are the trees that can be created if 30 is considered as the root node.
In the above tree, 30 is the root node, 20 is the left child of node 30, and 10 is the left
child of node 20.
In the above tree, 30 is the root node, 10 is the left child of node 30 and 20 is the right
child of node 10.
Therefore, the minimum cost is 20 which is the 3 rd root. So, c[0,3] is equal to 20.
o When i=1 and j=4 then we will consider the keys 20, 30, 40
= min{12, 5, 10} + 11
In this case, we will consider four keys, i.e., 10, 20, 30 and 40. The frequencies of 10, 20,
30 and 40 are 4, 2, 6 and 3 respectively.
w[0, 4] = 4 + 2 + 6 + 3 = 15
= min{4 + 12} + 15
= 16 + 15 = 31
= min {8 + 3} + 15
= 26
= min{20 + 0} + 15
= 35
In the above cases, we have observed that 26 is the minimum cost; therefore, c[0,4] is
equal to 26.
The optimal binary tree can be created as: