下载地址:
下载地址1资源简介:
中文名: 算法导论原名: Introduction to Algorithms作者: Thomas H. CormenRonald L. RivestCharles E. LeisersonClifford Stein资源格式: PDF版本: 文字版 出版社: The MIT Press书号: 978-0262033848发行时间: 2009年09月30日地区: 美国语言: 英文简介: 内容介绍:Editorial ReviewsReview"In light of the explosive growth in the amount of data and the diversity of computing applications, efficient algorithms are needed now more than ever. This beautifully written, thoughtfully organized book is the definitive introductory book on the design and analysis of algorithms. The first half offers an effective method to teach and study algorithms; the second half then engages more advanced readers and curious students with compelling material on both the possibilities and the challenges in this fascinating field."—Shang-Hua Teng, University of Southern California"Introduction to Algorithms, the 'bible' of the field, is a comprehensive textbook covering the full spectrum of modern algorithms: from the fastest algorithms and data structures to polynomial-time algorithms for seemingly intractable problems, from classical algorithms in graph theory to special algorithms for string matching, computational geometry, and number theory. The revised third edition notably adds a chapter on van Emde Boas trees, one of the most useful data structures, and on multithreaded algorithms, a topic of increasing importance."—Daniel Spielman, Department of Computer Science, Yale University"As an educator and researcher in the field of algorithms for over two decades, I can unequivocally say that the Cormen book is the best textbook that I have ever seen on this subject. It offers an incisive, encyclopedic, and modern treatment of algorithms, and our department will continue to use it for teaching at both the graduate and undergraduate levels, as well as a reliable research reference."—Gabriel Robins, Department of Computer Science, University of VirginiaProduct DescriptionSome books on algorithms are rigorous but incomplete; others cover masses of material but lack rigor. Introduction to Algorithms uniquely combines rigor and comprehensiveness. The book covers a broad range of algorithms in depth, yet makes their design and analysis accessible to all levels of readers. Each chapter is relatively self-contained and can be used as a unit of study. The algorithms are described in English and in a pseudocode designed to be readable by anyone who has done a little programming. The explanations have been kept elementary without sacrificing depth of coverage or mathematical rigor.The first edition became a widely used text in universities worldwide as well as the standard reference for professionals. The second edition featured new chapters on the role of algorithms, probabilistic analysis and randomized algorithms, and linear programming. The third edition has been revised and updated throughout. It includes two completely new chapters, on van Emde Boas trees and multithreaded algorithms, and substantial additions to the chapter on recurrences (now called "Divide-and-Conquer"). It features improved treatment of dynamic programming and greedy algorithms and a new notion of edge-based flow in the material on flow networks. Many new exercises and problems have been added for this edition.As of the third edition, this textbook is published exclusively by the MIT Press.About the AuthorThomas H. Cormen is Professor of Computer Science and former Director of the Institute for Writing and Rhetoric at Dartmouth College.Charles E. Leiserson is Professor of Computer Science and Engineering at the Massachusetts Institute of Technology.Ronald L. Rivest is Andrew and Erna Viterbi Professor of Electrical Engineering and Computer Science at the Massachusetts Institute of Technology.Clifford Stein is Professor of Industrial Engineering and Operations Research at Columbia University. 目录: Introduction 31 The Role of Algorithms in Computing 51.1 Algorithms 51.2 Algorithms as a technology 112 Getting Started 162.1 Insertion sort 162.2 Analyzing algorithms 232.3 Designing algorithms 293 Growth of Functions 433.1 Asymptotic notation 433.2 Standard notations and common functions 534 Divide-and-Conquer 654.1 The maximum-subarray problem 684.2 Strassen's algorithm for matrix multiplication 754.3 The substitution method for solving recurrences 834.4 The recursion-tree method for solving recurrences 884.5 The master method for solving recurrences 934.6 Proof of the master theorem 975 Probabilistic Analysis and Randomized Algorithms 1145.1 The hiring problem 1145.2 Indicator random variables 1185.3 Randomized algorithms 1225.4 Probabilistic analysis and further uses of indicator random variables 130II Sorting and Order StatisticsIntroduction 1476 Heapsort 1516.1 Heaps 1516.2 Maintaining the heap property 1546.3 Building a heap 1566.4 The heapsort algorithm 1596.5 Priority queues 1627 Quicksort 1707.1 Description of quicksort 1707.2 Performance of quicksort 1747.3 A randomized version of quicksort 1797.4 Analysis of quicksort 1808 Sorting in Linear Time 1918.1 Lower bounds for sorting 1918.2 Counting sort 1948.3 Radix sort 1978.4 Bucket sort 2009 Medians and Order Statistics 2139.1 Minimum and maximum 2149.2 Selection in expected linear time 2159.3 Selection in worst-case linear time 220III Data StructuresIntroduction 22910 Elementary Data Structures 23210.1 Stacks and queues 23210.2 Linked lists 23610.3 Implementing pointers and objects 24110.4 Representing rooted trees 24611 Hash Tables 25311.1 Direct-address tables 25411.2 Hash tables 25611.3 Hash functions 26211.4 Open addressing 26911.5 Perfect hashing 27712 Binary Search Trees 28612.1 What is a binary search tree? 28612.2 Querying a binary search tree 28912.3 Insertion and deletion 29412.4 Randomly built binary search trees 29913 Red-Black Trees 30813.1 Properties of red-black trees 30813.2 Rotations 31213.3 Insertion 31513.4 Deletion 32314 Augmenting Data Structures 33914.1 Dynamic order statistics 33914.2 How to augment a data structure 34514.3 Interval trees 348IV Advanced Design and Analysis TechniquesIntroduction 35715 Dynamic Programming 35915.1 Rod cutting 36015.2 Matrix-chain multiplication 37015.3 Elements of dynamic programming 37815.4 Longest common subsequence 39015.5 Optimal binary search trees 39716 Greedy Algorithms 41416.1 An activity-selection problem 41516.2 Elements of the greedy strategy 42316.3 Huffman codes 42816.4 Matroids and greedy methods 43716.5 A task-scheduling problem as a matroid 44317 Amortized Analysis 45117.1 Aggregate analysis 45217.2 The accounting method 45617.3 The potential method 45917.4 Dynamic tables 463V Advanced Data StructuresIntroduction 48118 B-Trees 48418.1 Definition of B-trees 48818.2 Basic operations on B-trees 49118.3 Deleting a key from a B-tree 49919 Fibonacci Heaps 50519.1 Structure of Fibonacci heaps 50719.2 Mergeable-heap operations 51019.3 Decreasing a key and deleting a node 51819.4 Bounding the maximum degree 52320 van Emde Boas Trees 53120.1 Preliminary approaches 53220.2 A recursive structure 53620.3 The van Emde Boas tree 54521 Data Structures for Disjoint Sets 56121.1 Disjoint-set operations 56121.2 Linked-list representation of disjoint sets 56421.3 Disjoint-set forests 56821.4 Analysis of union by rank with path compression 573VI Graph AlgorithmsIntroduction 58722 Elementary Graph Algorithms 58922.1 Representations of graphs 58922.2 Breadth-first search 59422.3 Depth-first search 60322.4 Topological sort 61222.5 Strongly connected components 61523 Minimum Spanning Trees 62423.1 Growing a minimum spanning tree 62523.2 The algorithms of Kruskal and Prim 63124 Single-Source Shortest Paths 64324.1 The Bellman-Ford algorithm 65124.2 Single-source shortest paths in directed acyclic graphs 65524.3 Dijkstra's algorithm 65824.4 Difference constraints and shortest paths 66424.5 Proofs of shortest-paths properties 67125 All-Pairs Shortest Paths 68425.1 Shortest paths and matrix multiplication 68625.2 The Floyd-Warshall algorithm 69325.3 Johnson's algorithm for sparse graphs 70026 Maximum Flow 70826.1 Flow networks 70926.2 The Ford-Fulkerson method 71426.3 Maximum bipartite matching 73226.4 Push-relabel algorithms 73626.5 The relabel-to-front algorithm 748VII Selected TopicsIntroduction 76927 Multithreaded AlgorithmsSample Chapter - Download PDF (317 KB) 77227.1 The basics of dynamic multithreading 77427.2 Multithreaded matrix multiplication 79227.3 Multithreaded merge sort 79728 Matrix Operations 81328.1 Solving systems of linear equations 81328.2 Inverting matrices 82728.3 Symmetric positive-definite matrices and least-squares approximation 83229 Linear Programming 84329.1 Standard and slack forms 85029.2 Formulating problems as linear programs 85929.3 The simplex algorithm 86429.4 Duality 87929.5 The initial basic feasible solution 88630 Polynomials and the FFT 89830.1 Representing polynomials 90030.2 The DFT and FFT 90630.3 Efficient FFT implementations 91531 Number-Theoretic Algorithms 92631.1 Elementary number-theoretic notions 92731.2 Greatest common divisor 93331.3 Modular arithmetic 93931.4 Solving modular linear equations 94631.5 The Chinese remainder theorem 95031.6 Powers of an element 95431.7 The RSA public-key cryptosystem 95831.8 Primality testing 96531.9 Integer factorization 97532 String Matching 98532.1 The naive string-matching algorithm 98832.2 The Rabin-Karp algorithm 99032.3 String matching with finite automata 99532.4 The Knuth-Morris-Pratt algorithm 100233 Computational Geometry 101433.1 Line-segment properties 101533.2 Determining whether any pair of segments intersects 102133.3 Finding the convex hull 102933.4 Finding the closest pair of points 103934 NP-Completeness 104834.1 Polynomial time 105334.2 Polynomial-time verification 106134.3 NP-completeness and reducibility 106734.4 NP-completeness proofs 107834.5 NP-complete problems 108635 Approximation Algorithms 110635.1 The vertex-cover problem 110835.2 The traveling-salesman problem 111135.3 The set-covering problem 111735.4 Randomization and linear programming 112335.5 The subset-sum problem 1128VIII Appendix: Mathematical BackgroundIntroduction 1143A Summations 1145A.1 Summation formulas and properties 1145A.2 Bounding summations 1149B Sets, Etc. 1158B.1 Sets 1158B.2 Relations 1163B.3 Functions 1166B.4 Graphs 1168B.5 Trees 1173C Counting and Probability 1183C.1 Counting 1183C.2 Probability 1189C.3 Discrete random variables 1196C.4 The geometric and binomial distributions 1201C.5 The tails of the binomial distribution 1208D Matrices 1217D.1 Matrices and matrix operations 1217D.2 Basic matrix properties 122
飞网下载站,免费下载共享资料,内容涉及教育资源、专业资料、IT资源、娱乐生活、经济管理、办公文书、游戏资料等。