150 likes | 339 Views
資工研二 翁靜美. The 2-way Merge Problem. An Example Of Linear Merge. L 1 : 1, 2, 5, 6. L 2 : 3, 4. 1. 2. 3. 4. 5. 6. Linear Merge Algorithm. Input : Two sorted lists, L 1 = ( a 1 , a 2 , ... , a n1 ) and L 2 = ( b 1 , b 2 , ... , b n2 ).
E N D
資工研二 翁靜美 The 2-way Merge Problem
An Example Of Linear Merge L1: 1, 2, 5, 6 L2: 3, 4 1 2 3 4 5 6
Linear Merge Algorithm Input: Two sorted lists, L1 = (a1 , a2 , ... , an1) and L2 = (b1 , b2 , ... , bn2). Output: A sorted list consisting of elements in L1 and L2 . Begin i : = 1 j : = 1 do compare aiand bj if ai>bj then output bjand j : = j + 1 else output ai andi: = i + 1 while (i n1 and j n2) if i > n1 then output bj, bj+1 , ... , bn2 , else output ai, ai+1 , ... , an1 . End. • The worst case of merge sort • L1: 1 3 5 • L2: 2 4 6 • The number of comparison required is m+n-1
2-way Merge • If more than two sorted lists are to be merged, we can still apply the linear merge algorithm. • These merging processes are called 2-way merge because each merging step only merges two sorted lists.
2-way Merge 50+30-1 = 79 the number of comparisons required in this merging sequence is 168 80+10-1 = 89
2-way Merge 30+10-1 = 39 the number of comparisons required is only 128 40+50-1 = 89
2-way Merge Problem • There are m sorted lists. • Each of them consists of ni elements. • What is the optimal sequence of merging process to merge these sorted lists together by using the minimum number of comparisons?
An Example OfOptimal 2-way Merge Problem 2 3 5 7 11 13 41 17 24 10 7 11 13 5 5 2 3
Optimal 2-way Merge Algorithm Input: m sorted lists, Li, i = 1, 2, ... , m, each Liconsisting of ni elements. Output: An optimal 2-way merge tree. Step 1:Generate m trees, where each tree has exactly one node (external node) with weight ni. Step 2: Choose two trees T1 and T2 with minimal weights. Step 3: Create a new tree T whose root has T1 and T2 as its subtrees and weight is equal to the sum of weights T1 and T2. Step 4: Replace T1 and T2 by T. Step 5: If there is only one tree left, stop and return; otherwise, go to Step 2.
The Time Complexity ofOptimal 2-way Merge • For the given m numbers n1, n2, …, nm, we can construct a min-heap to represent these numbers where the root value is smaller than the values of its sons. • The main loop is executed (n-1) times: • Tree reconstruction after removing the root, which has the smallest value, can be done in O(log n) time. • The insertion of a new node into a min-heap also can be done inO(log n) time. • The total time to generate an optimal extended binary tree is O(n log n).
Huffman Codes • In telecommunication, how do we represent a set of messages, each with an access frequency, by a sequence of 0’s and 1’s? • To minimize the transmission and decoding costs, we may use short strings to represent more frequently used messages. • This problem can by solved by using the 2-way merge algorithm.
An example ofHuffman algorithm 64 A:2 0 1 28 36 B:3 0 1 0 1 C:5 E:13 F:15 18 G:18 0 1 D:8 D:8 10 E:13 0 1 A Huffman Code Tree 5 C:5 F:15 0 1 G:18 A:2 B:3