![]() Algorithms $27.13 I purchased this book for a college course. It came in plenty of time for school. I will always buy school books first from amazon. I will not pay full price for a book that is almost in perfect condition. Amazon is a great way to buy books. ![]() Introduction to Algorithms, Third Edition $87.00 An algorithm is nothing more than a set of computational steps that transform a specific input into a desired output. From that definition, there are plenty of books on the market that are "cookbooks" of algorithms and will enable you to do just that - transform specific inputs into outputs, complete with source code, and with no real depth of understanding of your own required. However, to be a computer scientist versus a programmer, you need to know what makes an efficient algorithm, why is a particular algorithm efficient, what kinds of common data structures are involved in various computing problems, how to traverse those data structures efficiently, and a notation for analyzing various algorithms. This book will help you learn all of that. The study of the theory of algorithms is not to be undertaken lightly, and I don't recommend you attempt to self-study such a complex subject with such strong mathematical underpinnings. In fact, this book is really aimed at graduate computer science students and is often on the reading list of Ph.D. qualifying examinations in that field. For students of graph theory, you might find your knowledge solidly supplemented by the material in chapters 22 through 26 on graph algorithms. The last section of the book, "Selected Topics", goes over various specific algorithms from many fields using the knowledge of algorithm design and analysis you have learned up to this point in the book. Throughout, the text is very clear, and there are plenty of instructive diagrams and pseudocode. One of the most interesting parts of the book is the chapter on NP-completeness. This is the study of problems for which no efficient algorithm has ever been found. These problems are interesting for two reasons. The first being that even though an efficient algorithm has never been found, there is no proof that one cannot exist. Second, if an efficient algorithm exists for one of them, then an efficient algorithm exists for all. Thus, if you are ever called upon to write an efficient algorithm for an NP-complete problem, you will be involved in a long fruitless search if you do not recognize the problem as NP-complete. If you can show the problem is NP-complete, you can go about producing an algorithm that gives a good solution, but not the best possible solution. This kind of knowledge is what separates a computer scientist from a mere programmer, and is one of many reasons to study this book's contents. I highly recommend this book to anyone who truly wants to be called a computer scientist. To get the most from this book you should already be familiar with discrete mathematics and combinatorics, as this book makes heavy use of these subjects. Because this book contains no solutions to any of the exercises, might I suggest "Problems on Algorithms" by Ian Parberry as a companion to this book. It has a little bit of tutorial and a lot of exercises, many unsolved, but some with hints and others with solutions. Also, for more basic material, you might look at "Schaum's Outline of Discrete Mathematics". It's very inexpensive and can almost stand alone as a tutorial on the mathematics you need to know to succeed at understanding this book. The table of contents is not shown for this third edition of the book, so I supply that information next: Table of Contents Preface I Foundations 1 The Role of Algorithms in Computing 2 Getting Started 3 Growth of Functions 4 Recurrences 5 Probabilistic Analysis and Randomized Algorithms II Sorting and Order Statistics 6 Heapsort 7 Quicksort 8 Sorting in Linear Time 9 Medians and Order Statistics III Data Structures 10 Elementary Data Structures 11 Hash Table 12 Binary Search Trees 13 Red-Black Trees 14 Augmenting Data Structures IV Advanced Design and Analysis Techniques 15 Dynamic Programming 16 Greedy Algorithms 17 Amortized Analysis V Advanced Data Structures 18 B-Trees 19 Binomial Heaps 20 Fibonacci Heaps 21 Data Structures for Disjoint Sets VI Graph Algorithms 22 Elementary Graph Algorithms 23 Minimum Spanning Trees 24 Single-Source Shortest Paths 25 All-Pairs Shortest Paths 26 Maximum Flow VII Selected Topics 27 Sorting Networks 28 Matrix Operations 29 Linear Programming 30 Polynomials and the FFT 31 Number-Theoretic Algorithms 32 String Matching 33 Computational Geometry 34 NP Completeness 35 Approximation Algorithms ![]() Introduction to Algorithms $75.00 This is the best algorithms book ever. It covers the whole gamut of topics from sorting to graphs to NP-complete problems. It's so good that if you study computer science, you'd want this book on your bookshelf for reference even if no course explicitly requires it. Highly recommended! ![]() Beginning Algorithms (Wrox Beginning Guides) $39.99 This book contains explanations and implementations along with example uses of various basic algorithms all in the Java language. The first five chapters explain the basics of algorithms such as iteration and recursion before introducing the reader to some fundamental data structures such as lists, stacks, and queues. Chapters 6 through 10 deal with various sorting algorithms as well as some prerequisite topics such as keys and ordering. Chapters 7 through 15 cover efficient techniques for storing and searching by way of hashing, trees, sets, and maps. Chapters 16 through 19 include several specialized more advanced topics as well as a general discussion on common performance pitfalls and optimization techniques. If the authors had stuck to the subject matter this book could have been very good. Like most everyone else, I found this book's biggest problem to be its emphasis on testing the implementations of these structures and JUnit versus an understanding of the usefulness of the algorithms themselves and their mathematical and time complexity. Everyone coming to this book could be expected to be well-versed in Java programming, but I don't think you should expect them to know software testing that well. It's just not something you expect to deal with when you are learning the theory and implementation of algorithms. I still highly recommend Bundle of Algorithms in Java, Third Edition, Parts 1-5: Fundamentals, Data Structures, Sorting, Searching, and Graph Algorithms (3rd Edition) by Robert Sedgewick. It is sufficiently mathematically rigorous while demonstrating everything in the Java language versus Cormen's pseudocode in "Introduction to Algorithms", which is the standard classroom textbook on this subject. |
|