Bioinformática. Ney Lemke. Departamento de Física e Biofísica. logo

Documentos relacionados
ESTRUTURAS DE DADOS E ALGORITMOS APRESENTAÇÃO DO CURSO E INTRODUÇÃO

Análise de Problemas Recursivos. Algoritmos e Estruturas de Dados Flavio Figueiredo (

AED2 - Aula 11 Problema da separação e quicksort

Algoritmo. Exemplo. Definição. Programação de Computadores Comparando Algoritmos. Alan de Freitas

Algoritmos de Ordenação

Projeto e Análise de Algoritmos Aula 4: Dividir para Conquistar ou Divisão e Conquista ( )

Medida do Tempo de Execução de um Programa. David Menotti Algoritmos e Estruturas de Dados II DInf UFPR

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

Recursividade. Objetivos do módulo. O que é recursividade

Técnicas Inteligência Artificial

Teoria da Computação. Aula 4 Técnicas de Análise 5COP096. Aula 4 Prof. Dr. Sylvio Barbon Junior. Sylvio Barbon Jr

1 a Lista de Exercícios

TCC 00308: Programação de Computadores I Introdução

INE5403 FUNDAMENTOS DE MATEMÁTICA DISCRETA

Aula 1. Teoria da Computação III

Complexidade de algoritmos Notação Big-O

Técnicas Inteligência Artificial

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

A palavra ALGORITMO teve origem com um Matemático Persa, al. Khawarizmi. O seu trabalho mais famoso foi Al-jabr walmuquabalah,

Projeto e Análise de Algoritmos

Técnicas de Programação III Análise de Algoritmos (Continuação)

CES-11. Noções de complexidade de algoritmos. Complexidade de algoritmos. Avaliação do tempo de execução. Razão de crescimento desse tempo.

Projeto e Análise de Algoritmos

Inteligência Artificial

3. Resolução de problemas por meio de busca

Algoritmos Avançados Análise de Complexidade

Estruturas de Dados Algoritmos

Projeto e Análise de Algoritmos

Computação Científica com MATLAB. Melissa Weber Mendonça

Área que visa determinar a complexidade (custo) de um algoritmo, com isso é possível:

Análise e Complexidade de Algoritmos

Lista de Figuras Figura 1 1: Figura 1 2: Figura 1 3: Figura 1 4: Figura 1 5: Figura 1 6: Figura 1 7: Figura 2 1: Figura 2 2: Figura 2 3: Figura 2 4:

Projeto e Análise de Algoritmos Aula 1: Panorama (0.1,0.2)

Algoritmos e Estruturas de Dados I Linguagem C

É interessante comparar algoritmos para valores grandes de n. Para valores pequenos de n, mesmo um algoritmo ineficiente não custa muito para ser

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

Análise e Complexidade de Algoritmos

Introdução à Programação. Vanessa Braganholo

Análise de Complexidade de Algoritmos. mario alexandre gazziro

Nem todos os problemas algorítmicos que podem ser resolvidos em princípio podem ser resolvidos na prática: os recursos computacionais requeridos

Algoritmos Combinatórios: Introdução

Arquivos Sequenciais. Estruturas de Dados II Vanessa Braganholo

BCC202 - Estrutura de Dados I

Fundamentos de Programação

Aulas Anteriores. Detalhes da linguagem de programação

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

Introdução à Ciência da Computação II

UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO. Prof.ª Danielle Casillo

Recursividade. Prof. Jesus José de Oliveira Neto

Desafios de Programação

MODELOS PROBABILÍSTICOS

MCTA001 Algoritmos e Estruturas de Dados I Apresentação e exercícios básicos

Recursividade, Tentativa e Erro

Estrutura de Dados Conceitos Iniciais

Comparação com Divisão e Conquista

Análise e Complexidade de Algoritmos

Prova 1 PMR2300 / PMR3201 1o. semestre 2015 Prof. Thiago Martins

Métodos de Ordenação: Selection, Insertion, Bubble, Merge (Sort)

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

O termo Programação Dinâmica é um bocado infeliz.

Introdução à Programação / Programação I

Programação Dinâmica. Prof. Anderson Almeida Ferreira

Introdução à Programação em C

INTRODUÇÃO À PROGRAMAÇÃO

Projeto e Análise de Algoritmos

Complexidade de Algoritmos

Laboratório de Matemática Computacional I

Endereçamento Aberto

Análise de Complexidade para algoritmos iterativos e recursivos

UNIVERSIDADE DA BEIRA INTERIOR

Programação Dinâmica I SCC0210 Algoritmos Avançados (2/2011) Lucas Schmidt Cavalcante

Complexidade de Tempo e Espaço

Estruturas de Dados 2

Introdução à Programação

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

Introdução à Geração de Código

SUBGERÊNCIA DE GESTÃO EDUCACIONAL PLANO DE CURSO

Algoritmos de pesquisa

TEORIA DE COMPLEXIDADE

Programação em C e C++ com Lógica. Subtítulo

Algoritmos e Estruturas de Dados

Recursividade. Estrutura de Dados. Prof. Kleber Rezende

Linguagens de Programação. Fluxo de Controle. Carlos Bazilio

Ordenação: MergeSort. Prof. Túlio Toffolo BCC202 Aula 14 Algoritmos e Estruturas de Dados I

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

ESTRUTURA DE DADOS I AULA I

Árvores Binárias. SCC Algoritmos e Estruturas de Dados I. Prof. Fernando V. Paulovich

AULA 24. Algoritmos p.856/905

Linguagem de Programação I Prof. Tiago Eugenio de Melo.

ALGORITMOS E ESTRUTURAS DE DADOS CES-11 Prof. Paulo André Castro Sala 110 Prédio da Computação IECE - ITA

ALGORITMOS E ESTRUTURAS DE DADOS 2011/2012 ANÁLISE DE ALGORITMOS. Armanda Rodrigues 3 de Outubro 2011

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

UNIVERSIDADE DA BEIRA INTERIOR

Algoritmos e Estruturas de Dados

Otimização Combinatória - Parte 4

Problema da Mochila Booleana: Uma Solução Usando Programação Dinâmica. Gabriel Rosa Guilherme Alves

UNIVERSIDADE LUSÍADA DE LISBOA. Programa da Unidade Curricular INTRODUÇÃO AOS ALGORITMOS E ESTRUTURAS DE DADOS Ano Lectivo 2014/2015

Transcrição:

Bioinformática Ney Lemke Departamento de Física e Biofísica 2009

Outline 1 Bibliografia 2 Introdução 3 Algoritmos 4 Aplicações 5 Algoritmos Recursivos 6 Tipos de Algoritmos

Outline 1 Bibliografia 2 Introdução 3 Algoritmos 4 Aplicações 5 Algoritmos Recursivos 6 Tipos de Algoritmos

Bibliografia JONES, N. C.; PEVZNER, P. A. An Introduction to Bioinformatics Algorithms, Cambridge,The MIT Press, 2004, 435pp.

Outline 1 Bibliografia 2 Introdução 3 Algoritmos 4 Aplicações 5 Algoritmos Recursivos 6 Tipos de Algoritmos

Introdução Importância do Raciocínio Algoritmico Compreensão das idéias Básicas Limitações e falhas

Exemplo Alice e Bob estão envolvidos em um excitante jogo. Temos duas pilhas com 10 pedras, cada jogador pode ou retirar uma pedra de uma pilha ou uma pedra de cada uma das pilhas. Alice começa jogando e ganha quem retirar a última pedra.

Análise do Jogo 0 1 2 3 4 5 6 7 8 9 10 0 1 2 3 4 5

Análise do Jogo 0 1 2 3 4 5 6 7 8 9 10 0 L W L W L W L W L W L 1 W W W W W W W W W W W 2 L W L W L W L W L W L 3 W W W W W W W W W W W 4 L W L W L W L W L W L 5 W W W W W W W W W W W 6 L W L W L W L W L W L 7 W W W W W W W W W W W 8 L W L W L W L W L W L 9 W W W W W W W W W W W 10 L W L W L W L W L W L

Outline 1 Bibliografia 2 Introdução 3 Algoritmos 4 Aplicações 5 Algoritmos Recursivos 6 Tipos de Algoritmos

O que é um algoritmo Def. Um algoritmo é uma seqüência de instruções que devemos utilizar para resolver um dado problema. Para podermos descrever um algoritmo em geral fazemos uso de uma lingugem chamada de pseudo-código.

Atribuição Atribuição a b Efeito A variável a recebe o valor de b.

Aritmética Formato a + b, a b, a/b, a b Efeito Realiza a operação.

Condicional if A is true then B else C end if

For for i b to n do B end for

while while A é verdade do B end while

Acesso à vetores Exemplo: 1: F 1 1 2: F 2 1 3: for i 3 to n do 4: F i F i 1 + F i 2 5: end for

Outline 1 Bibliografia 2 Introdução 3 Algoritmos 4 Aplicações 5 Algoritmos Recursivos 6 Tipos de Algoritmos

Receita de Bolo 1: PREAQUECAFORNO(425) 2: recheio BATARECHEIO(abóbora, açucar, sal, temperos, ovos, leite) 3: torta ASSENTE(massa, recheio) 4: while garfo sai molhado é verdade do 5: COZINHE(pie) 6: end while 7: output Torta Pronta 8: return pie

BATARECHEIO 1: pote Pegue um pote do armário 2: ADICIONE(abóbora, pote) 3: ADICIONE(açucar, pote) 4: ADICIONE(sal, pote) 5: ADICIONE(temperos, pote) 6: BATA(pote) 7: ADICIONE(ovos, pote) 8: ADICIONE(leite, pote) 9: BATA(pote) 10: recheio Conteúdo de pote 11: return recheio

Algoritmos Biológicos Helicases se ligam a origem de replicação Helicase separa as duas fitas do DNA Ligação dos primers Ligação da DNA polimerase a cada uma das fitas do DNA DNA Polimerase complementa de forma contínua uma das fitas DNA Polimerase replica de forma descontínua a outra fita DNA ligase repare os buracos na segunda fita As duas fitas se separam

Algoritmos para Computadores COPIASTRING(s,n) for i 1 to n do t i s i return t end for

Exercício Escrevam um algoritmo para escolha de qual revista um paper deve ser submetido.

Problema do Troco (USA) Converter alguma quantidade de dinheiro M no menor número possível de moedas. Ou seja M = 25q + 10d + 5n + p e q + d + n + p deve ser mínimo.

USCHANGE(M) while M > 0 do c Maior moeda menor ou igual a M Entregue a moeda c ao cliente M M c end while

USCHANGE(M) 1: r M 2: q r/25 3: r r 25 q 4: d r/10 5: r r 10 d 6: n r/5 7: r r 5 n 8: p r 9: return (q,d,n,p)

Problema do Troco Converter alguma quantidade de dinheiro M no menor número possível de moedas. Considere um vetor de moedas (c 1,..., c d ) em ordem descrescente de valor e o troco caracterizado pela lista de inteiros: (i 1,..., i d ) Ou seja M = c 1 i 1 +... c d i d e i 1 +... i d deve ser mínimo.

MELHORTROCO(M,c,d) 1: r M 2: for k 1 to d do 3: i k r/c k 4: r r c k i k 5: end for 6: return ( i 1,... i d )

Discussão Algoritmos Corretos Contra-exemplo: Caso Americano troco para 40 c (moedas: 25,20,10,5,1). Solução: Procurar por todas as soluções e escolher a melhor.

Outline 1 Bibliografia 2 Introdução 3 Algoritmos 4 Aplicações 5 Algoritmos Recursivos 6 Tipos de Algoritmos

Algoritmos Recursivos Def. Algoritmos recursivos são aqueles que chamam a si mesmos. Exemplo: Fibonacci Recursivo FIBONACCIRECURSIVO if n = 1 ou n = 2 then return 1 else a FIBONACCIRECURSIVO(n 1) b FIBONACCIRECURSIVO(n 2) return a + b end if

Algoritmos Recursivos e Iterativos Algoritmos Recursivos podem ser eficazes em tempo de computação, mas em geral são gulosos em termos de memória. São mais difíceis de entender e de debugar.

Outline 1 Bibliografia 2 Introdução 3 Algoritmos 4 Aplicações 5 Algoritmos Recursivos 6 Tipos de Algoritmos

Complexidade dos Algoritmos Considere um problema caracterizado por um número n chamado de tamanho do problema. A complexidade de um algoritmo é a dependência do tempo de computação em termos de n. Em geral só queremos saber a complexidade no limite de n grande e consideramos os casos n ou n log n Problemas lineares e portanto eficientes, exemplos ordenação de um vetor. n 2 n α Problemas quadráticos mais custosos, mas que podem ser resolvidos exatamente na maioria dos casos de interesse. Problemas ditos polinomiais, podem em tese ser resolvidos, mas rapidamente se tornam muito custosos. Outros Problemas ditos não tratáveis algoritmicamente, ou seja a solução exata levaria em muitos casos milhares de anos.

Tipos de Algoritmos Busca Exaustiva Procura por todos os casos a solução do problema. Branch and Bound Divide o problema em classes e ataca as classes promissoras. Divida e Conquiste Estratégia de devidir um problema em partes e atacar cada uma das partes em separaddo. Algoritmos Aleatórios Utilizam números aleatórios para propor soluções para problemas (método predileto dos alunos).