PONTIFÍCIA UNIVERSIDADE CATÓLICA DO RIO GRANDE DO SUL FACULDADE DE INFORMÁTICA DEPARTAMENTO: Fundamentos da Computação CURSO: Bacharelado em Ciência da Computação DISCIPLINA: Tópicos Especiais em Teoria da Computação I CÓDIGO: 46192 CRÉDITOS: 04 CARGA HORÁRIA: 60 horas-aula VALIDADE: a partir de 2005/I OBJETIVOS: O cumprimento da disciplina busca dar ao aluno, ao final do semestre, condições de: 1. Reconhecer situações típicas em que métodos de ordenação em tempo linear podem ser usados e como implementá-los; 2. Descrever, projetar, implementar e analisar estruturas de dados para conjuntos ordenados e saber quando utilizá-las; 3. Descrever, projetar, implementar e analisar estruturas de dados para filas com prioridades (priority queues) e saber quando utilizá-las; 4. Reconhecer situações em que o método de programação dinâmica pode ser usado para eficiente implementação de um algoritmo para um dado problema, e ser capaz de empregálo corretamente. EMENTA: Tópicos atuais sobre a matéria da disciplina eletiva. Nº DA UNIDADE: 01 CONTEÚDO: Revisão de conceitos de Análise de Complexidade de Algoritmos 1.1 Notações , e para análise assintótica da complexidade de tempo 1.2 Análise do pior caso, melhor caso e análise do caso médio de um algoritmo 1.3 Análise de algoritmos versus análise de problemas 1.4 Técnicas básicas de análise de algoritmos iterativos Emitido em: 27/06/17 - 17:59 Página 1 de 3 Carimbo e Assinatura da Unidade: Nº DA UNIDADE: 02 CONTEÚDO: Revisão de conceitos de programação recursiva 2.1 Recursão linear e recursão divide-and-conquer 2.2 Análise de complexidade de algoritmos recursivos divide-and-conquer Nº DA UNIDADE: 03 CONTEÚDO: Algoritmos de ordenação em tempo linear 3.1 Métodos de ordenação tradicionais por comparação 3.1.1 Caso: Mergesort 3.1.2 Limite inferior para complexidade de algoritmos de ordenação por comparação 3.2 Por que podem existir algoritmos mais eficientes do que os algoritmos por comparação 3.2.1 Explorando características peculiares ao universo do conjunto de dados 3.3 Algoritmos de ordenação em tempo linear: 3.3.1 Counting sort 3.3.2 Radix sort 3.3.3 Bucket sort Nº DA UNIDADE: 04 CONTEÚDO: Priority queues e Heaps 4.1. Caracterização do tipo abstrato de dado para priority queue 4.2. Implementação de priority queues usando heaps 4.2.1 Heaps e Heapsort 4.2.2 Implementação da priority queue sobre uma heap 4.2.3 Análise da complexidade das operações Nº DA UNIDADE: 05 CONTEÚDO: Representação de conjuntos ordenados 5.1 Caracterização do tipo abstrato de dado para conjunto ordenado 5.2 Formas triviais de representação de conjuntos e análise da complexidade das operações 5.3 Árvores binárias de pesquisa (BST) 5.3.1 Árvores Binárias e BST 5.3.2 Implementação de BST 5.3.3 Análise da complexidade no melhor e pior caso 5.3.4 O problema do balanceamento 5.4 Árvores Red-Black 5.4.1 Propriedades 5.4.2 Rotações 5.4.3 Inserção e remoção Emitido em: 27/06/17 - 17:59 Página 2 de 3 Carimbo e Assinatura da Unidade: 5.4.4 Análise da complexidade das operações 5.5 Adequação da representação de conjuntos para propósitos específicos 5.6 Outros métodos para representação de árvores balanceadas: árvores AVL, splay trees Nº DA UNIDADE: 06 CONTEÚDO: Programação Dinâmica 6.1 Introdução: 6.1.1 Algoritmos recursivos de tempo exponencial; 6.1.2 Contagem do número de sub-problemas envolvidos; 6.1.3 Algoritmos exponeciais que computam número polinomial de sub-problemas múltiplas vezes 6.2 Exemplo de uso de programação dinâmica 6.3 Elementos e características da programação dinâmica 6.4 Estudo de casos 6.5 Memoization BIBLIOGRAFIA: BÁSICA: 1. CORMEN, T. H.; LEISERSON, E. C.; RIVEST, R. L.; “Introduction to Algorithms”:. McGraw Hill Book co., The MIT Electrical Engineering and Computer Science Series, Cambridge,1990. COMPLEMENTAR: 1. BAASE, S.: “Computer algorithms: introduction to desing and analysis.” Addison-Wesley, Reading, 1993. 2. BRASSARD, G.; BRATLEY, P. Englewood Cliffs, 1996. 3. MANBER, U.: Reading, 1989. “Fundamentals of algorithms.” Prentice-Hall, “Introduction to algorithms – a creative approach.” Addison-Wesley, 4. MAURER, S.; RALSTON, A.; “Discrete algorithmic mathematics.” Addison-Wesley, Reading, 1991. Emitido em: 27/06/17 - 17:59 Página 3 de 3 Carimbo e Assinatura da Unidade: