Algoritmos e Estruturas de Dados I 

Profa. Isabel Harb Manssour, Turma 127 (2LM 4LM)

 

Objetivos

O aluno ao término da disciplina deverá ser capaz de:

1.      Conhecer e diferenciar as estruturas de dados: listas, filas, pilhas, árvores.

2.      Manipular estruturas de dados por meio de algoritmos.

3.      Selecionar e construir estruturas de dados adequadas para aplicações específicas, bem como modelar estas aplicações utilizando a noção de orientação a objetos.

4.      Aplicar algoritmos de ordenação e de pesquisa na solução de problemas usando abordagem orientada a objetos.

5.      Compreender conceitos básicos relacionados a complexidade e análise de algoritmos.

Ementa

Estudo de complexidade, análise e classificação de algoritmos utilizando notação assintótica. Construção e raciocínio sobre diferentes algoritmos e implementações para estruturas de dados lineares e hierárquicas: listas, filas, pilhas e árvores. Exame da adequação destes algoritmos na solução de diversas classes de problemas. Construção de algoritmos e implementações para problemas de ordenação e pesquisa.

Conteúdo

1) DESEMPENHO DE ALGORITMOS
1.1. Noções de complexidade
     -1.1.1 Contagem de operações
     -1.1.2 Notação O()

2) ESTRUTURAS LINEARES
2.1. Estruturas contíguas X Estruturas encadeadas
2.2. Coleções e suas operações de acesso
     -2.2.1 Listas
     -2.2.2 Pilhas
     -2.2.3 Filas

3) CLASSIFICAÇÃO E PESQUISA
3.1. Pesquisa sequencial X pesquisa binária
3.2. Classificação de dados
     -3.2.1 Insertion Sort
     -3.2.2 Mergesort
     -3.2.3 Quicksort
     -3.2.4 Limite inferior para ordenação por comparações O( n log(n) )
     -3.2.5 Algoritmos que não são baseados em comparação

4) ÁRVORES
4.1. Definições e representação
4.2. Árvores genéricas
4.3. Árvores binárias de pesquisa
4.4. Operações: caminhamento, pesquisa, inserção, remoção
4.5. Árvores balanceadas e sua eficiência
4.6. Heaps (com vetores) e heapsort

Bibliografia

Básica

·       CORMEN, T. H. Algoritmos – teoria e prática. 3ª ed., Rio de Janeiro: Elsevier-Campus, 2012.

·       ELLIS, H.; SAHNI, S.; RAJASEKARAN, S. Computer algorithms.  Silicon Press, 2007.

·       GOODRICH, M. T.; TAMASSIA, R. Estruturas de dados e algoritmos em Java. 5ª ed., Porto Alegre: Bookman, 2013.

Complementar

·       GOODRICH, M. T.; TAMASSIA, R.; MOUNT, D. Data Structures and Algorithms in C++. 2nd ed., Wiley, 2011.

·       AHO, A. V. Foundations of computer science. New York: Computer Science Press, 1998.

·       SEDGEWICK, R. Algorithms in C. 3rd Ed, vol 1. Addison-Wesley, 1998-2002.

·       MCALLISTER, W. Data structures and algorithms using Java. 1 ed., Boston: Jones and Bartlett, 2009.

·       RAWLINS, G. J. E. Compared to what? An introduction to the analysis of algorithms. New York: Computer Science Press, 1992.

Recursos WEB

·       http://user.it.uu.se/~arnea/ps/simp.pdf

Critérios de Avaliação

G1 = (T1 + T2) / 2

Quanto ao T1: Trabalho prático, extraclasse, abordando, geralmente, os conteúdos relacionados com as unidades 1 e 2, mas pode envolver também os conteúdos da unidade 3.

Quanto ao T2: Trabalho prático, extraclasse, abordando, geralmente, os conteúdos relacionados com a unidade 4.

OBS. 1: Será estimulada a pesquisa de alguns conteúdos extraclasse e que serão posteriormente avaliados.
OBS. 2: O grau mínimo em G1 para realizar G2 é 4.0.

Datas das Avaliações

T1 – parte 1

05 / 04 / 2021

T1 – parte 2

19 / 05 / 2021

T2

07 / 07 / 2021

G2

14 / 07 / 2021

 Comentários, dúvidas, sugestões, envie um mail para isabel.manssour at pucrs dot br

 Última alteração em 25 de fevereiro de 2021.