
Essential Algorithms
Description
Alles über E-Books | Antworten auf Fragen rund um E-Books, Kopierschutz und Dateiformate finden Sie in unserem Info- & Hilfebereich.
The revised and updated second edition of Essential Algorithms, offers 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.
In 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 Essential Algorithms:
* Contains explanations of algorithms in simple terms, rather than complicated math
* Steps through powerful algorithms that can be used to solve difficult programming problems
* Helps prepare for programming job interviews that typically include algorithmic questions
* Offers methods can be applied to any programming language
* Includes exercises and solutions useful to both professionals and students
* Provides code examples updated and written in Python and C#
Essential Algorithms 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++).
More details
Other editions
Additional editions

Content
- Cover
- Title Page
- Copyright
- About the Author
- About the Technical Editor
- Credits
- Acknowledgments
- Contents at a glance
- Contents
- Introduction
- Why You Should Study Algorithms
- Algorithm Selection
- Who This Book Is For
- Getting the Most Out of This Book
- This Book's Websites
- How This Book Is Structured
- What You Need to Use This Book
- Conventions
- How to Contact the Author
- Chapter 1 Algorithm Basics
- Approach
- Algorithms and Data Structures
- Pseudocode
- Algorithm Features
- Big O Notation
- Rule 1
- Rule 2
- Rule 3
- Rule 4
- Rule 5
- Common Run Time Functions
- 1
- Log N
- Sqrt N
- N
- N log N
- N2
- 2N
- N!
- Visualizing Functions
- Practical Considerations
- Summary
- Exercises
- Chapter 2 Numerical Algorithms
- Randomizing Data
- Generating Random Values
- Generating Values
- Ensuring Fairness
- Getting Fairness from Biased Sources
- Randomizing Arrays
- Generating Nonuniform Distributions
- Making Random Walks
- Making Self-Avoiding Walks
- Making Complete Self-Avoiding Walks
- Finding Greatest Common Divisors
- Calculating Greatest Common Divisors
- Extending Greatest Common Divisors
- Performing Exponentiation
- Working with Prime Numbers
- Finding Prime Factors
- Finding Primes
- Testing for Primality
- Performing Numerical Integration
- The Rectangle Rule
- The Trapezoid Rule
- Adaptive Quadrature
- Monte Carlo Integration
- Finding Zeros
- Gaussian Elimination
- Forward Elimination
- Back Substitution
- The Algorithm
- Least Squares Fits
- Linear Least Squares
- Polynomial Least Squares
- Summary
- Exercises
- Chapter 3 Linked Lists
- Basic Concepts
- Singly Linked Lists
- Iterating Over the List
- Finding Cells
- Using Sentinels
- Adding Cells at the Beginning
- Adding Cells at the End
- Inserting Cells After Other Cells
- Deleting Cells
- Doubly Linked Lists
- Sorted Linked Lists
- Self-Organizing Linked Lists
- Move To Front (MTF)
- Swap
- Count
- Hybrid Methods
- Pseudocode
- Linked-List Algorithms
- Copying Lists
- Sorting with Insertionsort
- Sorting with Selectionsort
- Multithreaded Linked Lists
- Linked Lists with Loops
- Marking Cells
- Using Hash Tables
- List Retracing
- List Reversal
- Tortoise and Hare
- Loops in Doubly Linked Lists
- Summary
- Exercises
- Chapter 4 Arrays
- Basic Concepts
- One-Dimensional Arrays
- Finding Items
- Finding Minimum, Maximum, and Average
- Finding Median
- Finding Mode
- Inserting Items
- Removing Items
- Nonzero Lower Bounds
- Two Dimensions
- Higher Dimensions
- Triangular Arrays
- Sparse Arrays
- Find a Row or Column
- Get a Value
- Set a Value
- Delete a Value
- Matrices
- Column-Ordered Sparse Matrices
- Summary
- Exercises
- Chapter 5 Stacks and Queues
- Stacks
- Linked-List Stacks
- Array Stacks
- Double Stacks
- Stack Algorithms
- Reversing an Array
- Train Sorting
- Tower of Hanoi
- Stack Insertionsort
- Stack Selectionsort
- Queues
- Linked-List Queues
- Array Queues
- Specialized Queues
- Priority Queues
- Deques
- Binomial Heaps
- Binomial Trees
- Binomial Heaps
- Merging Trees
- Merging Heaps
- Merging Tree Lists
- Merging Trees
- Enqueue
- Dequeue
- Runtime
- Summary
- Exercises
- Chapter 6 Sorting
- O(N2 ) Algorithms
- Insertionsort in Arrays
- Selectionsort in Arrays
- Bubblesort
- O(NlogN) Algorithms
- Heapsort
- Storing Complete Binary Trees
- Defining Heaps
- Implementing Heapsort
- Quicksort
- Analyzing Quicksort's Run Time
- Picking a Dividing Item
- Implementing Quicksort with Stacks
- Implementing Quicksort in Place
- Using Quicksort
- Mergesort
- Sub O(Nlog N) Algorithms
- Countingsort
- Pigeonhole Sort
- Bucketsort
- Summary
- Exercises
- Chapter 7 Searching
- Linear Search
- Binary Search
- Interpolation Search
- Majority Voting
- Summary
- Exercises
- Chapter 8 Hash Tables
- Hash Table Fundamentals
- Chaining
- Open Addressing
- Removing Items
- Linear Probing
- Quadratic Probing
- Pseudorandom Probing
- Double Hashing
- Ordered Hashing
- Summary
- Exercises
- Chapter 9 Recursion
- Basic Algorithms
- Factorial
- Fibonacci Numbers
- Rod-Cutting
- Brute Force
- Recursion
- Tower of Hanoi
- Graphical Algorithms
- Koch Curves
- Hilbert Curve
- Sierpiski Curve
- Gaskets
- The Skyline Problem
- Lists
- Divide and Conquer
- Backtracking Algorithms
- Eight Queens Problem
- Knight's Tour
- Selections and Permutations
- Selections with Loops
- Selections with Duplicates
- Selections Without Duplicates
- Permutations with Duplicates
- Permutations Without Duplicates
- Round-Robin Scheduling
- Odd Number of Teams
- Even Number of Teams
- Implementation
- Recursion Removal
- Tail Recursion Removal
- Dynamic Programming
- Bottom-Up Programming
- General Recursion Removal
- Summary
- Exercises
- Chapter 10 Trees
- Tree Terminology
- Binary Tree Properties
- Tree Representations
- Building Trees in General
- Building Complete Trees
- Tree Traversal
- Preorder Traversal
- Inorder Traversal
- Postorder Traversal
- Breadth-First Traversal
- Traversal Uses
- Traversal Run Times
- Sorted Trees
- Adding Nodes
- Finding Nodes
- Deleting Nodes
- Lowest Common Ancestors
- Sorted Trees
- Parent Pointers
- Parents and Depths
- General Trees
- Euler Tours
- All Pairs
- Threaded Trees
- Building Threaded Trees
- Using Threaded Trees
- Specialized Tree Algorithms
- The Animal Game
- Expression Evaluation
- Interval Trees
- Building the Tree
- Intersecting with Points
- Intersecting with Intervals
- Quadtrees
- Adding Items
- Finding Items
- Tries
- Adding Items
- Finding Items
- Summary
- Exercises
- Chapter 11 Balanced Trees
- AVL Trees
- Adding Values
- Deleting Values
- 2-3 Trees
- Adding Values
- Deleting Values
- B-Trees
- Adding Values
- Deleting Values
- Balanced Tree Variations
- Top-down B-trees
- B+trees
- Summary
- Exercises
- Chapter 12 Decision Trees
- Searching Game Trees
- Minimax
- Initial Moves and Responses
- Game Tree Heuristics
- Searching General Decision Trees
- Optimization Problems
- Exhaustive Search
- Branch and Bound
- Decision Tree Heuristics
- Random Search
- Improving Paths
- Simulated Annealing
- Hill Climbing
- Sorted Hill Climbing
- Other Decision Tree Problems
- Generalized Partition Problem
- Subset Sum
- Bin Packing
- Cutting Stock
- Knapsack
- Traveling Salesman Problem
- Satisfiability
- Swarm Intelligence
- Ant Colony Optimization
- General Optimization
- Traveling Salesman
- Bees Algorithm
- Swarm Simulation
- Boids
- Pseudoclassical Mechanics
- Goals and Obstacles
- Summary
- Exercises
- Chapter 13 Basic Network Algorithms
- Network Terminology
- Network Representations
- Traversals
- Depth-First Traversal
- Breadth-First Traversal
- Connectivity Testing
- Spanning Trees
- Minimal Spanning Trees
- Euclidean Minimum Spanning Trees
- Building Mazes
- Strongly Connected Components
- Kosaraju's Algorithm
- Algorithm Discussion
- Finding Paths
- Finding Any Path
- Label-Setting Shortest Paths
- Label-Correcting Shortest Paths
- All-Pairs Shortest Paths
- Transitivity
- Transitive Closure
- Transitive Reduction
- Acyclic Networks
- General Networks
- Shortest Path Modifications
- Shape Points
- Early Stopping
- Bidirectional Search
- Best-First Search
- Turn Penalties and Prohibitions
- Geometric Calculations
- Expanded Node Networks
- Interchange Networks
- Summary
- Exercises
- Chapter 14 More Network Algorithms
- Topological Sorting
- Cycle Detection
- Map Coloring
- Two-Coloring
- Three-Coloring
- Four-Coloring
- Five-Coloring
- Other Map-Coloring Algorithms
- Maximal Flow
- Work Assignment
- Minimal Flow Cut
- Network Cloning
- Dictionaries
- Clone References
- Cliques
- Brute Force
- Bron-Kerbosch
- Sets R, P, and X
- Recursive Calls
- Pseudocode
- Example
- Variations
- Finding Triangles
- Brute Force
- Checking Local Links
- Chiba and Nishizeki
- Community Detection
- Maximal Cliques
- Girvan-Newman
- Clique Percolation
- Eulerian Paths and Cycles
- Brute Force
- Fleury's Algorithm
- Hierholzer's Algorithm
- Summary
- Exercises
- Chapter 15 String Algorithms
- Matching Parentheses
- Evaluating Arithmetic Expressions
- Building Parse Trees
- Pattern Matching
- DFAs
- Building DFAs for Regular Expressions
- NFAs
- String Searching
- Calculating Edit Distance
- Phonetic Algorithms
- Soundex
- Metaphone
- Summary
- Exercises
- Chapter 16 Cryptography
- Terminology
- Transposition Ciphers
- Row/Column Transposition
- Column Transposition
- Route Ciphers
- Substitution Ciphers
- Caesar Substitution
- Vigenère Cipher
- Simple Substitution
- One-Time Pads
- Block Ciphers
- Substitution-Permutation Networks
- Feistel Ciphers
- Public-Key Encryption and RSA
- Euler's Totient Function
- Multiplicative Inverses
- An RSA Example
- Practical Considerations
- Other Uses for Cryptography
- Summary
- Exercises
- Chapter 17 Complexity Theory
- Notation
- Complexity Classes
- Reductions
- 3SAT
- Bipartite Matching
- NP-Hardness
- Detection, Reporting, and Optimization Problems
- Detection =p Reporting
- Reporting =p Optimization
- Reporting =p Detection
- Optimization =p Reporting
- Approximate Optimization
- NP-Complete Problems
- Summary
- Exercises
- Chapter 18 Distributed Algorithms
- Types of Parallelism
- Systolic Arrays
- Distributed Computing
- Multi-CPU Processing
- Race Conditions
- Deadlock
- Quantum Computing
- Distributed Algorithms
- Debugging Distributed Algorithms
- Embarrassingly Parallel Algorithms
- Mergesort
- Dining Philosophers
- Randomization
- Resource Hierarchy
- Waiter
- Chandy/Misra
- The Two Generals Problem
- Byzantine Generals
- Consensus
- Leader Election
- Snapshot
- Clock Synchronization
- Summary
- Exercises
- Chapter 19 Interview Puzzles
- Asking Interview Puzzle Questions
- Answering Interview Puzzle Questions
- Summary
- Exercises
- Appendix A Summary of Algorithmic Concepts
- Chapter 1: Algorithm Basics
- Chapter 2: Numeric Algorithms
- Chapter 3: Linked Lists
- Chapter 4: Arrays
- Chapter 5: Stacks and Queues
- Chapter 6: Sorting
- Chapter 7: Searching
- Chapter 8: Hash Tables
- Chapter 9: Recursion
- Chapter 10: Trees
- Chapter 11: Balanced Trees
- Chapter 12: Decision Trees
- Chapter 13: Basic Network Algorithms
- Chapter 14: More Network Algorithms
- Chapter 15: String Algorithms
- Chapter 16: Cryptography
- Chapter 17: Complexity Theory
- Chapter 18: Distributed Algorithms
- Chapter 19: Interview Puzzles
- Appendix B Solutions to Exercises
- Chapter 1: Algorithm Basics
- Chapter 2: Numerical Algorithms
- Chapter 3: Linked Lists
- Chapter 4: Arrays
- Chapter 5: Stacks and Queues
- Chapter 6: Sorting
- Chapter 7: Searching
- Chapter 8: Hash Tables
- Chapter 9: Recursion
- Chapter 10: Trees
- Chapter 11: Balanced Trees
- Chapter 12: Decision Trees
- Chapter 13: Basic Network Algorithms
- Chapter 14: More Network Algorithms
- Chapter 15: String Algorithms
- Chapter 16: Encryption
- Chapter 17: Complexity Theory
- Chapter 18: Distributed Algorithms
- Chapter 19: Interview Puzzles
- Glossary
- Index
- EULA
System requirements
File format: PDF
Copy-Protection: Adobe-DRM (Digital Rights Management)
System requirements:
- Computer (Windows; MacOS X; Linux): Install the free reader Adobe Digital Editions prior to download (see eBook Help).
- Tablet/smartphone (Android; iOS): Install the free app Adobe Digital Editions or the app PocketBook before downloading (see eBook Help).
- E-reader: Bookeen, Kobo, Pocketbook, Sony, Tolino and many more (only limited: Kindle).
The file format PDF always displays a book page identically on any hardware. This makes PDF suitable for complex layouts such as those used in textbooks and reference books (images, tables, columns, footnotes). Unfortunately, on the small screens of e-readers or smartphones, PDFs are rather annoying, requiring too much scrolling.
This eBook uses Adobe-DRM, a „hard” copy protection. If the necessary requirements are not met, unfortunately you will not be able to open the eBook. You will therefore need to prepare your reading hardware before downloading.
Please note: We strongly recommend that you authorise using your personal Adobe ID after installation of any reading software.
For more information, see our eBook Help page.