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



Documentos relacionados
Sobre o Professor Dr. Sylvio Barbon Junior

Web site. Objetivos gerais. Introdução. Profa. Patrícia Dockhorn Costa

Ficha da Unidade Curricular (UC)

5COP096 TeoriadaComputação

PLANO DE ENSINO. DISCIPLINA: (06241) Algoritmos e Estruturas de Dados. PRÉ-REQUISITOS: Matemática Discreta e Introdução a Programação

Lógica Computacional Descrição do Projeto

Universidade Federal do Vale do São Francisco. Estruturas de Dados. Professor: Marcelo Santos Linder

Algoritmos e Estrutura de Dados II. Apresentação. Prof a Karina Oliveira. kkco@dei.unicap.br

Sumário. 5COP096 Teoria da Computação Aula 8 Pesquisa em Memória Primária

Complexidade de Algoritmos

CI165 Introdução. André Vignatti. 31 de julho de 2014

Projeto e Análise de Algoritmos Projeto de Algoritmos Introdução. Prof. Humberto Brandão humberto@dcc.ufmg.br

Pontifícia Universidade Católica do Rio Grande do Sul FACULDADE DE INFORMÁTICA

PLANO DE DISCIPLINA DISCIPLINA: Análise de Algoritmos

Programação para Computação

Estrutura de dados. Link do Google Drive: ED Apresentação Luiz Gonçalves Última revisão 8/12/14

Sistemas Distribuídos: Princípios e Algoritmos Introdução à Análise de Complexidade de Algoritmos

PROGRAMA DE DISCIPLINA

Aula 03 Limite assintótico para a ordenação, Ordenação em tempo linear

EMENTAS DAS DISCIPLINAS

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

BCC202 - Estrutura de Dados I

De uma forma ampla, o profissional egresso deverá ser capaz de desempenhar as seguintes funções:

Linguagem Formais e Autômatos

Algoritmos e Estrutura de Dados II

Complexidade de Algoritmos. Edson Prestes

Uma Heurística Gulosa para o Problema de Bin Packing Bidimensional

PLANO DE DISCIPLINA DISCIPLINA: Análise de Algoritmos

Projeto e Análise de Algoritmos. Profa. Juliana Kaizer Vizzotto. Projeto e Análise de Algoritmos - Aula 1

formação em programação em c/c++

Técnicas para Programação Inteira e Aplicações em Problemas de Roteamento de Veículos 14

Hashing. Estruturas de Dados. Motivação

FACULDADE CAMPO LIMPO PAULISTA MESTRADO EM CIÊNCIA DA COMPUTAÇÃO. Projeto e Análise de Algoritmos II Lista de Exercícios 2

ALGORITMOS DE ORDENAÇÃO. Algoritmos de comparação-e-troca. Bubble Sort Merge Sort Quick Sort

Jorge Figueiredo, DSC/UFCG. Análise e Técnicas de Algoritmos Jorge Figueiredo, DSC/UFCG. Análise e Técnicas de Algoritmos 2005.

Erik Joey Hanashiro. Qualificação de Mestrado. Orientação: Prof. Dr. Henrique Mongelli. Área de Concentração: Algoritmos Paralelos

Complemento IV Introdução aos Algoritmos Genéticos

FACULDADE DE IMPERATRIZ - FACIMP BACHARELADO EM SISTEMAS DE INFORMAÇÃO ESTRUTURA DE DADOS 2. Vieira Lima Junior. Everson Santos Araujo

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

Teoria da Complexidade Computacional

Aula 03 Custos de um algoritmo e funções de complexidade

Os limites da computação algorítmica

Algoritmos de Ordenação: Cota Inferior

Análise e Complexidade de Algoritmos

1.1. Organização de um Sistema Computacional

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

Otimização Aplicada à Engenharia de Processos

Algoritmos Genéticos

Algoritmos e Programação de Computadores I. Prof. Eduardo

Dadas a base e a altura de um triangulo, determinar sua área.

Programa Interunidades de Pós-Graduação em Bioinformática - Universidade de São Paulo

Abordagens para Problemas Intratáveis

PCC173 - Otimização em Redes

Pesquisa Sequencial e Binária. Introdução à Programação SI2

Hashing. Rafael Nunes LABSCI-UFMG

Computação Paralela. Desenvolvimento de Aplicações Paralelas João Luís Ferreira Sobral Departamento do Informática Universidade do Minho.

Projetos. Universidade Federal do Espírito Santo - UFES. Mestrado em Informática 2004/1. O Projeto. 1. Introdução. 2.

Projeto e Análise de Algoritmos Projeto de Algoritmos Tentativa e Erro. Prof. Humberto Brandão humberto@bcc.unifal-mg.edu.br

Proposta de Especificação de Software

Outras Máquinas de Turing

¹CPTL/UFMS, Três Lagoas, MS,Brasil, ²CPTL/UFMS, Três Lagoas, MS, Brasil.

MINISTÉRIO DA EDUCAÇÃO UNIVERSIDADE FEDERAL DE PELOTAS PRÓ-REITORIA DE GRADUAÇÃO

PLANO DE DISCIPLINA DISCIPLINA: Estrutura de Dados 2

Plano de Trabalho Docente Ensino Técnico

ANÁLISE DE ALGORITMOS

Projeto Pedagógico do Bacharelado em Ciência da Computação. Comissão de Curso e NDE do BCC

A ELABORAÇÃO DE ALGORITMOS REFERENTE A SISTEMAS LINEARES ATRAVÉS DO SOFTWARE PASCALZIM

INF Introdução a Interação Humano-Computador (IHC)

PLANO DE ENSINO. Mestrado em Matemática - Área de Concentração em Estatística

SISTEMA PARA ANÁLISE AUTOMÁTICA DA COMPLEXIDADE DE ALGORITMOS NÃO RECURSIVOS NO PIOR CASO

Projeto e Análise de Algoritmos Projeto de Algoritmos Heurísticas e Algoritmos Aproximados

Apostila de Fundamentos de Programação I. Prof.: André Luiz Montevecchi

PROBLEMAS FÁCEIS E DIFÍCEIS. Prof. André Vignatti DINF - UFPR

Representação de Dados

FACULDADE PITÁGORAS DISCIPLINA: FUNDAMENTOS DA ADMINISTRAÇÃO

Programa Analítico de Disciplina SIN213 Projeto de Algoritmos

DESENVOLVIMENTO DE INTERFACE WEB MULTIUSUÁRIO PARA SISTEMA DE GERAÇÃO AUTOMÁTICA DE QUADROS DE HORÁRIOS ESCOLARES. Trabalho de Graduação

MC102 Algoritmos e Programação de Computadores 1ª Aula Introdução à Programação de Computadores

Faculdade de Engenharia Optimização. Prof. Doutor Engº Jorge Nhambiu

ESTRUTURAS DE DADOS I. Notas de Aula. Prof. Dr. Gilberto Nakamiti

LISTA DE TEMAS PARA CONCURSO DE PROFESSOR ADJUNTO EDITAL 90/2010 ÁREA DE ANATOMIA VEGETAL GERAL, COM ÊNFASE EM ANATOMIA ECOLÓGICA * * * * * *

Capítulo 3. Avaliação de Desempenho. 3.1 Definição de Desempenho

Projeto de Máquinas de Estado

Um Esquema de Aproximação Eficiente para o Problema do Bin Packing Unidimensional

O Problema do Troco Principio da Casa dos Pombos. > Princípios de Contagem e Enumeração Computacional 0/48

Pró-Reitoria de Ensino de Graduação P L A N O D E E N S I N O

Métodos Computacionais. Árvores

Pesquisa em Memória Primária. Prof. Jonas Potros

Uma visão global sobre conteúdos e livros de referências de duas disciplinas de algoritmos

Complexidade de Algoritmos

Regulamento do Curso de. Mestrado Integrado em Engenharia Informática

Bacharelado em Ciência e Tecnologia Bacharelado em Ciências e Humanidades. Representação Gráfica de Funções

Universidade Federal de Santa Maria Curso de Arquivologia. Disciplina de Banco de Dados Aplicados à Arquivística. Versao 1.

(P AA) 2 PACOTE DE APOIO A APRENDIZAGEM DE PROJETO E ANÁLISE DE ALGORITMOS: IMPLEMENTAÇÃO EM JAVA

PLANO DE ENSINO. ATIVIDADE SEG TER QUA QUI SEX Aulas Atendimento Preparação de aula

Universidade Federal de Alfenas

UNIVERSIDADE FEDERAL DE SANTA CATARINA

BC-0506: Comunicação e Redes Algoritmos em Grafos

Transcrição:

Aula 1 - Apresentação aos Algoritmos Computacionais

O que é a Disciplina? Disciplina de Projeto e Análise de Algoritmos Esta é uma disciplina de Algoritmos em nível de Pós-Graduação! Temas a serem abordados: Algoritmos e Complexidade, como: Problemas de decisão, Alcançabilidade, Problemas de otimização, Fluxo máximo, Caixeiro viajante, Complexidade computacional O(f). Classes P e NP Classes de complexidade, Hierarquia das classes, Reduções e completude. Problemas em grafos. Problemas envolvendo conjuntos e números. Heurísticas para solução de problemas. Uso de Modelo de Computação Paralela para solução de problemas.

Avaliações Apresentação Serão realizadas duas avaliações teóricas com os assuntos e tópicos abordados em sala de aula. As datas das provas serão marcadas no decorrer do curso: a primeira ocorrendo em torno da metade da carga horária e a outra no final da carga horária. Serão propostos exercícios para serem resolvidos tanto de forma individual como em equipe. A nota (conceito) será calculada como, Nota Final = 80 N AT +20 N E 100 onde N AT é a mádia aritmética das Avaliações Teóricas e N E é a média aritmética dos exercícios propostos.

Livro Texto Apresentação Livro Texto utilizado: Título: Introduction to Algorithms. Autores: Thomas H. Cormen; Charles E. Leiserson; Roanld L. Rivest; Clifford Stein. Editora: MIT Press Edição: Third Edtion Ano: 2009. Figura: Livro Texto utilizado.

Demais Referências... Livros: PAPADIMITRIOU, C.H. Computational Complexity, Addison-Wesley, 1994. AHO, A V.; HOPCROFT, J.E.; ULLMAN, J.D. The Design and Analysis of Computer Algorithms, Addison-Wesley, 1974. GAREY, M.S.; JOHNSON, D.S. Computers and Intractability: A Guide to the Theory of NP-Completness, Freeman, 1979. LEWIS, H.R.; PAPADIMITRIOU, C.H. Elements of the Theory of Computation, Prentice-Hall International Editions, 1981. SEDGEWICK, R.; FLAJOLET, P. An Introduction to the Analysis of Algorithms, Addison Wesley, 1996.

Demais Referências... Periódicos: ACM, ACM Transactions on Algorithms. SCIENCE DIRECT, Journal of Algorithms. MANEY PUBLISHING, Journal of Algorithms and Computational Technology. DOAJ Directory of Open Access Journals Free Algorithms (ISSN:1999-4893) Dentre outros... (verificar www.periodicos.capes.gov.br)

O que é um Algoritmo? Informalmente, um Algoritmo é qualquer procedimento computacional bem definido que toma algum valor, ou um conjunto de valores, como entrada e produz algum valor, ou conjunto de valores, como saída. Convencionalmente, um algoritmo é uma sequência de passos computacionais que transforma uma entrada em um saída. É uma ferramenta computacional que resolve um problema computacional bem especificado.

Exemplo: Ordenamento Entrada: uma sequencia de números a 1,a 2,...,a n. Saída: uma permutação específica a 1,a 2,...,a n da entrada tal que (ordenamento crescente), a 1 a 2 a n Por exemplo, da a sequência de entrada 31,41,59,26,41,58, o algoritmo deve retornar a saída, 26,31,41,41,58,59 A sequência de entrada é chamada de instância. De forma geral, a instância de um problema consiste na entrada necessária para computar uma possível solução do problema!

Corretude Apresentação Um algoritmo é dito ser correto quando, para toda instância de entrada possível, este pára com a saída correta! Assim, um algoritmo correto resolve um dado problema computacional! Um algoritmo incorreto pode não parar para alguns instâncias de entrada, ou pode parar com a saída incorreta! Um algoritmo incorreto ainda pode ser usável, se for conhecida a sua taxa de erro!

Outros Exemplos Apresentação É evidente que ordenamento não é o único tipo de algoritmos que exite e tem importância computacional. Vários outros exemplos de problemas computacionais podem ser enumerados onde é possível aplicar/definir um algoritmo, dentre os quais: O Projeto Genoma Humano (e de vários outrao seres vivos). Em particular são 100.000 genes e mais de 3 bilhões de peres de bases químicad para serem ordenadas e analisadas. O acesso rápido à informações via internet. Segurança e privacidade em transações econômicas através da internet. Distribuição, logística e alocação de recursos. etc.

O Nosso Curso... Apresentação Como já afirmado, este é um curso de Pós-Graduação... Logo, bem mais avançado do que um curso de algoritmos de um bom curso de graduação em ciência da computação e/ou áreas afins. Assim, estaremos trabalhando com problemas com basicamente duas características comuns: 1 Os problemas têm muitas soluções candidatas, porém a maioria esmagadora destas soluções candidatas não conseguem resolver o problema em questão. Encontrar uma solução que consiga resolver o problemas, ou encontrar a melhor solução, pode ser um verdadeiro desafio. 2 Estaremos interessados em problemas do mundo real!

Eficiência Apresentação Outro aspecto muito importante ao se estudar algoritmos é como definir suas eficiências. Diferentes algoritmos podem ser projetados para resolver o mesmo problema! Frequentemente estes diferem dramaticamente em relação a eficiência. Exemplo: Dado o problema de ordenamento. E dado dois algoritmos de ordenamento, o insertion sort e o merge sort. O insertion sort demora um tempo c 1 n 2, onde n é o número de itens a serem ordenados e c 1 é uma constante. O merge sort demora um tempo c 2 nlog 2 n, onde c 2 é uma constante.

Eficiência - Exemplo Vamos imaginar dois computadores: Computador A capaz de realizar 10 bilhões de instruções por segundo. Computador B capaz de realizar 10 milhões de instruções por segundo. O computador A é 1.000 vezes mais rápido do que o computador B Como implementar o algoritmo também é importante! Imagine que o melhor programador no mundo implemente o insertion sort no computador A. Suponha também que um programador mediano implemente o merge sort no computador B.

Eficiência - Exemplo Devido as características dos computadores e a qualidade dos programadores, é razoável supor c 1 = 2 e c 2 = 50, ou seja, as condições do conjunto computador e implementação para o algoritmo insertion sort seja 25 vezes melhor do que para o mergesort. Assim, para 10 7 números a serem ordenados, Computador A: Computador B: 2 (10 7 ) 2 Inst. 10 10 = 20.000 segundos Inst. por seg. 50 (10 7 )log 2 10 7 Inst. 10 7 Inst. por seg. 1.163 segundos

Perfil Esperado da Turma Qual formação básica dos alunos da nossa Turma? Um aluno que passou por um curso de ciência da computação, sistemas de informação, engenharia da computação ou área afins de informática deve saber, Abordagens de problemas (Técnicas de Programação; Recursividade; Dividir para Conquistar; Análise Assíntótica de Funções). Algoritmos de ordenamento (Bubble Sort; Insertion Sort; Merge Sort; Heap Sort; Quick Sort; Sorting in Linear Time). Estrutura de Dados Básicas (Listas; Filas; Pilhas; Tabelas Hash; Árvores Binárias; Ávores Vermelho-Preto)

Alvo da Disciplina Dados os pré-requisitos no slide anterior, desejamos estudar, Técnicas de Análise e Projetos Avançados de Algoritmos Estrutura de Dados Avançadas Algoritmos em Grafos Algoritmos Paralelos Algoritmos científicos (Operação em Matrizes, Programação Linear, Polinônios e FFT, String Matching) Classes P e NP Classes de complexidade, Hierarquia das classes, Reduções e completude.