Visão Geral
O curso Algorithm Design Techniques tem como objetivo capacitar profissionais na compreensão e aplicação das principais técnicas de projeto de algoritmos para resolução eficiente de problemas computacionais. O treinamento aborda estratégias clássicas como divisão e conquista, programação dinâmica, algoritmos gulosos e backtracking, permitindo o desenvolvimento de soluções otimizadas e escaláveis.
Conteúdo Programatico
Module 1 – Introduction to Algorithm Design
- Algorithm design principles
- Problem-solving strategies
- Complexity analysis review
- Trade-offs in algorithm design
- Problem classification
Module 2 – Divide and Conquer
- Concept and strategy
- Recursive problem solving
- Merge sort and quicksort
- Binary search
- Master theorem applications
Module 3 – Greedy Algorithms
- Greedy choice property
- Optimal substructure
- Activity selection problem
- Huffman coding
- Minimum spanning tree (Kruskal, Prim)
Module 4 – Dynamic Programming
- Overlapping subproblems
- Memoization vs tabulation
- Knapsack problem
- Longest common subsequence
- Optimization problems
Module 5 – Backtracking
- Backtracking fundamentals
- State space tree
- Constraint satisfaction problems
- N-Queens problem
- Subsets and permutations
Module 6 – Branch and Bound
- Concept and strategy
- Bounding techniques
- Optimization problems
- Traveling Salesman Problem (TSP)
- Comparison with backtracking
Module 7 – Randomized and Approximation Algorithms
- Randomized algorithms basics
- Monte Carlo vs Las Vegas algorithms
- Approximation algorithms
- Performance guarantees
- Use cases
Module 8 – Advanced Problem Solving Techniques
- Bit manipulation techniques
- Sliding window and two pointers
- Graph-based problem solving
- Heuristics and optimization
- Competitive programming strategies