Skip to main content

Optimal Binary Search Trees

Instead of hoping the incremental construction yields a shallow tree, we can construct the tree that minimizes the search time. We consider the common problem in which items have different probabilities to be the target of a search. For example,some words in the English dictionary are more commonly searched than others and are therefore assigned a higher probability. Let a1 < a 2 < . . . < an be the items and pi is the corresponding probabilities. To simplify the discussion, we only consider successful searches and thus assume nΣi=1   pi = 1. The expected number of comparisons for a successful search in a binary search tree T storing the n item is

1+ C(T) = n Σi=1   pi.(δi + 1)
    = 1 + nΣi=1   pii,

where δ i is the depth of the node that stores ai . C(T ) is the weighted path length or the cost of T . We study the problem of constructing a tree that minimizes the cost. To develop an example, let n = 3 and p1 = 2/1 , p2 =1/3, p3 =1/6 .

number of different binary trees with n nodes is 1/(n+1)(2nn)  n , which is exponential in n. This is far too large to try all possibilities, so we need to look for a more efficient way to construct an optimum tree.

Comments

Popular posts from this blog

Knapsack Problem

Today we will try to apply the greedy method to solve one of the simply complex problem Knapsack Problem . Given n objects and a Knapsack where object i has a weight w i and the Knapsack has a capasity m If a fraction x i of object i placed into knapsack, a profit p i x i is earned The objective is to obtain a filling of Knapsack maximizing the total profit Problem Formulation: First Know the Greedy method control abstraction for the subset paradigm Algorithm Greedy(a,n) { solution:=null; For i: 1 to n do { x = Select(a); if feasible(solution,x) then solution = Union(solution,x) } return solution; } Let's consider a knapsack problem of finding the optimal solution here, M = 15, (p1,p2,p3,...p7) = (10,5,15,7,6,18,3) and (w1, w2,..w7) = (2,3,5,7,1,4,1). Now we will find the solution by following "maximum profit per unit of capacity" Strategy: Let (a,b,c,d,e,f,g) represent the items with profit (10,5,15,7,6,18,3). This means that the objects a

Average case analysis of Quick Sort

Position of Pivot Left of pivot Right of pivot T(n left ) T(n right ) 1 0 n-1 T(0) T(n-1) 2 1 n-2 T(1) T(n-2) 3 2 n-2 T(2) T(n-3) --- --- --- --- -- --- --- --- --- --- --- --- --- --- --- n-2 n-3 2 T(n-3) T(2) n-1 n-2 1 T(n-1) T(1) n n-1 0 T(n-1) T(0) The number of comparisons for first call on partion: Assume left_to_right moves over k smaller element and thus k comparisons. So when right_to_left crosses left_to_right it has made n-k+1 comparisons. So first call on partition makes n+1 comparisons. The average case complexity of quicksort is: {T(n) = comparisons for first call on quicksort + &#931 1<=nleft,nright<=n [T(n left )+T(n right )]} =(n+1) + 2[T(0) + T(1) + T(2) + ----T(n-1)/n.....(1) So, nT(n) = n(n+1) + 2[T(0) + T(1) + T(2) + --- +T(n-2) + T(n-1)] .......(2) (n-1)T(