Algorithms Unlocked (Mit Press)
A**N
Best overall "motivated learner" book on Algorithms
I am reading lot of algorithms books lately due to rekindled interest (the last time I am this motivated is during my high school days!) and the common advice is to read CLRS (C for Cormen) but the book is a 500 pound gorilla and it is neck deep in detailed Math. Imagine my delight when I stumbled on "Algorithms Unlocked" by Cormen - I call this book Baby Cormen. My background is in software engineering and I am paying my dues for 10+ years. I like math but am not in touch with it for many years; though I am currently taking steps to remedy it. So thatâs the context. Here goes my review:Pros1. It has a section on "Algorithms on Strings". Out of many books that I perused (Algorithms in a nutshell, Skiena, Eva Tardos etc.), this book, CLRS, Algorithms by Sedgwick has a section on Strings. There are dedicated books on String algorithms but "string problems" appear practically in almost every software engineer's career that I think any general algorithms book should cover a basic portion of it. This one does.2. Chatty but neither boring nor tedious. It uses enough words to convey the concept efficiently.3. It contains math for sections on complexity but algorithm concepts are supported with pictures, sample algorithm runs. One just needs to follow logical arguments as it is explained.4. All the chapters except last few pages in chapter 9, 10 are gems.5. The length of the book is ~222. This cannot be overstated. The faster u reach towards the end of the book the better you will feel about yourself and the more you will like to finish it.6. Pretty good paper quality and print. Love this about MIT press.7. Price is cheap.8. No exercises. Yes this is a good thing actually. It would have affected the flow of the book. If you need exercises then go to Big Cormen (CLRS).Cons1. Typos/Errors. 14 when I counted. I actually thought it cannot have any because some reviewer here said it was copyedited by someone who is a stickler for perfection so I didn't bother to check the errata page (my bad but only 14 errataâs is still impressive) until I stumbled on a possible typo (it turns out it is not) and tried to contact the author by going to the book's website. One should make sure to correct it in the book before reading.2. Chapter 9 - section on LZW compression/decompression could have been little clearer. Chapter 10 - section on Hamiltonian cycle to Hamiltonian path reduction, subset sum reduction could have been little clearer because the explanation had more gaps in logic than usual. The author did say in the preface that he couldn't control getting into more details near the very end of the book but I felt the explanation was unclear because it is rushed than more technical details are employed.All in all this is a solid book that treats you as an intelligent human being than a space alien or a brick.
M**1
Ok if you remember abstract HS math; no concrete implementation examples
Admittedly, I'm not finished with it yet & may revise this review later on... So far I've read up through the Sorting chapters.As stated in other reviews & in the book's intro, the author assumes no prior programming knowledge.It's confusing to consider Arrays as starting a 1 & having to add/subtract everywhere, but ok I can deal with it...What wasn't clear at purchase time was the assumption of familiarity with math at let's say "Algebra II" or pre-calc levels.If you don't understand or remember how to deal with factorials, polynomials, exponents & logarithms, you'll need to look those up.These are not particularly difficult or high-level, but my last prolonged exposure to these concepts was more than a decade ago.I do appreciate the need to keep the concepts abstract enough to apply across various applications, but it would be nice to see some concrete implementation. I'd have a much easier time following code examples in a language/syntax I've seen more recently.I'm considering the "Algorithms 4th Ed" book by Sedgewick & Wayne for that reason: practical application w/examples in Java.Modern programming best practices described in books like "The Pragmatic Programmer" or "Code Complete" also clearly emphasize the need to use unique/meaningful names for variables and functions so that people can easily follow your work. It also helps YOU to follow your own work. This book instead takes you back to math class where everything is a meaningless jumble of alphabet soup - "x,y,z,q,p,r,a" - and you have to constantly bounce back & forth (sometimes over several pages) to keep track of what's what.Which example gives you a better idea what's going on?:sortedBooksArray[0] = unsortedBooksArray[x]... OR ...A[q-1] = R[p]Yes, algorithms should be abstract, but if the goal is to explain them clearly they need to first be presented in a concrete way.This is why so many people hate & don't understand math - those who love & understand it fail to describe the practical uses for it in understandable terms. The notation & abstraction work against the stated goal of making algorithms more accessible.Perhaps that's by design, because I'm going to wind up re-writing the psuedocode with my own examples to gain a better understanding. This weekend I will have stacks of books strewn about the living room while I attempt to implement QuickSort for real, and will thereafter come up with some scenarios where I can implement it in code myself. But in that case, I probably could've gotten the same effect from an online tutorial...So far, it's not a bad book - I just haven't really learned anything practical, or that I didn't already know from other online sources that present the topic in a more understandable manner.
J**H
Difficult to read
After seeing all the positive reviews, I had high hopes for this book but didn't enjoy reading it at all. The chapters are dull and dry. Lots of paragraphs that are hard to read and make sense of. Few pictures and even those black and white pictures don't have numbers; so, sometimes it is hard to know which picture the author is talking about.The code examples are not great either. The indexes of arrays start at 1 to make it easier to understand for non-programmers but makes it harder for programmers, and yet it is highly mathematical and abstract even for me as a programmer. I find it hard to believe a non-programmer can read this book and make sense of most of it.
ãŠ**4
å ¥éæžãšããŠçŽ æŽããã
ã¢ã«ãŽãªãºã ãšèšãã°ãCLRSãã§ããã1000ããŒãžãè¶ ããŠããã®ã§ããCLRSãã®èè ã®äžäººãæžããŠããŠãããŒãžæ°ã200匷ãšããªããæé ãªæ¬æžãæã«åããŸããã[æ¬æžãèªãåã®ç§ã®ç¥èã¬ãã«]- è±èªã®èªã¿æžãã¯æµæ¢- ããã°ã©ãã³ã°ã¯äžçŽã¬ãã«(å¿ ç¶çã«ããã¥ãŒãã¹ã¿ãã¯ãªã©ã®ããŒã¿æ§é ãç¥ã£ãŠãã)- ã¢ã«ãŽãªãºã ã¯åçŽã¬ãã«(O(N)ãO(log(N))ãªã©ã¯ç¥ã£ãŠããããœãŒãäžã€ã«ããŠãæ§ã ãªã¢ã«ãŽãªãºã ãããããšã¯ç¥ã£ãŠãããããããã®å ·äœçãªã¢ã«ãŽãªãºã ã¯å šãç¥ããªããNPå°é£ããã¬ããååããç¥ããªããã¢ã«ãŽãªãºã ã«é¢ããæ¬ãèªãã ããšããªã)- æ°åŠã¯äžçŽã¬ãã«(ç系倧åŠé¢åã¬ãã«ãã°ã©ãçè«ãåºç€çãªããšã¯ç¥ã£ãŠãããDFSãBFSãUnion-Findããã€ã¯ã¹ãã©æ³ãããã¯æžããããšããã)å šããŒãžãèªã¿ãå šãŠã®ã¢ã«ãŽãªãºã ãC++ã§å®è£ ããŸããããã¡ããã©14æ¥ã§èªäºãšãªããŸããããããã100æéçšåºŠã ãšæããŸããæ¬æžã¯åç« ç«ãŠãšãªã£ãŠããã倧ãŸããªå å®¹ã¯æ¬¡ã®éãã§ãã1. åºè«2. èšç®è€éæ§çè«(O(N)ãªã©ã®è¡šèšã®å®çŸ©)3. ãœãŒããšæ¢çŽ¢ã«é¢ããã¢ã«ãŽãªãºã 4. äžã«åã5. ã°ã©ãã«é¢ããã¢ã«ãŽãªãºã 6. äžã«åã7. æååã«é¢ããã¢ã«ãŽãªãºã 8. æå·åã«é¢ããã¢ã«ãŽãªãºã 9. ããŒã¿å§çž®ã«é¢ããã¢ã«ãŽãªãºã 10. ã¯ã©ã¹Pãã¯ã©ã¹NPãNPå°é£ãNPå®å šã«é¢ããçè«äºç« ã¯ããã»ã©é·ããªãã®ã§ãããèšç®è€éæ§çè«ã«ã€ããŠåŠãã ããšããªãç§ã«ãšã£ãŠã¯ãããªãããã«ãªããŸãããOèšæ³ãÎèšæ³ãÎ©èšæ³ãªã©ã®å®çŸ©ã«ã€ããŠåŠã¶ããšãã§ããŸããäžç« ãšåç« ã¯ãå¯ããªãäžå¯ããªããã ãšæããŸããåçŽãœãŒãããå§ãŸã£ãŠãæçµçã«ã¯ã€ãã¯ãœãŒãã«è¡ãçããŸããäºç« ãšå ç« ããåæ§ã§ããåçèšç»æ³(DP)ã䜿ãã¢ã«ãŽãªãºã ããããDPãæžããããšããªãã£ãããå匷ã«ãªããŸãããäžç« ã®å¯Ÿè±¡ã¯æååã§ããæ£èŠè¡šçŸ(regex)ã®ãããªãã®ãæ³å®ããŸããããå šãéããŸãããæ±ãããåé¡ãã©ããç¹æ®ã§ã身ã®åãã®å¿çšäŸãæãã€ããŸãããçç©åŠã®åéã«å¿çšäŸãããããã§ãããäžè¬æžã§æ±ãå¿ èŠããã£ãã®ãã¯è¬ã§ããå人çã«ã¯ãããã·ã¥é¢æ°ããšã©ãŒèšæ£ç¬Šå·ãããã®è©±ã代ããã«å ¥ã£ãŠãããšè¯ããšæããŸãããå «ç« ã¯ãèªã¿ç©ãšããŠããªãé¢çœããšæããŸããããæ°åŠè²ã匷ãã§ãããèªã¿åãããšãããããããŸãããªãæå·åã(æ¯èŒç)ç°¡åãªã®ã«åŸ©å·ã¯æ¥µããŠé£ããã®ãããæ°åŠçã«èšŒæä»ãã§çè§£ããããšãã§ããŸããä¹ç« ãåæ§ã§ããæåŸã«æ±ãããLZWãšããã¢ã«ãŽãªãºã ã¯ããåç¥ã®gifç»åãã¡ã€ã«ãã©ãŒãããã§æ¡çšãããŠããŸããçŸåšã䜿ãããã»ã©ã«å®çšçã§ãããªãããå®è£ ãç°¡åã§ããåç« ã§äžæ°ã«é°å²æ°ãå€ãããŸããã¢ã«ãŽãªãºã ã®åé¡ã®è©±ã«ãªããå šãŠãæœè±¡åããŸããå人çã«ã¯ãã®æ¬ã§äžçªé¢çœãéšåã§ããããå®çšæ§ãšã¯éžããéšåãããã®ã§ãå Žåã«ãã£ãŠã¯"A sampler of NP-complete problems"以éã¯ã°ã£ããåã£ãŠããŸã£ãŠãè¯ããšæããŸãããããããåã®éšåã¯ãã¯ã©ã¹P,NPãNPå®å šæ§ãªã©ã®å®çŸ©ãããã®ã§ãèªãã¹ãã§ããå šäœçã«ååž°ãå€çšããã®ã§ãååž°ã®å匷ã«ãªããŸããåºæ¬çã«ç§ã¯ååž°ã奜ãã§ã¯ãªãã®ã§ããã广çã«ååž°ã䜿ãããŠãããæ£çŽæåããŸãããã¢ã«ãŽãªãºã ãšã¯çŽæ¥é¢ä¿ãããŸãããããã®ç¹ã¯ããªãã®åç©«ã§ããã説æã¯éåžžã«åããããããçè§£ã§ããªãã»ã©å 容ãé£ãããšããããã§ããªããããã§ããŠæå¿ãããããŸãããã¢ã«ãŽãªãºã ãããã°ã©ã ãç¥ã£ãŠããããæ£åŒãªæè²ãåããããšãç¡ãããšãã人ã«å¿ããããããããŸããç§ã¯ãã®äžäººã§ããããçè§£ãæ·±ããããšãã§ããŸããã------------------------------[泚æããã»ããè¯ãç¹]ã»åºè«ã«ãããšãæ¬æžãæ³å®ããæäœã¬ãã«ã®èªè ã¯ããæ°åŠã¯ãããªãã«åããããã¢ã«ãŽãªãºã ã«ã€ããŠã¯å šãç¥ãããããã°ã©ã ãæžããããšããªã人ãã®ããã§ãããã ãããã¯ãããã«ç¡çããããšæããŸããã»äŸãã°ãé åãåãåãã¢ã«ãŽãªãºã ã¯ãã©ããé åã®é·ããåãåãããã«ãªã£ãŠããŸããããã®çç±ãå šã説æãããŠããŸãããCãå§ããšããäœçŽèšèªã§ããã°ã©ã ãæžããããšãããã°ãé·ããããããæå®ããªããã°ãªããªãçç±ãç¥ã£ãŠããã¯ãã§ãããããã°ã©ãã³ã°èšèªæªçµéšè ããé åã®é·ããååŸãã颿°ãçšæãããŠããèšèª(äŸãã°pythonã®len())ããæžããããšããªã人ããããã°ããããããããŸãŸèªã¿é²ããããšã«ãªããšæããŸããã»ãšããã©ãããå®çŸ©ãããå æžã§ããäŸãã°ãäºåæšã¯æšã®äžçš®ã§ãããšèª¬æãããŸãããæšã®å®çŸ©ããªããããããäºåæšã¯æšã§ã¯ãªãæ ¹ä»ãæšã®äžçš®ã§ããã»ã¢ã«ãŽãªãºã ã«ã€ããŠå šãç¥ããªã人ã«ãšã£ãŠã¯ãããã¬ãã«ãé«ããšæããŸããåå¿è ã¯ããããåããã眮ããŠããããŸããæ°åŠãèŠæãªäººãåæ§ãã»ã¢ã«ãŽãªãºã ã¯å šãŠæ¬äŒŒã³ãŒãã§æžãããŠããŸããçŸå®ã®ããã°ã©ãã³ã°èšèªã§ã®ãµã³ãã«ã³ãŒãã®ãããªãã®ã¯äžåãããŸãããã¢ã«ãŽãªãºã ãå®éã«äœ¿ãããå Žåã¯ãèªåã§å®è£ ããªããã°ãªããŸããã
O**R
Un excellent contenu et une posture agaçante
L'auteur de ce livre est évidemment le Cormen de Cormen, Leiserson, Rivest et Stein [CLRS], mais au lieu de 1300 pages cet ouvrage en fait 240. Il joue donc dans la catégorie des livres d'introduction à l'algorithmique et il est excellent dans ce rÎle. Même introductif, cet ouvrage reste suffisamment précis, et la réduction de volume s'opÚre plus par une sélection des sujets que par une perte de finesse d'analyse. Il est comparable en cela à d'autres ouvrages introductifs comme ceux de Baase ou de Levitin, mais en diffÚre plus par les sujets sélectionnés que par le traitement de ces sujets. Je ne me prononcerai pas sur la pertinence des sujets sélectionnés par cet ouvrage et les autres qui jouent dans la même catégorie. Tous ont leur logique et il est trÚs probable que chaque enseignant en algorithmique opÚrera sa propre sélection. Je recommande donc la lecture de cet ouvrage sans réserve sur le fond.Pourquoi les étoiles en moins alors ? Malheureusement l'auteur s'est enfermé dans la posture énervante de rédiger un teaser pour CLRS. Il est normal de renvoyer à CLRS pour les sujets non traités, mais il arrive trop souvent, à chaque chapitre en fait, que l'auteur renvoie à CLRS pour les sujets traités, et pas pour des raffinements qui n'auraient pas leur place dans une introduction, mais pour des éléments qui y ont toute leur place comme la bibliographie ou l'histoire des algorithmes décrits. Introduire un lecteur à l'algorithmique c'est aussi guider ses premiers pas dans la bibliographie et lui expliquer un petit peu comment se sont développées les idées dans ce domaine ; ça ne peut pas se réduire à « allez-voir le livre sacré » !
D**B
this was a fantastic introduction to algorithms and helped scratch a theoretic itch
As a software engineer of a decade who never done computer science at uni and doesn't work with algorithms on a daily basis, this was a fantastic introduction to algorithms and helped scratch a theoretic itch.
D**U
Good book for anyone looking for a brief intro to ...
Good book for anyone looking for a brief intro to algos but not recommended . It is complete in it self but as im doing btech cs it's not what we need. Better one would be the CLRS .
Trustpilot
Hace 5 dÃas
Hace 1 dÃa