Código |
16671
|
Ano |
1
|
Semestre |
S2
|
Créditos ECTS |
6
|
Carga Horária |
PL(30H)/T(30H)
|
Área Científica |
Informática
|
Objectivos de Aprendizagem |
Os objetivos desta UC focam-se em proporcionar aos estudantes técnicas de análise de complexidade algoritmica, diferentes estruturas de dados complexas e um conjunto de algoritmos para resolução de problemas computacionais.
No final desta unidade curricular o estudante deve ser capaz de: - Explicar a utilidade e complexidade de diferentes estruturas de dados, assim como ser capaz de combinar diferentes estruturas de dados para resolução de problemas. - Analisar a complexidade computacional (temporal e espacial) de um dado algoritmo. - Implementar diferentes algoritmos e e estruturas de dados para resolução de problemas complexos.
|
Conteúdos programáticos |
1 - Recursividade 2 - Análise de complexidade temporal e espacial 3- Algoritmos de ordenação 4 - Estruturas de dados: - Vetores - Vetores dinâmicos - Listas, listas duplamente ligadas e variantes - Filas, pilhas e suas variantes (prioridade, de dupla entrada) - Árvores - Representação computacional de grafos 5 - Algoritmos de pesquisa 6 - Problemas sobre árvores e grafos
|
Bibliografia principal |
Slides das aulas teóricas. Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein. Introduction to Algorithms (Fourth Edition), The MIT Press, 2022. Brad Miller and David Ranum. Problem Solving with Algorithms and Data Structures using Python, Luther College, 2006.
|
Língua |
Português
|