I was sick yesterday so I stopped any programming activities for a day. Feeling refreshed now, I decided to delve into implementation of Shell sort and try to understand the goodies. As a bonus, I also tried to read through multisets, runs, Young Tableux and involutions. I am sure each of these topics would leave a mark in my mind in future because all of them are very closed to what I am interested most : number theory, group thory and combinatorial theory. So I have tried to penetrate 5.1.{2,3,4} and 5.2.1.
All of them are deep stuffs. I got to admit that in the chapter of multiset (5.1.2) and Young tableux (5.1.4), I had to skip some of the contents. I might want to reread some preparatory material before I read it again (and I just simply believe that one day I will fully understand all the contents one day. Ha. :) ).
I also start to have some intuitive understanding why the increment problem in shell sort is such a difficult problem. Once a problem can be related to number theory. You know that it is one of those deceptively simple problem. That is why most of the introductory book just simply skip this topic. As far as I understand from Sedgewick paper, this problem is mostly being attacked by empirical method.
This makes me excited because this is the probably the first period of time which I realize my work can have well-defined open mathematical problem. In the past, what I saw were mostly emprical problem on improving a system X. Or to device a probabilistic method to improve System X. Those are interesting problems and fun to work with at the start. After a while, without the guidance of theory, this kind of work will stale and deteoriate to only discussion on performance. Boredom followed. One might say theory is very hard to be applied in practice. I tend to believe though that the focus of research could occasionally drift in a mindless manner.
I also thought about whether I should keep track of my progress on reading TAOCP. Nah, after I while I think reading one single book is already too tough. CLRS is substantially easier to start with than TAOCP. Its exercises are also more guided but one should still start CLRS with probably graduate level of Math to fully appreciate the importance of some Theorems in the book. So I guess if I can finish the 2nd read, I am an alright programmer. Let's think about the next step at that point.
What I would do though is that from the point of implementing Shell sort, I will start to also write a driver for all the sorting algorithms. This is the moment I want to quantitatively understand the characteristics of different sorting algorithms. Different increments should be examined carefully. It sounds like it will indeed take me some time to understand insertion sort.....
Speaking of which, it's time to get back to CLRS and do an exercise or two, or reread BST. Small blocks but it's still take some cognitive load to get through.
This is my self-study page for the book, "Introduction to Algorithm", or commonly known as CLRS. This is also my diary page of how I struggle and grow in the programming world. I hope this blog can help amateurs or professionals, to improve their skills in programming, learning and living. As of Sep 12, 2011, I finished the "exercise read" of Chapter 2 (20110518) and 3 (20110608) and half of Chapter 4.
Shortcut for chapter specific information
Chapter4
(62)
chapter3
(41)
Chapter2
(22)
chapter6
(10)
chapter12
(9)
chapter15
(8)
chapter13
(7)
chapter7
(7)
Chapter10
(5)
chapter5
(5)
Appendix A
(4)
chapter8
(4)
Chapter19
(3)
Chapter22
(3)
Chapter34
(3)
Chapter35
(3)
chapter11
(3)
chapter16
(3)
chapter18
(3)
Appendix C
(2)
Chapter21
(2)
Chapter25
(2)
Chapter26
(2)
Chapter27
(2)
Chapter28
(2)
Chapter29
(2)
Chapter9
(2)
chapter14
(2)
chapter20
(2)
chapter23
(2)
chapter24
(2)
chapter30
(2)
chapter31
(2)
chapter32
(2)
Appendix D
(1)
Chapter1
(1)
Chapter33
(1)
chapter17
(1)
No comments:
Post a Comment