n Professor n Duas Avaliações prático-teóricas: n Componente Teórico: 20 pontos n Componente Prático: 15 pontos

Documentos relacionados
Algoritmos para Automação e Sistemas

Teoria da Complexidade Computacional

Abordagens para Problemas Intratáveis

PLANO DE DISCIPLINA DISCIPLINA: Análise de Algoritmos

TEORIA: 60 LABORATÓRIO: 0

PLANO DE DISCIPLINA DISCIPLINA: Análise de Algoritmos

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

Complexidade de Tempo e Espaço

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

Programa Analítico de Disciplina SIN213 Projeto de Algoritmos

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

5COP096 TeoriadaComputação

Teoria da Complexidade Computacional

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

PLANO DE DISCIPLINA DISCIPLINA: Algoritmos e Programação

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

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

Planejamento da Disciplina

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

If969 - Algoritmos e Estruturas de Dados

BCC402 Algoritmos e Programação Avançada. Prof. Marco Antonio M. Carvalho Prof. Túlio Ângelo M. Tóffolo 2011/1

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

Complexidade de Algoritmos

Análise e Projeto de Algoritmos

Web site. Profa. Patrícia Dockhorn Costa.

AED Algoritmos e Estruturas de Dados LEE /2004

Descrição da Disciplina

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

Disciplina de Projetos e Análise de Algoritmos. Aula 1 - Apresentação aos Algoritmos Computacionais

PLANO DE DISCIPLINA DISCIPLINA: Estrutura de Dados 2

Análise e Projeto de Algoritmos

PLANO DE DISCIPLINA DISCIPLINA: Algoritmos e Programação

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

Complexidade de Algoritmos

Preliminares. Profa. Sheila Morais de Almeida. agosto

Classes, Herança e Interfaces

ESTRUTURAS DE DADOS (LEI, LM, LEE) Universidade da Beira Interior, Departamento de Informática Hugo Pedro Proença, 2017/2018

PCC104 - Projeto e Análise de Algoritmos

Complexidade Assintótica de Programas Letícia Rodrigues Bueno

Projeto e Análise de Algoritmos

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

Ciclos hamiltonianos e o problema do caixeiro viajante

Análise e Projeto de Algoritmos

Projeto e Análise de Algoritmos

Introdução. Estrutura de Dados II Prof Jairo Francisco de Souza

Projeto e Análise de Algoritmos Projeto de Algoritmos Programação Dinâmica (continuação) Prof. Humberto Brandão

5COP096 TeoriadaComputação

O estudo utilizando apenas este material não é suficiente para o entendimento do conteúdo. Recomendamos a leitura das referências no final deste

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

Programa Analítico de Disciplina INF333 Programação Competitiva

CT-234. Estruturas de Dados, Análise de Algoritmos e Complexidade Estrutural. Carlos Alberto Alonso Sanches

ALGORITMOS E ESTRUTURAS DE DADOS I PROF. EDSON IFARRAGUIRRE MORENO

Computação. Sob uma perspectiva teórica. Elloá B. Guedes. IQuanta. 22 de setembro de 2008

Complexidade de Algoritmos

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

Implementação de algoritmos para consultas de segmentos em janelas

Análise e Projeto de Algoritmos

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

PLANO DE ENSINO DE ALGORITMOS

04 Grafos: caminhos e coloração SCC0503 Algoritmos e Estruturas de Dados II

Algoritmos e Estruturas de Dados II LEIC

CAL ( ) MIEIC/FEUP Grafos: Introdução (Março, 2011)

ESTRUTURA DE DADOS DCC013

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

UNIVERSIDADE ESTADUAL DE MONTES CLAROS PRÓ-REITORIA DE PÓS-GRADUAÇÃO PROGRAMA DE PÓS-GRADUAÇÃO EM MODELAGEM COMPUTACIONAL E SISTEMAS

Projeto e Análise de Algoritmos

ALGORITMOS AVANÇADOS UNIDADE I Análise de Algoritmo - Notação O. Luiz Leão

Prof. Dr. Marcos Castilho. Departamento de Informática/UFPR. 22 de Fevereiro de 2018

Técnicas de Concepção de Algoritmos: Branch and Bound

AED Algoritmos e Estruturas de Dados LEEC /2005. Apresentação. Algoritmos e Estruturas de Dados

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

MINISTÉRIO DA EDUCAÇÃO CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS DIRETORIA DE GRADUAÇÃO

Projeto e Análise de Algoritmos

Estruturas de Dados. Grafos VIII: Árvores Geradoras Mínimas. Prof. Ricardo J. G. B. Campello

Estruturas de Dados para Conjuntos Disjuntos: Union-find Letícia Rodrigues Bueno

ALGORITMOS E ESTRUTURAS DE DADOS CES-11

Informações Importantes! INF TURMA A

Coloração. Carolina Moraes e Lucas Glir

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

Teoria da Computação. Aula 3 Comportamento Assintótico 5COP096. Aula 3 Prof. Dr. Sylvio Barbon Junior. Sylvio Barbon Jr

Teoria da Computação Prof. Lucília Figueiredo Prova 03 - ENTREGA DIA 24/06/2015. (a) Descreva o programa da MT usando um pseudocódigo.

Projeto e Análise de Algoritmos Projeto de Algoritmos Programação Dinâmica. Prof. Humberto Brandão

Estudo e Implementação de Algoritmos de Roteamento sobre Grafos em um Sistema de Informações Geográficas

Notação Assintótica Letícia Rodrigues Bueno

Algoritmos e Estruturas de Dados II

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

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

UNIVERSIDADE LUSÍADA DE LISBOA. Programa da Unidade Curricular ALGORITMOS E ESTRUTURAS DE DADOS Ano Lectivo 2018/2019

Abordagens para Resolução de Problemas

BCC204 - Teoria dos Grafos

Complexidade Assintótica

Corpo Docente. Algoritmos e Estruturas de Dados LEE 2014/ /02/15. Apresentação. } Fernando Mira da Silva

B-tree. B-Trees. Estrutura do nodo da B-tree. Balanceamento. Disposição dos elementos ordenados na B-tree. Exemplo de uma B-tree de ordem 3

Análise de Algoritmos. Prof. Sérgio Carlos Portari Júnior

Teoria da Computação. Complexidade computacional classes de problemas

Estrutura de Dados II

EDITAL Nº 03/ PPg-BIOINFO-UFRN/2016

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

PLANO DE ENSINO. CURSO: Bacharelado em Sistemas de Informação MODALIDADE: PRESENCIAL ( X ) OBRIGATÓRIA ( ) OPTATIVA DEPARTAMENTO: DEINFO

Transcrição:

Projeto e Análise de Algoritmos Problemas e Algoritmos Altigran Soares da Silva Universidade Federal do Amazonas Instituto de Computação Sobre o Curso Professor Altigran Soares da Silva Professor Associado Instituto de Computação UFAM alti@icomp.ufam.edu.br www.icomp.ufam.edu.br/altigran Google: altigran DBLP: Artigos Publicados Scholar: Impacto das publicações Lattes: CV Completo Sobre o Curso Aulas Terças e Quintas de 14:00 às 16:00 Blog http://paapg201501.wordpress.com/ Informações gerais, transparências, listas de exercícios, provas, notas, etc. Avaliação Duas Avaliações prático-teóricas: Componente Teórico: 20 pontos Componente Prático: 15 pontos Enunciado entregue pelo menos 30 dias antes Obrigatória entrega dos 2 componentes Sem um dos componentes, a nota da avaliação será zero.

Avaliação Seminário Final: Ao final do semestre cada aluno deverá apresentar um seminário evolvendo o conteúdo da disciplina Acompanhado de artigo técnico de até 8 páginas em coluna dupla no formato para artigos em conferências da ACM. 25 pontos e mais 5 pontos de assiduidade aos seminários apresentados. Avaliação Nota Final: NF: (AV1 + AV2 + Seminário)/10 Para ser aprovado, NF 7,0. Sobre o Curso Sobre o curso Livro Texto CORMEN, Thomas H. LEISERSON, Charles E. RIVEST, Ronald L. STEIN, Clifford. Introduction to algorithms. 3nd edition. MIT Press, 2000. LEISERSON, Charles E. STEIN, Clifford. RIVEST, Ronald L. CORMEN, Thomas H. Algoritmos, teoria e prática. Campus, 2002. Outras Referências HOROWITZ, E. SAHNI, S. Fundamentals of computer algorithms. Computer Science Press, 1978. ZIVIANI, N. Projeto de algoritmos com implementações em Pascal e C. 2010 AHO, A. V. HOPCROFT, J. E. ULLMAN, J. D. The design and analysis of computer algorithms. Addison-Wesley, 1974. Outras Referências GAREY, M. R. JOHNSON, D. S. Computers and intractability: a guide to the theory of np-completeness. W. H. Freeman, 1979. GONNET, G. H. BAEZA-YATES, R. Handbook of algorithms and data structures. 2nd edition. Addison-Wesley, 1991. KNUTH, E. The art of computer programming. Addison-Wesley. (1) Fundamental Algorithms, (2) Seminumerical Algorithms, e (3) Sorting and Searching. LAWLER, E. L. LENSTRA, J. K. KAN, A. H. SHMOYS, D. B. The traveling salesman problem. Wiley, 1985. MANBER. Introduction to algorithms - a creative approach. Addison-Wesley, 1989. SEDGEWICK, R. Algorithms. 2nd edition. Addison-Wesley, 1988.

Programa Encarando o monstro Fundamentos Divisão e Conquista Método Guloso Programação Dinâmica Problemas NP-Completo PAA 2014/01 12,00 10,00 8,00 6,00 4,00 2,00 0,00 1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 O que NÃO fazer!! Não estudar diariamente Estudar somente no dia da prova Estudar somente pelos slides Não fazer as listas de exercícios

Planejamento Aula Unidade Assunto Referência 1 Fundamentos Problemas e Algoritmos; Notação Assintótica 1,2 2 Fundamentos Analise de Algoritmos: Notação Assintótica 2 3 Fundamentos Somatórios / Dvivsão e Conquista / Recorrências 3,4 4 Fundamentos Dvivsão e Conquista / Recorrências 4 5 Fundamentos Reserva 6 Método Guloso Elementos da Estratégia Gulosa 16.1,16.2 7 Método Guloso Códigos de Huffman 16.3 8 Método Guloso Árvore Geradora Mínima 16.3 9 Método Guloso Caminhos Mínimos 23 10 Método Guloso RESERVA 24,25 11 1a. Avaliação 12 Programação Dinâmica Programação Dinâmica 15 13 Programação Dinâmica Multiplicação de Cadeias de Matrizes 15 14 Programação Dinâmica Problema do Caixeiro Viajante 15.1 15 Programação Dinâmica Problema da Mochila 16 Programação Dinâmica RESERVA 17 Problemas NP-Completo Algoritmos de Tempo Polinomial 34 18 Problemas NP-Completo NP-Completude e Redutibilidade 34 19 Problemas NP-Completo Provas de NP-Completude 34 20 Problemas NP-Completo Problemas NP-Completo 34 21 Problemas NP-Completo RESERVA 22 2a. Avaliação 23-30 Seminários Conversa Típica A: O que fazes? Qual a tua profissão? B: Eu sou cientista da computação A: Ha! Por que quando eu estou na tela X no MS Y.Z eu não consigo imprimir o arquivo Q? Uma resposta Ciência da Computação tem tanto a ver com computadores como a astronomia tem a ver com telescópios E. Dijkstra (Ganhador do Turing Award em 1972)

Na boca do povo O que é Ciência da Computação? Também chamada de Computação Não tem a ver tanto com computadores e sim com computar Definição da ACM - 1989 Ciência da Computação é o estudo sistemático de processos algorítmicos Áreas de CC Hardware/Arquitetura Construçao de computadores e dispositivos Software Construçao de programas e sistemas Teoria Estudo do que é possível computar

Computadores Os computadores eletrônicos foram criados por motivos tipicamente bélicos Cálculo de Balística Quebra de códigos cifrados Cálculo de Censo Algoritmos Um algoritmo: A essência de um procedimento computacional composto por instruções seqüenciais passo a passo Um programa: Implementação de um algoritmo em uma dada linguagem de programação. Estrutura de dados: forma de organizar os dados necessários à solução de um problema Programas Programas de computador implementam algoritmos em uma linguagem de programação (Java, C, etc.) Estamos interessados em algoritmos/ programas eficientes (rápidos) História da CC 2000 anos antes dos computadores modernos Computadores digitais tornaram a computação uma atividade prática de ser executada de forma massiva

Algoritmos O nome Algoritmo é geralmente associado ao do matemático persa Mohammed al-khowarizmi, que em latin foi traduzido como Algorismus Algoritmo de Euclides 300 A/C Cálculo do Máximo Divisor Comum de dois números Ainda em uso hoje! Algoritmos Ancestrais 500 A/C : Algoritmo babilônico para aproximar as raízes quadradas Crivo de Eratosthenes 250 A/C Derterminar se x é primo:x=17. Liste todos os números de 2 a 16 Comece com 2. Se 2 não divide 17, então risque 2 e todos os múltiplos de 2 da lista Vá para o próximo número não riscado e repita Se todos os numéros terminarem riscados, x é primo.

Crivo de Eratosthenes Ineficiente para números grandes (centenas de dígitos) Métodos probalisticos eficientes foram desenvolvidos nos anos 70 e 80 Havia um pequena chance de erro Método de Newton 1600: Método de Newton para achar as raízes de um polinômio Matemática dos Algoritmos Hilbert (1928): Qualquer problema pode ser resolvido por um procedimento mecânico? Alan Turing (1936): Não! Existem problemas que nenhum computador pode resolver Problemas Difícies 10o. problema de Hilbert (1900): Existe um algoritmo para achar soluções inteiras para as equaçoes de Diophantine? x + 2y 2 = 0 x 6 + y 6 = z 6

10o. Problema de Hilbert Matiyasevich provou em 1970 que não existe um algoritmo que resolve equações de Diophantine Arbitrárias Alguns problemas permitem soluções algoritmicas, outros não Alguns permitem soluções algoritmicas eficientes! Problema do Caixeiro Viajante Uma viagem (tour) em um grafo é um ciclo que passa por todos os vértices. Uma viagem é simples quando os vértices, exceto o primeiro, não se repetem Seja um grafo ponderado (ou seja, com pesos nas arestas), uma viagem do caixeiro viajante é uma viagem simples de custo mínimo. Problema do Caixeiro Viajante Problema do Caixeiro Viajante 7 D B 2 5 2 C 8 6 E A 1 Viagem do PCV com custo 17 4 3 F Não existe algoritmo computacionalmente eficiente conhecido para resolver o PCV. O PCV é um dos grandes problemas em aberto na ciência da computação! Problemas relacionados ao PCV vêm sendo estudados por matemáticos desde o século XIX A forma geral do problema foi definida na década de 1930 É um exemplo de um problema da classe NP-completo

Problema do Caixeiro Viajante Em 1954 George Dantzig, Ray Fulkerson, e Selmer Johnson resolveram uma instância do TSP para 49 cidades Em 1987, Martin Groetschel e Olaf Holland encontraram uma viagem ótima para 666 lugares interessantes ao redor do mundo. Solução força bruta Solução exaustiva envolve gerar todas as viagens calculando seus custos e determinar aquela de menor custo Para n arestas teremos (n-1)! possíveis viagens Em um grafo completo de 20 nodos teriamos algo em torno de 2 1018 operações Conclusão Ciência da Computação estuda a solução de problemas usando algoritmos Tecnologia não é a essência da Ciência da Computação