2017 Dr. Walter F. de Azevedo Jr.

Tamanho: px
Começar a partir da página:

Download "2017 Dr. Walter F. de Azevedo Jr."

Transcrição

1 01 Dr. Walter F. de Azevedo Jr

2 Notação Big-O Consideremos um algoritmo que tem um tempo de execução t dado t = n +1n+18 (linha azul do gráfico abaixo), onde n é o tamanho da entrada. Dizemos que este algoritmo tem um tempo de execução de ordem quadrática, ou O(n ) pois este é o termo de mais alto grau do polinômio. De uma forma geral, podemos determinar uma constante c para o qual a desigualdade n +1n+18 c.n se verifica, assim o tempo de execução é uma função quadrática. Quando usamos essa aproximação, estamos usando a notação Big-O. t = n t(s) t = n +1n+18 n

3 Algoritmos para Bioinformática O desenvolvimento de algoritmos para Bioinformática teve um grande crescimento nos últimos anos. Iremos descrever as ideias centrais das técnicas mais usadas na pesquisa científica em Bioinformática. Busca Exaustiva Branch-and-Bound Greedy Aprendizado de Máquina Algoritmos Randomizados Dividir e Conquistar Programação Dinâmica

4 Algoritmos para Bioinformática Para ilustrar os conceitos atrás das técnicas de desenho de algoritmos, vamos considerar um problema hipotético de procurarmos um telefone sem fio em casa. Para complicar a situação estamos com as duas mãos ocupadas e está escuro, de forma que não podemos confiar na visão, como indicado abaixo (Jones & Pevzner, 00). Fonte: Jones, N. C. & Pevzner, P. A. An Introduction to Bioinformatics Algorithms. The MIT Press,Cambridge, 00.

5 Algoritmo de Busca Exaustiva (ou Força Bruta) O algoritmo de busca exaustiva, ou força bruta, testa todas as alternativas do problema, para encontrar uma solução particular. No exemplo do telefone, ignoramos o som do toque do telefone, e, assim, simplesmente procuramos por cada cm da casa, até acharmos o telefone. Os algoritmos que seguem este desenho, são fáceis de entender, mas tem como principal problema o tempo de execução. Outra característica que podemos destacar, é como iremos dividir a casa para procurar o telefone, um parâmetro comumente considerado em algoritmos de busca. Por exemplo, se procurarmos em quadrados de 10 cm de lado teremos um tempo, e usarmos um quadrado de 1 cm de lado, teremos um tempo bem maior. Fonte: Jones, N. C. & Pevzner, P. A. An Introduction to Bioinformatics Algorithms. The MIT Press,Cambridge, 00.

6 Algoritmo do Tipo Branch-and-Bound Nesta classe de algoritmo, ao iniciarmos o algoritmo de foça bruta, podemos omitir certas alternativas, diminuindo o tempo da busca. No exemplo do telefone, considere que ao chegarmos no segundo andar da casa escutamos a campainha do telefone como vinda do andar de cima. Nesta situação, podemos ignorar o andar inferior. Fonte: Jones, N. C. & Pevzner, P. A. An Introduction to Bioinformatics Algorithms. The MIT Press,Cambridge, 00.

7 Algoritmo do Tipo Greedy Muitos algoritmos são iterativos, os algoritmos do tipo greedy consideram em cada iteração a alternativa mais promissora. Tomando-se o exemplo do telefone, podemos considerar que nos movimentaremos na direção de onde vem o som do telefone. Isto pode causar alguns problemas, como ilustrado abaixo, mas é uma forma de reduzirmos as alternativas testadas. Em cada aplicação temos que identificar como determinar a solução mais atrativa. Fonte: Jones, N. C. & Pevzner, P. A. An Introduction to Bioinformatics Algorithms. The MIT Press,Cambridge, 00.

8 Algoritmo com Aprendizado de Máquina Algoritmos de Aprendizado de Máquina (Machine Learning) usam o comportamento prévio do sistema para a decidir como varrer as alternativas. No exemplo do telefone, temos da experiência prévia que em 8 % da vezes o telefone estava sobre o sofá da sala, em % das vezes no quarto do casal, em % das vezes na cozinha, e em % em outros locais. Assim, podemos começar procurando no sofá da sala e seguimos a ordem indicada. % % 8 % Fonte: Jones, N. C. & Pevzner, P. A. An Introduction to Bioinformatics Algorithms. The MIT Press,Cambridge, 00. 8

9 Algoritmo Estocástico No algoritmo estocástico, a faixa de alternativas a serem testadas é escolhida de forma aleatória. Assim, no exemplo do telefone, consideremos que temos uma casa com seis cômodos, podemos atribuir números de 1 a aos cômodos e jogar um dado para escolher que cômodo começar. Podemos também pensar que jogamos uma moeda e decidimos se começamos com os cômodos da parte superior ou da inferior. Em todo caso, temos um componente aleatório na decisão. Fonte: Jones, N. C. & Pevzner, P. A. An Introduction to Bioinformatics Algorithms. The MIT Press,Cambridge, 00. 9

10 Algoritmo do Tipo Dividir e Conquistar A ideia atrás desta classe e dividir um problema maior em subproblemas, independentes. Depois os subproblemas são resolvidos e combinados de forma a obtermos a solução do problema original. O ponto crítico nesta classe de algoritmos é como combinar as soluções dos subproblemas para obtermos a solução do problema principal. Fonte: Jones, N. C. & Pevzner, P. A. An Introduction to Bioinformatics Algorithms. The MIT Press,Cambridge,

11 Algoritmo do Programação Dinâmica O algoritmo de programação dinâmica tem uma abordagem mais refinada do algoritmo de dividir em conquistar. Ao dividir o problema, em subproblemas menores, o algoritmo evita repetir computações já realizadas, usando valores armazenados de iterações anteriores. Vamos dar como exemplo o jogo das pedras. No jogo das Pedras consideramos dois jogadores e duas pilhas de pedras. Cada jogador pode tirar uma pedra da pilha 1, ou uma pedra do pilha, ou duas pedras, sendo uma de cada pilha. Os jogadores não podem tirar duas pedras da mesma pilha. Vence o jogador que tirar a última pedra. Vamos montar um gráfico que ilustra o mapa de como ganhar o jogo. Para exemplificar, vamos considerar que temos duas pilhas de 10 pedras cada. 11

12 Jogo das Pedras O W considera a situação ganhadora e L a perdedora. A situação é ganhadora quando há pelo menos um movimento que leva você a vencer. Montaremos um mapa bidimensional considerando todas as situações para duas pilhas de 10 pedras W 1 W W Pilha A Pilha B 1

13 Jogo das Pedras Inicialmente consideremos um jogo com uma pedra na pilha A e zero pedras na pilha B, como indicado no mapa abaixo, ou seja, um jogo J 1,0, usando-se a notação matricial. Esta é uma situação vencedora, visto que ao tirar a pedra o jogador vence. J 1,0 0 1 W Pilha A Pilha B 1

14 Jogo das Pedras O mesmo é verdadeiro para um jogo J 0,1, que indica uma pedra na pilha B W 1 W Pilha A Pilha B 1

15 Jogo das Pedras Quando o jogador encontra-se na situação J 1,1, ele está numa situação vencedora, visto que ele pode tirar uma pedra de cada pilha W 1 W W Pilha A Pilha B 1

16 Jogo das Pedras No jogo J,0 temos uma situação perdedora, pois só podemos tirar uma pedra da pilha A, o que leva a situação do jogo J 1,0, que é vitoriosa para o adversário W 1 W W L Pilha A Pilha B 1

17 Jogo das Pedras O mesmo é verdadeiro para no jogo J 0,. Observe que o jogo é simétrico, o que vale para J i,j é mantido para J j,i W L 1 W W L Pilha A Pilha B 1

18 Jogo das Pedras No jogo J 1, temos uma situação de vitória, pois podemos escolher tirar uma pedra da pilha A, o que leva o adversário a um jogo J 0,, onde ele perde W L 1 W W W L Pilha A Pilha B 18

19 Jogo das Pedras Por simetria W L 1 W W W L W Pilha A Pilha B 19

20 Jogo das Pedras No jogo J, não importa o movimento, o adversário ganha, então temos uma situação perdedora. Aplicando-se o mesmo raciocínio podemos preencher o mapa W L 1 W W W L W L Pilha A Pilha B 0

21 Jogo das Pedras W L 1 W W W L W L W Pilha A Pilha B 1

22 Jogo das Pedras W L W 1 W W W L W L W Pilha A Pilha B

23 Jogo das Pedras W L W 1 W W W L W L W W Pilha A Pilha B

24 Jogo das Pedras W L W 1 W W W W L W L W W Pilha A Pilha B

25 Jogo das Pedras W L W 1 W W W W L W L W W W Pilha A Pilha B

26 Jogo das Pedras W L W 1 W W W W L W L W W W W Pilha A Pilha B

27 Jogo das Pedras W L W 1 W W W W L W L W W W W W Pilha A Pilha B

28 Jogo das Pedras W L W 1 W W W W L W L W W W W W L Pilha A Pilha B 8

29 Jogo das Pedras W L W L 1 W W W W L W L W W W W W L Pilha A Pilha B 9

30 Jogo das Pedras W L W L 1 W W W W L W L W W W W W L W Pilha A Pilha B 0

31 Jogo das Pedras W L W L 1 W W W W W L W L W W W W W L W Pilha A Pilha B 1

32 Jogo das Pedras W L W L 1 W W W W W L W L W W W W W L W L Pilha A Pilha B

33 Jogo das Pedras W L W L 1 W W W W W L W L W L W W W W L W L Pilha A Pilha B

34 Jogo das Pedras W L W L 1 W W W W W L W L W L W W W W L W L W Pilha A Pilha B

35 Jogo das Pedras W L W L 1 W W W W W L W L W L W W W W W L W L W Pilha A Pilha B

36 Jogo das Pedras W L W L 1 W W W W W L W L W L W W W W W L W L W L Pilha A Pilha B

37 Jogo das Pedras Abaixo temos a tabela completa W L W L W L W L W L 1 W W W W W W W W W W W L W L W L W L W L W L W W W W W W W W W W W L W L W L W L W L W L W W W W W W W W W W W L W L W L W L W L W L 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 Pilha A Pilha B

38 Jogo das Pedras Completamos com o jogo J 0,0 como uma situação hipotética de derrota L W L W L W L W L W L 1 W W W W W W W W W W W L W L W L W L W L W L W W W W W W W W W W W L W L W L W L W L W L W W W W W W W W W W W L W L W L W L W L W L 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 Pilha A Pilha B 8

39 Jogo das Pedras A implementação da tabela abaixo identifica se dada uma posição de início, o jogador ganha ou perde L W L W L W L W L W L 1 W W W W W W W W W W W L W L W L W L W L W L W W W W W W W W W W W L W L W L W L W L W L W W W W W W W W W W W L W L W L W L W L W L 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 Pilha A Pilha B 9

40 Jogo das Pedras Chamaremos este algoritmo, de programação dinâmica, de Rocks(n,m), ele retorna a string W ou L e tem como entrada o números de pedras em cada pilha L W L W L W L W L W L 1 W W W W W W W W W W W L W L W L W L W L W L W W W W W W W W W W W L W L W L W L W L W L W W W W W W W W W W W L W L W L W L W L W L 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 Pilha A Pilha B 0

41 Algoritmo do Programação Dinâmica (Rocks) Segue o pseudocódigo de Rocks(n,m). Rocks(n,m) J 0,0 = L Para i de 1 até n Se J i-1,0 == W J i,0 = L Senão J i,0 = W Para j de 1 até m Se J 0, j-1 == W J 0,j = L Senão J 0,j = W Para i de 1 até n Para j de 1 até m Se J i-1, j-1 == W e J i, j-1 == W e J i-1, j == W J i,j = L Senão J 0,j = W Retorna J n,m 1

42 Algoritmo do Programação Dinâmica (FastRocks) Se olharmos com atenção para a tabela veremos um padrão que facilita a programação. Veja que, quando i e j são pares, temos L. Nos outros casos temos W. Pilha A L W L W L W L W L W L 1 W W W W W W W W W W W L W L W L W L W L W L W W W W W W W W W W W L W L W L W L W L W L W W W W W W W W W W W L W L W L W L W L W L 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 Pilha B

43 Algoritmo do Programação Dinâmica (FastRocks) Segue o pseudocódigo de FastRocks(n,m). FastRocks(n,m) Se n e m são ambos pares retorna L Senão retorna W

44 Algoritmo de Needleman & Wunsch O algoritmo de Needleman & Wunsch (Needleman and Wunsch, 190) tem como foco o alinhamento global de sequências de DNA e proteínas. Com a explosão dos dados genômicos no final do século passado, um problema central nos estudos genômicos foi o alinhamento de sequências. Esses alinhamentos permitem inferir similaridade sequencial e relacionar com as aspectos biológicos, como evolução, função, conservação de estrutura tridimensional entre outros. O algoritmo de Needleman & Wunsch será descrito aqui como modelo para entendermos as principais características computacionais do alinhamento de sequências. Referência: Needleman, S. B. & Wunsch, C. D. (190) "A General Method Applicable to the Search for Similarities in the Amino Acid Sequence of Two Proteins," J. Mol. Biol., 8, -.

45 Algoritmo de Needleman & Wunsch Considerando-se os tipos de algoritmos vistos até o momento, temos que o algoritmo de Needleman & Wunsch é de programação dinâmica. O algoritmo de Needleman & Wunsch é dividido nas seguintes etapas: 1) Inicialização da matriz caminho; ) Preenchimento da matriz caminho; ) Alinhamento. Para ilustrar o funcionamento do algoritmo, vamos considerar o alinhamento de duas sequências: GAATTCAGTTA (sequência #1) (temos m bases na sequência) GGATCGA (sequência #) (temos n bases na sequência)

46 Algoritmo de Needleman & Wunsch (Inicialização) Na fase de inicialização do algoritmo, montamos uma matriz m x n, como indicado abaixo. Essa matriz é chamada matriz caminho (path matrix). Na matriz caminho, às primeiras coluna e linha atribuímos zero, visto que estamos considerando um alinhamento sem penalidade de gap inicial G A A T T C A G T T A G 0 G 0 A 0 T 0 C 0 G 0 A 0

47 Algoritmo de Needleman & Wunsch (Preenchimento) Para o preenchimento da matriz, consideramos o início a partir da esquerda superior da matriz. Para cada elemento M i,j da matriz, determinaremos a seguinte função escore: M i,j = MAXIMUM[ M i-1, j-1 + S i,j (coincidência ou não na diagonal da matriz), M i,j-1 + w (gap na sequência #1), M i-1,j + w (gap na sequência #)] Onde w é o peso para inserção de um gap (intervalo), consideramos w = 0. S i,j = 1 se a base na posição i da sequência #1 é a mesma da posição j na sequência # (escore de coincidência), caso contrário, S i,j = 0 (escore para não coincidência)

48 Algoritmo de Needleman & Wunsch (Preenchimento) Aplicando-se o critério temos: M 1,1 = MAXIMUM[ M 0, 0 + S 1,1 (coincidência ou não na diagonal da matriz), M 1,0 + w (gap na sequência #1), M 0,1 + w (gap na sequência #)] = MAXIMUM[1,0,0], ou seja, M 1,1 = G A A T T C A G T T A G 0 1 G 0 A 0 T 0 C 0 G 0 A 0 8

49 Algoritmo de Needleman & Wunsch (Preenchimento) Aplicando-se o critério temos: M,1 = MAXIMUM[ M 1, 0 + S,1 (coincidência ou não na diagonal da matriz), M,0 + w (gap na sequência #1), M 1,1 + w (gap na sequência #)] = MAXIMUM[1,0,1], ou seja, M,1 = G A A T T C A G T T A G 0 1 G 0 1 A 0 T 0 C 0 G 0 A 0 9

50 Algoritmo de Needleman & Wunsch (Preenchimento) Aplicando-se o critério temos: M,1 = MAXIMUM[ M, 0 + S,1 (coincidência ou não na diagonal da matriz), M,0 + w (gap na sequência #1), M,1 + w (gap na sequência #)] = MAXIMUM[0,0,1], ou seja, M,1 = G A A T T C A G T T A G 0 1 G 0 1 A 0 1 T 0 C 0 G 0 A 0 0

51 Algoritmo de Needleman & Wunsch (Preenchimento) Aplicando-se o critério temos: M,1 = MAXIMUM[ M, 0 + S,1 (coincidência ou não na diagonal da matriz), M,0 + w (gap na sequência #1), M,1 + w (gap na sequência #)] = MAXIMUM[0,0,1], ou seja, M,1 = G A A T T C A G T T A G 0 1 G 0 1 A 0 1 T 0 1 C 0 G 0 A 0 1

52 Algoritmo de Needleman & Wunsch (Preenchimento) Aplicando-se o critério temos: M,1 = MAXIMUM[ M, 0 + S,1 (coincidência ou não na diagonal da matriz), M,0 + w (gap na sequência #1), M,1 + w (gap na sequência #)] = MAXIMUM[0,0,1], ou seja, M,1 = G A A T T C A G T T A G 0 1 G 0 1 A 0 1 T 0 1 C 0 1 G 0 A 0

53 Algoritmo de Needleman & Wunsch (Preenchimento) Aplicando-se o critério temos: M,1 = MAXIMUM[ M, 0 + S,1 (coincidência ou não na diagonal da matriz), M,0 + w (gap na sequência #1), M,1 + w (gap na sequência #)] = MAXIMUM[1,0,1], ou seja, M,1 = G A A T T C A G T T A G 0 1 G 0 1 A 0 1 T 0 1 C 0 1 G 0 1 A 0

54 Algoritmo de Needleman & Wunsch (Preenchimento) Aplicando-se o critério temos: M,1 = MAXIMUM[ M, 0 + S,1 (coincidência ou não na diagonal da matriz), M,0 + w (gap na sequência #1), M,1 + w (gap na sequência #)] = MAXIMUM[0,0,1], ou seja, M,1 = G A A T T C A G T T A G 0 1 G 0 1 A 0 1 T 0 1 C 0 1 G 0 1 A 0 1

55 Algoritmo de Needleman & Wunsch (Preenchimento) Aplicando-se o critério temos: M 1, = MAXIMUM[ M 0, 1 + S 1, (coincidência ou não na diagonal da matriz), M 1,1 + w (gap na sequência #1), M 0, + w (gap na sequência #)] = MAXIMUM[0,1,0], ou seja, M 1, = G A A T T C A G T T A G G 0 1 A 0 1 T 0 1 C 0 1 G 0 1 A 0 1

56 Algoritmo de Needleman & Wunsch (Preenchimento) Aplicando-se o critério temos: M 1, = MAXIMUM[ M 0, + S 1, (coincidência ou não na diagonal da matriz), M 1, + w (gap na sequência #1), M 0, + w (gap na sequência #)] = MAXIMUM[0,1,0], ou seja, M 1, = G A A T T C A G T T A G G 0 1 A 0 1 T 0 1 C 0 1 G 0 1 A 0 1

57 Algoritmo de Needleman & Wunsch (Preenchimento) Aplicando-se o critério temos: M 1, = MAXIMUM[ M 0, + S 1, (coincidência ou não na diagonal da matriz), M 1, + w (gap na sequência #1), M 0, + w (gap na sequência #)] = MAXIMUM[0,1,0], ou seja, M 1, = G A A T T C A G T T A G G 0 1 A 0 1 T 0 1 C 0 1 G 0 1 A 0 1

58 Algoritmo de Needleman & Wunsch (Preenchimento) Aplicando-se o critério temos: M 1, = MAXIMUM[ M 0, + S 1, (coincidência ou não na diagonal da matriz), M 1, + w (gap na sequência #1), M 0, + w (gap na sequência #)] = MAXIMUM[0,1,0], ou seja, M 1, = G A A T T C A G T T A G G 0 1 A 0 1 T 0 1 C 0 1 G 0 1 A 0 1 8

59 Algoritmo de Needleman & Wunsch (Preenchimento) Aplicando-se o critério temos: M 1, = MAXIMUM[ M 0, + S 1, (coincidência ou não na diagonal da matriz), M 1, + w (gap na sequência #1), M 0, + w (gap na sequência #)] = MAXIMUM[0,1,0], ou seja, M 1, = G A A T T C A G T T A G G 0 1 A 0 1 T 0 1 C 0 1 G 0 1 A 0 1 9

60 Algoritmo de Needleman & Wunsch (Preenchimento) Aplicando-se o critério temos: M 1, = MAXIMUM[ M 0, + S 1, (coincidência ou não na diagonal da matriz), M 1, + w (gap na sequência #1), M 0, + w (gap na sequência #)] = MAXIMUM[0,1,0], ou seja, M 1, = G A A T T C A G T T A G G 0 1 A 0 1 T 0 1 C 0 1 G 0 1 A 0 1 0

61 Algoritmo de Needleman & Wunsch (Preenchimento) Aplicando-se o critério temos: M 1,8 = MAXIMUM[ M 0, + S 1,8 (coincidência ou não na diagonal da matriz), M 1, + w (gap na sequência #1), M 0,8 + w (gap na sequência #)] = MAXIMUM[1,1,0], ou seja, M 1,8 = G A A T T C A G T T A G G 0 1 A 0 1 T 0 1 C 0 1 G 0 1 A 0 1 1

62 Algoritmo de Needleman & Wunsch (Preenchimento) Aplicando-se o critério temos: M 1,9 = MAXIMUM[ M 0, 8 + S 1,9 (coincidência ou não na diagonal da matriz), M 1,8 + w (gap na sequência #1), M 0,9 + w (gap na sequência #)] = MAXIMUM[0,1,0], ou seja, M 1,9 = G A A T T C A G T T A G G 0 1 A 0 1 T 0 1 C 0 1 G 0 1 A 0 1

63 Algoritmo de Needleman & Wunsch (Preenchimento) Aplicando-se o critério temos: M 1,10 = MAXIMUM[ M 0, 9 + S 1,10 (coincidência ou não na diagonal da matriz), M 1,9 + w (gap na sequência #1), M 0,10 + w (gap na sequência #)] = MAXIMUM[0,1,0], ou seja, M 1,10 = G A A T T C A G T T A G G 0 1 A 0 1 T 0 1 C 0 1 G 0 1 A 0 1

64 Algoritmo de Needleman & Wunsch (Preenchimento) Aplicando-se o critério temos: M 1,11 = MAXIMUM[ M 0, 10 + S 1,11 (coincidência ou não na diagonal da matriz), M 1,10 + w (gap na sequência #1), M 0,11 + w (gap na sequência #)] = MAXIMUM[0,1,0], ou seja, M 1,11 = G A A T T C A G T T A G G 0 1 A 0 1 T 0 1 C 0 1 G 0 1 A 0 1

65 Algoritmo de Needleman & Wunsch (Preenchimento) Aplicando-se o critério temos: M, = MAXIMUM[ M 1, 1 + S, (coincidência ou não na diagonal da matriz), M,1 + w (gap na sequência #1), M 1, + w (gap na sequência #)] = MAXIMUM[1,1,1], ou seja, M, = G A A T T C A G T T A G G A 0 1 T 0 1 C 0 1 G 0 1 A 0 1

66 Algoritmo de Needleman & Wunsch (Preenchimento) Aplicando-se o critério temos: M, = MAXIMUM[ M, 1 + S, (coincidência ou não na diagonal da matriz), M,1 + w (gap na sequência #1), M, + w (gap na sequência #)] = MAXIMUM[,1,1], ou seja, M, = G A A T T C A G T T A G G A 0 1 T 0 1 C 0 1 G 0 1 A 0 1

67 Algoritmo de Needleman & Wunsch (Preenchimento) Aplicando-se o critério temos: M, = MAXIMUM[ M, 1 + S, (coincidência ou não na diagonal da matriz), M,1 + w (gap na sequência #1), M, + w (gap na sequência #)] = MAXIMUM[1,1,], ou seja, M, = G A A T T C A G T T A G G A 0 1 T 0 1 C 0 1 G 0 1 A 0 1

68 Algoritmo de Needleman & Wunsch (Preenchimento) Aplicando-se o critério temos: M, = MAXIMUM[ M, 1 + S, (coincidência ou não na diagonal da matriz), M,1 + w (gap na sequência #1), M, + w (gap na sequência #)] = MAXIMUM[1,1,], ou seja, M, = G A A T T C A G T T A G G A 0 1 T 0 1 C 0 1 G 0 1 A 0 1 8

69 Algoritmo de Needleman & Wunsch (Preenchimento) Aplicando-se o critério temos: M, = MAXIMUM[ M, 1 + S, (coincidência ou não na diagonal da matriz), M,1 + w (gap na sequência #1), M, + w (gap na sequência #)] = MAXIMUM[1,1,], ou seja, M, = G A A T T C A G T T A G G A 0 1 T 0 1 C 0 1 G 0 1 A 0 1 9

70 Algoritmo de Needleman & Wunsch (Preenchimento) Aplicando-se o critério temos: M, = MAXIMUM[ M, 1 + S, (coincidência ou não na diagonal da matriz), M,1 + w (gap na sequência #1), M, + w (gap na sequência #)] = MAXIMUM[,1,], ou seja, M, = G A A T T C A G T T A G G A 0 1 T 0 1 C 0 1 G 0 1 A 0 1 0

71 Algoritmo de Needleman & Wunsch (Preenchimento) Aplicando-se o critério temos: M, = MAXIMUM[ M 1, + S, (coincidência ou não na diagonal da matriz), M, + w (gap na sequência #1), M 1, + w (gap na sequência #)] = MAXIMUM[1,1,1], ou seja, M, = G A A T T C A G T T A G G A 0 1 T 0 1 C 0 1 G 0 1 A 0 1 1

72 Algoritmo de Needleman & Wunsch (Preenchimento) Aplicando-se o critério temos: M, = MAXIMUM[ M 1, + S, (coincidência ou não na diagonal da matriz), M, + w (gap na sequência #1), M 1, + w (gap na sequência #)] = MAXIMUM[1,1,1], ou seja, M, = G A A T T C A G T T A G G A 0 1 T 0 1 C 0 1 G 0 1 A 0 1

73 Algoritmo de Needleman & Wunsch (Preenchimento) Aplicando-se o critério temos: M, = MAXIMUM[ M 1, + S, (coincidência ou não na diagonal da matriz), M, + w (gap na sequência #1), M 1, + w (gap na sequência #)] = MAXIMUM[1,1,1], ou seja, M, = G A A T T C A G T T A G G A 0 1 T 0 1 C 0 1 G 0 1 A 0 1

74 Algoritmo de Needleman & Wunsch (Preenchimento) Aplicando-se o critério temos: M, = MAXIMUM[ M 1, + S, (coincidência ou não na diagonal da matriz), M, + w (gap na sequência #1), M 1, + w (gap na sequência #)] = MAXIMUM[1,1,1], ou seja, M, = G A A T T C A G T T A G G A 0 1 T 0 1 C 0 1 G 0 1 A 0 1

75 Algoritmo de Needleman & Wunsch (Preenchimento) Aplicando-se o critério temos: M, = MAXIMUM[ M 1, + S, (coincidência ou não na diagonal da matriz), M, + w (gap na sequência #1), M 1, + w (gap na sequência #)] = MAXIMUM[1,1,1], ou seja, M, = G A A T T C A G T T A G G A 0 1 T 0 1 C 0 1 G 0 1 A 0 1

76 Algoritmo de Needleman & Wunsch (Preenchimento) Aplicando-se o critério temos: M,8 = MAXIMUM[ M 1, + S,8 (coincidência ou não na diagonal da matriz), M, + w (gap na sequência #1), M 1,8 + w (gap na sequência #)] = MAXIMUM[,1,1], ou seja, M,8 = G A A T T C A G T T A G G A 0 1 T 0 1 C 0 1 G 0 1 A 0 1

77 Algoritmo de Needleman & Wunsch (Preenchimento) Aplicando-se o critério temos: M,9 = MAXIMUM[ M 1, 8 + S,9 (coincidência ou não na diagonal da matriz), M,8 + w (gap na sequência #1), M 1,9 + w (gap na sequência #)] = MAXIMUM[1,,1], ou seja, M,9 = G A A T T C A G T T A G G A 0 1 T 0 1 C 0 1 G 0 1 A 0 1

78 Algoritmo de Needleman & Wunsch (Preenchimento) Aplicando-se o critério temos: M,10 = MAXIMUM[ M 1, 9 + S,10 (coincidência ou não na diagonal da matriz), M,9 + w (gap na sequência #1), M 1,10 + w (gap na sequência #)] = MAXIMUM[1,,1], ou seja, M,10 = G A A T T C A G T T A G G A 0 1 T 0 1 C 0 1 G 0 1 A 0 1 8

79 Algoritmo de Needleman & Wunsch (Preenchimento) Aplicando-se o critério temos: M,11 = MAXIMUM[ M 1, 10 + S,11 (coincidência ou não na diagonal da matriz), M,10 + w (gap na sequência #1), M 1,11 + w (gap na sequência #)] = MAXIMUM[1,,1], ou seja, M,11 = G A A T T C A G T T A G G A 0 1 T 0 1 C 0 1 G 0 1 A 0 1 9

80 Algoritmo de Needleman & Wunsch (Preenchimento) Aplicando-se o critério temos: M, = MAXIMUM[ M, + S, (coincidência ou não na diagonal da matriz), M, + w (gap na sequência #1), M, + w (gap na sequência #)] = MAXIMUM[,,1], ou seja, M, = G A A T T C A G T T A G G A 0 1 T 0 1 C 0 1 G 0 1 A

81 Algoritmo de Needleman & Wunsch (Preenchimento) Aplicando-se o critério temos: M, = MAXIMUM[ M, + S, (coincidência ou não na diagonal da matriz), M, + w (gap na sequência #1), M, + w (gap na sequência #)] = MAXIMUM[,,], ou seja, M, = G A A T T C A G T T A G G A 0 1 T 0 1 C 0 1 G 0 1 A

82 Algoritmo de Needleman & Wunsch (Preenchimento) Aplicando-se o critério temos: M, = MAXIMUM[ M, + S, (coincidência ou não na diagonal da matriz), M, + w (gap na sequência #1), M, + w (gap na sequência #)] = MAXIMUM[,,], ou seja, M, = G A A T T C A G T T A G G A 0 1 T 0 1 C 0 1 G 0 1 A 0 1 8

83 Algoritmo de Needleman & Wunsch (Preenchimento) Aplicando-se o critério temos: M, = MAXIMUM[ M, + S, (coincidência ou não na diagonal da matriz), M, + w (gap na sequência #1), M, + w (gap na sequência #)] = MAXIMUM[,,], ou seja, M, = G A A T T C A G T T A G G A 0 1 T 0 1 C 0 1 G 0 1 A 0 1 8

84 Algoritmo de Needleman & Wunsch (Preenchimento) Aplicando-se o critério temos: M, = MAXIMUM[ M, + S, (coincidência ou não na diagonal da matriz), M, + w (gap na sequência #1), M, + w (gap na sequência #)] = MAXIMUM[,,], ou seja, M, = G A A T T C A G T T A G G A 0 1 T 0 1 C 0 1 G 0 1 A 0 1 8

85 Algoritmo de Needleman & Wunsch (Preenchimento) Aplicando-se o critério temos: M, = MAXIMUM[ M, + S, (coincidência ou não na diagonal da matriz), M, + w (gap na sequência #1), M, + w (gap na sequência #)] = MAXIMUM[1,,1], ou seja, M, = G A A T T C A G T T A G G A 0 1 T 0 1 C 0 1 G 0 1 A 0 1 8

86 Algoritmo de Needleman & Wunsch (Preenchimento) Aplicando-se o critério temos: M, = MAXIMUM[ M, + S, (coincidência ou não na diagonal da matriz), M, + w (gap na sequência #1), M, + w (gap na sequência #)] = MAXIMUM[1,,1], ou seja, M, = G A A T T C A G T T A G G A 0 1 T 0 1 C 0 1 G 0 1 A 0 1 8

87 Algoritmo de Needleman & Wunsch (Preenchimento) Aplicando-se o critério temos: M, = MAXIMUM[ M, + S, (coincidência ou não na diagonal da matriz), M, + w (gap na sequência #1), M, + w (gap na sequência #)] = MAXIMUM[1,,1], ou seja, M, = G A A T T C A G T T A G G A 0 1 T 0 1 C 0 1 G 0 1 A 0 1 8

88 Algoritmo de Needleman & Wunsch (Preenchimento) Aplicando-se o critério temos: M, = MAXIMUM[ M, + S, (coincidência ou não na diagonal da matriz), M, + w (gap na sequência #1), M, + w (gap na sequência #)] = MAXIMUM[,,1], ou seja, M, = G A A T T C A G T T A G G A 0 1 T 0 1 C 0 1 G 0 1 A

89 Algoritmo de Needleman & Wunsch (Preenchimento) Aplicando-se o critério temos: M,8 = MAXIMUM[ M, + S,8 (coincidência ou não na diagonal da matriz), M, + w (gap na sequência #1), M,8 + w (gap na sequência #)] = MAXIMUM[1,,], ou seja, M,8 = G A A T T C A G T T A G G A 0 1 T 0 1 C 0 1 G 0 1 A

90 Algoritmo de Needleman & Wunsch (Preenchimento) Aplicando-se o critério temos: M,9 = MAXIMUM[ M, 8 + S,9 (coincidência ou não na diagonal da matriz), M,8 + w (gap na sequência #1), M,9 + w (gap na sequência #)] = MAXIMUM[,,], ou seja, M,9 = G A A T T C A G T T A G G A 0 1 T 0 1 C 0 1 G 0 1 A

91 Algoritmo de Needleman & Wunsch (Preenchimento) Aplicando-se o critério temos: M,10 = MAXIMUM[ M, 9 + S,10 (coincidência ou não na diagonal da matriz), M,9 + w (gap na sequência #1), M,10 + w (gap na sequência #)] = MAXIMUM[,,], ou seja, M,10 = G A A T T C A G T T A G G A 0 1 T 0 1 C 0 1 G 0 1 A

92 Algoritmo de Needleman & Wunsch (Preenchimento) Aplicando-se o critério temos: M,11 = MAXIMUM[ M, 10 + S,11 (coincidência ou não na diagonal da matriz), M,10 + w (gap na sequência #1), M,11 + w (gap na sequência #)] = MAXIMUM[,,], ou seja, M,11 = G A A T T C A G T T A G G A 0 1 T 0 1 C 0 1 G 0 1 A 0 1 9

93 Algoritmo de Needleman & Wunsch (Preenchimento) Aplicando-se o critério para o restante da matriz, temos o resultado abaixo G A A T T C A G T T A G G A 0 1 T 0 1 C 0 1 G 0 1 A 0 1 9

94 Algoritmo de Needleman & Wunsch (Alinhamento) No alinhamento iniciamos onde temos o maior escore, na posição,11, indicada pelo círculo vermelho abaixo. Para escolher o próximo movimento, vemos as posições anteriores, indicadas por flechas. Todas tem escore, assim movemos na diagonal. Movimento na diagonal significa alinhamento das duas bases G A A T T C A G T T A G G A 0 1 T 0 1 C 0 1 G 0 1 A 0 1

95 Algoritmo de Needleman & Wunsch (Alinhamento) O alinhamento parcial está indicado abaixo. G - A A T T C A G T T A G G A - T - C - G - - A G A A T T C A G T T A G G A 0 1 T 0 1 C 0 1 G 0 1 A 0 1 9

96 Algoritmo de Needleman & Wunsch (Alinhamento) Analisando-se os escores vizinhos, vemos que o maior está à esquerda (), o que indica uma inserção de gap na sequência, como mostrado abaixo. G - A A T T C A G T T A G G A - T - C - G - - A Gap G A A T T C A G T T A G G A 0 1 T 0 1 C 0 1 G 0 1 A 0 1 9

97 Algoritmo de Needleman & Wunsch (Alinhamento) Analisando-se os escores vizinhos, vemos que o maior está à esquerda () de novo, o que indica uma nova inserção de gap na sequência, como mostrado abaixo. G - A A T T C A G T T A G G A - T - C - G - - A G A A T T C A G T T A G G A 0 1 T 0 1 C 0 1 G 0 1 A 0 1 9

98 Algoritmo de Needleman & Wunsch (Alinhamento) Analisando-se os escores vizinhos, temos em todos, assim seguimos na diagonal, o que indica uma coincidência, como mostrado abaixo. G - A A T T C A G T T A G G A - T - C - G - - A G A A T T C A G T T A G G A 0 1 T 0 1 C 0 1 G 0 1 A

99 Algoritmo de Needleman & Wunsch (Alinhamento) O maior escore entre os vizinhos é, o que indica a inserção de um novo gap na sequência, como mostrado abaixo. G - A A T T C A G T T A G G A - T - C - G - - A G A A T T C A G T T A G G A 0 1 T 0 1 C 0 1 G 0 1 A

100 Algoritmo de Needleman & Wunsch (Alinhamento) Novo movimento na diagonal, temos o alinhamento abaixo. G - A A T T C A G T T A G G A - T - C - G - - A G A A T T C A G T T A G G A T 0 1 C 0 1 G 0 1 A 0 1

101 Algoritmo de Needleman & Wunsch (Alinhamento) O escore mais alto está à esquerda (), o que representa a inserção de gap na sequência, como mostrado abaixo. G - A A T T C A G T T A G G A - T - C - G - - A G A A T T C A G T T A G G A T 0 1 C 0 1 G 0 1 A 0 1

102 Algoritmo de Needleman & Wunsch (Alinhamento) Temos agora movimento na diagonal, e coincidência, como indicado abaixo. G - A A T T C A G T T A G G A - T - C - G - - A G A A T T C A G T T A G G A 0 1 T C 0 1 G 0 1 A 0 1

103 Algoritmo de Needleman & Wunsch (Alinhamento) O maior escore localiza-se à esquerda (), o que representa a inserção de gap na sequência, como mostrado abaixo. G - A A T T C A G T T A G G A - T - C - G - - A G A A T T C A G T T A G G A 0 1 T 0 1 C 0 1 G 0 1 A 0 1

104 Algoritmo de Needleman & Wunsch (Alinhamento) Agora temos um deslocamento na diagonal, o que leva a uma coincidência no alinhamento, como mostrado abaixo. G - A A T T C A G T T A G G A - T - C - G - - A G A A T T C A G T T A G G A 0 1 T 0 1 C 0 1 G 0 1 A

105 Algoritmo de Needleman & Wunsch (Alinhamento) Temos o maior escore na posição acima, o que representa uma inserção de gap na sequência 1, como indicado abaixo. G - A A T T C A G T T A G G A - T - C - G - - A G A A T T C A G T T A G G A 0 1 T 0 1 C 0 1 G 0 1 A

106 Algoritmo de Needleman & Wunsch (Alinhamento) Por último temos um deslocamento na diagonal, o que representa uma coincidência, como indicado abaixo. G - A A T T C A G T T A G G A - T - C - G - - A G A A T T C A G T T A G G A 0 1 T 0 1 C 0 1 G 0 1 A

107 Algoritmo de Needleman & Wunsch (Alinhamento) Completamos o alinhamento. O algoritmo apresentado é uma simplificação, ficou faltando um valor para a penalidade de gap na montagem da matriz. Programas de alinhamento modernos, como Clustaw e outros, levam em conta as penalidades. Além disso, é feito uso de matrizes de escore, para pontuar diferentes alinhamentos, como no caso de aminoácidos. G - A A T T C A G T T A G G A - T - C - G - - A 10

108 Algoritmo de Needleman & Wunsch (Implementação) Abaixo temos o programa algo_nw1.py, que realiza o alinhamento de duas sequências de DNA, a partir do algoritmo de Needleman & Wunsch. O programa é relativamente longo, assim apresentaremos por partes. Inicialmente importamos a biblioteca NumPy, que traz recursos matemáticos como matrizes e vetores. As matrizes e vetores são implementados como arrays, que assemelham-se a listas, mas com um tipo somente de dados. Em seguida definimos as sequências a serem alinhadas e determinamos o tamanho delas. Somamos 1 ao tamanho das sequências, pois estes números serão usados para definir a matriz caminho (n1xn), que tem uma coluna e uma linha extras. # Import library import numpy as np # Sequences to align seq1 = "GAATTCAGTTA" seq = "GGATCGA" # Length of sequences n1 = len(seq1)+1 n = len(seq)+1 108

109 Algoritmo de Needleman & Wunsch (Implementação) Agora definimos a matriz caminho, a ser atribuída à variável M. Usamos o recurso np.array(). Veja que as variáveis n1 e n definem os números de linhas e colunas da matriz caminho. Em seguida temos dois loops for, para mostrar as sequências na tela. # Set up path matrix M = np.array([[0]*n1]*n,int) # Show sequence print("sequences to be aligned:") for i in range(n1-1): print(seq1[i],end="") print() for j in range(n-1): print(seq[j],end="") # np.array([[0]*column]*row,int) 109

110 Algoritmo de Needleman & Wunsch (Implementação) Abaixo temos o trecho do código que define a matriz caminho (path matrix), com 1 atribuído quando as bases coincidem. Esses valores serão usados posteriormente para os elementos S i,j usados no cálculo dos elementos da matriz caminho para o alinhamento. # Define path matrix # Looping through matrix for i in range(1,n): for j in range(1,n1): if seq1[j-1] == seq[i-1]: M[i][j] = 1 110

111 Algoritmo de Needleman & Wunsch (Implementação) Para a construção da matriz caminho completa, usamos a condição já vista para o alinhamento, M i,j = MAXIMUM[ M i-1, j-1 + S i,j (coincidência ou não na diagonal da matriz), M i,j-1 + w (gap na sequência #1), M i-1,j + w (gap na sequência #)] # Build path matrix for i in range(1,n): for j in range(1,n1): my_array = [M[i-1][j-1] + M[i][j], M[i][j-1],M[i-1][j]] M[i][j] = np.max(my_array) 111

112 Algoritmo de Needleman & Wunsch (Implementação) Como atribuímos 1 aos elementos da matriz M quando havia coincidência, o elemento S i,j a ser usado na soma é o elemento M i,j. M i,j = MAXIMUM[ M i-1, j-1 + S i,j (coincidência ou não na diagonal da matriz), M i,j-1 + w (gap na sequência #1), M i-1,j + w (gap na sequência #)] É o mesmo que o S ij da equação acima # Build path matrix for i in range(1,n): for j in range(1,n1): my_array = [M[i-1][j-1] + M[i][j], M[i][j-1],M[i-1][j]] M[i][j] = np.max(my_array) 11

113 Algoritmo de Needleman & Wunsch (Implementação) Veja que montamos um array auxiliar atribuído à variável my_array. Esse array recebe os três elementos da matriz caminho e identificamos o máximo com o método max, como mostrado abaixo. M i,j = MAXIMUM[ M i-1, j-1 + S i,j (coincidência ou não na diagonal da matriz), M i,j-1 + w (gap na sequência #1), M i-1,j + w (gap na sequência #)] # Build path matrix for i in range(1,n): for j in range(1,n1): my_array = [M[i-1][j-1] + M[i][j], M[i][j-1],M[i-1][j]] M[i][j] = np.max(my_array) 11

114 Algoritmo de Needleman & Wunsch (Implementação) Agora mostramos a matriz caminho na tela. # Show path matrix print("\n\npath matrix:") for i in range(n): for j in range(n1): print(m[i][j],end=" ") print() 11

115 Algoritmo de Needleman & Wunsch (Implementação) Abaixo atribuímos valores para variáveis i e j que serão usadas em loops. Definimos strings vazias para irmos montando as sequências alinhadas. # Set up initial values for i and j i = n-1 j = n # Set up empty strings s1 = "" s = "" 11

116 Algoritmo de Needleman & Wunsch (Implementação) Abaixo temos um loop while que monta as sequências alinhadas, que vão sendo atribuídas às variáveis s1 e s. Podemos pensar neste trecho de código como o responsável pelo retorno no matriz caminho, a partir do elemento maior. # while loop while( i > 0 or j >0): my_array = [M[i-1][j-1], M[i][j-1],M[i-1][j]] m1 = np.max(my_array) if m1 == M[i-1][j-1]: s1 += seq1[j-1] s += seq[i-1] i -= 1 j -= 1 elif m1 == M[i][j-1]: s1 += seq1[j-1] s += "-" j -= 1 elif m1 == M[i-1][j]: s1 += "-" s += seq[i-1] i -= 1 11

117 Algoritmo de Needleman & Wunsch (Implementação) Agora mostramos os resultados na tela. Como montamos as sequências invertidas, temos que inverter as strings, usando-se o comando s1[::-1]. Este comando inverte a sequência de bases atribuídas à variável s1. print("\naligned sequences:") print(s1[::-1]) print(s[::-1]) 11

118 Algoritmo de Needleman & Wunsch (Implementação) Abaixo temos o resultado para execução do código. Sequences to be aligned: GAATTCAGTTA GGATCGA Path matrix: Aligned sequences: G-AATTCAGTTA GGA-T-C-G--A 118

119 Exercício de Programação Implemente o Algoritmo de Needleman & Wunsch usando-se a abordagem de Programação Orientada a Objeto. Considere que o programa tem um método para a leitura das sequências a serem alinhadas a partir de dois arquivos no formato FASTA. Chame o novo programa de algo_nw.py. 119

120 Colophon This material was produced in a HP Pavillon dm notebook with GB of memory, a 00 GB hard disk, and an Intel Core i M0 GHz running Windows Professional. Text and layout were generated using PowerPoint 00 and graphical figures were generated by Visual Molecular Dynamics (VMD)(Humphrey W, Dalke A, Schulten K.VMD: visual molecular dynamics. J Mol Graph. 199; 1(1):-8, -8.) and Matplotlib. Additional figures on the slides -10 were taken from the book: Jones, N. C. & Pevzner, P. A. An Introduction to Bioinformatics Algorithms. The MIT Press,Cambridge, 00. This material uses Arial font. 10

121 Author I graduated in Physics (BSc in Physics) at University of Sao Paulo (USP) in I completed a Master Degree in Applied Physics also at USP (199), working under supervision of Prof. Yvonne P. Mascarenhas, the founder of crystallography in Brazil. My dissertation was about X- ray crystallography applied to organometallics compounds (De Azevedo Jr. et al.,199). During my PhD I worked under supervision of Prof. Sung-Hou Kim (University of California, Berkeley. Department of Chemistry), on a split PhD program with a fellowship from Brazilian Research Council (CNPq)( ). My PhD was about the crystallographic structure of CDK (Cyclin- Dependent Kinase ) (De Azevedo Jr. et al., 199). In 199, I returned to Brazil. In April 199, I finished my PhD and moved to Sao Jose do Rio Preto (SP, Brazil) (UNESP) and worked there from 199 to 00. In 199, I started the Laboratory of Biomolecular Systems- Department of Physics-UNESP - São Paulo State University. In 00, I moved to Porto Alegre/RS (Brazil), where I am now. My current position is coordinator of the Laboratory of Computational Systems Biology at Pontifical Catholic University of Rio Grande do Sul (PUCRS). My research interests are focused on application of computer simulations to analyze protein-ligand interactions. I'm also interested in the development of bioinspired computing and machine learning algorithms. We apply these algorithms to molecular docking simulations, protein-ligand interactions and other scientific and technological problems. I published over 10 scientific papers about protein structures and computer simulation methods applied to the study of biological systems (Hindex: ). These publications have over 000 citations. I am editor for the following journals: 11

122 Referências ALBERTS, B. et al. Biologia Molecular da Célula. a edição. Porto Alegre: Artmed editora, Porto Alegre, 00. -BRESSERT, Eli. SciPy and NumPy. Sebastopol: O Reilly Media, Inc., 01. p. -DAWSON, Michael. Python Programming, for the absolute beginner. ed. Boston: Course Technology, 010. p. -HETLAND, Magnus Lie. Python Algorithms. Mastering Basic Algorithms in the Python Language. Nova York: Springer Science+Business Media LLC, p. -IDRIS, Ivan. NumPy 1.. An action-packed guide dor the easy-to-use, high performance, Python based free open source NumPy mathematical library using real-world examples. Beginner s Guide. Birmingham: Packt Publishing Ltd., p. -KIUSALAAS, Jaan. Numerical Methods in Engineering with Python. ed. Nova York: Cambridge University Press, 010. p. -LANDAU, Rubin H. A First Course in Scientific Computing: Symbolic, Graphic, and Numeric Modeling Using Maple, Java, Mathematica, and Fortran90. Princeton: Princeton University Press, p. -LANDAU, Rubin H., PÁEZ, Manuel José, BORDEIANU, Cristian C. A Survey of Computational Physics. Introductory Computational Physics. Princeton: Princeton University Press, p. -LUTZ, Mark. Programming Python. ed. Sebastopol: O Reilly Media, Inc., p. -MODEL, Mitchell L. Bioinformatics Programming Using Python. Sebastopol: O Reilly Media, Inc., p. -TOSI, Sandro. Matplotlib for Python Developers. Birmingham: Packt Publishing Ltd., p. Última atualização: 8 de dezembro de 01. 1

2016 Dr. Walter F. de Azevedo Jr.

2016 Dr. Walter F. de Azevedo Jr. 2016 Dr. Walter F. de Azevedo Jr. > 1 Download do pyzo A partir do pyzo (disponível em http:///), o processo de instalação do Python fica facilitado. A instalação integra, além do Python, um conjunto de

Leia mais

2016 Dr. Walter F. de Azevedo Jr. > >

2016 Dr. Walter F. de Azevedo Jr. > > 2016 Dr. Walter F. de Azevedo Jr. > > 1 Download do eclipse www.eclipse.org Antes de fazer o download do eclipse, certifique-se que você tem o Java (JDK) instalado no seu computador. Vá ao site www.eclipse.org.

Leia mais

2018 Dr. Walter F. de Azevedo Jr. azevedolab.net

2018 Dr. Walter F. de Azevedo Jr. azevedolab.net 2018 Dr. Walter F. de Azevedo Jr. azevedolab.net 1 Programação Orientada a Objeto Iremos ver o uso da abordagem de programação orientada a objeto (object-oriented programming (OOP)). Nosso objetivo é usar

Leia mais

2016 Dr. Walter F. de Azevedo Jr.

2016 Dr. Walter F. de Azevedo Jr. 2016 Dr. Walter F. de Azevedo Jr. 000000000000000000000000000000000000000 000000000000000000000000000000000000000 000000000000111111111110001100000000000 000000000001111111111111111111000000001 000000000111111111111111111111111000000

Leia mais

2017 Dr. Walter F. de Azevedo Jr.

2017 Dr. Walter F. de Azevedo Jr. 2017 Dr. Walter F. de Azevedo Jr. 000000000000000000000000000000000000000 000000000000000000000000000000000000000 000000000000111111111110001100000000000 000000000001111111111111111111000000001 000000000111111111111111111111111000000

Leia mais

Bioinformática Aplicada

Bioinformática Aplicada 000000000000000000000000000000000000000 000000000000000000000000000000000000000 000000000000111111111110001100000000000 000000000001111111111111111111000000001 000000000111111111111111111111111000000 000000000111111111111111111111111000000

Leia mais

Principais algoritmos de alinhamento de sequências genéticas. Alexandre dos Santos Cristino

Principais algoritmos de alinhamento de sequências genéticas. Alexandre dos Santos Cristino Principais algoritmos de alinhamento de sequências genéticas Alexandre dos Santos Cristino http://www.ime.usp.br/~alexsc e-mail: alexsc@ime.usp.br Definição de alinhamento de sequências Comparação de duas

Leia mais

2016 Dr. Walter F. de Azevedo Jr. azevedolab.net

2016 Dr. Walter F. de Azevedo Jr. azevedolab.net 2016 Dr. Walter F. de Azevedo Jr. 000000000000000000000000000000000000000 000000000000000000000000000000000000000 000000000000000000000000010000000000000 000000000000000000000111111111100000000 000000000000000000001111110000000000110

Leia mais

2018 Dr. Walter F. de Azevedo Jr. azevedolab.net

2018 Dr. Walter F. de Azevedo Jr. azevedolab.net 2018 Dr. Walter F. de Azevedo Jr. azevedolab.net 1 Introdução às Expressões Booleanas Circuitos digitais encontrados nos processadores são baseados num formalismo matemático chamado Álgebra de Boole. Não

Leia mais

2016 Dr. Walter F. de Azevedo Jr.

2016 Dr. Walter F. de Azevedo Jr. 2016 Dr. Walter F. de Azevedo Jr. 000000000000000000000000000000000000000 000000000000000000000000000000000000000 000000000000111111111110001100000000000 000000000001111111111111111111000000001 000000000111111111111111111111111000000

Leia mais

TITULO: Implementação do alinhamento de proteínas em GPU utilizando OpenCL PROPOSTA DE TRABALHO DE GRADUAÇÃO

TITULO: Implementação do alinhamento de proteínas em GPU utilizando OpenCL PROPOSTA DE TRABALHO DE GRADUAÇÃO 1 U NIVERSIDADE FEDERAL DE PERNAMBUCO GRADUAÇÃO EM ENGENHARIA DA COMPUTAÇÃO CENTRO DE INFORMÁTICA 2 0 1 6. 1 TITULO: Implementação do alinhamento de proteínas em GPU utilizando OpenCL PROPOSTA DE TRABALHO

Leia mais

2019 Dr. Walter F. de Azevedo Jr.

2019 Dr. Walter F. de Azevedo Jr. 2019 Dr. Walter F. de Azevedo Jr. 000000000000000000000000000000000000000 000000000000000000000000000000000000000 000000000000111111111110001100000000000 000000000001111111111111111111000000001 000000000111111111111111111111111000000

Leia mais

2016 Dr. Walter F. de Azevedo Jr.

2016 Dr. Walter F. de Azevedo Jr. 2016 Dr. Walter F. de Azevedo Jr. 000000000000000000000000000000000000000 000000000000000000000000000000000000000 000000000000111111111110001100000000000 000000000001111111111111111111000000001 000000000111111111111111111111111000000

Leia mais

Vimos na aula passada um algoritmo genético simples para resolver o problema do máximo da função x 2. Veremos sua implementação em Python.

Vimos na aula passada um algoritmo genético simples para resolver o problema do máximo da função x 2. Veremos sua implementação em Python. azevedolab.net Implementação de um Algoritmo Genético Simples Vimos na aula passada um algoritmo genético simples para resolver o problema do máimo da função. Veremos sua implementação em Python. Gera

Leia mais

2018 Dr. Walter F. de Azevedo Jr. azevedolab.net

2018 Dr. Walter F. de Azevedo Jr. azevedolab.net 2018 Dr. Walter F. de Azevedo Jr. azevedolab.net 1 Algoritmo Genético Vimos anteriormente um algoritmo genético simples para resolução de um problema de maximização. O algoritmo visa encontrar o maior

Leia mais

2015 Dr. Walter F. de Azevedo Jr.

2015 Dr. Walter F. de Azevedo Jr. 2015 Dr. Walter F. de Azevedo Jr. 000000000000000000000000000000000000000 000000000000000000000000000000000000000 000000000000111111111110001100000000000 000000000001111111111111111111000000001 000000000111111111111111111111111000000

Leia mais

2015 Dr. Walter F. de Azevedo Jr. www.python.org

2015 Dr. Walter F. de Azevedo Jr. www.python.org 2015 Dr. Walter F. de Azevedo Jr. 000000000000000000000000000000000000000 000000000000000000000000000000000000000 000000000000111111111110001100000000000 000000000001111111111111111111000000001 000000000111111111111111111111111000000

Leia mais

Alinhamento de Sequências e Genômica Comparativa

Alinhamento de Sequências e Genômica Comparativa Encontro França-Brasil de Bioinformática Universidade Estadual de Santa Cruz (UESC) Ilhéus-BA - Brasil Alinhamento de Sequências e Genômica Comparativa Maria Emília M. T. Walter Departamento de Ciência

Leia mais

2019 Dr. Walter F. de Azevedo Jr.

2019 Dr. Walter F. de Azevedo Jr. 2019 Dr. Walter F. de Azevedo Jr. 000000000000000000000000000000000000000 000000000000000000000000000000000000000 000000000000111111111110001100000000000 000000000001111111111111111111000000001 000000000111111111111111111111111000000

Leia mais

Algoritmos 3/17/ Algoritmos como área de estudo e investigação

Algoritmos 3/17/ Algoritmos como área de estudo e investigação Algoritmos e Complexidade Ana Teresa Freitas INESC-ID/IST ID/IST 3/17/2005 1 O que é um algoritmo? Algoritmos: Sequência de instruções necessárias para a resolução de um problema bem formulado [passíveis

Leia mais

Biologia Estrutural. Qualidade de modelos estruturais Prof. Dr. Walter F. de Azevedo Jr. wfdaj.sites.uol.com.br Dr. Walter F. de Azevedo Jr.

Biologia Estrutural. Qualidade de modelos estruturais Prof. Dr. Walter F. de Azevedo Jr. wfdaj.sites.uol.com.br Dr. Walter F. de Azevedo Jr. Biologia Estrutural Qualidade de modelos estruturais Prof. Dr. Walter F. de Azevedo Jr. Biologia Estrutural Resumo SCOP Modelagem molecular SCOP A primeira versão do SCOP foi liberada em 29 de outubro

Leia mais

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

Bioinformática. Ney Lemke. Departamento de Física e Biofísica. logo 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

Leia mais

Bioinformática 1. Prof. Dr. Walter F. de Azevedo Jr. Laboratório de Sistemas BioMoleculares. Departamento de Física. UNESP São José do Rio Preto. SP.

Bioinformática 1. Prof. Dr. Walter F. de Azevedo Jr. Laboratório de Sistemas BioMoleculares. Departamento de Física. UNESP São José do Rio Preto. SP. Bioinformática Prof. Dr. Walter F. de Azevedo Jr. Laboratório de Sistemas BioMoleculares. Departamento de Física. UNESP São José do Rio Preto. SP. Resumo Mapa de restrição Problema da digestão parcial

Leia mais

2018 Dr. Walter F. de Azevedo Jr.

2018 Dr. Walter F. de Azevedo Jr. 2018 Dr. Walter F. de Azevedo Jr. 000000000000111111111110001100000000000 000000000001111111111111111111000000001 000000000111111111111111111111111000000 000000000111111111111111111111111000000 000000000011111111111111111111100000000

Leia mais

azevedolab.net 2015 Dr. Walter F. de Azevedo Jr. Arrays

azevedolab.net 2015 Dr. Walter F. de Azevedo Jr. Arrays azevedolab.net 2015 Dr. Walter F. de Azevedo Jr. Arrays 1 Programa: flying_saucer0.pde FlyingSaucer mysaucer; float speed; float score; // Declares an object // speed of flying saucer // score void setup()

Leia mais

azevedolab.net 2018 Dr. Walter F. de Azevedo Jr.

azevedolab.net 2018 Dr. Walter F. de Azevedo Jr. azevedolab.net 2018 Dr. Walter F. de Azevedo Jr. Reerências No algoritmo genético, a geração aleatória de indivíduos de uma dada população é uma etapa de importância undamental. Esse processo é chamado

Leia mais

Tópicos Especiais em Inteligência Artificial COS746. Vítor Santos Costa COPPE/Sistemas Universidade Federal do Rio de Janeiro

Tópicos Especiais em Inteligência Artificial COS746. Vítor Santos Costa COPPE/Sistemas Universidade Federal do Rio de Janeiro Tópicos Especiais em Inteligência Artificial COS746 Vítor Santos Costa COPPE/Sistemas Universidade Federal do Rio de Janeiro Agradecimento Copiado dos slides de Mark Craven para BMI/CS 576, UW-Madison

Leia mais

Aula 10: Introdução a Vetores e Matrizes

Aula 10: Introdução a Vetores e Matrizes Aula 10: Introdução a Vetores e Matrizes Fernanda Passos Universidade Federal Fluminense Programação de Computadores IV Fernanda Passos (UFF) Vetores e Matrizes Programação de Computadores IV 1 / 50 Agenda

Leia mais

LOM3260 Computação científica em Python Informações sobre o curso

LOM3260 Computação científica em Python Informações sobre o curso LOM3260 Computação científica em Python Informações sobre o curso Prof. Luiz T. F. Eleno Departamento de Engenharia de Materiais Escola de Engenharia de Lorena Universidade de São Paulo 2018 LOM3260 (EEL-USP,

Leia mais

Complexidade de Algoritmos

Complexidade de Algoritmos Complexidade de Algoritmos Prof. Diego Buchinger diego.buchinger@outlook.com diego.buchinger@udesc.br Prof. Cristiano Damiani Vasconcellos cristiano.vasconcellos@udesc.br Abordagens para Resolução de Problemas

Leia mais

Oficina de Introdução de Programação usando Linguagem Python Prof. Ms. Perini

Oficina de Introdução de Programação usando Linguagem Python Prof. Ms. Perini Oficina de Introdução de Programação usando Linguagem Python Prof. Ms. Perini Apresentação do Professor Professor: José Carlos Perini E-mail: jose.perini@metrocamp.edu.br Blog: http://profperini.com Formação

Leia mais

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

UNIVERSIDADE PRESBITERIANA MACKENZIE Faculdade de Computação e Informática. 4 a ETAPA 4 a ETAPA SISTEMAS OPERACIONAIS ( 02 ) Laboratório TECNOLOGIA E INFRA Estudo de arquiteturas de sistemas operacionais. Estudo do gerenciador de processos, gerenciador de memória, gerenciador de arquivos

Leia mais

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

AED2 - Aula 11 Problema da separação e quicksort AED2 - Aula 11 Problema da separação e quicksort Projeto de algoritmos por divisão e conquista Dividir: o problema é dividido em subproblemas menores do mesmo tipo. Conquistar: os subproblemas são resolvidos

Leia mais

TÍTULO: ANÁLISE DA SEMELHANÇA ESTRUTURAL ENTRE PROTEÍNAS ATRAVÉS DE MÉTODOS MATEMÁTICOS

TÍTULO: ANÁLISE DA SEMELHANÇA ESTRUTURAL ENTRE PROTEÍNAS ATRAVÉS DE MÉTODOS MATEMÁTICOS Anais do Conic-Semesp. Volume 1, 2013 - Faculdade Anhanguera de Campinas - Unidade 3. ISSN 2357-8904 TÍTULO: ANÁLISE DA SEMELHANÇA ESTRUTURAL ENTRE PROTEÍNAS ATRAVÉS DE MÉTODOS MATEMÁTICOS CATEGORIA: CONCLUÍDO

Leia mais

Oficina de Python Prof. Me. José Carlos Perini

Oficina de Python Prof. Me. José Carlos Perini Oficina de Python Prof. Me. José Carlos Perini Prof. José Carlos Perini Formação em Análise de Sistemas Univ. S. Francisco Pós em Administração Universidade S. Francisco Mestrado em Ciência da Computação

Leia mais

Capítulo 7 Matriz. Roteiro

Capítulo 7 Matriz. Roteiro Capítulo 7 Matriz Licenciatura em Computação Fundamentos de Lógica para Programação Prof. Nícolas Trigo nicolas.trigo@ifsertao-pe.edu.br http://professor.ifsertao-pe.edu.br/nicolas.trigo Roteiro Definição

Leia mais

Sistemas de Equações Lineares

Sistemas de Equações Lineares Capítulo 3 Sistemas de Equações Lineares Um sistema com n equações lineares pode ser escrito na forma : ou na forma matricial onde com a 1,1 x 1 + a 1,2 x 2 + + a x n = b 1 a 2,1 x 1 + a 2,2 x 2 + + a

Leia mais

A matemática e o genoma. Resumo

A matemática e o genoma. Resumo I Coloquio Regional da Região Centro-Oeste, 3 a 6 de novembro de 2009 Universidade Federal de Mato Grosso do Sul Mini-curso A matemática e o genoma Nalvo F. Almeida Jr. Resumo Os avanços da biotecnologia

Leia mais

Oficina de Python Prof. Me. José Carlos Perini

Oficina de Python Prof. Me. José Carlos Perini Oficina de Python Prof. Me. José Carlos Perini Prof. José Carlos Perini Formação em Análise de Sistemas Univ. S. Francisco Pós em Administração Universidade S. Francisco Mestrado em Ciência da Computação

Leia mais

Tópicos Especiais em Inteligência Artificial COS746. Vítor Santos Costa COPPE/Sistemas Universidade Federal do Rio de Janeiro

Tópicos Especiais em Inteligência Artificial COS746. Vítor Santos Costa COPPE/Sistemas Universidade Federal do Rio de Janeiro Tópicos Especiais em Inteligência Artificial COS746 Vítor Santos Costa COPPE/Sistemas Universidade Federal do Rio de Janeiro Agradecimento Copiado dos slides de Mark Craven/C. David Page para BMI/CS 576,

Leia mais

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

Programação Dinâmica I SCC0210 Algoritmos Avançados (2/2011) Lucas Schmidt Cavalcante Programação Dinâmica I SCC0210 Algoritmos Avançados (2/2011) Lucas Schmidt Cavalcante Introdução Soma máxima de uma subsequência contígua Problema do troco Quantidade de formas de dar troco Problema da

Leia mais

Jogos e Brincadeiras I. 1. Brincadeiras

Jogos e Brincadeiras I. 1. Brincadeiras Polos Olímpicos de Treinamento Curso de Combinatória - Nível 1 Prof. Bruno Holanda Aula 1 Jogos e Brincadeiras I 1. Brincadeiras Nesta primeira parte da aula resolveremos duas questões retiradas da Olimpíada

Leia mais

Valdex Santos. 09 de junho de 2011

Valdex Santos. 09 de junho de 2011 Progamação Algébrica em Matlab Valdex Santos Instituto Federal da Bahia 09 de junho de 2011 Sumário 1 Introdução 2 MATLAB como linguagem de programação 3 Funções Matemáticas 4 IF, FOR e WHILE 5 outras

Leia mais

Primeiro Exercício programa: Como o Google ordena páginas. MAP-2121 para EPUSP

Primeiro Exercício programa: Como o Google ordena páginas. MAP-2121 para EPUSP Primeiro Exercício programa: Como o Google ordena páginas MAP-2121 para EPUSP 1 Instruções gerais Os exercícios computacionais pedidos na disciplina Cálculo Numérico têm por objetivo fundamental familiarizar

Leia mais

English version at the end of this document

English version at the end of this document English version at the end of this document Ano Letivo 2017-18 Unidade Curricular LABORATÓRIO DE PROGRAMAÇÃO Cursos ENGENHARIA INFORMÁTICA (1.º ciclo) Unidade Orgânica Faculdade de Ciências e Tecnologia

Leia mais

Aplicação do Sistema de Girard no Cálculo de Raízes de Polinômios

Aplicação do Sistema de Girard no Cálculo de Raízes de Polinômios Trabalho apresentado no CMAC-Sul, Curitiba-PR, 2014 Aplicação do Sistema de Girard no Cálculo de Raízes de Polinômios Oliver Kolossoski Programa de Pós-Graduação em Matemática Aplicada, PPGMA - Centro

Leia mais

Universidade de São Paulo

Universidade de São Paulo Universidade de São Paulo Instituto de Ciências Matemáticas e Computação SCE5763 - Tipos e Estrutura de Dados - Luis Gustavo Nonato 2 a Lista de Exercícios 1. Seja A um array de inteiros. Escreva algoritmos

Leia mais

Oficina de Programação de Drones Fundamentos de Python Prof. Me. José Carlos Perini

Oficina de Programação de Drones Fundamentos de Python Prof. Me. José Carlos Perini Oficina de Programação de Drones Fundamentos de Python Prof. Me. José Carlos Perini Prof. José Carlos Perini Formação em Análise de Sistemas Univ. S. Francisco Pós em Administração Universidade S. Francisco

Leia mais

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

UNIVERSIDADE PRESBITERIANA MACKENZIE Faculdade de Computação e Informática. 3 a ETAPA 3 a ETAPA exclusivo de curso (X) Eixo Comum ( ) Eixo Universal () ORGANIZAÇÃO DE COMPUTADORES ( 02 ) Laboratório TECNOLOGIA E INFRA Estudo da organização funcional de computadores, com destaque para a

Leia mais

OLIMPÍADA DE MATEMÁTICA DO ESTADO DO RIO GRANDE DO NORTE LISTA SEMANAL N o 01 - Data 00/02/2017

OLIMPÍADA DE MATEMÁTICA DO ESTADO DO RIO GRANDE DO NORTE LISTA SEMANAL N o 01 - Data 00/02/2017 OLIMPÍADA DE MATEMÁTICA DO ESTADO DO RIO GRANDE DO NORTE LISTA SEMANAL N o 01 - Data 00/02/2017 PROBLEMA PARA O NÍVEL I Uma folha de papel quadrada é dobrada na metade e, em seguida, dobrada novamente

Leia mais

Aula de hoje. Python para disciplinas básicas. Computação científica. Introdução. Álgebra Linear. Álgebra linear

Aula de hoje. Python para disciplinas básicas. Computação científica. Introdução. Álgebra Linear. Álgebra linear SCC 14 - Introdução à Programação para Engenharias Python para disciplinas básicas Professor: André C. P. L. F. de Carvalho, ICMC-USP Pos-doutorando: Isvani Frias-Blanco Monitor: Henrique Bonini de Britto

Leia mais

IN Redes Neurais

IN Redes Neurais IN0997 - Redes Neurais Aluizio Fausto Ribeiro Araújo Universidade Federal de Pernambuco Centro de Informática - CIn Departamento de Sistemas da Computação aluizioa@cin.ufpe.br Conteúdo Objetivos Quem usa

Leia mais

Paralelização do Método de Jacobi em Memória Compartilhada 1

Paralelização do Método de Jacobi em Memória Compartilhada 1 Paralelização do Método de Jacobi em Memória Compartilhada 1 Claudio Schepke cschepke@inf.ufrgs.br 1 PPGC - Instituto de Informática - UFRGS Introdução ao Processamento Paralelo e Distribuído Professor

Leia mais

JOGOS Bruno Holanda, Fortaleza CE

JOGOS Bruno Holanda, Fortaleza CE JOGOS Bruno Holanda, Fortaleza CE Nível Iniciante Problemas sobre jogos estão entre os mais atrativos para a maioria dos alunos que estão iniciando o seu gosto pela matemática e, por isso, vêm ganhando

Leia mais

Biologia Estrutural. Espaço Recíproco e a Esfera de Ewald. Prof. Dr. Walter Filgueira de Azevedo Jr. wfdaj.sites.uol.com.br

Biologia Estrutural. Espaço Recíproco e a Esfera de Ewald. Prof. Dr. Walter Filgueira de Azevedo Jr. wfdaj.sites.uol.com.br Biologia Estrutural Espaço Recíproco e a Esfera de Ewald Prof. Dr. Walter Filgueira de Azevedo Jr. Resumo Índices de Miller Índices de Direções Espaço Recíproco Esfera de Ewald Esfera Limite Número de

Leia mais

Método Simplex dual. Marina Andretta ICMC-USP. 24 de outubro de 2016

Método Simplex dual. Marina Andretta ICMC-USP. 24 de outubro de 2016 Método Simplex dual Marina Andretta ICMC-USP 24 de outubro de 2016 Baseado no livro Introduction to Linear Optimization, de D. Bertsimas e J. N. Tsitsiklis. Marina Andretta (ICMC-USP) sme0211 - Otimização

Leia mais

MODELOS PROBABILÍSTICOS

MODELOS PROBABILÍSTICOS Disciplina de BIOLOGIA COMPUTACIONAL Mestrado em ENGENHARIA BIOMÉDICA 4º Ano, 1º Semestre 2007/08 MODELOS PROBABILÍSTICOS Relatório 4 Ana Calhau Ângela Pisco Nuno Santos 54605 55748 55746 Palavras-Chave:

Leia mais

UNIVERSIDADE FEDERAL DO PARANÁ Nível 1 - POTI Aula 1 - Combinatória

UNIVERSIDADE FEDERAL DO PARANÁ Nível 1 - POTI Aula 1 - Combinatória UNIVERSIDADE FEDERAL DO PARANÁ Nível 1 - POTI Aula 1 - Combinatória Exercícios: 1. Maria inventou uma brincadeira. Digitou alguns algarismos na primeira linha de uma folha. Depois, no segunda linha, fez

Leia mais

Buscando um Invariante

Buscando um Invariante Resolução de Problemas Lista 01 com dicas e discussão Faça mentalmente as seguintes multiplicações: 1. 27 37 2. 21 23 Invente e resolva um problema, usando como inspiração o problema anterior. Decida o

Leia mais

MATRIZES - PARTE Definição e Manipulação de Matrizes AULA 21

MATRIZES - PARTE Definição e Manipulação de Matrizes AULA 21 AULA 21 MATRIZES - PARTE 1 21.1 Definição e Manipulação de Matrizes Sabemos como definir variáveis de um novo tipo de dados, denominado vetor, que representam seqüências de valores de um mesmo tipo. Por

Leia mais

PMR Computação para Mecatrônica

PMR Computação para Mecatrônica PMR3201 - Computação para Mecatrônica Prof. Thiago de Castro Martins Prof. Newton Maruyama Prof. Marcos de S.G. Tsuzuki Monitor: Pietro Teruya Domingues Exercício Programa 2 - Versão 2017 Resolvendo o

Leia mais

Programação de Computadores

Programação de Computadores Programação de Computadores Instituto de Computação UFF Departamento de Ciência da Computação Otton Teixeira da Silveira Filho Conteúdo Mais um tipo numérico print() formatado: clássico pythônico Tuplas

Leia mais

Modelação Molecular no Desenho de Fármacos 2018/2019

Modelação Molecular no Desenho de Fármacos 2018/2019 Modelação Molecular no Desenho de Fármacos 2018/2019 Docente Paulo Martel Gabinete: FCT, Edifício C8, 3.12 Email: pmartel@ualg.pt Homepage: http://w3.ualg.pt/~pmartel Funcionamento da Cadeira Aulas teóricas

Leia mais

ESTATÍSTICA COMPUTACIONAL

ESTATÍSTICA COMPUTACIONAL ESTATÍSTICA COMPUTACIONAL Ralph dos Santos Silva Departamento de Métodos Estatísticos Instituto de Matemática Universidade Federal do Rio de Janeiro Sumário Introdução Solução de equações não lineares

Leia mais

Departamento de Engenharia Rural Centro de Ciências Agrárias. Programação I

Departamento de Engenharia Rural Centro de Ciências Agrárias. Programação I Departamento de Engenharia Rural Centro de Ciências Agrárias Programação I Algoritmos de busca Basicamente podem ser citadas duas estratégias para procurar (ou buscar) algo em uma coleção de dados: Busca

Leia mais

Métodos de alinhamento de sequências biológicas. Marcelo Falsarella Carazzolle

Métodos de alinhamento de sequências biológicas. Marcelo Falsarella Carazzolle Métodos de alinhamento de sequências biológicas Marcelo Falsarella Carazzolle Resumo - Introdução - Alinhamentos ótimos - Global - Local (Smith-Waterman) - Semi global - Matrizes de alinhamento (BLOSUM)

Leia mais

ESCLEROSE LATERAL AMIOTRÓFICA ANÁLISES IN SILICO DAS MUTAÇÕES A4V E A4F DA PROTEÍNA SOD1

ESCLEROSE LATERAL AMIOTRÓFICA ANÁLISES IN SILICO DAS MUTAÇÕES A4V E A4F DA PROTEÍNA SOD1 ESCLEROSE LATERAL AMIOTRÓFICA ANÁLISES IN SILICO DAS MUTAÇÕES A4V E A4F DA PROTEÍNA SOD1 Aloma Nogueira Rebello da Silva Bióloga (UNIRIO) Programa de Pós-Graduação em Biologia Molecular e Celular aloma.nogueira@gmail.com

Leia mais

Método de Eliminação de Fourier-Motzkin

Método de Eliminação de Fourier-Motzkin ERMAC 200: I ENCONTRO REGIONAL DE MATEMÁTICA APLICADA E COMPUTACIONAL - 3 de Novembro de 200, São João del-rei, MG; pg 258-26 258 Método de Eliminação de Fourier-Motzkin André Rodrigues Monticeli, Cristiano

Leia mais

azevedolab.net 2015 Dr. Walter F. de Azevedo Jr. Aula 09 Strings, Leitura e Escrita de Arquivos (continuação)

azevedolab.net 2015 Dr. Walter F. de Azevedo Jr. Aula 09 Strings, Leitura e Escrita de Arquivos (continuação) azevedolab.net 2015 Dr. Walter F. de Azevedo Jr. Aula 09 Strings, Leitura e Escrita de Arquivos (continuação) 1 Programa read_fasta_01.pde Exercício de programação: Elabore um programa que leia um arquivo

Leia mais

alinhamento global-alinhamento múltiplo de seqüências

alinhamento global-alinhamento múltiplo de seqüências alinhamento global-alinhamento múltiplo de seqüências Alinhamento múltiplos de seqüências Qual a importância de se realizar alinhamentos múltiplos em oposição a alinhamentos em pares? Alinhamento múltiplos

Leia mais

MAP Métodos Numéricos e Aplicações Escola Politécnica 1 Semestre de 2017 EPREC - Entrega em 27 de julho de 2017

MAP Métodos Numéricos e Aplicações Escola Politécnica 1 Semestre de 2017 EPREC - Entrega em 27 de julho de 2017 1 Preliminares MAP3121 - Métodos Numéricos e Aplicações Escola Politécnica 1 Semestre de 2017 EPREC - Entrega em 27 de julho de 2017 A decomposição de Cholesky aplicada a Finanças O exercício-programa

Leia mais

English version at the end of this document

English version at the end of this document English version at the end of this document Ano Letivo 2017-18 Unidade Curricular LABORATÓRIO DE PROGRAMAÇÃO APLICADA Cursos MATEMÁTICA APLICADA À ECONOMIA E À GESTÃO (1.º ciclo) Tronco comum Unidade Orgânica

Leia mais

Estruturas de Controle em Python

Estruturas de Controle em Python Estruturas de Controle em Python Introdução à Programação para Biologia Molecular Rosane Minghim Apoio na confecção: Danilo Medeiros Eler Rogério Eduardo Garcia Renato Rodrigues Carlos E. A. Zampieri Blocos

Leia mais

Processamento Digital de Imagens

Processamento Digital de Imagens Ciência da Computação Processamento Digital de Imagens Tópicos Detecção de Pontos Isolados Detecção de Linhas Prof. Sergio Ribeiro 2 Operações lógicas e aritméticas orientadas a vizinhança utilizam o conceito

Leia mais

Silvia Maria Pereira Grandi dos Santos

Silvia Maria Pereira Grandi dos Santos Método iterativo para solução de sistemas lineares Gradientes e Gradientes Conjugados Silvia Maria Pereira Grandi dos Santos USP - São Carlos/SP Outubro 2008 Roteiro Motivação; Processos de Relaxação;

Leia mais

Distâncias entre vértces em um grafo. Implementação sequencial

Distâncias entre vértces em um grafo. Implementação sequencial Distâncias entre vértces em um grafo Implementação sequencial André de Freitas Smaira 16 de outubro de 2013 1 1 Introdução Nesse projeto, temos por objetivo a determinação das distâncias mínimas entre

Leia mais

Física Computacional 18 matrizes: inversão, valores próprios e sol. da eq. De Schrödinger

Física Computacional 18 matrizes: inversão, valores próprios e sol. da eq. De Schrödinger Física Computacional 18 matrizes: inversão, valores próprios e sol. da eq. De Schrödinger 1. Trabalhar com matrizes, e aplicá-las a um problema físico a. Inversão da matriz, eliminação de Gauss b. Determinante

Leia mais

Considerações sobre a Condição Inicial na Construção do Diagrama de Bifurcação para o Mapa Logístico

Considerações sobre a Condição Inicial na Construção do Diagrama de Bifurcação para o Mapa Logístico Trabalho apresentado no DINCON, Natal - RN, 2015. Proceeding Series of the Brazilian Society of Computational and Applied Mathematics Considerações sobre a Condição Inicial na Construção do Diagrama de

Leia mais

Fundamentos de programação

Fundamentos de programação Fundamentos de programação Aula Introdutória Edson Moreno edson.moreno@pucrs.br http://www.inf.pucrs.br/~emoreno Apresentação Disciplina: Fundamentos de Programação Horário: 2 E0E1, 4E0E1, 6CD Professor:

Leia mais

Escola Politécnica Prova Substitutiva 8 de julho de 2014

Escola Politécnica Prova Substitutiva 8 de julho de 2014 MAC2166 Introdução à Computação Escola Politécnica Prova Substitutiva 8 de julho de 2014 Nome: Assinatura: N ō USP: Turma: Professor: Instruções: 1. Não destaque as folhas deste caderno. 2. A prova consta

Leia mais

CEFET/RJ. Aprendizado de Máquina - Trabalho 01

CEFET/RJ. Aprendizado de Máquina - Trabalho 01 CEFET/RJ Programa de Pós-graduação em Ciência da Computação Aprendizado de Máquina - Trabalho 01 Prof. Eduardo Bezerra (ebezerra@cefet-rj.br) Setembro/2017 Conteúdo 1 Regressão Linear com uma Variável

Leia mais

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

Linguagem de Programação I Prof. Tiago Eugenio de Melo. Linguagem de Programação I Prof. Tiago Eugenio de Melo tmelo@uea.edu.br www.tiagodemelo.info 1 Sumário Introdução Conceitos preliminares Introdução Variáveis Comandos Condicionais 2 Por que aprender a

Leia mais

Departamento de Engenharia Rural Centro de Ciências Agrárias. Programação I

Departamento de Engenharia Rural Centro de Ciências Agrárias. Programação I Departamento de Engenharia Rural Centro de Ciências Agrárias Programação I Variáveis compostas homogêneas Multidimensionais (o uso de arrays para a representação de matrizes e outras abstrações) Matrizes

Leia mais

Algoritmos Genéticos e Evolucionários

Algoritmos Genéticos e Evolucionários Algoritmos Genéticos e Evolucionários Djalma M. Falcão COPPE/UFRJ PEE e NACAD falcao@nacad.ufrj.br http://www.nacad.ufrj.br/~falcao/ http://www.nacad.ufrj.br/~falcao/ag/ag.htm Resumo do Curso Introdução

Leia mais

- identificar operadores ortogonais e unitários e conhecer as suas propriedades;

- identificar operadores ortogonais e unitários e conhecer as suas propriedades; DISCIPLINA: ELEMENTOS DE MATEMÁTICA AVANÇADA UNIDADE 3: ÁLGEBRA LINEAR. OPERADORES OBJETIVOS: Ao final desta unidade você deverá: - identificar operadores ortogonais e unitários e conhecer as suas propriedades;

Leia mais

INTEGRAÇÃO NUMÉRICA DA EQUAÇÃO DE SCHRÖDINGER DE PENDENTE DO TEMPO

INTEGRAÇÃO NUMÉRICA DA EQUAÇÃO DE SCHRÖDINGER DE PENDENTE DO TEMPO INTEGRAÇÃO NUMÉRICA DA EQUAÇÃO DE SCHRÖDINGER DE PENDENTE DO TEMPO RESUMO Christopher Rodrigues Vieira 1 ;Nilo Mauricio Sotomayo Choque 2 ; 1 Aluno do Curso de Licenciatura em Física; Campus de Araguaína;

Leia mais

Curso: Análise e Desenvolvimento de Sistemas. (Conceitos Práticos de Lógica de Programação)

Curso: Análise e Desenvolvimento de Sistemas. (Conceitos Práticos de Lógica de Programação) Curso: Análise e Desenvolvimento de Sistemas Disciplina Algoritmos e Programação (Conceitos Práticos de Lógica de Programação) Prof. Wagner Santos C. de Jesus wsantoscj@gmail.com Conceito de Algoritmo

Leia mais

CÁLCULO NUMÉRICO. Profa. Dra. Yara de Souza Tadano.

CÁLCULO NUMÉRICO. Profa. Dra. Yara de Souza Tadano. CÁLCULO NUMÉRICO Profa. Dra. Yara de Souza Tadano aratadano@utfpr.edu.br Aula 2 08/2014 Noções Básicas sobre Erros A resolução de problemas numericamente envolve várias fases que podem ser assim estruturadas:

Leia mais

MAC2166 Introdução à Computação

MAC2166 Introdução à Computação Departamento de Ciência da Computação IME USP MAC2166 Introdução à Computação Escola Politécnica Primeiro Semestre de 2015 Prova Substitutiva QUESTÃO 1 Esta questão consiste na implementação de duas funções

Leia mais

PROGRAMAÇÃO de COMPUTADORES: LINGUAGEM FORTRAN 90/95

PROGRAMAÇÃO de COMPUTADORES: LINGUAGEM FORTRAN 90/95 PROGRAMAÇÃO de COMPUTADORES: LINGUAGEM FORTRAN 90/95 Exercícios de revisão Lista 01: a) Monte um mapa conceitual indicando as relações entre os seguintes conceitos, no contexto do assunto visto em aula:

Leia mais

azevedolab.net 2015 Dr. Walter F. de Azevedo Jr. Programação Orientada a Objetos em Processing

azevedolab.net 2015 Dr. Walter F. de Azevedo Jr. Programação Orientada a Objetos em Processing azevedolab.net 2015 Dr. Walter F. de Azevedo Jr. Programação Orientada a Objetos em Processing 1 Programação Orientada a Objeto O uso de programação orientada a objeto (POO) não irá introduzir necessariamente

Leia mais

Ajuste de dados por mínimos quadrados

Ajuste de dados por mínimos quadrados Cálculo Numérico por mínimos quadrados Prof. Daniel G. Alfaro Vigo dgalfaro@dcc.ufrj.br Departamento de Ciência da Computação IM UFRJ Motivação: População do Brasil Ano População (milhões) 1960 70, 992343

Leia mais

Transcript name: 1. Introduction to DB2 Express-C

Transcript name: 1. Introduction to DB2 Express-C Transcript name: 1. Introduction to DB2 Express-C Transcript name: 1. Introduction to DB2 Express-C Welcome to the presentation Introduction to DB2 Express-C. In this presentation we answer 3 questions:

Leia mais

Implementações aritméticas

Implementações aritméticas PMO v.5, n.1, 2017 ISSN: 2319-023X https://doi.org/10.21711/2319023x2017/pmo51 Implementações aritméticas Evilson Resumo Neste trabalho apresentamos uma implementação para execução manual do algoritmo

Leia mais

Primeiro Trabalho de IA/SI: Buscas. Entrega: 03/03/2019 (2 semanas)

Primeiro Trabalho de IA/SI: Buscas. Entrega: 03/03/2019 (2 semanas) Primeiro Trabalho de IA/SI: Buscas Entrega: 03/03/2019 (2 semanas) 18 de Fevereiro de 2019 Este trabalho é para ser submetido via Moodle. Será desenvolvido principalmente durante as aulas práticas, mas

Leia mais

UNIVERSIDADE FEDERAL DO PAMPA CAMPUS BAGÉ ALGORITMOS E PROGRAMAÇÃO. Matrizes. Prof. Alex Camargo

UNIVERSIDADE FEDERAL DO PAMPA CAMPUS BAGÉ ALGORITMOS E PROGRAMAÇÃO. Matrizes. Prof. Alex Camargo UNIVERSIDADE FEDERAL DO PAMPA CAMPUS BAGÉ ALGORITMOS E PROGRAMAÇÃO Matrizes Prof. Alex Camargo alexcamargoweb@gmail.com Definição Matriz é uma variável composta homogênea multidimensional. Conjunto de

Leia mais

MÉTODOS NEWTON E QUASE-NEWTON PARA OTIMIZAÇÃO IRRESTRITA

MÉTODOS NEWTON E QUASE-NEWTON PARA OTIMIZAÇÃO IRRESTRITA MÉTODOS NEWTON E QUASE-NEWTON PARA OTIMIZAÇÃO IRRESTRITA Marlon Luiz Dal Pasquale Junior, UNESPAR/FECILCAM, jr.marlon@hotmail.com Solange Regina dos Santos (OR), UNESPAR/FECILCAM, solaregina@fecilcam.br

Leia mais

Algoritmos de Ordenação

Algoritmos de Ordenação Algoritmos de Ordenação! Problema: encontrar um número de telefone em uma lista telefônica! simplificado pelo fato dos nomes estarem em ordem alfabética! e se estivesse sem uma ordem?! Problema: busca

Leia mais