TEORIA: 60 LABORATÓRIO: 0

Documentos relacionados
PLANO DE DISCIPLINA DISCIPLINA: Análise de Algoritmos

SIN5013 Análise de Algoritmos e Estrutura de Dados - 1o Semestre de 2019

2. DISCIPLINA REQUISITO (RECOMENDAÇÃO) 3. INDICAÇÃO DE CONJUNTO (BCC) Obrigatória TEORIA: 60 LABORATÓRIO: 30

BCC Projeto e Análise de Algoritmos Aula 0: Apresentação

Algoritmos para Automação e Sistemas

SCC-201 Introdução à Ciência de Computação II

SCC-501 Introdução à Ciência de Computação II

6. QUADRIMESTRE IDEAL 7. NÍVEL Graduação 8. Nº. MÁXIMO DE ALUNOS POR TURMA

6. QUADRIMESTRE IDEAL 7. NÍVEL Graduação 8. Nº. MÁXIMO DE ALUNOS POR TURMA TEORIA: 60 LABORATÓRIO: 30

PLANO DE DISCIPLINA DISCIPLINA: Algoritmos e Programação

Universidade Federal do ABC Rua Santa Adélia, Bairro Bangu - Santo André - SP - Brasil CEP Telefone/Fax:

PLANO DE DISCIPLINA DISCIPLINA: Algoritmos e Programação

Solução de Recorrências

Projeto e Análise de Algoritmos

BACHARELADO EM SISTEMAS DE INFORMAÇÃO MATEMÁTICA DISCRETA Aula 1 - Apresentação da disciplina

ESTRUTURA DE DADOS DCC013

Complexidade de Algoritmos

Estrutura de Dados II

Descrição da Disciplina

Projeto e Análise de Algoritmos

[Cormen et al., 2002] Algoritmos: Teoria e Prática Tradução da segunda edição em inglês.

UNIVERSIDADE FEDERAL DO RIO GRANDE DO SUL INSTITUTO DE INFORMÁTICA DEPARTAMENTO DE INFORMÁTICA APLICADA

Análise e Projeto de Algoritmos

MC3305 Algoritmos e Estruturas de Dados II. Aula 00 Apresentação. Prof. Jesús P. Mena-Chalco.

Introdução Paradigmas

Complexidade Assintótica de Programas Letícia Rodrigues Bueno

Algoritmos e Estruturas de Dados II LEIC

Algoritmos e Estrutura de Dados. Aula 01 Apresentação da Disciplina e Introdução aos Algoritmos Prof. Tiago A. E. Ferreira

Informações Importantes! INF TURMA A

Programa Analítico de Disciplina INF101 Introdução à Programação II

SCC Capítulo 6 Paradigmas e Técnicas de Projetos de Algoritmos

Complexidade de Algoritmos

Projeto e Análise de Algoritmos

Classes, Herança e Interfaces

Multiplicação de inteiros

Estruturas de Dados. Pedro Ribeiro 2017/2018 DCC/FCUP. Pedro Ribeiro (DCC/FCUP) Estruturas de Dados 2017/ / 16

Análise e Projeto de Algoritmos

ALGORITMOS E ESTRUTURAS DE DADOS I PROF. EDSON IFARRAGUIRRE MORENO

Teoria da Computação Aula 8 Noções de Complexidade

BCC402 Algoritmos e Programação Avançada. Prof. Marco Antonio M. Carvalho Prof. Túlio Toffolo 2012/1

Material preparado a partir de slides dos profs. Jesús Mena-Chalco e Fabrício Olivetti

Universidade Estadual de Mato Grosso do Sul Bacharelado em Ciência da Computação Algoritmos e Estruturas de Dados II Prof. Fabrício Sérgio de Paula

SCC Introdução à Teoria da Computação

Algoritmos de Ordenação. Cota inferior. Professora: Fátima L. S. Nunes SISTEMAS DE INFORMAÇÃO

2. Ordenação por Seleção

UNIVERSIDADE PRESBITERIANA MACKENZIE Faculdade de Computação e Informática. 3 a ETAPA

Projeto e Análise de Algoritmos. Introdução. Prof. Ademir Constantino Universidade Estadual de Maringá Departamento de Informática

Prova Didática Grafos: Árvores Geradoras e Caminhos Mínimos, Análise de Complexidade

Estruturas de Dados Aula 1: Introdução e conceitos básicos 28/02/2011

QUESTÕES DE PROVAS ANTIGAS

Teoria da Complexidade Computacional

Complexidade de Tempo e Espaço

Marcelo Keese Albertini Faculdade de Computação Universidade Federal de Uberlândia

UNIVERSIDADE FEDERAL RURAL DE PERNAMBUCO PRÓ-REITORIA DE ENSINO DE GRADUAÇÃO

Projeto e Análise de Algoritmos NP Completude. Prof. Humberto Brandão

BCC202 - Estrutura de Dados I

DISCIPLINA: Programação de Computadores I

Paradigmas de Projetos de Algoritmos

UNIVERSIDADE FEDERAL RURAL DE PERNAMBUCO PRÓ-REITORIA DE ENSINO DE GRADUAÇÃO

Algoritmos e Estruturas de Dados

MÉTODOS DE ORDENAÇÃO. Introdução à Programação SI2

If969 - Algoritmos e Estruturas de Dados

Projeto e Análise de Algoritmos

ANAC UMA FERRAMENTA PARA APOIO AO ENSINO DE COMPLEXIDADE DE ALGORITMOS. Marco Antonio de Castro Barbosa, Laira Vieira Toscani, Leila Ribeiro

Estrutura de Dados. Plano de Ensino. Vilson Heck Junior. Campus Lages. Instituto Federal de Santa Catarina

Transcrição:

Universidade Federal do ABC Rua Santa Adélia, 166 - Bairro Bangu - Santo André - SP - Brasil CEP 09.210-170 - Telefone/Fax: +55 11 4996-3166 1. CÓDIGO E NOME DA DISCIPLINA: BC1435 - Análise de Algoritmos 2. DISCIPLINA REQUISITO (RECOMENDAÇÃO) Matemática Discreta; Algoritmos e Estruturas de Dados I 4. CURSO Bacharelado em Ciência da Computação 3. INDICAÇÃO DE CONJUNTO (BCC) Obrigatória 5. CRÉDITOS TPI: 4-0-4 6. QUADRIMESTRE IDEAL 9 8. Nº. MÁXIMO DE ALUNOS POR TURMA 7. NÍVEL Graduação TEORIA: 60 LABORATÓRIO: 0 9. OBJETIVOS Apresentar noções e conceitos de complexidade de computação. Apresentar métodos e conceitos que permitam ao aluno, de maneira confiável, avaliar a qualidade de um algoritmo. A essência destes métodos e conceitos estará focalizada no cálculo de complexidade e prova de corretude de algoritmos. Caracterizar técnicas gerais de desenvolvimento de algoritmos que permitam ao aluno melhor projetá-los conforme sua natureza. As técnicas gerais escolhidas a serem estudadas são Divisão e Conquista, Método Guloso e Programação Dinâmica. Apresentar noções básicas de Classes de Complexidade, em particular as classes P, NP e NP- Completo. 10. COMPETÊNCIAS A disciplina deverá permitir o aluno ser capaz de: - Calcular e analisar a complexidade de algoritmos; - Projetar algoritmos eficientes; - Analisar e comparar diferentes algoritmos (soluções) para um mesmo problema. 11. PROGRAMA RESUMIDO Conceitos básicos: recorrências, medidas de complexidade: melhor caso, caso médio e pior caso. Técnicas gerais de projeto de algoritmos: divisão e conquista, método guloso e programação dinâmica. Classes de complexidade: P, NP e NP-completude. 12. PROGRAMA 1. Introdução 1.1 Algoritmos 1.2 Projeto de Algoritmos 1.3 Análise de Algoritmos

2. Fundamentos Matemáticos 2.1 Indução Matemática 2.2 Correspondência Indução/Recursão 2.3 Somatórios 2.3.1 Fórmulas de Somatórios e Propriedades 2.3.2 Limites de Somatórios 2.4 Recorrências 2.4.1 O Método da Substituição 2.4.2 O Método da iteração 2.4.3 O Método Mestre 2.5 Notação Assintótica 2.5.1 Notação O Notação Notação 3. Divisão e Conquista 3.1 Busca Binária 3.1.1 O Algoritmo 3.1.2 Análise de Complexidade 3.1.3 Prova de Corretude 3.2 Máximo e Mínimo de uma Lista (MaxMin) 3.2.1 O Algoritmo 3.2.2 Análise de Complexidade 3.2.3 Prova de Corretude 3.3 MergeSort 3.3.1 O Algoritmo 3.3.2 Análise de Complexidade (de pior caso) 3.3.3 Prova de Corretude 3.4 QuickSort 3.4.1 O Algoritmo 3.4.2 Análise de Complexidade 3.4.3 Prova de Corretude 3.5 Multiplicação de Inteiros Grandes 3.5.1 O Algoritmo 3.5.2 Análise de Complexidade 3.5.3 Prova de Corretude 3.6 Multiplicação de Matrizes 3.6.1 O Algoritmo 3.6.2 Análise de Complexidade 3.6.3 Prova de Corretude 4. Método Guloso 4.1 Árvore Espalhada Mínima 4.1.1 O Algoritmo (Kruskal) 4.1.2 Análise de complexidade 4.1.3 Prova de corretude 4.2 Análise de Complexidade 4.2.1 O Algoritmo (Dijkstra) 4.2.2 Análise de Complexidade 4.2.3 Prova de Corretude 4.3 Seqüência Ótima de Intercalações 4.3.1 O Algoritmo 4.3.2 Análise de Complexidade 4.3.3 Prova de Corretude

4.4 Código de Huffman para Compressão de Dados 4.4.1 O Algoritmo 4.4.2 Análise de Complexidade 4.4.3 Prova de Corretude 5. Programação Dinâmica 5.1 Multiplicação de Cadeias de Matrizes 5.1.1 O Algoritmo 5.1.2 Análise de Complexidade 5.1.3 Prova de Corretude 5.2 Alinhamento entre Cadeias 5.2.1 O Algoritmo 5.2.2 Análise de Complexidade 5.2.3 Prova de Corretude 5.3 Subseqüência Máxima Comum 5.3.1 O Algoritmo 5.3.2 Análise de Complexidade 5.3.3 Prova de Corretude 5.4 Problema do Caixeiro Viajante 5.4.1 O Algoritmo 5.4.2 Análise de Complexidade 5.4.3 Prova de Corretude 5.5 Problema da Mochila (Knapsack) 5.5.1 O Algoritmo 5.5.2 Análise de Complexidade 5.5.3 Prova de Corretude 6. Classes de Complexidade 6.1 Classe P 6.2 Classe NP 6.3 NP-Completude 13. MÉTODOS UTILIZADOS Os conteúdos serão apresentados via aula expositiva, com uso de recursos audiovisuais (slides) e lousa. Além disso, uma ou duas aulas são utilizadas para resolução de exercícios e tira dúvidas. 14. ATIVIDADES DISCENTES Estudo individual a partir das referências bibliográficas e das notas de aula, resolução de listas de exercícios individuais e em grupos, implementação e avaliação de exercícios-programa e provas escritas. 15. CARGA HORÁRIA AULAS TEÓRICAS: 48h TOTAL: 48h AULAS PRÁTICAS: RECOMENDADO PARA DEDICAÇÃO INDIVIDUAL: 4h por semana 16. CRITÉRIOS DE AVALIAÇÃO DE APRENDIZAGEM O conceito será composto da seguinte forma: 70% do aproveitamento correspondendo às provas escritas e 30% correspondendo às demais atividades (lista de exercícios e exercícios-programas). 17. NORMAS DE RECUPERAÇÃO (CRITÉRIOS DE APROVAÇÃO E ÉPOCAS DE REALIZAÇÃO DAS PROVAS OU TRABALHOS) As notas serão atribuídas segundo os conceitos estabelecidos pela UFABC. A aprovação se dará

mediante obtenção de conceitos A, B, C, ou D. Será aplicado uma prova substitutiva no final do trimestre como possibilidade de recuperação na disciplina. 18. BIBLIOGRAFIA RECOMENDADA BIBLIOGRAFIA BÁSICA: 1) CORMEN, T. H et al., Algoritmos: Teoria e Prática, Rio de Janeiro: Editora Campus, 2ª edição, 2002. 2) SZWARCFITER, L. MARKEZON, Estruturas de Dados e seus Algoritmos. Livros Técnicos e Científicos, 1994. 3) ZIVIANI, N., Projeto de Algoritmos com implementação em Java e C++, São Paulo: Editora Thomson, 1ª edição, 2007. BIBLIOGRAFIA COMPLEMENTAR 1) DASGUPTA, S.; PAPADIMITRIOU, C.; VAZIRANI, U. Algoritmos, McGraw-Hill, 2009. 2) TOSCANI, L. V. e VELOSO, P. A. S., Complexidade de Algoritmos, UFRGS: Editora Sagra Luzzatto, 1ª. Edição, 2001. 3) GREENE, Daniel H.; KNUTH, Donald E. Mathematics for the analysis of algorithms. 3rd ed. Boston: Birkhäuser, 1990. 4) KNUTH, Donald Ervin. The art of computer programming. 3rd ed. Reading, Mass: Addison- Wesley. 5) AHO, Alfred V; HOPCROFT, John E; ULLMAN, Jeffrey D. Data structures and algorithms. Reading, Mass: Addison-Wesley, 1983. 19. PLANO SUGERIDO PARA AS AULAS (em semanas letivas) Aula 01: Apresentação da disciplina. Aula 02: Introdução. Aula 03: Notação assintótica e revisão de indução matemática. Aula 04: Recorrências e revisão de manipulação de somações. Aula 05: Busca binária: algoritmo, corretude e complexidade. Aula 06: MaxMin: algoritmo, corretude e complexidade. Aula 07: MergeSorte: algoritmo, corretude e complexidade. Aula 08: QuickSort: algoritmo, corretude e complexidade (pior caso). Aula 09: QuickSort: complexidade de caso médio. Aula 10: Aula de exercícios. Aula 11: Prova 01. Aula 12: Limite inferior de ordenação (baseada em comparação) e ordenação em tempo linear. Aula 13: Multiplicação de inteiros grades. Aula 14: Multiplicação de matrizes. Aula 15: Árvore geradora mínima: algoritmo de Kruskal, sua corretude e complexidade. Aula 16: Seqüência ótima de intercalações. Aula 17: Código de Huffman para Compressão de Dados Aula 18: Seqüência ótima de multiplicação de matrizes. Aula 19: Alinhamento entre cadeias Aula 20: Subseqüência máxima comum Aula 21: Problema da mochila. Aula 22: Classes de complexidade.

Aula 23: Classes de complexidade. Aula 24: prova 02. 20. PROFESSOR(A) RESPONSÁVEL Luiz Carlos da Silva Rozante Jerônimo Cordoni Pellegrini Gordana Manic Jair Donadelli Junior