Sobre o Curso Altigran Soares da Silva Avalia o · Sobre o Curso ! ! Aulas ! ! ... 20 pontos ! !...

10
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 [email protected] 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.

Transcript of Sobre o Curso Altigran Soares da Silva Avalia o · Sobre o Curso ! ! Aulas ! ! ... 20 pontos ! !...

Projeto e Análise de Algoritmos

Problemas e Algoritmos

Altigran Soares da Silva

Universidade Federal do Amazonas Instituto de Computação

Sobre o Curso

n  Professor n  Altigran Soares da Silva

n  Professor Associado – Instituto de Computação UFAM

n  [email protected] n  www.icomp.ufam.edu.br/altigran n  Google: altigran

n  DBLP: Artigos Publicados n  Scholar: Impacto das publicações n  Lattes: CV Completo

Sobre o Curso

n  Aulas n  Terças e Quintas de 14:00 às 16:00

n  Blog n  http://paapg201501.wordpress.com/ n  Informações gerais, transparências, listas de

exercícios, provas, notas, etc.

Avaliação

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

n  Enunciado entregue pelo menos 30 dias antes

n  Obrigatória entrega dos 2 componentes n  Sem um dos componentes, a nota da avaliação será

zero.

Avaliação

n  Seminário Final: n  Ao final do semestre cada aluno deverá

apresentar um seminário evolvendo o conteúdo da disciplina

n  Acompanhado de artigo técnico de até 8 páginas em coluna dupla no formato para artigos em conferências da ACM.

n  25 pontos e mais 5 pontos de assiduidade aos seminários apresentados.

Avaliação

n  Nota Final: n  NF: (AV1 + AV2 + Seminário)/10 n  Para ser aprovado, NF ≥7,0.

Sobre o Curso n  Livro Texto

n  CORMEN, Thomas H. LEISERSON, Charles E. RIVEST, Ronald L. STEIN, Clifford. Introduction to algorithms. 3nd edition. MIT Press, 2000.

n  LEISERSON, Charles E. STEIN, Clifford. RIVEST, Ronald L. CORMEN, Thomas H. Algoritmos, teoria e prática. Campus, 2002.

n  Outras Referências n  HOROWITZ, E. SAHNI, S. Fundamentals of computer algorithms.

Computer Science Press, 1978. n  ZIVIANI, N. Projeto de algoritmos com implementações em Pascal

e C. 2010 n  AHO, A. V. HOPCROFT, J. E. ULLMAN, J. D. The design and

analysis of computer algorithms. Addison-Wesley, 1974.

Sobre o curso n  Outras Referências

n  GAREY, M. R. JOHNSON, D. S. Computers and intractability: a guide to the theory of np-completeness. W. H. Freeman, 1979.

n  GONNET, G. H. BAEZA-YATES, R. Handbook of algorithms and data structures. 2nd edition. Addison-Wesley, 1991.

n  KNUTH, E. The art of computer programming. Addison-Wesley. (1) Fundamental Algorithms, (2) Seminumerical Algorithms, e (3) Sorting and Searching.

n  LAWLER, E. L. LENSTRA, J. K. KAN, A. H. SHMOYS, D. B. The traveling salesman problem. Wiley, 1985.

n  MANBER. Introduction to algorithms - a creative approach. Addison-Wesley, 1989.

n  SEDGEWICK, R. Algorithms. 2nd edition. Addison-Wesley, 1988.

Programa

n  Fundamentos n  Divisão e Conquista n  Método Guloso n  Programação Dinâmica n  Problemas NP-Completo

Encarando o monstro

n  PAA 2014/01

0,00

2,00

4,00

6,00

8,00

10,00

12,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  Não estudar diariamente n  Estudar somente no dia da prova n  Estudar somente pelos slides n  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

n  A: O que fazes? Qual a tua profissão?

n  B: Eu sou cientista da computação

n  A: Ha! Por que quando eu estou na tela X no MS Y.Z eu não consigo imprimir o arquivo Q?

Uma resposta

n  “Ciência da Computação tem tanto a ver com computadores como a astronomia tem a ver com telescópios”

n  E. Dijkstra n  (Ganhador do Turing Award em 1972)

Na boca do povo … O que é Ciência da Computação?

n  Também chamada de Computação n  Não tem a ver tanto com computadores e

sim com computar

Definição da ACM - 1989

n Ciência da Computação é o estudo sistemático de processos algorítmicos

Áreas de CC

n  Hardware/Arquitetura n  Construçao de computadores e dispositivos

n  Software n  Construçao de programas e sistemas

n  Teoria n  Estudo do que é possível computar

Computadores

n  Os computadores eletrônicos foram criados por motivos tipicamente bélicos n  Cálculo de Balística n  Quebra de códigos cifrados n  Cálculo de Censo

Algoritmos

n  Um algoritmo: n  A essência de um procedimento computacional

composto por instruções seqüenciais passo a passo

n  Um programa: n  Implementação de um algoritmo em uma dada

linguagem de programação.

n  Estrutura de dados: n  forma de organizar os dados necessários à solução de

um problema

Programas

n  Programas de computador implementam algoritmos em uma linguagem de programação (Java, C, etc.)

n  Estamos interessados em algoritmos/programas eficientes (rápidos)

História da CC

n  2000 anos antes dos computadores modernos

n  Computadores digitais tornaram a computação uma atividade prática de ser executada de forma massiva

Algoritmos

n  O nome “Algoritmo” é geralmente associado ao do matemático persa Mohammed al-Khowarizmi, que em latin foi traduzido como Algorismus

Algoritmos Ancestrais

n  500 A/C : Algoritmo babilônico para aproximar as raízes quadradas

Algoritmo de Euclides

n  300 A/C n  Cálculo do Máximo

Divisor Comum de dois números

n  Ainda em uso hoje!

Crivo de Eratosthenes

n  250 A/C n  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

n  Ineficiente para números grandes (centenas de dígitos) n  Métodos probalisticos eficientes foram desenvolvidos nos anos 70 e 80 n  Havia um pequena chance de erro

Método de Newton

n  1600: Método de Newton para achar as raízes de um polinômio

Matemática dos Algoritmos

n  Hilbert (1928): “Qualquer problema pode ser resolvido por um procedimento mecânico?”

n  Alan Turing (1936): Não! Existem problemas que nenhum computador pode resolver

Problemas Difícies

n  10o. problema de Hilbert (1900): n  Existe um algoritmo para achar

soluções inteiras para as equaçoes de Diophantine?

n  x + 2y2 = 0 n  x6 + y6 = z6

10o. Problema de Hilbert

n  Matiyasevich provou em 1970 que não existe um algoritmo que resolve equações de Diophantine Arbitrárias

n  Alguns problemas permitem soluções algoritmicas, outros não

n  Alguns permitem soluções algoritmicas eficientes!

Problema do Caixeiro Viajante

n  Uma viagem (tour) em um grafo é um ciclo que passa por todos os vértices.

n  Uma viagem é simples quando os vértices, exceto o primeiro, não se repetem

n  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

B

D

C

A

F

E

7

4

2

8

5

3

2

6

1

Viagem do PCV com custo 17

Problema do Caixeiro Viajante

n  Não existe algoritmo computacionalmente eficiente conhecido para resolver o PCV.

n  O PCV é um dos grandes problemas em aberto na ciência da computação!

n  Problemas relacionados ao PCV vêm sendo estudados por matemáticos desde o século XIX

n  A forma geral do problema foi definida na década de 1930

n  É um exemplo de um problema da classe NP-completo

Problema do Caixeiro Viajante

n  Em 1954 George Dantzig, Ray Fulkerson, e Selmer Johnson resolveram uma instância do TSP para 49 cidades

n  Em 1987, Martin Groetschel e Olaf Holland encontraram uma viagem ótima para 666 lugares interessantes ao redor do mundo.

Solução “força bruta” n  Solução exaustiva envolve gerar todas as

viagens calculando seus custos e determinar aquela de menor custo

n  Para n arestas teremos (n-1)! possíveis viagens

n  Em um grafo completo de 20 nodos teriamos algo em torno de 21018 operações

Conclusão

n  Ciência da Computação estuda a solução de problemas usando algoritmos

n  Tecnologia não é a essência da Ciência da Computação