algorithms - chapter 7 space_time
DESCRIPTION
bookTRANSCRIPT
![Page 1: Algorithms - Chapter 7 Space_Time](https://reader036.vdocuments.net/reader036/viewer/2022081812/577cc7ac1a28aba711a19fd4/html5/thumbnails/1.jpg)
Theory of Algorithms:Space and Time Tradeoffs
![Page 2: Algorithms - Chapter 7 Space_Time](https://reader036.vdocuments.net/reader036/viewer/2022081812/577cc7ac1a28aba711a19fd4/html5/thumbnails/2.jpg)
Objectives
To introduce the mind set of trading space for timeTo show a variety of tradeoff solutions:
Sorting by CountingInput Enhancement for String Matching
To discuss the strengths and weaknesses of space and time tradeoffs
![Page 3: Algorithms - Chapter 7 Space_Time](https://reader036.vdocuments.net/reader036/viewer/2022081812/577cc7ac1a28aba711a19fd4/html5/thumbnails/3.jpg)
Space-Time Tradeoffs
For many problems some extra space really pays off Originally human ‘computers’ would precompute a function’s values and record the results in maths tablesSimilarly, electronic computers can preprocess inputs and store additional info to accelerate the problemInput Enhancement: store additional input information
Sorting by CountingHorspool’s and Boyer-Moore’s Algorithms for String Matching
Prestructuring: use extra space for faster data accessHashingB-trees
Dynamic Programming: record solutions to overlapping subproblems
![Page 4: Algorithms - Chapter 7 Space_Time](https://reader036.vdocuments.net/reader036/viewer/2022081812/577cc7ac1a28aba711a19fd4/html5/thumbnails/4.jpg)
Sorting by Counting
Assume elements to be sorted belong to a known set of small values between l and u, with potential duplication
Constraint: we cannot overwrite the original listDistribution Counting: compute the frequency of each element and later accumulate sum of frequencies (distribution)Algorithm:for j ← 0 to u-l do D[j] ← 0 // init frequenciesfor i ← 0 to n-1 do D[A[i]-l] ← D[A[i] - l] + 1 // compute frequenciesfor j ← 1 to u-l do D[j] ← D[j-1] + D[j] // reuse for distribution for i ← n-1 downto 0 do j ← A[i] - l S[D[j] - 1] ← A[i] D[j] ← D[j] - 1return S
![Page 5: Algorithms - Chapter 7 Space_Time](https://reader036.vdocuments.net/reader036/viewer/2022081812/577cc7ac1a28aba711a19fd4/html5/thumbnails/5.jpg)
Notes on Sorting by Counting
Example: A =
A[5] = 12 A[4] = 12
A[3] = 13 A[2] = 12
A[1] = 11 A[0] = 13
Efficiency: Θ(n)Best so far but only for specific types of input
13 11 12 13 12 12
Array Values 11 12 13
Frequencies 1 3 2
Distribution 1 4 6
D[0] D[1] D[2]
1 4 6
1 3 6
1 2 6
1 2 5
1 1 5
0 1 5
S[0] S[1] S[2] S[3] S[4] S[5]
12
12
13
12
11
13
![Page 6: Algorithms - Chapter 7 Space_Time](https://reader036.vdocuments.net/reader036/viewer/2022081812/577cc7ac1a28aba711a19fd4/html5/thumbnails/6.jpg)
Reminder: String Matching
Pattern: a string of m characters to search forText: a (longer) string of n characters to search inBrute force algorithm:1. Align pattern at beginning of text2. Moving from left to right, compare each character of
pattern to the corresponding character in text untilAll characters are found to match (successful search); orA mismatch is detected
3. While pattern is not found and the text is not yet exhausted, realign pattern one position to the right and repeat step 2.
![Page 7: Algorithms - Chapter 7 Space_Time](https://reader036.vdocuments.net/reader036/viewer/2022081812/577cc7ac1a28aba711a19fd4/html5/thumbnails/7.jpg)
Horspool’s Algorithm
According to Cook [1970] problem can be solved in time proportional to n+mHorspool’s Algorithm: a simplified version of Boyer-Moore algorithm that retains key insightsCompare pattern characters to text from right to leftGiven a pattern, create a shift table:
Has a shift value for each possible characterDetermines how much to shift the pattern when a mismatch occurs (input enhancement)
Note: the pattern is still shifted left to right. Only comparison is right to left
![Page 8: Algorithms - Chapter 7 Space_Time](https://reader036.vdocuments.net/reader036/viewer/2022081812/577cc7ac1a28aba711a19fd4/html5/thumbnails/8.jpg)
How Far to Shift?
Three cases (look to last character C in mismatched text segment):
C is not in the pattern ⇒ shift by m .....D...................... (D not in pattern) BAOBAB
→ BAOBAB
C is in the pattern (but not at last position) ⇒ align rightmost occurrence in pattern with text
.....O...................... (O occurs once in pattern)
BAOBAB
→ BAOBAB
C produced a match ⇒ shift by m OR align to rightmost occurrence before last
.....B......................
![Page 9: Algorithms - Chapter 7 Space_Time](https://reader036.vdocuments.net/reader036/viewer/2022081812/577cc7ac1a28aba711a19fd4/html5/thumbnails/9.jpg)
Shift Table
Stores number of characters to shift by depending on first character compared
Construct by scanning pattern before searching startsIndexed by the alphabet of text and patternAll entries are initialized to pattern length. Eg, BAOBAB:
For c occurring in pattern, update table entry to distance of rightmost occurrence of c from end of pattern
We can do this by processing pattern from L→R
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6
![Page 10: Algorithms - Chapter 7 Space_Time](https://reader036.vdocuments.net/reader036/viewer/2022081812/577cc7ac1a28aba711a19fd4/html5/thumbnails/10.jpg)
Horspool’s Algorithm
1. Construct the Shift Table for a given pattern and alphabet
2. Align the pattern against the beginning of the text
3. Repeat until a match is found or the pattern reaches beyond the text:
Starting from the pattern end, compare corresponding characters until all m are matched (success!) or a mismatch is foundOn a mismatch, retrieve the shift table entry t(c), where c is the text character aligned with the end of the pattern. Shift the pattern right by t(c)
![Page 11: Algorithms - Chapter 7 Space_Time](https://reader036.vdocuments.net/reader036/viewer/2022081812/577cc7ac1a28aba711a19fd4/html5/thumbnails/11.jpg)
Example: Horspool’s Algorithm
Pattern: ZIGZAGText: A ZIG, A ZAG, AGAIN A ZIGZAGShift Table:
Exercise: Simulate the execution of Horspool’s Algorithm
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
1 6 6 6 6 6 3 6 4 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 2
![Page 12: Algorithms - Chapter 7 Space_Time](https://reader036.vdocuments.net/reader036/viewer/2022081812/577cc7ac1a28aba711a19fd4/html5/thumbnails/12.jpg)
Boyer-Moore Algorithm
Based on same two ideas:Compare pattern characters to text from right to leftGiven a pattern, create a shift table that determines how much to shift the pattern
Except:Uses an additional good-suffix shift table with same idea applied to the number of matched characters
Efficiency:Horspool’s approach is simpler and at least as efficient in the average case
![Page 13: Algorithms - Chapter 7 Space_Time](https://reader036.vdocuments.net/reader036/viewer/2022081812/577cc7ac1a28aba711a19fd4/html5/thumbnails/13.jpg)
Strengths and Weaknesses of Space-Time Tradeoffs
Strengths:Suited to amortised situationsParticularly effective in accelerating access to data
Weaknesses:Can be space expensive and this might have empirical effects on speed