Summer vacation is always pleasant not only because it offers you much entertainment time, but also you can read whatever book you like to learn – CLRS, for example.
This note is the for the first 6 chapter in Part 7 (Chapter 27 to 32). Yes they are more intriguing and of course more abstruse.
Chapter 27 – Sorting network. To me it is more like a VHDL implementation of sorting. It is a new perspective against the traditional serial sorting algorithms.
Chapter 28 – Matrix computation. It is more about numerical linear algebra instead of computer science. Strassen algorithm enhances basic matrix multiplication performance by reducing each iterative step by about 1/8 – using combinations of matrix addition & subtraction to replace one of the 8 matrix multiplication – it was quite shocking because people never thought that it was possible to improve the basic numerical calculation procedures. About linear system solving: LUP-Factorization is the basic numerical method. Essentially it is Gaussian Elimination method – a simple iterative matrix solving method.
Chapter 29 – Linear programming. Essentially it is another form of linear system solving problem – through several transformation, and Gaussian elimination is still useful here. One noticeable issue is that we need a feasible starting guess as the prerequisite of the next iterations. This can be solved by a simple linear transformation.
Chapter 30 – Polynomial and Fourier Transformation. Fourier transformation is the process from continuous signal to a sequence of discretized signals (DFT, there’s CFT that is continuous Fourier transformation) and also backward(DFT^-1). FFT is an effective implementation of Fourier transformation, which takes advantage of complex root properties and divide & conquer strategy. FFT divides each iteration into two parts and in each iteration, due to the symmetry of the unit complex roots (recall the unit complex roots chart in a complex plane), an operation called “butterfly operation” is applied. BTW, FFT is very useful in ocean simulation.
Chapter 31 – Number theory. I think this chapter can be put in a MATHs textbook about number theory. Most of the referenced papers are from MATHs journals / conferences. I think the main reason that this chapter exists is that Cryptology is based on it – like RSA that takes advantage of the extremely difficulty of large prime numbers factorization.
Chapter 32 – String matching. It is not as hard as the chapter mentioned above. Rabin-Karp simplifies the pattern and the sub-strings into number comparisons; finite automation method, as clear as its term; KMP algorithm, makes a significant improvement against the naive match algorithm by investigating more useful hints within each matching attempt (what’s the next reasonable starting offset?). A preprocessing is required – the useful information can be retrieved by a comparison between the pattern and itself.
Obviously things are getting ‘mathematical’ and everything is more abstract and abstruse – the common style of the theoretical textbooks. It is hard to get clear for each MATHS detail in the text. This is also the main source that most complaints originate – Amazon.com, school mates, etc.. I think it requires at least several weeks for each math-based topic (number theory, numerical algebra, etc.) for a more in-depth understanding.
P.S. it is said a book called ‘Algorithms’ from UC-Berkeley is elaborated in a more pleasant way.. hmmm..