{"product_id":"essential-algorithms-isbn-9781119575993","title":"Essential Algorithms","description":"\u003cp\u003e\u003cb\u003eA friendly introduction to the most useful algorithms written in simple, intuitive English\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eThe revised and updated second edition of\u003ci\u003e Essential Algorithms, \u003c\/i\u003eoffers an accessible introduction to computer algorithms. The book contains a description of important classical algorithms and explains when each is appropriate. The author shows how to analyze algorithms in order to understand their behavior and teaches techniques that the can be used to create new algorithms to meet future needs. The text includes useful algorithms such as: methods for manipulating common data structures, advanced data structures, network algorithms, and numerical algorithms. It also offers a variety of general problem-solving techniques.\u003c\/p\u003e \u003cp\u003eIn addition to describing algorithms and approaches, the author offers details on how to analyze the performance of algorithms. The book is filled with exercises that can be used to explore ways to modify the algorithms in order to apply them to new situations. This updated edition of \u003ci\u003eEssential Algorithms\u003c\/i\u003e:\u003c\/p\u003e \u003cul\u003e \u003cli\u003eContains explanations of algorithms in simple terms, rather than complicated math\u003c\/li\u003e \u003cli\u003eSteps through powerful algorithms that can be used to solve difficult programming problems\u003c\/li\u003e \u003cli\u003eHelps prepare for programming job interviews that typically include algorithmic questions\u003c\/li\u003e \u003cli\u003eOffers methods can be applied to any programming language\u003c\/li\u003e \u003cli\u003eIncludes exercises and solutions useful to both professionals and students\u003c\/li\u003e \u003cli\u003eProvides code examples updated and written in Python and C#\u003c\/li\u003e \u003c\/ul\u003e \u003cp\u003e\u003ci\u003eEssential Algorithms\u003c\/i\u003e has been updated and revised and offers professionals and students a hands-on guide to analyzing algorithms as well as the techniques and applications. The book also includes a collection of questions that may appear in a job interview. The book’s website will include reference implementations in Python and C# (which can be easily applied to Java and C++).\u003c\/p\u003e \u003cp\u003eIntroduction xxix\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 1 Algorithm Basics 1\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eApproach 2\u003c\/p\u003e \u003cp\u003eAlgorithms and Data Structures 2\u003c\/p\u003e \u003cp\u003ePseudocode 3\u003c\/p\u003e \u003cp\u003eAlgorithm Features 6\u003c\/p\u003e \u003cp\u003eBig O Notation 7\u003c\/p\u003e \u003cp\u003eRule 1 8\u003c\/p\u003e \u003cp\u003eRule 2 8\u003c\/p\u003e \u003cp\u003eRule 3 9\u003c\/p\u003e \u003cp\u003eRule 4 9\u003c\/p\u003e \u003cp\u003eRule 5 10\u003c\/p\u003e \u003cp\u003eCommon Run Time Functions 11\u003c\/p\u003e \u003cp\u003e1 11\u003c\/p\u003e \u003cp\u003eLog N 11\u003c\/p\u003e \u003cp\u003eSqrt N 14\u003c\/p\u003e \u003cp\u003eN 14\u003c\/p\u003e \u003cp\u003eN log N 15\u003c\/p\u003e \u003cp\u003eN\u003csup\u003e\u003ci\u003e2 \u003c\/i\u003e\u003c\/sup\u003e15\u003c\/p\u003e \u003cp\u003e2\u003csup\u003eN\u003c\/sup\u003e 15\u003c\/p\u003e \u003cp\u003eN! 16\u003c\/p\u003e \u003cp\u003eVisualizing Functions 16\u003c\/p\u003e \u003cp\u003ePractical Considerations 18\u003c\/p\u003e \u003cp\u003eSummary 19\u003c\/p\u003e \u003cp\u003eExercises 20\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 2 Numerical Algorithms 23\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eRandomizing Data 23\u003c\/p\u003e \u003cp\u003eGenerating Random Values 23\u003c\/p\u003e \u003cp\u003eGenerating Values 24\u003c\/p\u003e \u003cp\u003eEnsuring Fairness 26\u003c\/p\u003e \u003cp\u003eGetting Fairness from Biased Sources 28\u003c\/p\u003e \u003cp\u003eRandomizing Arrays 29\u003c\/p\u003e \u003cp\u003eGenerating Nonuniform Distributions 30\u003c\/p\u003e \u003cp\u003eMaking Random Walks 31\u003c\/p\u003e \u003cp\u003eMaking Self-Avoiding Walks 33\u003c\/p\u003e \u003cp\u003eMaking Complete Self-Avoiding Walks 34\u003c\/p\u003e \u003cp\u003eFinding Greatest Common Divisors 36\u003c\/p\u003e \u003cp\u003eCalculating Greatest Common Divisors 36\u003c\/p\u003e \u003cp\u003eExtending Greatest Common Divisors 38\u003c\/p\u003e \u003cp\u003ePerforming Exponentiation 40\u003c\/p\u003e \u003cp\u003eWorking with Prime Numbers 42\u003c\/p\u003e \u003cp\u003eFinding Prime Factors 42\u003c\/p\u003e \u003cp\u003eFinding Primes 44\u003c\/p\u003e \u003cp\u003eTesting for Primality 45\u003c\/p\u003e \u003cp\u003ePerforming Numerical Integration 47\u003c\/p\u003e \u003cp\u003eThe Rectangle Rule 48\u003c\/p\u003e \u003cp\u003eThe Trapezoid Rule 49\u003c\/p\u003e \u003cp\u003eAdaptive Quadrature 50\u003c\/p\u003e \u003cp\u003eMonte Carlo Integration 54\u003c\/p\u003e \u003cp\u003eFinding Zeros 55\u003c\/p\u003e \u003cp\u003eGaussian Elimination 57\u003c\/p\u003e \u003cp\u003eForward Elimination 58\u003c\/p\u003e \u003cp\u003eBack Substitution 60\u003c\/p\u003e \u003cp\u003eThe Algorithm 61\u003c\/p\u003e \u003cp\u003eLeast Squares Fits 62\u003c\/p\u003e \u003cp\u003eLinear Least Squares 62\u003c\/p\u003e \u003cp\u003ePolynomial Least Squares 64\u003c\/p\u003e \u003cp\u003eSummary 67\u003c\/p\u003e \u003cp\u003eExercises 68\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 3 Linked Lists 71\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eBasic Concepts 71\u003c\/p\u003e \u003cp\u003eSingly Linked Lists 72\u003c\/p\u003e \u003cp\u003eIterating Over the List 73\u003c\/p\u003e \u003cp\u003eFinding Cells 73\u003c\/p\u003e \u003cp\u003eUsing Sentinels 74\u003c\/p\u003e \u003cp\u003eAdding Cells at the Beginning 75\u003c\/p\u003e \u003cp\u003eAdding Cells at the End 76\u003c\/p\u003e \u003cp\u003eInserting Cells After Other Cells 77\u003c\/p\u003e \u003cp\u003eDeleting Cells 78\u003c\/p\u003e \u003cp\u003eDoubly Linked Lists 79\u003c\/p\u003e \u003cp\u003eSorted Linked Lists 81\u003c\/p\u003e \u003cp\u003eSelf-Organizing Linked Lists 82\u003c\/p\u003e \u003cp\u003eMove to Front (MTF) 83\u003c\/p\u003e \u003cp\u003eSwap 83\u003c\/p\u003e \u003cp\u003eCount 84\u003c\/p\u003e \u003cp\u003eHybrid Methods 84\u003c\/p\u003e \u003cp\u003ePseudocode 85\u003c\/p\u003e \u003cp\u003eLinked-List Algorithms 86\u003c\/p\u003e \u003cp\u003eCopying Lists 86\u003c\/p\u003e \u003cp\u003eSorting with Insertionsort 87\u003c\/p\u003e \u003cp\u003eSorting with Selectionsort 88\u003c\/p\u003e \u003cp\u003eMultithreaded Linked Lists 90\u003c\/p\u003e \u003cp\u003eLinked Lists with Loops 91\u003c\/p\u003e \u003cp\u003eMarking Cells 92\u003c\/p\u003e \u003cp\u003eUsing Hash Tables 93\u003c\/p\u003e \u003cp\u003eList Retracing 94\u003c\/p\u003e \u003cp\u003eList Reversal 95\u003c\/p\u003e \u003cp\u003eTortoise and Hare 98\u003c\/p\u003e \u003cp\u003eLoops in Doubly Linked Lists 100\u003c\/p\u003e \u003cp\u003eSummary 100\u003c\/p\u003e \u003cp\u003eExercises 101\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 4 Arrays 103\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eBasic Concepts 103\u003c\/p\u003e \u003cp\u003eOne-Dimensional Arrays 106\u003c\/p\u003e \u003cp\u003eFinding Items 106\u003c\/p\u003e \u003cp\u003eFinding Minimum, Maximum, and Average 107\u003c\/p\u003e \u003cp\u003eFinding Median 108\u003c\/p\u003e \u003cp\u003eFinding Mode 109\u003c\/p\u003e \u003cp\u003eInserting Items 112\u003c\/p\u003e \u003cp\u003eRemoving Items 113\u003c\/p\u003e \u003cp\u003eNonzero Lower Bounds 114\u003c\/p\u003e \u003cp\u003eTwo Dimensions 114\u003c\/p\u003e \u003cp\u003eHigher Dimensions 115\u003c\/p\u003e \u003cp\u003eTriangular Arrays 118\u003c\/p\u003e \u003cp\u003eSparse Arrays 121\u003c\/p\u003e \u003cp\u003eFind a Row or Column 123\u003c\/p\u003e \u003cp\u003eGet a Value 124\u003c\/p\u003e \u003cp\u003eSet a Value 125\u003c\/p\u003e \u003cp\u003eDelete a Value 127\u003c\/p\u003e \u003cp\u003eMatrices 129\u003c\/p\u003e \u003cp\u003eSummary 131\u003c\/p\u003e \u003cp\u003eExercises 132\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 5 Stacks and Queues 135\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eStacks 135\u003c\/p\u003e \u003cp\u003eLinked-List Stacks 136\u003c\/p\u003e \u003cp\u003eArray Stacks 138\u003c\/p\u003e \u003cp\u003eDouble Stacks 139\u003c\/p\u003e \u003cp\u003eStack Algorithms 141\u003c\/p\u003e \u003cp\u003eReversing an Array 141\u003c\/p\u003e \u003cp\u003eTrain Sorting 142\u003c\/p\u003e \u003cp\u003eTower of Hanoi 143\u003c\/p\u003e \u003cp\u003eStack Insertionsort 145\u003c\/p\u003e \u003cp\u003eStack Selectionsort 146\u003c\/p\u003e \u003cp\u003eQueues 147\u003c\/p\u003e \u003cp\u003eLinked-List Queues 148\u003c\/p\u003e \u003cp\u003eArray Queues 148\u003c\/p\u003e \u003cp\u003eSpecialized Queues 151\u003c\/p\u003e \u003cp\u003ePriority Queues 151\u003c\/p\u003e \u003cp\u003eDeques 152\u003c\/p\u003e \u003cp\u003eBinomial Heaps 152\u003c\/p\u003e \u003cp\u003eBinomial Trees 152\u003c\/p\u003e \u003cp\u003eBinomial Heaps 154\u003c\/p\u003e \u003cp\u003eMerging Trees 155\u003c\/p\u003e \u003cp\u003eMerging Heaps 156\u003c\/p\u003e \u003cp\u003eMerging Tree Lists 156\u003c\/p\u003e \u003cp\u003eMerging Trees 158\u003c\/p\u003e \u003cp\u003eEnqueue 161\u003c\/p\u003e \u003cp\u003eDequeue 162\u003c\/p\u003e \u003cp\u003eRuntime 163\u003c\/p\u003e \u003cp\u003eSummary 163\u003c\/p\u003e \u003cp\u003eExercises 164\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 6 Sorting 167\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eO(N\u003csup\u003e2\u003c\/sup\u003e ) Algorithms 168\u003c\/p\u003e \u003cp\u003eInsertionsort in Arrays 168\u003c\/p\u003e \u003cp\u003eSelectionsort in Arrays 170\u003c\/p\u003e \u003cp\u003eBubblesort 171\u003c\/p\u003e \u003cp\u003eO(NlogN) Algorithms 174\u003c\/p\u003e \u003cp\u003eHeapsort 175\u003c\/p\u003e \u003cp\u003eStoring Complete Binary Trees 175\u003c\/p\u003e \u003cp\u003eDefining Heaps 176\u003c\/p\u003e \u003cp\u003eImplementing Heapsort 180\u003c\/p\u003e \u003cp\u003eQuicksort 181\u003c\/p\u003e \u003cp\u003eAnalyzing Quicksort’s Run Time 182\u003c\/p\u003e \u003cp\u003ePicking a Dividing Item 184\u003c\/p\u003e \u003cp\u003eImplementing Quicksort with Stacks 185\u003c\/p\u003e \u003cp\u003eImplementing Quicksort in Place 185\u003c\/p\u003e \u003cp\u003eUsing Quicksort 188\u003c\/p\u003e \u003cp\u003eMergesort 189\u003c\/p\u003e \u003cp\u003eSub O(NlogN) Algorithms 192\u003c\/p\u003e \u003cp\u003eCountingsort 192\u003c\/p\u003e \u003cp\u003ePigeonhole Sort 193\u003c\/p\u003e \u003cp\u003eBucketsort 195\u003c\/p\u003e \u003cp\u003eSummary 197\u003c\/p\u003e \u003cp\u003eExercises 198\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 7 Searching 201\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eLinear Search 202\u003c\/p\u003e \u003cp\u003eBinary Search 203\u003c\/p\u003e \u003cp\u003eInterpolation Search 204\u003c\/p\u003e \u003cp\u003eMajority Voting 205\u003c\/p\u003e \u003cp\u003eSummary 207\u003c\/p\u003e \u003cp\u003eExercises 208\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 8 Hash Tables 209\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eHash Table Fundamentals 210\u003c\/p\u003e \u003cp\u003eChaining 211\u003c\/p\u003e \u003cp\u003eOpen Addressing 213\u003c\/p\u003e \u003cp\u003eRemoving Items 214\u003c\/p\u003e \u003cp\u003eLinear Probing 215\u003c\/p\u003e \u003cp\u003eQuadratic Probing 217\u003c\/p\u003e \u003cp\u003ePseudorandom Probing 219\u003c\/p\u003e \u003cp\u003eDouble Hashing 219\u003c\/p\u003e \u003cp\u003eOrdered Hashing 219\u003c\/p\u003e \u003cp\u003eSummary 222\u003c\/p\u003e \u003cp\u003eExercises 222\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 9 Recursion 227\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eBasic Algorithms 228\u003c\/p\u003e \u003cp\u003eFactorial 228\u003c\/p\u003e \u003cp\u003eFibonacci Numbers 230\u003c\/p\u003e \u003cp\u003eRod-Cutting 232\u003c\/p\u003e \u003cp\u003eBrute Force 233\u003c\/p\u003e \u003cp\u003eRecursion 233\u003c\/p\u003e \u003cp\u003eTower of Hanoi 235\u003c\/p\u003e \u003cp\u003eGraphical Algorithms 238\u003c\/p\u003e \u003cp\u003eKoch Curves 239\u003c\/p\u003e \u003cp\u003eHilbert Curve 241\u003c\/p\u003e \u003cp\u003eSierpiński Curve 243\u003c\/p\u003e \u003cp\u003eGaskets 246\u003c\/p\u003e \u003cp\u003eThe Skyline Problem 247\u003c\/p\u003e \u003cp\u003eLists 248\u003c\/p\u003e \u003cp\u003eDivide and Conquer 249\u003c\/p\u003e \u003cp\u003eBacktracking Algorithms 252\u003c\/p\u003e \u003cp\u003eEight Queens Problem 254\u003c\/p\u003e \u003cp\u003eKnight’s Tour 257\u003c\/p\u003e \u003cp\u003eSelections and Permutations 260\u003c\/p\u003e \u003cp\u003eSelections with Loops 261\u003c\/p\u003e \u003cp\u003eSelections with Duplicates 262\u003c\/p\u003e \u003cp\u003eSelections without Duplicates 264\u003c\/p\u003e \u003cp\u003ePermutations with Duplicates 265\u003c\/p\u003e \u003cp\u003ePermutations without Duplicates 266\u003c\/p\u003e \u003cp\u003eRound-Robin Scheduling 267\u003c\/p\u003e \u003cp\u003eOdd Number of Teams 268\u003c\/p\u003e \u003cp\u003eEven Number of Teams 270\u003c\/p\u003e \u003cp\u003eImplementation 271\u003c\/p\u003e \u003cp\u003eRecursion Removal 273\u003c\/p\u003e \u003cp\u003eTail Recursion Removal 274\u003c\/p\u003e \u003cp\u003eDynamic Programming 275\u003c\/p\u003e \u003cp\u003eBottom-Up Programming 277\u003c\/p\u003e \u003cp\u003eGeneral Recursion Removal 277\u003c\/p\u003e \u003cp\u003eSummary 280\u003c\/p\u003e \u003cp\u003eExercises 281\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 10 Trees 285\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eTree Terminology 285\u003c\/p\u003e \u003cp\u003eBinary Tree Properties 289\u003c\/p\u003e \u003cp\u003eTree Representations 292\u003c\/p\u003e \u003cp\u003eBuilding Trees in General 292\u003c\/p\u003e \u003cp\u003eBuilding Complete Trees 295\u003c\/p\u003e \u003cp\u003eTree Traversal 296\u003c\/p\u003e \u003cp\u003ePreorder Traversal 297\u003c\/p\u003e \u003cp\u003eInorder Traversal 299\u003c\/p\u003e \u003cp\u003ePostorder Traversal 300\u003c\/p\u003e \u003cp\u003eBreadth-First Traversal 301\u003c\/p\u003e \u003cp\u003eTraversal Uses 302\u003c\/p\u003e \u003cp\u003eTraversal Run Times 303\u003c\/p\u003e \u003cp\u003eSorted Trees 303\u003c\/p\u003e \u003cp\u003eAdding Nodes 303\u003c\/p\u003e \u003cp\u003eFinding Nodes 306\u003c\/p\u003e \u003cp\u003eDeleting Nodes 306\u003c\/p\u003e \u003cp\u003eLowest Common Ancestors 309\u003c\/p\u003e \u003cp\u003eSorted Trees 309\u003c\/p\u003e \u003cp\u003eParent Pointers 310\u003c\/p\u003e \u003cp\u003eParents and Depths 311\u003c\/p\u003e \u003cp\u003eGeneral Trees 312\u003c\/p\u003e \u003cp\u003eEuler Tours 314\u003c\/p\u003e \u003cp\u003eAll Pairs 316\u003c\/p\u003e \u003cp\u003eThreaded Trees 317\u003c\/p\u003e \u003cp\u003eBuilding Threaded Trees 318\u003c\/p\u003e \u003cp\u003eUsing Threaded Trees 320\u003c\/p\u003e \u003cp\u003eSpecialized Tree Algorithms 322\u003c\/p\u003e \u003cp\u003eThe Animal Game 322\u003c\/p\u003e \u003cp\u003eExpression Evaluation 324\u003c\/p\u003e \u003cp\u003eInterval Trees 326\u003c\/p\u003e \u003cp\u003eBuilding the Tree 328\u003c\/p\u003e \u003cp\u003eIntersecting with Points 329\u003c\/p\u003e \u003cp\u003eIntersecting with Intervals 330\u003c\/p\u003e \u003cp\u003eQuadtrees 332\u003c\/p\u003e \u003cp\u003eAdding Items 335\u003c\/p\u003e \u003cp\u003eFinding Items 336\u003c\/p\u003e \u003cp\u003eTries 337\u003c\/p\u003e \u003cp\u003eAdding Items 339\u003c\/p\u003e \u003cp\u003eFinding Items 341\u003c\/p\u003e \u003cp\u003eSummary 342\u003c\/p\u003e \u003cp\u003eExercises 342\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 11 Balanced Trees 349\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eAVL Trees 350\u003c\/p\u003e \u003cp\u003eAdding Values 350\u003c\/p\u003e \u003cp\u003eDeleting Values 353\u003c\/p\u003e \u003cp\u003e2-3 Trees 354\u003c\/p\u003e \u003cp\u003eAdding Values 355\u003c\/p\u003e \u003cp\u003eDeleting Values 356\u003c\/p\u003e \u003cp\u003eB-Trees 359\u003c\/p\u003e \u003cp\u003eAdding Values 360\u003c\/p\u003e \u003cp\u003eDeleting Values 361\u003c\/p\u003e \u003cp\u003eBalanced Tree Variations 362\u003c\/p\u003e \u003cp\u003eTop-down B-trees 363\u003c\/p\u003e \u003cp\u003eB+trees 363\u003c\/p\u003e \u003cp\u003eSummary 365\u003c\/p\u003e \u003cp\u003eExercises 365\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 12 Decision Trees 367\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eSearching Game Trees 368\u003c\/p\u003e \u003cp\u003eMinimax 369\u003c\/p\u003e \u003cp\u003eInitial Moves and Responses 373\u003c\/p\u003e \u003cp\u003eGame Tree Heuristics 374\u003c\/p\u003e \u003cp\u003eSearching General Decision Trees 375\u003c\/p\u003e \u003cp\u003eOptimization Problems 376\u003c\/p\u003e \u003cp\u003eExhaustive Search 377\u003c\/p\u003e \u003cp\u003eBranch and Bound 379\u003c\/p\u003e \u003cp\u003eDecision Tree Heuristics 381\u003c\/p\u003e \u003cp\u003eRandom Search 381\u003c\/p\u003e \u003cp\u003eImproving Paths 382\u003c\/p\u003e \u003cp\u003eSimulated Annealing 384\u003c\/p\u003e \u003cp\u003eHill Climbing 385\u003c\/p\u003e \u003cp\u003eSorted Hill Climbing 386\u003c\/p\u003e \u003cp\u003eOther Decision Tree Problems 387\u003c\/p\u003e \u003cp\u003eGeneralized Partition Problem 387\u003c\/p\u003e \u003cp\u003eSubset Sum 388\u003c\/p\u003e \u003cp\u003eBin Packing 388\u003c\/p\u003e \u003cp\u003eCutting Stock 389\u003c\/p\u003e \u003cp\u003eKnapsack 390\u003c\/p\u003e \u003cp\u003eTraveling Salesman Problem 391\u003c\/p\u003e \u003cp\u003eSatisfiability 391\u003c\/p\u003e \u003cp\u003eSwarm Intelligence 392\u003c\/p\u003e \u003cp\u003eAnt Colony Optimization 393\u003c\/p\u003e \u003cp\u003eGeneral Optimization 393\u003c\/p\u003e \u003cp\u003eTraveling Salesman 393\u003c\/p\u003e \u003cp\u003eBees Algorithm 394\u003c\/p\u003e \u003cp\u003eSwarm Simulation 394\u003c\/p\u003e \u003cp\u003eBoids 395\u003c\/p\u003e \u003cp\u003ePseudoclassical Mechanics 396\u003c\/p\u003e \u003cp\u003eGoals and Obstacles 397\u003c\/p\u003e \u003cp\u003eSummary 397\u003c\/p\u003e \u003cp\u003eExercises 398\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 13 Basic Network Algorithms 403\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eNetwork Terminology 403\u003c\/p\u003e \u003cp\u003eNetwork Representations 407\u003c\/p\u003e \u003cp\u003eTraversals 409\u003c\/p\u003e \u003cp\u003eDepth-First Traversal 410\u003c\/p\u003e \u003cp\u003eBreadth-First Traversal 412\u003c\/p\u003e \u003cp\u003eConnectivity Testing 413\u003c\/p\u003e \u003cp\u003eSpanning Trees 416\u003c\/p\u003e \u003cp\u003eMinimal Spanning Trees 417\u003c\/p\u003e \u003cp\u003eEuclidean Minimum Spanning Trees 418\u003c\/p\u003e \u003cp\u003eBuilding Mazes 419\u003c\/p\u003e \u003cp\u003eStrongly Connected Components 420\u003c\/p\u003e \u003cp\u003eKosaraju’s Algorithm 421\u003c\/p\u003e \u003cp\u003eAlgorithm Discussion 422\u003c\/p\u003e \u003cp\u003eFinding Paths 425\u003c\/p\u003e \u003cp\u003eFinding Any Path 425\u003c\/p\u003e \u003cp\u003eLabel-Setting Shortest Paths 426\u003c\/p\u003e \u003cp\u003eLabel-Correcting Shortest Paths 430\u003c\/p\u003e \u003cp\u003eAll-Pairs Shortest Paths 431\u003c\/p\u003e \u003cp\u003eTransitivity 436\u003c\/p\u003e \u003cp\u003eTransitive Closure 437\u003c\/p\u003e \u003cp\u003eTransitive Reduction 438\u003c\/p\u003e \u003cp\u003eAcyclic Networks 439\u003c\/p\u003e \u003cp\u003eGeneral Networks 440\u003c\/p\u003e \u003cp\u003eShortest Path Modifications 441\u003c\/p\u003e \u003cp\u003eShape Points 441\u003c\/p\u003e \u003cp\u003eEarly Stopping 442\u003c\/p\u003e \u003cp\u003eBidirectional Search 442\u003c\/p\u003e \u003cp\u003eBest-First Search 442\u003c\/p\u003e \u003cp\u003eTurn Penalties and Prohibitions 443\u003c\/p\u003e \u003cp\u003eGeometric Calculations 443\u003c\/p\u003e \u003cp\u003eExpanded Node Networks 444\u003c\/p\u003e \u003cp\u003eInterchange Networks 445\u003c\/p\u003e \u003cp\u003eSummary 447\u003c\/p\u003e \u003cp\u003eExercises 447\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 14 More Network Algorithms 451\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eTopological Sorting 451\u003c\/p\u003e \u003cp\u003eCycle Detection 455\u003c\/p\u003e \u003cp\u003eMap Coloring 456\u003c\/p\u003e \u003cp\u003eTwo-Coloring 456\u003c\/p\u003e \u003cp\u003eThree-Coloring 458\u003c\/p\u003e \u003cp\u003eFour-Coloring 459\u003c\/p\u003e \u003cp\u003eFive-Coloring 459\u003c\/p\u003e \u003cp\u003eOther Map-Coloring Algorithms 462\u003c\/p\u003e \u003cp\u003eMaximal Flow 464\u003c\/p\u003e \u003cp\u003eWork Assignment 467\u003c\/p\u003e \u003cp\u003eMinimal Flow Cut 468\u003c\/p\u003e \u003cp\u003eNetwork Cloning 470\u003c\/p\u003e \u003cp\u003eDictionaries 471\u003c\/p\u003e \u003cp\u003eClone References 472\u003c\/p\u003e \u003cp\u003eCliques 473\u003c\/p\u003e \u003cp\u003eBrute Force 474\u003c\/p\u003e \u003cp\u003eBron–Kerbosch 475\u003c\/p\u003e \u003cp\u003eSets R, P, and X 475\u003c\/p\u003e \u003cp\u003eRecursive Calls 476\u003c\/p\u003e \u003cp\u003ePseudocode 476\u003c\/p\u003e \u003cp\u003eExample 477\u003c\/p\u003e \u003cp\u003eVariations 480\u003c\/p\u003e \u003cp\u003eFinding Triangles 480\u003c\/p\u003e \u003cp\u003eBrute Force 481\u003c\/p\u003e \u003cp\u003eChecking Local Links 481\u003c\/p\u003e \u003cp\u003eChiba and Nishizeki 482\u003c\/p\u003e \u003cp\u003eCommunity Detection 483\u003c\/p\u003e \u003cp\u003eMaximal Cliques 483\u003c\/p\u003e \u003cp\u003eGirvan–Newman 483\u003c\/p\u003e \u003cp\u003eClique Percolation 485\u003c\/p\u003e \u003cp\u003eEulerian Paths and Cycles 485\u003c\/p\u003e \u003cp\u003eBrute Force 486\u003c\/p\u003e \u003cp\u003eFleury’s Algorithm 486\u003c\/p\u003e \u003cp\u003eHierholzer’s Algorithm 487\u003c\/p\u003e \u003cp\u003eSummary 488\u003c\/p\u003e \u003cp\u003eExercises 489\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 15 String Algorithms 493\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eMatching Parentheses 494\u003c\/p\u003e \u003cp\u003eEvaluating Arithmetic Expressions 495\u003c\/p\u003e \u003cp\u003eBuilding Parse Trees 496\u003c\/p\u003e \u003cp\u003ePattern Matching 497\u003c\/p\u003e \u003cp\u003eDFAs 497\u003c\/p\u003e \u003cp\u003eBuilding DFAs for Regular Expressions 500\u003c\/p\u003e \u003cp\u003eNFAs 502\u003c\/p\u003e \u003cp\u003eString Searching 504\u003c\/p\u003e \u003cp\u003eCalculating Edit Distance 508\u003c\/p\u003e \u003cp\u003ePhonetic Algorithms 511\u003c\/p\u003e \u003cp\u003eSoundex 511\u003c\/p\u003e \u003cp\u003eMetaphone 513\u003c\/p\u003e \u003cp\u003eSummary 514\u003c\/p\u003e \u003cp\u003eExercises 515\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 16 Cryptography 519\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eTerminology 520\u003c\/p\u003e \u003cp\u003eTransposition Ciphers 521\u003c\/p\u003e \u003cp\u003eRow\/Column Transposition 521\u003c\/p\u003e \u003cp\u003eColumn Transposition 523\u003c\/p\u003e \u003cp\u003eRoute Ciphers 525\u003c\/p\u003e \u003cp\u003eSubstitution Ciphers 526\u003c\/p\u003e \u003cp\u003eCaesar Substitution 526\u003c\/p\u003e \u003cp\u003eVigenere Cipher 527\u003c\/p\u003e \u003cp\u003eSimple Substitution 529\u003c\/p\u003e \u003cp\u003eOne-Time Pads 530\u003c\/p\u003e \u003cp\u003eBlock Ciphers 531\u003c\/p\u003e \u003cp\u003eSubstitution-Permutation Networks 531\u003c\/p\u003e \u003cp\u003eFeistel Ciphers 533\u003c\/p\u003e \u003cp\u003ePublic-Key Encryption and RSA 534\u003c\/p\u003e \u003cp\u003eEuler’s Totient Function 535\u003c\/p\u003e \u003cp\u003eMultiplicative Inverses 536\u003c\/p\u003e \u003cp\u003eAn RSA Example 536\u003c\/p\u003e \u003cp\u003ePractical Considerations 537\u003c\/p\u003e \u003cp\u003eOther Uses for Cryptography 538\u003c\/p\u003e \u003cp\u003eSummary 539\u003c\/p\u003e \u003cp\u003eExercises 540\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 17 Complexity Theory 543\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eNotation 544\u003c\/p\u003e \u003cp\u003eComplexity Classes 545\u003c\/p\u003e \u003cp\u003eReductions 548\u003c\/p\u003e \u003cp\u003e3SAT 549\u003c\/p\u003e \u003cp\u003eBipartite Matching 550\u003c\/p\u003e \u003cp\u003eNP-Hardness 550\u003c\/p\u003e \u003cp\u003eDetection, Reporting, and Optimization Problems 551\u003c\/p\u003e \u003cp\u003eDetection ≤\u003csub\u003ep\u003c\/sub\u003e Reporting 552\u003c\/p\u003e \u003cp\u003eReporting ≤\u003csub\u003ep\u003c\/sub\u003e Optimization 552\u003c\/p\u003e \u003cp\u003eReporting ≤\u003csub\u003ep\u003c\/sub\u003e Detection 552\u003c\/p\u003e \u003cp\u003eOptimization ≤\u003csub\u003ep\u003c\/sub\u003e Reporting 553\u003c\/p\u003e \u003cp\u003eApproximate Optimization 553\u003c\/p\u003e \u003cp\u003eNP-Complete Problems 554\u003c\/p\u003e \u003cp\u003eSummary 557\u003c\/p\u003e \u003cp\u003eExercises 558\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 18 Distributed Algorithms 561\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eTypes of Parallelism 562\u003c\/p\u003e \u003cp\u003eSystolic Arrays 562\u003c\/p\u003e \u003cp\u003eDistributed Computing 565\u003c\/p\u003e \u003cp\u003eMulti-CPU Processing 567\u003c\/p\u003e \u003cp\u003eRace Conditions 567\u003c\/p\u003e \u003cp\u003eDeadlock 571\u003c\/p\u003e \u003cp\u003eQuantum Computing 572\u003c\/p\u003e \u003cp\u003eDistributed Algorithms 573\u003c\/p\u003e \u003cp\u003eDebugging Distributed Algorithms 573\u003c\/p\u003e \u003cp\u003eEmbarrassingly Parallel Algorithms 574\u003c\/p\u003e \u003cp\u003eMergesort 576\u003c\/p\u003e \u003cp\u003eDining Philosophers 577\u003c\/p\u003e \u003cp\u003eRandomization 578\u003c\/p\u003e \u003cp\u003eResource Hierarchy 578\u003c\/p\u003e \u003cp\u003eWaiter 579\u003c\/p\u003e \u003cp\u003eChandy\/Misra 579\u003c\/p\u003e \u003cp\u003eThe Two Generals Problem 580\u003c\/p\u003e \u003cp\u003eByzantine Generals 581\u003c\/p\u003e \u003cp\u003eConsensus 584\u003c\/p\u003e \u003cp\u003eLeader Election 587\u003c\/p\u003e \u003cp\u003eSnapshot 588\u003c\/p\u003e \u003cp\u003eClock Synchronization 589\u003c\/p\u003e \u003cp\u003eSummary 591\u003c\/p\u003e \u003cp\u003eExercises 591\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 19 Interview Puzzles 595\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eAsking Interview Puzzle Questions 597\u003c\/p\u003e \u003cp\u003eAnswering Interview Puzzle Questions 598\u003c\/p\u003e \u003cp\u003eSummary 602\u003c\/p\u003e \u003cp\u003eExercises 604\u003c\/p\u003e \u003cp\u003e\u003cb\u003eAppendix A Summary of Algorithmic Concepts 607\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eChapter 1: Algorithm Basics 607\u003c\/p\u003e \u003cp\u003eChapter 2: Numeric Algorithms 608\u003c\/p\u003e \u003cp\u003eChapter 3: Linked Lists 609\u003c\/p\u003e \u003cp\u003eChapter 4: Arrays 610\u003c\/p\u003e \u003cp\u003eChapter 5: Stacks and Queues 610\u003c\/p\u003e \u003cp\u003eChapter 6: Sorting 610\u003c\/p\u003e \u003cp\u003eChapter 7: Searching 611\u003c\/p\u003e \u003cp\u003eChapter 8: Hash Tables 612\u003c\/p\u003e \u003cp\u003eChapter 9: Recursion 612\u003c\/p\u003e \u003cp\u003eChapter 10: Trees 614\u003c\/p\u003e \u003cp\u003eChapter 11: Balanced Trees 615\u003c\/p\u003e \u003cp\u003eChapter 12: Decision Trees 615\u003c\/p\u003e \u003cp\u003eChapter 13: Basic Network Algorithms 616\u003c\/p\u003e \u003cp\u003eChapter 14: More Network Algorithms 617\u003c\/p\u003e \u003cp\u003eChapter 15: String Algorithms 618\u003c\/p\u003e \u003cp\u003eChapter 16: Cryptography 618\u003c\/p\u003e \u003cp\u003eChapter 17: Complexity Theory 619\u003c\/p\u003e \u003cp\u003eChapter 18: Distributed Algorithms 620\u003c\/p\u003e \u003cp\u003eChapter 19: Interview Puzzles 621\u003c\/p\u003e \u003cp\u003e\u003cb\u003eAppendix B Solutions to Exercises 623\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eChapter 1: Algorithm Basics 623\u003c\/p\u003e \u003cp\u003eChapter 2: Numerical Algorithms 626\u003c\/p\u003e \u003cp\u003eChapter 3: Linked Lists 633\u003c\/p\u003e \u003cp\u003eChapter 4: Arrays 638\u003c\/p\u003e \u003cp\u003eChapter 5: Stacks and Queues 648\u003c\/p\u003e \u003cp\u003eChapter 6: Sorting 650\u003c\/p\u003e \u003cp\u003eChapter 7: Searching 653\u003c\/p\u003e \u003cp\u003eChapter 8: Hash Tables 655\u003c\/p\u003e \u003cp\u003eChapter 9: Recursion 658\u003c\/p\u003e \u003cp\u003eChapter 10: Trees 663\u003c\/p\u003e \u003cp\u003eChapter 11: Balanced Trees 670\u003c\/p\u003e \u003cp\u003eChapter 12: Decision Trees 675\u003c\/p\u003e \u003cp\u003eChapter 13: Basic Network Algorithms 678\u003c\/p\u003e \u003cp\u003eChapter 14: More Network Algorithms 681\u003c\/p\u003e \u003cp\u003eChapter 15: String Algorithms 686\u003c\/p\u003e \u003cp\u003eChapter 16: Encryption 689\u003c\/p\u003e \u003cp\u003eChapter 17: Complexity Theory 692\u003c\/p\u003e \u003cp\u003eChapter 18: Distributed Algorithms 697\u003c\/p\u003e \u003cp\u003eChapter 19: Interview Puzzles 701\u003c\/p\u003e \u003cp\u003eGlossary 711\u003c\/p\u003e \u003cp\u003eIndex 739\u003c\/p\u003e   \u003cp\u003e\u003cb\u003eRod Stephens\u003c\/b\u003e began his career as a mathematician, but while at MIT he was lured into the intriguing world of algorithms and has been programming ever since. An award-winning instructor, he regularly addresses  conferences and has written more than 30 books that have been translated into nearly a dozen languages.    \u003c\/p\u003e\u003cp\u003e\u003cb\u003eMaster the most useful algorithms and build your problem-solving skills\u003c\/b\u003e  \u003c\/p\u003e\u003cp\u003eAlgorithms are the recipes that make efficient programming possible. Studying them lets you build a useful toolkit of methods for solving specific problems. Using Python and C#, this book introduces you to many classic algorithms, shows you where they work, and explains how to analyze them to understand their behavior. The study of algorithms also teaches general problem-solving techniques that make you a better programmer. You might find that this book not only helps you on the job, it may help you get the job.  \u003c\/p\u003e\u003cp\u003e\u003cb\u003eLearn useful algorithms including\u003c\/b\u003e \u003c\/p\u003e\u003cul\u003e \u003cli\u003eNumerical algorithms: randomization, factoring, prime numbers, and numeric integration\u003c\/li\u003e \u003cli\u003eMethods for manipulating common data structures: arrays, linked lists, and networks\u003c\/li\u003e \u003cli\u003eMore advanced data structures: heaps, trees, balanced trees, and B-trees\u003c\/li\u003e \u003c\/ul\u003e \u003cp\u003e\u003cb\u003eLearn these and other problem-solving techniques:\u003c\/b\u003e \u003c\/p\u003e\u003cul\u003e \u003cli\u003eBrute force or exhaustive search\u003c\/li\u003e \u003cli\u003eDivide and conquer\u003c\/li\u003e \u003cli\u003eGreedy algorithms and hill climbing\u003c\/li\u003e \u003cli\u003eLeast cost algorithms\u003c\/li\u003e \u003cli\u003eHeuristics\u003c\/li\u003e \u003cli\u003eConstricting bounds\u003c\/li\u003e \u003c\/ul\u003e","brand":"Wiley","offers":[{"title":"Default Title","offer_id":47989154840805,"sku":"NP9781119575993","price":60.0,"currency_code":"USD","in_stock":false}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/1842\/7735\/files\/9781119575993.jpg?v=1761783018","url":"https:\/\/k12savings.com\/products\/essential-algorithms-isbn-9781119575993","provider":"K12savings","version":"1.0","type":"link"}