一本算法设计的好书

[算法日志 ]Introduction to the Design & Analysis of Algorithms

Introduction to the design and analysis of algorithms, by Anany Levitin, Villanova Univ., 2003

A new road map of algorithm design techniques:picking up where the traditional classification leaves off, by Anany Levitin, Villanova Univ. 200?

这本书力图按照算法设计技术的内在思想对经典算法进行分类,尤其适合学习了数据结构之后学习,对算法技术有更深的理解。

http://algorithm.cs.nthu.edu.tw/~course/ 采用该书第二版作为教材。

来自Amazon评价:

 
30 of 32 people found the following review helpful:
Algorithm Design from a different perspective, April 28, 2003
By sameer borate (Pune, India) - See all my reviews
As the author says in the preface, there are two ways of presenting algorithms. One classifies algorithms according to a problem type. The other classifies algorithms according to design techniques. A book in the first category will have separate chapters on sorting, searching, graphs etc. These books are like a toolbox. Programmers pick a particular algorithm needed for a problem, modify it if needed and obtain a solution. Most of the algorithm books fall in this category. The problem with this approach is that you have at your disposal only a finite set of algorithms to play with. What if you needed some new kind of algorithm for a specific problem. You are stuck, because most books on algorithms don't teach you how to design new algorithms or what design technique is most suited for your particular problem. It is here that Anany Levitin's book fills the gap. He teaches you the major design techiniques like Brute-Force, Divide-and-Conquer, Greedy techniques. The various algorithms like sorting, searching, graph algorithms are classified according to the various techniques. The advantage of this is that many diverse algorithms get classified according to a particular design technique. For e.g Bubble sort, Convex-Hull problem, Travelling salesman problem, Knapsack problem all fall in the Brute-Force design category. So when you are designing new algorithms you know at the start what type of problem it is and how it should be tackled.
The book teaches you algorithm design and analysis from a completely different view point. It is entertaining to read and the problems at the end of each chapter are wonderful. I only hope that the author adds nore algorithms in his next edition. Go get it!

 Comment | Was this review helpful to you?  <script language="Javascript1.1" type="text/javascript"> </script><script language="Javascript1.1" type="text/javascript"> </script><script language="Javascript1.1" type="text/javascript"> </script> id="YesNoVotingFrame_2115R16RCE9ZXUE2OFHelpfulReviews1" style="VISIBILITY: hidden" name="YesNoVotingFrame_2115R16RCE9ZXUE2OFHelpfulReviews1" src="" width="0" height="0"><script language="Javascript1.1" type="text/javascript"> </script> Yes No <script language="Javascript1.1" type="text/javascript"> </script>(Report this)



 
5 of 7 people found the following review helpful:
One of the better introductions, March 11, 2005
By Kevin J. Schmidt (Lilburn,GA) - See all my reviews
(REAL NAME)   
This book presents the field of algorithm analysis from a different perspective. This book attempts to provide you with enough foundation to not only pick common sorting, searching, etc., algorithms for a problem, but shows you how to design new algorithms if need be. The book is an introduction, so keep that in mind. But the foundation it paves should last you a lifetime.

 Comment | Was this review helpful to you?  <script language="Javascript1.1" type="text/javascript"> </script><script language="Javascript1.1" type="text/javascript"> </script> id="YesNoVotingFrame_2115R1FX0BQPQBVB2GHelpfulReviews2" style="VISIBILITY: hidden" name="YesNoVotingFrame_2115R1FX0BQPQBVB2GHelpfulReviews2" src="" width="0" height="0"><script language="Javascript1.1" type="text/javascript"> </script> Yes No <script language="Javascript1.1" type="text/javascript"> </script>(Report this)



 
1 of 1 people found the following review helpful:
Fantastic intro book, September 26, 2006
By Saturnino Garcia (San Diego, CA) - See all my reviews
(REAL NAME)   
Even though this book is only a few years old, it seems like a well-worn classic. That is not to say that it is outdated and irrelevant; it is exactly the opposite! While my knowledge of algorithms textbooks isn't encyclopedic, I can say that this book was way ahead of the curve in it's layout. Before it, most books presented a bunch of algorithms with some loose affiliations such as being search algorithms or dealing with graphs. This book groups algorithms into major themes and makes it much easier to learn the fundamentals of algorithm design. There have been a new set of algorithms textbooks coming out as late (Kleinberg and Tardos, Dasgupta et al, etc) that have the same approach as this book because it works so well. Don't miss out!

 Comment | Was this review helpful to you?  <script language="Javascript1.1" type="text/javascript"> </script><script language="Javascript1.1" type="text/javascript"> </script> id="YesNoVotingFrame_2115R27M02Z1QS4G10HelpfulReviews3" style="VISIBILITY: hidden" name="YesNoVotingFrame_2115R27M02Z1QS4G10HelpfulReviews3" src="" width="0" height="0"><script language="Javascript1.1" type="text/javascript"> </script> Yes No <script language="Javascript1.1" type="text/javascript"> </script>(Report this)


Customer Reviews
Average Customer Review:
Write an online review and share your thoughts with other customers.

 
6 of 7 people found the following review helpful:
Great introductory text!, March 10, 2006
By Karl F. Schramm "Pissed off grad student" (San Jose, CA United States) - See all my reviews
(REAL NAME)   
For those of you who've always wanted to throw the Cormen text out the window rejoice you finally can! This book is an excellent introduction to algorithms. Though not as thorough as the Cormen text it's orders of magnitude more readable!

 Comment | Was this review helpful to you?  <script language="Javascript1.1" type="text/javascript"> </script><script language="Javascript1.1" type="text/javascript"> </script> id="YesNoVotingFrame_2115R22D7OOCKV2V68HelpfulReviews4" style="VISIBILITY: hidden" name="YesNoVotingFrame_2115R22D7OOCKV2V68HelpfulReviews4" src="" width="0" height="0"><script language="Javascript1.1" type="text/javascript"> </script> Yes No <script language="Javascript1.1" type="text/javascript"> </script>(Report this)



 
9 of 10 people found the following review helpful:
Great Introduction to Algorithmic Design, May 8, 2005
I recently finished using this book for a course. I found it to be very well written and the presentation was excellent. Most books on algorithms are hard to read and overly mathematical. This book emphasizes more the textual explanation of algorithms for practical applications and not as much on theoretical proofs etc. The exercises at the end of the chapters strongly reinforce the contents and insightful hints to every exercise are given at the end of the book. I thoroughly enjoyed using this book and found it challenging. Other books I used for reference such as the MIT classic Introduction to Algorithms was also useful but much more difficult to understand initially.

 Comment | Was this review helpful to you?  <script language="Javascript1.1" type="text/javascript"> </script><script language="Javascript1.1" type="text/javascript"> </script> id="YesNoVotingFrame_2115R2IGLQYK7IAMBDHelpfulReviews5" style="VISIBILITY: hidden" name="YesNoVotingFrame_2115R2IGLQYK7IAMBDHelpfulReviews5" src="" width="0" height="0"><script language="Javascript1.1" type="text/javascript"> </script> Yes No <script language="Javascript1.1" type="text/javascript"> </script>(Report this)



 
18 of 31 people found the following review helpful:
An Interestingly Different Approach, June 4, 2003
By W Boudville (US) - See all my reviews
(TOP 50 REVIEWER)    (REAL NAME)   
The definitive books on algorithms are widely
acknowledged to be those by Donald Knuth, "The Art of
Computer Programming". Very detailed, and with
voluminous problem sets, they have been the standard
for decades.

Along comes this book with its claim of a different
and complementary classification of the field. The
traditional way is, from a top-down vantage, that at
the highest level, you descend from the root to the
various main problem types. Beneath each problem node
would be subclassifications based on the techniques
used to attack that problem. (I could say "solve", but
that is certainly not the case for some problems.)
This is the most natural classification, because you
often get a problem put in front of you, and you start
from there. Problem-driven.

But what if a method to attack problem A and a method
to attack problem B were very similar? Is there a way
to combine these method nodes? In the problem-driven
tree, not really. So what the author suggests is a
method-driven tree, where problems are descendents of
a method. You regard solutions or research into
problems as instantiations of a particular method.
Sound familiar? You can draw analogies with physics,
if you map the methods into the laws of physics. We
should not follow this too literally. But seen from
this vantage, the author's idea is very reasonable. In
physics, the solutions to a problem are (ideally,
anyway) derived ultimately from the laws of physics.

We should not draw a contrast between the author's
suggestions and the prevailing approach too sharply.
At the research level, a competent analyst should be
aware of different problem areas from which solutions
could be drawn, or to which a solution might be
adapted. As a practical matter, it comes down to the
difference in emphasis for most, rather than a
different worldview.

Nonetheless, this is potentially quite a gem for a
researcher. The author's different emphasis may be the
trigger to solving one of your problems.

 

一个有意思的现象是,对于brute-force呀,divide-and-conquer呀,dynamic programming呀,这些,老师称之为“算法策略”的名词,该书也未能给出一个恰当的英文术语来描述:technique? strategy ? paradigm? idea when design certain type of algorithms? 不过,作者确实对现有的算法作了很好的分类。

该书的目录:部分

1.1算法的概念

1.2算法问题的求解基础

1.3重要的问题类型

1.4基本数据结构

2.1算法分析的框架

2.2渐进符号和基本效率类型

2.3 非递归算法的数学分析

2.4递归算法的数学分析

2.5例题:Fibonacci数列

2.6算法的经验分析

2.7算法的可视化

3.brute-force

3.1选择排序和冒泡排序

3.2顺序查找和蛮力字符匹配

3.3最近对和凸包convex问题的蛮力算法

3.4穷举查找

4分治法

4.1合并排序

4.2快速排序

4.3折半查找

4.4 二叉树遍历及相关特性

4.5 大整数乘法和Strassen矩阵乘法

5 减治法

5.1 插入排序

5.2 深度有限查找和广度优先查找

5.3 拓扑排序

5.4 生成组合对象的算法

5.5 减常因子算法 reduced constant factor algorithm

5.6 减可变规模算法

6 变治法

6.1预排序

6.2 高斯消去法

6.3 平衡查找树

6.4 堆和堆排序

6.5 H

 

 


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值