Table of Contents
Acknowledgments ix
A Note to Readers xi
Chapter 1 Search Problems 1
Chapter 2 Exhaustive Search for an Informant 9
Chapter 3 Arrays and Indexes on a Criminal's Farm 17
Chapter 4 Strings and Hidden Messages 25
Chapter 5 Binary Search for a Smuggler's Ship 29
Chapter 6 Binary Search for Clues 39
Chapter 7 Adapting Algorithms for a Daring Escape 47
Chapter 8 Socks: An Interlude and an Introduction 57
Chapter 9 Backtracking to Keep the Search Going 65
Chapter 10 Picking Locks with Breadth-First Search 71
Chapter 11 Depth-First Search in an Abandoned Prison 83
Chapter 12 Cafeteria Stacks and Queues 93
Chapter 13 Stacks and Queues for Search 103
Chapter 14 Let's Split Up: Parallelized Search 109
Chapter 15 Iterative Deepening Can Save Your Life 117
Chapter 16 Inverted Indexes: The Search Narrows 127
Chapter 17 A Binary Search Tree Trap 135
Chapter 18 Building Binary Search Ladders 145
Chapter 19 Binary Search Trees for Suspects 151
Chapter 20 Adding Suspects to the Search Tree 163
Chapter 21 The Binary Search Tree Property 171
Chapter 22 Tries for Paperwork 175
Chapter 23 Best-First Search: A Detective's Most Trusted Tool 183
Chapter 24 Priority Queues for Investigations 193
Chapter 25 Priority Queues for Lock Picking 201
Chapter 26 Heuristics in Search 207
Chapter 27 Heaps in Politics and Academia 213
Chapter 28 Difficult Search Problems 223
Chapter 29 Search Termination 231
Epilogue 237
Index 239