This repository aims to expose my resolutions of the exercises proposed by the subject 'Algorithm Design and Analysis', as well as its statements. In each folder are available the statements and my respective resolutions that were accepted by Mooshak.
This course is part of the second semester of the second year of the Bachelor's Degree in Artificial Intelligence and Data Science at FCUP and FEUP in the academic year 2023/2024. You can find more information about this course at the following link:
- Asymptotic analysis of algorithms: Big O notation (O, Ω and Θ), execution time estimates, analysis of iterative and recursive programs;
- Sorting: sorting as a basic part of other algorithms, comparative and non-comparative algorithms, binary search and direct and indirect applications;
- Algorithm design techniques: exhaustive search, greedy algorithms, divide-and-conquer, dynamic programming;
- Some specialized data structures: priority queues, disjoint sets;
- Balanced binary search trees: Red-Black trees.
- Graph algorithms: graph representation, depth and breadth searches, minimum cost support tree, minimum distances, maximum flow.
- Computationally difficult problems. Brief introduction to the complexity classes of P, NP, NP-hard and NP-Complete problems. Introduction to approximation and parametric algorithms.