Contact The MIT Press Information on how to order from The MIT Press Access your saved shopping cart, e-mail list subscriptions, order history, address book, and other info in the Your Profile area MIT Press Home Page


September 2009
8 x 9, 1312 pp., 235 illus.
$87.00/£64.95 (CLOTH)
Short

ISBN-10:
0-262-03384-4
ISBN-13:
978-0-262-03384-8

Other Editions
Paper (2009)
Related Links
Online Instructor's Manual Download RequestOpen this site in a new browser window.
Supplemental ContentOpen this site in a new browser window.
Find this book in a library
Request Exam/Desk Copy
< BACK
Introduction to Algorithms, Third Edition
Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest and Clifford Stein

    Preface
Download Chapter as PDF Sample Chapter - Download PDF (123 KB)
xiii

IFoundations

    Introduction3
    1The Role of Algorithms in Computing5
        1.1Algorithms5
        1.2Algorithms as a technology11
    2Getting Started16
        2.1Insertion sort16
        2.2Analyzing algorithms23
        2.3Designing algorithms29
    3Growth of Functions43
        3.1Asymptotic notation43
        3.2Standard notations and common functions53
    4Divide-and-Conquer65
        4.1The maximum-subarray problem68
        4.2Strassen's algorithm for matrix multiplication75
        4.3The substitution method for solving recurrences83
        4.4The recursion-tree method for solving recurrences88
        4.5The master method for solving recurrences93
        4.6Proof of the master theorem97
    5Probabilistic Analysis and Randomized Algorithms114
        5.1The hiring problem114
        5.2Indicator random variables118
        5.3Randomized algorithms122
        5.4Probabilistic analysis and further uses of indicator random variables130

IISorting and Order Statistics

    Introduction147
    6Heapsort151
        6.1Heaps151
        6.2Maintaining the heap property154
        6.3Building a heap156
        6.4The heapsort algorithm159
        6.5Priority queues162
    7Quicksort170
        7.1Description of quicksort170
        7.2Performance of quicksort174
        7.3A randomized version of quicksort179
        7.4Analysis of quicksort180
    8Sorting in Linear Time191
        8.1Lower bounds for sorting191
        8.2Counting sort194
        8.3Radix sort197
        8.4Bucket sort200
    9Medians and Order Statistics213
        9.1Minimum and maximum214
        9.2Selection in expected linear time215
        9.3Selection in worst-case linear time220

IIIData Structures

    Introduction229
    10Elementary Data Structures232
        10.1Stacks and queues232
        10.2Linked lists236
        10.3Implementing pointers and objects241
        10.4Representing rooted trees246
    11Hash Tables253
        11.1Direct-address tables254
        11.2Hash tables256
        11.3Hash functions262
        11.4Open addressing269
        11.5Perfect hashing277
    12Binary Search Trees286
        12.1What is a binary search tree?286
        12.2Querying a binary search tree289
        12.3Insertion and deletion294
        12.4Randomly built binary search trees299
    13Red-Black Trees308
        13.1Properties of red-black trees308
        13.2Rotations312
        13.3Insertion315
        13.4Deletion323
    14Augmenting Data Structures339
        14.1Dynamic order statistics339
        14.2How to augment a data structure345
        14.3Interval trees348

IVAdvanced Design and Analysis Techniques

    Introduction357
    15Dynamic Programming359
        15.1Rod cutting360
        15.2Matrix-chain multiplication370
        15.3Elements of dynamic programming378
        15.4Longest common subsequence390
        15.5Optimal binary search trees397
    16Greedy Algorithms414
        16.1An activity-selection problem415
        16.2Elements of the greedy strategy423
        16.3Huffman codes428
        16.4Matroids and greedy methods437
        16.5A task-scheduling problem as a matroid443
    17Amortized Analysis451
        17.1Aggregate analysis452
        17.2The accounting method456
        17.3The potential method459
        17.4Dynamic tables463

VAdvanced Data Structures

    Introduction481
    18B-Trees484
        18.1Definition of B-trees488
        18.2Basic operations on B-trees491
        18.3Deleting a key from a B-tree499
    19Fibonacci Heaps505
        19.1Structure of Fibonacci heaps507
        19.2Mergeable-heap operations510
        19.3Decreasing a key and deleting a node518
        19.4Bounding the maximum degree523
    20van Emde Boas Trees531
        20.1Preliminary approaches532
        20.2A recursive structure536
        20.3The van Emde Boas tree545
    21Data Structures for Disjoint Sets561
        21.1Disjoint-set operations561
        21.2Linked-list representation of disjoint sets564
        21.3Disjoint-set forests568
        21.4Analysis of union by rank with path compression573

VIGraph Algorithms

    Introduction587
    22Elementary Graph Algorithms589
        22.1Representations of graphs589
        22.2Breadth-first search594
        22.3Depth-first search603
        22.4Topological sort612
        22.5Strongly connected components615
    23Minimum Spanning Trees624
        23.1Growing a minimum spanning tree625
        23.2The algorithms of Kruskal and Prim631
    24Single-Source Shortest Paths643
        24.1The Bellman-Ford algorithm651
        24.2Single-source shortest paths in directed acyclic graphs655
        24.3Dijkstra's algorithm658
        24.4Difference constraints and shortest paths664
        24.5Proofs of shortest-paths properties671
    25All-Pairs Shortest Paths684
        25.1Shortest paths and matrix multiplication686
        25.2The Floyd-Warshall algorithm693
        25.3Johnson's algorithm for sparse graphs700
    26Maximum Flow708
        26.1Flow networks709
        26.2The Ford-Fulkerson method714
        26.3Maximum bipartite matching732
        26.4Push-relabel algorithms736
        26.5The relabel-to-front algorithm748

VIISelected Topics

    Introduction769
    27Multithreaded Algorithms
Download Chapter as PDF Sample Chapter - Download PDF (317 KB)
772
        27.1The basics of dynamic multithreading774
        27.2Multithreaded matrix multiplication792
        27.3Multithreaded merge sort797
    28Matrix Operations813
        28.1Solving systems of linear equations813
        28.2Inverting matrices827
        28.3Symmetric positive-definite matrices and least-squares approximation832
    29Linear Programming843
        29.1Standard and slack forms850
        29.2Formulating problems as linear programs859
        29.3The simplex algorithm864
        29.4Duality879
        29.5The initial basic feasible solution886
    30Polynomials and the FFT898
        30.1Representing polynomials900
        30.2The DFT and FFT906
        30.3Efficient FFT implementations915
    31Number-Theoretic Algorithms926
        31.1Elementary number-theoretic notions927
        31.2Greatest common divisor933
        31.3Modular arithmetic939
        31.4Solving modular linear equations946
        31.5The Chinese remainder theorem950
        31.6Powers of an element954
        31.7The RSA public-key cryptosystem958
        31.8Primality testing965
        31.9Integer factorization975
    32String Matching985
        32.1The naive string-matching algorithm988
        32.2The Rabin-Karp algorithm990
        32.3String matching with finite automata995
        32.4The Knuth-Morris-Pratt algorithm1002
    33Computational Geometry1014
        33.1Line-segment properties1015
        33.2Determining whether any pair of segments intersects1021
        33.3Finding the convex hull1029
        33.4Finding the closest pair of points1039
    34NP-Completeness1048
        34.1Polynomial time1053
        34.2Polynomial-time verification1061
        34.3NP-completeness and reducibility1067
        34.4NP-completeness proofs1078
        34.5NP-complete problems1086
    35Approximation Algorithms1106
        35.1The vertex-cover problem1108
        35.2The traveling-salesman problem1111
        35.3The set-covering problem1117
        35.4Randomization and linear programming1123
        35.5The subset-sum problem1128

VIIIAppendix: Mathematical Background

    Introduction1143
    ASummations1145
        A.1Summation formulas and properties1145
        A.2Bounding summations1149
    BSets, Etc.1158
        B.1Sets1158
        B.2Relations1163
        B.3Functions1166
        B.4Graphs1168
        B.5Trees1173
    CCounting and Probability1183
        C.1Counting1183
        C.2Probability1189
        C.3Discrete random variables1196
        C.4The geometric and binomial distributions1201
        C.5The tails of the binomial distribution1208
    DMatrices1217
        D.1Matrices and matrix operations1217
        D.2Basic matrix properties1222

    Bibliography1231
    Index
Download Chapter as PDF Sample Chapter - Download PDF (338 KB)
1251
 
Join an E-mail Alert List


 
 
TECHNOLOGY PARTNER: Azility, Inc. TERMS OF USE | PRIVACY POLICY | COPYRIGHT © 2009