Algorithm Notes for Professionals
Algorithm Notes for Professionals is a comprehensive guide that provides professionals with a detailed understanding of algorithms and their practical applications. This resource aims to provide a clear and concise overview of various algorithms, their complexit...
Disclaimer
GoalKicker.com This is an unocial free book created for educational purposes and is
not aliated with ocial Algorithms group(s) or company(s).
Free Programming Books All trademarks and registered trademarks are
the property of their respective owners
,Contents
About ................................................................................................................................................................................... 1
Chapter 1: Getting started with algorithms .................................................................................................... 2
Section 1.1: A sample algorithmic problem ................................................................................................................. 2
Section 1.2: Getting Started with Simple Fizz Buzz Algorithm in Swift ...................................................................... 2
Chapter 2: Algorithm Complexity ......................................................................................................................... 5
Section 2.1: Big-Theta notation .................................................................................................................................... 5
Section 2.2: Comparison of the asymptotic notations .............................................................................................. 6
Section 2.3: Big-Omega Notation ................................................................................................................................ 6
Chapter 3: Big-O Notation ........................................................................................................................................ 8
Section 3.1: A Simple Loop ............................................................................................................................................ 9
Section 3.2: A Nested Loop ........................................................................................................................................... 9
Section 3.3: O(log n) types of Algorithms ................................................................................................................. 10
Section 3.4: An O(log n) example .............................................................................................................................. 12
Chapter 4: Trees ......................................................................................................................................................... 14
Section 4.1: Typical anary tree representation ......................................................................................................... 14
Section 4.2: Introduction ............................................................................................................................................. 14
Section 4.3: To check if two Binary trees are same or not ..................................................................................... 15
Chapter 5: Binary Search Trees .......................................................................................................................... 18
Section 5.1: Binary Search Tree - Insertion (Python) ............................................................................................... 18
Section 5.2: Binary Search Tree - Deletion(C++) ..................................................................................................... 20
Section 5.3: Lowest common ancestor in a BST ...................................................................................................... 21
Section 5.4: Binary Search Tree - Python ................................................................................................................. 22
Chapter 6: Check if a tree is BST or not .......................................................................................................... 24
Section 6.1: Algorithm to check if a given binary tree is BST .................................................................................. 24
Section 6.2: If a given input tree follows Binary search tree property or not ....................................................... 25
Chapter 7: Binary Tree traversals ..................................................................................................................... 26
Section 7.1: Level Order traversal - Implementation ............................................................................................... 26
Section 7.2: Pre-order, Inorder and Post Order traversal of a Binary Tree .......................................................... 27
Chapter 8: Lowest common ancestor of a Binary Tree ......................................................................... 29
Section 8.1: Finding lowest common ancestor ......................................................................................................... 29
Chapter 9: Graph ......................................................................................................................................................... 30
Section 9.1: Storing Graphs (Adjacency Matrix) ....................................................................................................... 30
Section 9.2: Introduction To Graph Theory .............................................................................................................. 33
Section 9.3: Storing Graphs (Adjacency List) ........................................................................................................... 37
Section 9.4: Topological Sort ..................................................................................................................................... 39
Section 9.5: Detecting a cycle in a directed graph using Depth First Traversal .................................................. 40
Section 9.6: Thorup's algorithm ................................................................................................................................. 41
Chapter 10: Graph Traversals .............................................................................................................................. 43
Section 10.1: Depth First Search traversal function .................................................................................................. 43
Chapter 11: Dijkstra’s Algorithm .......................................................................................................................... 44
Section 11.1: Dijkstra's Shortest Path Algorithm ........................................................................................................ 44
Chapter 12: A* Pathfinding ..................................................................................................................................... 49
Section 12.1: Introduction to A* ................................................................................................................................... 49
Section 12.2: A* Pathfinding through a maze with no obstacles ............................................................................. 49
Section 12.3: Solving 8-puzzle problem using A* algorithm .................................................................................... 56
,Chapter 13: A* Pathfinding Algorithm ............................................................................................................... 59
Section 13.1: Simple Example of A* Pathfinding: A maze with no obstacles .......................................................... 59
Chapter 14: Dynamic Programming ................................................................................................................. 66
Section 14.1: Edit Distance ........................................................................................................................................... 66
Section 14.2: Weighted Job Scheduling Algorithm .................................................................................................. 66
Section 14.3: Longest Common Subsequence .......................................................................................................... 70
Section 14.4: Fibonacci Number ................................................................................................................................. 71
Section 14.5: Longest Common Substring ................................................................................................................ 72
Chapter 15: Applications of Dynamic Programming ................................................................................ 73
Section 15.1: Fibonacci Numbers ................................................................................................................................ 73
Chapter 16: Kruskal's Algorithm .......................................................................................................................... 76
Section 16.1: Optimal, disjoint-set based implementation ....................................................................................... 76
Section 16.2: Simple, more detailed implementation ............................................................................................... 77
Section 16.3: Simple, disjoint-set based implementation ......................................................................................... 77
Section 16.4: Simple, high level implementation ....................................................................................................... 77
Chapter 17: Greedy Algorithms ............................................................................................................................ 79
Section 17.1: Human Coding ..................................................................................................................................... 79
Section 17.2: Activity Selection Problem .................................................................................................................... 82
Section 17.3: Change-making problem ..................................................................................................................... 84
Chapter 18: Applications of Greedy technique ............................................................................................ 86
Section 18.1: Oine Caching ....................................................................................................................................... 86
Section 18.2: Ticket automat ...................................................................................................................................... 94
Section 18.3: Interval Scheduling ................................................................................................................................ 97
Section 18.4: Minimizing Lateness ............................................................................................................................ 101
Chapter 19: Prim's Algorithm .............................................................................................................................. 105
Section 19.1: Introduction To Prim's Algorithm ....................................................................................................... 105
Chapter 20: Bellman–Ford Algorithm ............................................................................................................ 113
Section 20.1: Single Source Shortest Path Algorithm (Given there is a negative cycle in a graph) ................. 113
Section 20.2: Detecting Negative Cycle in a Graph ............................................................................................... 116
Section 20.3: Why do we need to relax all the edges at most (V-1) times .......................................................... 118
Chapter 21: Line Algorithm ................................................................................................................................... 121
Section 21.1: Bresenham Line Drawing Algorithm .................................................................................................. 121
Chapter 22: Floyd-Warshall Algorithm .......................................................................................................... 124
Section 22.1: All Pair Shortest Path Algorithm ........................................................................................................ 124
Chapter 23: Catalan Number Algorithm ....................................................................................................... 127
Section 23.1: Catalan Number Algorithm Basic Information ................................................................................ 127
Chapter 24: Multithreaded Algorithms ......................................................................................................... 129
Section 24.1: Square matrix multiplication multithread ......................................................................................... 129
Section 24.2: Multiplication matrix vector multithread .......................................................................................... 129
Section 24.3: merge-sort multithread ..................................................................................................................... 129
Chapter 25: Knuth Morris Pratt (KMP) Algorithm ..................................................................................... 131
Section 25.1: KMP-Example ...................................................................................................................................... 131
Chapter 26: Edit Distance Dynamic Algorithm .......................................................................................... 133
Section 26.1: Minimum Edits required to convert string 1 to string 2 ................................................................... 133
Chapter 27: Online algorithms ........................................................................................................................... 136
Section 27.1: Paging (Online Caching) .................................................................................................................... 137
Chapter 28: Sorting ................................................................................................................................................. 143
Section 28.1: Stability in Sorting ............................................................................................................................... 143
Stuvia customers have reviewed more than 700,000 summaries. This how you know that you are buying the best documents.
Quick and easy check-out
You can quickly pay through credit card or Stuvia-credit for the summaries. There is no membership needed.
Focus on what matters
Your fellow students write the study notes themselves, which is why the documents are always reliable and up-to-date. This ensures you quickly get to the core!
Frequently asked questions
What do I get when I buy this document?
You get a PDF, available immediately after your purchase. The purchased document is accessible anytime, anywhere and indefinitely through your profile.
Satisfaction guarantee: how does it work?
Our satisfaction guarantee ensures that you always find a study document that suits you well. You fill out a form, and our customer service team takes care of the rest.
Who am I buying these notes from?
Stuvia is a marketplace, so you are not buying this document from us, but from seller anshrajsingh. Stuvia facilitates payment to the seller.
Will I be stuck with a subscription?
No, you only buy these notes for $20.49. You're not tied to anything after your purchase.