Introduction to Analysis of Algorithms
Here are a series of slides and codes in the subject of Analysis of Algorithms
Lab of Analysis of Algorithms
Here is the Lab for the class of algorithms Lab Page
Classic Analysis of Algorithms
- Introduction Slides Notes
- Why the need for algorithms?
- Basic Algorithms for this class
- Some Note in Notation
- An example of analyzing algorithms
- Math for Analysis of Algorithms Slides
- A simple introduction to the necessary math
- Discrete Mathematics
- Probability
- A simple introduction to the necessary math
- Divide and Conquer Slides Notes
- The Recursion and the Induction
- Using Induction to Prove Algorithm Correctness
- Asymptotic Notation
- Methods to solve recursion
- Substitution
- Recursion Tree Method
- The Master Method
- Probability Analysis Slides Notes
- The Hiring Problem
- Indicator Random Variables
- Randomized Hiring
- Enforcing Randomization
- Sorting Slides Notes
- Sorting Problem
- Heaps
- Quicksort
- Randomized Quicksort
- Lower Bounds of Sorting
- Linear Sorting Slides Notes
- Counting Sort
- Least Significant Digital Radix Sort
- Bucket Sort
- Median Order Statistics Slides Notes
- kth statistics
- Using Randomization
- Worst Case
- Final Worst Case
- Hash Tables Slides Notes
- Introduction to Hash Tables
- The Hashing Methods
- Clustering Analysis of Hashing Functions
- A possible Solution, Universal Hashing
- Open Addressing
- Binary Trees Slides Notes
- Basic Concepts
- Binary Search Trees
- Balancing Trees AVL
- Red Black Trees Slides Notes
- Basic Definitions
- Insertion in Red Black Trees
- Deletion in Red Black Trees
- Dynamic Programming Slides Notes
- The Bellman Equation
- Elements of Dynamic Programming
- Optimal Substructure
- Overlapping Structures
- Reconstruction of Sub-problems
- Common Sub-problems
- Greedy Methods Slides Notes
- Steps of the Greedy Method
- Dynamic Programming vs. Greedy Method
- Examples
- Amortized Analysis Slides Notes
- Introduction
- Aggregate Method
- Accounting Method
- Potential Method
- Examples
- Skip Lists Slides Notes
- Dictionaries
- Improving on dictionary access
- Skip List and the highway
- Probability Analysis of Complexity
- B-Trees Slides Notes
- The Motivation, slow memory hierarchy
- B-Trees
- The Height Property
- Operations
- Fibonacci Heaps Slides Notes
- Another version of Heaps
- Definition of Heaps
- Operations
- Amortized Analysis
- Disjoint Set Representations Slides Notes
- Represent Disjoint Sets
- Two Strategies: Union by Rank and Path Compression
- The use of the inverse Ackermann function
- Getting \(O(m\log^* n)\) complexity for all operations
- Graphs Slides Notes
- Introduction
- Breadth First Search
- Depth First Search
- Applications
- Minimum Spanning Trees Slides Notes
- Introduction
- The Cut and Light Edge idea
- The Greedy Algorithms: Kruskal and Prim
- Single Source Shortest Path Slides Notes
- Introduction
- The Shortest Path Idea
- The Dynamic Algorithm, Bellman-Ford
- A version for Directed Acyclic Graphs
- A Greedy Algorithm, Dijkstra
- All-pairs Shortest Path Slides Notes
- Using the old algorithms to solve the problem
- Trying to improve
- The Floyd-Warshall Algorithm
- The Johnson’s Algorithm
- Max Flow Slides Notes
- Flows in Graphs
- Flow properties
- The Ford-Fulkerson Mehtod
- Minimal-cut
- Improving the Ford-Fulkerson, the Edmond-Karp Algorithm
- Applications
- Matrix Algorithms Slides Notes
- Matrix Operations
- Improving the Matrix Multiplication
- Solving System of Linear Equations
- Applications
- Multi-threaded Algorithms Slides Notes
- Why Multi-threading?
- Model
- DAG
- Performance Measures
- Parallel Laws
- Examples
- String Matching Slides Notes
- String Matching Basics
- Naive Algorithms
- Rabin-Karp
- Other Algorithms
- etc
- Computational Geometry Slides Notes
- What is Computational Geometry?
- Representation of Geometries
- Line-Segment Properties
- Classic Problems
- NP-Complete Problems Slides Notes
- The Polynomial Time
- Structure of the Polynomial Time
- Polynomial Time Verification
- Reducibility
- NP-Completeness
- The Basic NP-Problems
- Dealing with NP-Complete Problems Slides
- The Dilemma
- Backtracking
- Branch and Bound
- Approximation Algorithms
Geometric Algorithms
-
KD-Trees
-
NNDescent
-
Triangulation
The NP-Problem
- Approximation Algorithms and Heuristics
Probabilistic Algorithms
- Skip Lists Slides Notes
- Why Skip Lists?
- A Probabilistic Data Structure
- Definition
- Bernoulli’s Distribution
- Search
- Insertion
- Deletion
- Locality Sensitive Hashing Slides
- The Theory Behind it
- The Practicalities
- The Shingles
- k-grams
- Set representation
- Min Hash
- The Signature Matrix
- Playing the probability game
-
Membership Query - Bloom Filter
-
Frequency Count
-
Ranking Q-digest
-
Treaps
- Distributed Algorithms