Skip to content

Instantly share code, notes, and snippets.

@ehzawad
Created April 4, 2024 03:36
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ehzawad/77b6900c824d0ecfbf903b89216ba8ae to your computer and use it in GitHub Desktop.
Save ehzawad/77b6900c824d0ecfbf903b89216ba8ae to your computer and use it in GitHub Desktop.
Algorithms
Part_1.pdf:
topics:
- Algorithms
- Design and analysis
- Computational procedures
- Input/output relationship
- Sorting problem definition
- Pseudocode
- Insertion sort
- Incremental approach
- Divide-and-conquer technique
- Algorithm analysis models
- Running time
- Worst-case scenario
- Average-case analysis
- Big-oh notation
- Divide-and-conquer paradigm
- Subproblems
- Recursive solutions
- Merge sort algorithm
- Merging sorted sequences
- Loop invariants for algorithm correctness
- Pseudocode conventions
- Analysis methodology
- Efficiency measures
- Order of growth
- Linear time algorithms
- Quadratic time algorithms
- Algorithmic problem solving strategies
- Practical application of algorithms
- Mathematical foundations for algorithm analysis
- Introduction to data structures
- Algorithmic techniques for problem solving
- Hard problems identification
- NP-completeness
- Parallel computing
- Dynamic multithreading
- Technological impacts on algorithm efficiency
- Computational models evolution
- Real-world examples requiring sorting
- Computational geometry
- Shortest-path problems
- Linear programming
- Polynomial time algorithms
- Randomization in algorithms
- Discrete Fourier transforms
- Number-theoretic algorithms
- String pattern matching
- Public-key cryptography
- Digital signatures
- Graph algorithms
- Electronic commerce security
- Internet routing
- Database search algorithms
- Resource allocation problems
- Linear programming applications
- Algorithmic implications on modern computing systems
- Efficient data management
- Computational problem categorization
- Algorithmic innovations
- Computer science education
- Algorithmic challenges in computational biology
- Genetic sequencing algorithms
- Data compression techniques
- Large integer multiplication
- Graph representation techniques
- Sorting algorithms comparison
- Insertion sort mechanics
- Divide-and-conquer sorting methods
- Merge sort detailed analysis
- Problem-solving through recursion
- Efficiency of sorting algorithms
- Comparison of algorithmic efficiencies
- Importance of algorithm design in software development
- Influence of algorithms on computer architecture
Part_2.pdf:
topics:
- Sorting problem
- Input sequence of numbers
- Output permutation
- Ordered sequence
- Dictionary operations
- Satellite data
- Manipulation of dynamic sets
- Arrays
- Linked lists representation
- Sorting necessity in algorithms
- Fundamental problem
- Sorting algorithms variety
- Algorithmic techniques
- Insertion sort
- Merge sort
- In-place sorting
- Heapsort
- Quicksort
- Comparison sorts
- Decision-tree model
- Lower bound for sorting
- ‚(n lg n) complexity
- Counting sort
- Radix sort
- Bucket sort
- Linear time sorting under conditions
- Sorting algorithms performance comparison
- Worst-case scenario analysis
- Average-case efficiency
- Data structure optimizations
- Engineering considerations
- Memory hierarchy impact
- Algorithm vs. program distinction
- Keys and satellite data
- Sorting records
- Sort efficiency on various data structures
- Heap data structure implementation
- Priority queue implementation
- Binary heap properties
- Max-heaps
- Min-heaps
- Heap operations
- BUILD-MAX-HEAP
- MAX-HEAPIFY
- Sorting in place
- Heap sort algorithm details
- Recursive algorithms
- Divide-and-conquer paradigm
- Algorithmic design techniques
- Randomization in algorithms
- Expected running time analysis
- Partitioning in quicksort
- Pivot selection
- Worst-case partitioning
- Balanced partitioning
- Performance on distinct elements
- Analysis of recursive algorithms
- Random sampling in quicksort
- Probabilistic analysis
- Algorithmic problem solving
- Computational geometry applications
- NP-complete problems
- Hamiltonian cycle
- Boolean satisfiability
- Subset sum problem
- Traveling-salesman problem
- Approximation algorithms
- Vertex-cover problem
- 3-CNF satisfiability
- Set-covering problem
- Multithreaded algorithms
- Shared-memory parallel computing
- Parallelism in algorithms
- Work-span model
- Greedy scheduling in parallel algorithms
- Race conditions
- Parallel algorithms design
- Performance analysis
- Theoretical limits of algorithm design
- Advanced algorithmic techniques
- Optimization problems under constraints
- Cryptographic systems
- Security applications
- Pattern matching in text editing
- Geometry algorithms in computational theory
- Computational complexity exploration
- Algorithmic efficiency
- Problem-solving strategies
- Mathematical foundations of algorithms
- Practical applications of theoretical concepts
Part_3.pdf:
topics:
- Dynamic sets
- Finite
- Manipulation
- Growth
- Shrinkage
- Change
- Dictionary operations:
- Insert
- Delete
- Test membership
- Dictionary
- Min-priority queues
- Heap data structure
- Dynamic set implementation
- Object attributes
- Pointer manipulation
- Identifying key
- Satellite data
- Totally ordered set:
- Real numbers
- Alphabetic ordering
- Minimum element
- Operations on dynamic sets:
- Queries
- Modifying operations
- Search
- Minimum
- Maximum
- Successor
- Predecessor
- Data structure:
- Stacks
- Queues
- Linked lists
- Rooted trees
- Objects
- Pointers
- Implementation environments
- PUSH
- POP
- LIFO policy
- FIFO policy
- Array implementation
- Underflow
- Overflow
- Linked list representation:
- Linear order
- Doubly linked list
- Singly linked list
- Sorted list
- Circular list
- List searching
- List insertion
- List deletion
- Sentinels
- Objects and pointers implementation
- Multiple-array representation
- Single-array representation
- Allocating and freeing objects
- Rooted tree representation
- Binary trees:
- Parent
- Left child
- Right child pointers
- Unbounded branching
- Left-child right-sibling representation
- Key
- Satellite data storage
- Dynamic set operations analysis
- Random variables
- Expected running time
- Searching algorithms
- Insert and delete operations
- Average-case time
- Worst-case scenario
- Hash tables:
- Hashing function
- Collisions
- Chaining collision resolution
- Load factor
- Simple uniform hashing
- Successful and unsuccessful search average-case time
- Direct-address tables
- Bit vectors
- Mergeable heaps
- List compacting
- Search time optimization
- Direct addressing vs. hashing comparison
- Efficient memory usage
- Hash function design:
- Division method
- Multiplication method
- Universal hashing
- Hash function quality indicators
- Collision resolution techniques:
- Chaining
- Open addressing
- Perfect hashing
- Dynamic set management
- Space efficiency
- Computational complexity
- Algorithmic analysis
- Data structure optimization
- Memory management
- Programming environments adaptation
- Linked data structures
- Tree data representation
- Hash table operations
- Dictionary operation efficiency
- Average-case performance
- Worst-case performance avoidance
- Hash function selection criteria
- Theoretical vs. practical considerations in data structures
- Asymptotic time complexity
- Expected time vs. worst-case time comparison
- Algorithmic efficiency in dynamic set operations
Part_4.pdf:
topics:
- Dynamic programming
- Optimization problems
- Choices
- Subproblems
- Exponential-time to polynomial-time transformation
- Greedy algorithms:
- Local optimal choices
- Coin-changing
- Matroid theory
- Optimal solution
- Amortized analysis:
- Sequence of operations
- Cost analysis
- Tabular method
- Overlapping subproblems
- Recursive solutions
- Memoization
- Bottom-up approach
- Problem-solving steps
- Characterizing optimal solutions
- Recursively defining optimal values
- Computing optimal values
- Constructing solutions
- Subproblem graphs
- Matrix-chain multiplication:
- Matrix dimensions
- Parenthesization
- Scalar multiplications
- Fibonacci numbers
- Longest common subsequence
- Binary search trees:
- Optimal binary search trees
- Weighted path lengths
- Aggregate analysis
- Knapsack problem:
- Fractional knapsack
- 0/1 knapsack
- Greedy choice property
- Activity-selection problem:
- Recursive greedy algorithm
- Iterative greedy algorithm
- Huffman codes
- Greedy algorithms
- Optimal substructure
- Elements of dynamic programming:
- Overlapping subproblems
- Optimal substructure characterization
- Subproblem space
- Polynomial running time
- Subproblem independence
- Shortest paths
- Longest simple paths
- NP-completeness
Part_5.pdf:
topics:
- Fibonacci heaps
- Mergeable heap operations:
- MAKE-HEAP
- INSERT
- MINIMUM
- EXTRACT-MIN
- UNION
- DECREASE-KEY
- DELETE
- Dynamic sets
- Amortized analysis
- Potential method
- Cascading cut
- Binomial heaps
- Binomial trees
- Linked lists
- Heap-ordered tree
- Min-heap property
- Circular doubly linked list
- Mark and degree attributes
- Root list
- Cut and cascading cut operations
- Child list
- Consolidating trees
- Pairwise combine
- Key decreases and deletions
- Soft threshold
- Hard threshold
- Structured yet flexible data organization
- Amortized running time optimization
- Potential function application
- Tree consolidation
- Efficient key decrease mechanism
- Lazy approach to structure maintenance
- Amortized analysis in action
- Dynamic set operations efficiency
- Priority queue operations
- Graph algorithms optimization
- Heap operations cost trade-offs
- Amortized cost versus actual cost comparison
Part_6.pdf:
topics:
- Graph algorithms
- Dynamic exploration
- Breadth-first search (BFS)
- Depth-first search (DFS)
- Shortest paths
- Minimum spanning trees
- Directed graphs (digraphs)
- Undirected graphs
- Vertices
- Edges
- Paths
- Cycles
- Acyclic graphs
- Weighted graphs
- Unweighted graphs
- Graph representation:
- Adjacency lists
- Adjacency matrices
- Graph traversal
- Discovery
- Finishing
- Preorder
- Postorder
- Topological sort
- Strongly connected components
- Directed acyclic graph (DAG)
- Out-degree
- In-degree
- Transpose graph
- Path exploration
- White-gray-black vertex coloring
- Tree edges
- Back edges
- Forward edges
- Cross edges
- Parenthesis theorem
- White-path theorem
- Edge classification
- Linear-time algorithms
- DFS-based algorithms
- BFS-based algorithms
- SCC algorithms
- Graph connectivity
- Reachability
- Edge relaxation
- Shortest-path weights
- Single-source shortest paths
- All-pairs shortest paths
- Dijkstra's algorithm
- Bellman-Ford algorithm
- Floyd-Warshall algorithm
- Johnson's algorithm
- Minimum spanning tree
- Kruskal's algorithm
- Prim's algorithm
- Cut property
- Cycle property
- Disjoint-set data structure
- Maximum flow
- Ford-Fulkerson method
- Residual networks
- Augmenting paths
- Cut capacity
- Flow networks
- Bipartite matching
- Vertex cover
- Network flow applications
- Graph modeling
- Complexity analysis
- Greedy algorithms
- Dynamic programming approaches
- Amortized analysis
- Computational geometry
- Graph-based problems
- Planar graphs
- Graph coloring
- Scheduling problems
- Transportation networks
- Social networks analysis
- Computer networks routing
- Scientific computing
- Graph partitioning
- Network security
Part_7.pdf:
topics:
- Selected Topics
- Computational models
- Parallel computing
- Dynamic multithreading
- Matrix operations
- LU decomposition
- LUP decomposition
- Gaussian elimination
- Linear programming
- Simplex algorithm
- Polynomial time
- Fast Fourier Transform (FFT)
- Number-theoretic algorithms
- Euclid’s algorithm
- Greatest common divisors
- Modular linear equations
- RSA public-key cryptosystem
- Digital signatures
- Miller-Rabin randomized primality test
- Pollard’s “rho” heuristic
- String pattern matching
- Rabin-Karp algorithm
- Finite automata
- Knuth-Morris-Pratt algorithm
- Computational geometry
- Convex hull
- Graham's scan
- Jarvis's march
- Closest pair problem
- NP-complete problems
- Hamiltonian cycle
- Boolean satisfiability
- Subset sum problem
- Traveling-salesman problem
- Approximation algorithms
- Vertex-cover problem
- 3-CNF satisfiability
- Set-covering problem
- Subset-sum optimization
- Multithreaded algorithms
- Shared-memory parallel computers
- Parallelism quantification
- Work-span model
- Greedy scheduling
- Race conditions
- Matrix-vector multiplication
- Strassen's method
- Merge sort
- Parallel algorithms design
- Performance analysis
- Theoretical limits of algorithm design
- Advanced algorithmic techniques
- Optimization problems under constraints
- Cryptographic systems
- Security applications
- Pattern matching in text editing
- Geometry algorithms
- Computational complexity
- Algorithmic efficiency
- Problem-solving strategies in computational theory
- Mathematical foundations of algorithms
- Practical applications of theoretical concepts
mathematical_background.pdf:
topics:
- Mathematical tools for algorithms
- High-school algebra
- Asymptotic notations
- Recurrences
- Evaluating and bounding summations
- Basic definitions and notations for sets
- Relations
- Functions
- Graphs
- Trees
- Counting principles
- Permutations
- Combinations
- Probability
- Matrices operations
- Properties
- Sequences
- Finite sums
- Infinite sums
- Series convergence
- Linearity property
- Arithmetic series
- Sums of squares and cubes
- Geometric series
- Harmonic series
- Integrating and differentiating series
- Telescoping series
- Bounding summations
- Mathematical induction
- Bounding terms
- Splitting summations
- Approximation by integrals
- Venn diagrams
- DeMorgan's laws
- Principle of inclusion and exclusion
- Countable and uncountable sets
- Cardinality
- Power sets
- Ordered pairs
- Cartesian products
- Binary relations
- Equivalence relations
- Equivalence classes
- Partial and total orders
- Injections
- Surjections
- Bijections
- Graph terminology
- Directed and undirected graphs
- Vertices
- Edges
- Paths
- Cycles
- Subgraphs
- Isomorphism
- Connectivity
- Trees
- Free trees
- Unique paths
- Connected components
- Acyclic graphs
- Degrees of vertices
- Adjacency
- Forests
- Dag (directed acyclic graph)
- Multigraphs
- Hypergraphs
- Graph contraction
- Handshaking lemma
- Disjoint sets
- Set operations (intersection, union, difference, complement)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment