1CHAPTER 1 Introduction to Algorithms
463.3.4 Exponential Search
21.1 Understanding Algorithmic Problems
473.3.5 Fibonacci Search
31.1.1 Problem Definition
48CHAPTER 4 Graph and Tree Algorithms
41.1.2 Problem Analysis Techniques
494.1.2 Graph Traversal Algorithms
51.2 Basic Algorithm Design Techniques
504.2 Shortest Path Algorithms
61.2.1 Brute Force
514.2.1 Dijkstra’s Algorithm
71.2.2 Greedy Algorithms
524.2.4 Johnson’s Algorithm
81.2.3 Divide and Conquer
534.3 Tree Algorithms
91.2.4 Dynamic Programming
544.3.1 Binary Trees
101.3 Algorithmic Problem Solving Strategies
554.3.3 AVL Trees
111.3.1 Problem Reduction
564.3.4 Red-Black Trees
121.3.2 Problem Transformation
57CHAPTER 5 Dynamic Programming
131.3.3 Problem Enumeration
585.1 Principles of Dynamic Programming
141.3.4 Problem Approximation
595.1.1 Overlapping Subproblems
151.3.5 Problem Modelling
605.1.3 Memoization
16CHAPTER 2 Data Structures
615.2 Classic Dynamic Programming Problems
172.1 Arrays and Strings
625.2.1 Knapsack Problem
182.1.1 One-dimensional Arrays
635.2.2 Longest Common Subsequence
192.1.2 Two-dimensional Arrays
645.2.3 Matrix Chain Multiplication
202.1.3 Strings and String Manipulation
655.2.5 Coin Change Problem
212.1.4 String Matching Algorithms
665.3 Advanced Dynamic Programming Techniques
222.1.5 Trie Data Structure
675.3.1 Bitmasking
232.2 Linked List
685.3.3 State Compression
241.1.1 Singly Linked Lists
695.3.4 Rolling Arrays
251.1.2 Doubly Linked Lists
70CHAPTER 6 Backtracking and Branch and Bound
261.1.3 Circular Linked Lists
716.1 Introduction to Backtracking
272.2.4 Skip Lists
726.1.1 Principles of Backtracking
282.3 Stacks and Queues
736.1.2 Backtracking Algorithms
292.3.1 Stack Operations and Implementations
746.2.1 Principles of Branch and Bound
302.3.2 Queue Operations and Implementations
756.2.2 Branch and Bound Algorithms
312.3.4 Double-ended Queues (Dequeues)
766.3 Optimization with Backtracking and Branch and Bound
32CHAPTER 3 Sorting and Searching
776.3.1 Pruning Strategies
333.1 Overview of Sorting Algorithms
786.3.2 Heuristic Selection
343.1.1 Bubble Sort
796.3.3 Problem-specific Techniques
353.1.2 Insertion Sort
806.3.5 Applications in Real-world Problems
363.1.3 Selection Sort
81CHAPTER 7 Graph Optimization Problems
373.1.5 Quick Sort
827.1 Minimum Spanning Trees
383.2 Advanced Sorting Techniques
837.2 Maximum Flow Problems
393.2.1 Heap Sort
84CHAPTER 8 Number Theory and Combinatorics
403.2.2 Counting Sort
858.1 Prime Numbers and Factorization
413.2.4 Bucket Sort
868.2 Combinatorial Optimization
423.2.5 Comparison of Sorting Algorithms
878.3 Number-Theoretic Algorithms
433.3 Searching Algorithms
88Glossary
443.3.1 Linear Search
89Index
453.3.2 Binary Search