Shortcut for chapter specific information

Showing posts with label Chapter35. Show all posts
Showing posts with label Chapter35. Show all posts

Thursday, October 27, 2011

First browse-read of CLRS

As I flipped through Chapter 35, I have also finished the first browse read of "Introduction to Algorithms", commonly known as CLRS once.   As the name suggests, I only browse through the chapters and occasionally write down solutions I can figure out.  The first read is meant to be shallow but fast.  That's why it only take seven months to finish.  If I read the book by going through every single detail, I probably need to spend many years to go through the book once  -  That's not a prudent way to read an algorithmic book.    Sometimes, you just read it like a book and extract some simple knowledge out of it.  Just like what you do to read any book.

Before I go on, let me side-track a bit, as you might also know, I have another two reads known as "exercise read" and "research read". The former is a kind of read which force myself to do all the exercises.  Whereas the second include some research problems which popped up from my head.   The "exercise read" is closed to a common university graduate course on algorithms and data structure and the former is a bit closed to basic academic research.  Normally I recorded the status of exercises in the "Status XXXXX" post and research problem in the "complementary exercises".    At this point, I only finish up to the half of the chapter 4 in  "exercise read".  For "research read", I can barely go through Chapter 2.   It sorts of show how difficult when you try to go deep.   

My guess is the ratio of chapters they can go through between their "browse read" and "exercise read" could be very different from me.   For most, they will just completely discard the idea of reading an algorithmic book from scratch.   I can see their points but I always maintain that in computer science, if you think deep enough, you will be bound to touch all the topics found in CLRS including the selected topic.   Many people I know have strong algorithmic skills reference "brick" books like CLRS and TAOCP a lot.   If you start to read them, you will get benefits from them even if you don't completely grok. 

Back to the first browse read, I would say in this read, the amount of exercises I really work out diminish as further back of the book.  The three chapters which really stuck me are probabilities,  binary-tree and red-black tree.  Basic math can always be tough.  Basic data structure such as binary tree, can also give one a lot of headache. Red-black tree is a bit of topic which is deeper than the bottom.  Given that I am reading them in a relatively fast way  so I am not surprised if I don't really grok all of them. 

After a class in famous extension school, my understanding in binary tree has tremendously improved.  But for the other two topics are still a bit beyond me.  Some probability problem can be monstrously tough and  famous extension school only teach B-tree (or something like 2-3 tree) so I still need to think through red-black tree quite a bit myself.   

For the first browse read, I think those are okay, again you don't want to catch up with tough problems when you get stuck.   Sometimes you just want to build context in your brain.  That's what I am doing.  

But one thing I am sure: I need to change the way I approach the book - a purely linear path can be very difficult.  In my case in particular, I found that my exercise read in Chapter 4 turns out to be very difficult.  This also means that my mathematical background is not deep enough.   So I decided to back up from there.  That always take time to improve.   

My skill though is more suitable to take care sorting and data structure.  I am psyched about it.  I also think through a lot of problem from the famous extension school course.   That should be a better starting point. 

Now my new plan would be this. 
1,  Turn the browse-read pointer around to the first chapter I haven't finished all exercises.  i.e. Chapter 4.  After the first browse-read, the second read will always teach you something new as well.  During this process, I hope to attain a higher coverage rate on the exercises of the book.  This also allows me to identify chapters which are suitable to my level. 
2,  Abandon Chapter 4, restart the exercise read from Chapter 6 on heap sort.  The goal is to finish Chapter 6 's exercise read.  Occasionally work on exercises on Chapter 4 if I like. 

In any case, let's see how it goes.  I hope this work out and the next step is to readjust and try to go through my study. 

33_P




Chapter 35: Approximation Algorithms

This is a simpler chapter than Chapter 35 as it describe approximations of many NPC problem. (Ah. start to change the habit of calling an algorithm NPC instead of NP.)

As with many later chapters, it is not a chapter I fully grok.  But as always, skimming through a chapter of CLRS always teach your a lot of thing invaluable in computer science.  For example, now I have the notion of what approximation is and what type of varieties it can have.

In any case, this particular read follow the theme I have these days: Try to finish 1 round of browse read first, then deepen.   During the lighter read, I don't have to learn all the things in the book - I just need to make sure I got some basic understanding of the topic.  So talking about it, it's probably ok. But using it will take time to reiterate on a topic.  In another words, I leave the grokking a little bit later.

Okay.  I finally finished the first browse -read, it's time to rethink how I should proceed with the book.




Saturday, September 17, 2011

Thinking about the second browse read of CLRS

As I am almost finished the first browse read and far from finishing the exercise read, it makes me think what is the best way to make use of the second read.

The truth is the linear style of the first browse read is not a very effective way to absorbe difficult topics such as red-black tree or dynamic programming.   Many selected topics by itself should also be read in a separate book so a linear-read is unlikely to give too much benefit.

Here are couple of thoughts at this point.  It requires a slight modification of the second browse read as well as the exercise read.

1, First of all, the browsing in the second read should be slower.   The general principle is that I need to understand more than the first read.

2, Second, instead of getting stuck in a particular chapter just like now, my exercise read should incorporate at least another N chapters in future read.   How should I choose the chapters? How large is N?  My answer is that if I can finish more than 50% (more or less) of the chapter exercises, then I should pick it as an exercise read.  Right now that means Chapter 6 (Heapsort), Chapter 7 (Quicksort) and Chapter 12 (Binary Search Tree).  My take is that N is likely equal to 1 or 2 because it's easy to get distracted.

3, I will also let problems I have been working on in work as well as in school to stimulate me.  If I need to review certain material.  I will not hesitate to reread a certain chapter of CLRS.  For example, I probably need to reread the Hash table (Chapter11) and sorting chapter soon.   They are beneficial for my learning in the class.  They will also be essential in my work life.

So let's see how it goes.   Of course, I probably want to start the second browse read first.  This will be quite something by its own.  The last three chapters are interesting and deep.