Ministério da Educação UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ Câmpus Ponta Grossa PLANO DE ENSINO CURSO Bacharelado em Ciência da Computação FUNDAMENTAÇÃO LEGAL MATRIZ 797 Portaria Ministerial, nº 430, publicada no D.O.U, de 29 de julho de 2014 e Resolução 106/15 COGEP de 10 de dezembro de 2015. DISCIPLINA/UNIDADE CURRICULAR Análise e Projeto de Algoritmos CÓDIGO PERÍODO CC55B 5 AT 51 CARGA HORÁRIA (Aulas) AP APS AD APCC 17 4 - Total Total Aulas Horas 72 60 AT: Atividades Teóricas, AP: Atividades Práticas, APS: Atividades Práticas Supervisionadas, AD: Atividades a Distância, APCC: Atividades Práticas como Componente Curricular. PRÉREQUISITO EQUIVALÊNCIA CC53A - Estruturas de Dados 2 CC35B - Análise De Algoritmos OBJETIVOS Conhecer as técnicas e formalismos fundamentais para analisar algoritmos. EMENTA Medidas de complexidade e cotas inferiores. Análise de algoritmos iterativos e recursivos. Análise de estruturas de dados: lineares, filas de prioridade, árvores. Análise de Algoritmos aleatorizados: tabelas de espalhamento, árvore binária de pesquisa, ordenação. Técnicas de projeto de algoritmos: divisão e conquista, técnica gulosa e programação dinâmica. Algoritmos em grafos: busca, caminho mínimo, ordenação topológica, árvore geradora de custo mínimo, fluxo máximo. CONTEÚDO PROGRAMÁTICO ITEM EMENTA 1 Medidas de complexidade. 2 Notações. 3 Análise de algoritmos iterativos e recursivos. Cotas inferiores. 4 Análise de estruturas de dados: lineares, filas de prioridade, árvores. 5 Análise de Algoritmos aleatorizados: tabelas de espalhamento, árvore binária de pesquisa. 6 Algoritmos de ordenação. 7 8 Técnicas de projeto de algoritmos: divisão e conquista, técnica gulosa e programação dinâmica. Algoritmos em grafos: busca, caminho mínimo, ordenação topológica, árvore geradora de custo mínimo, fluxo máximo. CONTEÚDO - Modelo RAM, complexidade de tempo e espaço. - Notações Theta, O, o pequeno, Ômega e ômega pequeno. - Análises de pior caso e melhor caso. - Provas de corretude de algoritmos e técnicas para prova de pertinência em classes de complexidade. - Uso de relações de recorrência para análise de algoritmos recursivos. - Definição de cotas inferiores. - Análise de complexidade de tempo dos algoritmos que executam operações básicas em vetores e listas ligadas, tais como busca, inserção e remoção de elementos. - Análise de complexidade de tempo em algoritmos de inserção e remoção em filas de prioridade. - Análise de complexidade de tempo de algoritmos que executam operações de inserção e busca em tabelas de espalhamento. - Análise de complexidade de tempo em algoritmos que implementam busca em árvores binárias de pesquisa. - Apresentação de algoritmos clássicos de ordenação e comparação de suas complexidades de tempo. - Técnicas de projeto de algoritmos: divisão e conquista, técnica gulosa e programação dinâmica. Definições, análise comparativa, exemplos de algoritmos e análise de complexidade - Terminologia, definições e apresentação de algoritmos clássicos em grafos: busca, caminho mínimo, ordenação topológica, árvore geradora de custo mínimo, fluxo máximo. PROFESSOR TURMA Sheila Morais de Almeida ANO/SEMESTRE 2016/2 AT 50 AP 16 CARGA HORÁRIA(aulas) APS 4 AD - AT: Atividades Teóricas, AP: Atividades Práticas, APS: Atividades Práticas Supervisionadas, AD: Atividades a Distância. Total 70 DIAS DAS AULAS PRESENCIAIS Dia da semana Segunda Terça Quarta Número de aulas no semestre Quinta 34 Sexta 32 Sábado PROGRAMAÇÃO E CONTEÚDOS DAS AULAS (Previsão) Dia Conteúdo das Aulas 11/08 12/08 18/08 19/08 25/08 26/08 01/09 02/09 Apresentação do plano de ensino. Modelo RAM, complexidade de tempo e espaço. Notações O, Ômega e Theta. Provas de pertinência de funções aos conjuntos O, Ômega e Theta. Notações o pequeno e ômega pequeno. Provas de pertinência de funções aos conjuntos o pequeno e ômega pequeno. Análises de pior caso e melhor caso. Provas de pertinência em classes de complexidade. Análises de pior caso e melhor caso. Provas de pertinência em classes de complexidade. Análise de complexidade de tempo dos algoritmos que executam operações básicas em vetores e listas ligadas, tais como busca, inserção e remoção de elementos. Relações de recorrência. Resolução de relações de recorrência. Uso de relações de recorrência para análise de algoritmos recursivos. Primeira prova. SATI SATI Análise de complexidade de tempo em algoritmos que implementam busca em árvores binárias de pesquisa. Análise de complexidade de tempo em algoritmos de inserção e remoção em filas de prioridade. Primeira prova substitutiva. Análise de complexidade de tempo de algoritmos que executam operações de inserção e busca em tabelas de espalhamento. Análise complexidade dos algoritmos de ordenação por Inserção e Seleção. Análise de Complexidade do QuickSort. Análise de Complexidade do Merge Sort. Projeto de Algoritmos por divisão e conquista. Projeto de Algoritmos pela técnica gulosa. Algoritmo de Kruskal para o cálculo da Árvore Geradora de Custo Mínimo. Algoritmo de Kahn para ordenação topológica. Projeto de Algoritmos pela técnica de Programação Dinâmica. Algoritmo de Floyd &Warshall para cálculo do menor caminho entre todos os pares de vértices. Análise de complexidade dos algoritmos de busca em grafos. Análise de complexidade e prova de corretude do Algoritmo de Dijkstra. Análise de complexidade do Algoritmo de Ford &Fulkerson para determinação do Fluxo máximo em redes. Segunda prova. Redução entre problemas. Problemas NP-difíceis e NP-Completos. Segunda prova substitutiva. Fechamento do semestre. Fechamento do semestre. 08/09 09/09 22/09 23/09 29/09 30/09 06/10 07/10 13/10 14/10 20/10 21/10 27/10 03/11 04/11 10/11 11/11 17/11 18/11 24/11 25/11 01/12 02/12 08/12 09/12 Número de Aulas 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 PROCEDIMENTOS DE ENSINO AULAS TEÓRICAS Aulas expositivas e dialogadas nas quais poderão ser utilizados como recursos didáticos: multimídia, computador, entre outros que se fizerem necessários. AULAS PRÁTICAS As aulas práticas consistirão fundamentalmente de resolução de exercícios. ATIVIDADES PRÁTICAS SUPERVISIONADAS Atividades acadêmicas desenvolvidas sob orientação, supervisão e avaliação de docentes e realizadas pelos discentes em horários diferentes daqueles destinados às atividades presenciais (aulas teóricas e aulas práticas). Estas atividades poderão incluir: estudo dirigido, trabalhos individuais, trabalhos em grupo, desenvolvimento de projetos, atividades em laboratório, atividades de campo, oficinas, pesquisas, estudos de casos, seminários, desenvolvimento de trabalhos acadêmicos, dentre outras. ATIVIDADES A DISTÂNCIA Não estão previstas. PROCEDIMENTOS DE AVALIAÇÃO A aprovação dar-se-á por nota final, proveniente de avaliações realizadas ao longo do semestre letivo e por freqüência. Considerar-se-á aprovado na disciplina o aluno que tiver freqüência igual ou superior a 75% (setenta e cinco por cento) e nota final igual ou superior a 6,0(seis), consideradas todas as avaliações previstas no Plano de Aulas. Ao longo do semestre serão realizadasduas avaliações substitutivas, de forma que o aluno possa recuperar o desempenho nas avaliações do semestre. A avaliação será composta de duas provas, P1 e P2, que serão aplicadas nas datas previstas no Plano de Aulas. A média final do aluno será dada por: M = (P1 + P2)/2 Para que o aluno possa recuperar o seu desempenho, serão oferecidas duas provas substitutivas, S1 e S2, que caso tenham nota melhor, substituirão as notas das provas P1 e P2, respectivamente. As provas substitutivas também serão aplicadas nas datas previstas no Plano de Aulas. REFERÊNCIAS Referências Básicas: CORMEN, Thomas H. et al. Introduction to algorithms. 3rd ed. Cambridge, Mass.: MIT Press, 2009. 1292 p. ZIVIANI, Nivio. Projeto de algorítmos: com implementações em Pascal e C. 3. ed. São Paulo: Cengage Learning, 2011. 639 p. EDELWEISS, Nina; GALANTE, Renata. Estruturas de dados. Porto Alegre, RS: Bookman, 2009. 261 p. ReferênciasComplementares: WILF, Herbert S. Algorithms and complexity. 2nd ed. Natick, MA: A K Peters, 2002. 219 p. TENENBAUM, Aaron M.; LANGSAM, Yedidyah; AUGENSTEIN, Moshe. Estruturas de dados usando C. São Paulo: Makron, 1995. 884 p. FEOFILOFF, Paulo. Algoritmos em linguagem C. Rio de Janeiro, RJ: Elsevier; Campus, 2009. 208 p. DASGUPTA, Sanjoy; PAPADIMITRIOU, Christos H.; VAZIRANI, Umesh. Algoritmos. São Paulo: McGraw-Hill, 2009. 320 p. WIRTH, Niklaus. Algorítmos e estruturas de dados. Rio de Janeiro: LTC, 1999. 255 p. KNUTH, Donald E. The art of computer programming. Reading, Mass.: Addison-Wesley; 2006. 3v. Addison-Wesley (series in computer science and information processing) Al Aho and Jeff Ullman. Foundations of Computer Science. Editora W. Freeman, 1994. ORIENTAÇÕES GERAIS Recomenda-se fortemente que o aluno dedique pelo menos 3 horas por semana extraclasse para resolução de exercícios dos livros que são referências básicas da disciplina e que compareça nos horários de atendimento ao aluno para sanar eventuais dúvidas. A solução de exercícios extraclasse é determinante para a aprovação nesta disciplina. Assinatura do Professor Assinatura do Coordenador do Curso