I. Correção de Algoritmos Não-Recursivos

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

Download "I. Correção de Algoritmos Não-Recursivos"

Transcrição

1 I. Correção de Algoritmos Não-Recursivos Nos exercícios a seguir, você deverá demonstrar a correção dos algoritmos por meio dos conceitos vistos nos slides da Aula 03. 1) Prove que o seguinte algoritmo para efetuar a exponenciação de números naturais está correto: unsigned power(unsigned a, unsigned b) x = 1; while (b > 0) x = x * a; b = b 1; return x; 2) Prove que o seguinte algoritmo para determinar o quadrado de um número natural está correto: unsigned quadrado(unsigned a) x = 0; i = 0; while (i < a) x = x + a; i = i + 1; return x; 3) Prove que o seguinte algoritmo para calcular o fatorial de um número natural está correto: unsigned fatorial(unsigned a) x = 1; i = 1; while (i <= a) x = x * i; i = i + 1; return x; 4) Prove que o seguinte algoritmo para calcular o produto de dois números naturais está correto: unsigned fatorial(unsigned a, unsigned b) x = 0; while (b > 0) if (b%2) x = x + a; x = 2 * x; b = b / 2; return x;

2 5) Considere o seguinte algoritmo para ordenar n números armazenados em um arranjo A, conhecido como ordenação por seleção : Localizar o menor elemento de A e permutar esse elemento com o elemento contido em A[0]. Em seguida, encontrar o segundo menor elemento de A e permutá-lo com o elemento A[1]. Proceder dessa maneira para os primeiros n 1 elementos de A. a) Escreva uma função em linguagem C para implementar este algoritmo. b) Demonstre a correção deste algoritmo, enunciando e demonstrando a validade de propriedades invariantes para os dois laços do algoritmo. c) Explique por que ele só precisa ser executado para os primeiros n 1 elementos, e não para todos os n elementos. 6) O bubblesort é um algoritmo de ordenação popular, que opera permutando repetidamente elementos adjacentes que estão fora de ordem. Observe a implementação do algoritmo bubblesort em linguagem C listada abaixo: void bubblesort(float A[], int n) for (i=0; i<n; i++) for (j=n-1; j>=i+1; j--) if (A[j] < A[j-1]) aux = A[j]; A[j] = A[j-1]; A[j-1] = aux; a) Enuncie uma propriedade invariante mantida pelo laço for interno e demonstre sua validade. b) Usando a condição de término garantida pela propriedade invariante que você enunciou e demonstrou no item anterior para o laço for interno, enuncie e demonstre uma propriedade invariante do laço for externo que garanta que, ao final do algoritmo, os elementos do vetor A estarão dispostos em ordem crescente. Dica: Seja A o arranjo resultante produzido pelo algoritmo, é necessário demonstrar que: A é uma permutação válida de A A [0] A [1]... A [n 1]

3 II. Limites Assintóticos de Funções Nos exercícios a seguir, você trabalhará com os conceitos de limites assintóticos abordados nos slides da Aula 05 do curso. 7) Determine um limite assintoticamente restrito para a função n 3 / n 2 100n + 3 em termos da notação Θ e demonstre este limite. 8) Mostre que log= Θlog 9) Sejam f(n) e g(n) funções assintoticamente não negativas. Usando a definição básica da notação Θ, prove que max(f(n), g(n)) = Θ(f(n) + g(n)). 10) Mostre que, para quaisquer constantes reais a e b, onde b > 0, + = 11) É verdade que 2 = O(2 )? Justifique. 12) É verdade que 2 = O(2 )? Justifique. 13) Podemos estender nossa notação ao caso de dois parâmetros n e m que podem tender a infinito independentemente a taxas distintas. Para uma dada função g(n,m), denotamos por O(g(n,m)) o conjunto de funções O(g(n,m)) = f(n,m) : existem constantes positivas c, e tais que 0 f(n, m) c.g(n,m) para todo n e m. Forneça definições correspondentes para Ωg(n,m)) e ϴ(g(n,m)). 14) A função! é polinomialmente limitada? Justifique. 15) A função! é polinomialmente limitada? Justifique. 16) Ordene as funções a seguir por ordem de crescimento; ou seja, encontre um arranjo gl, g2,..., g30 das funções que satisfazem a gl = Ω (g2), g2 = Ω (g3),..., g29 = Ω (g30) Particione sua lista em classes de equivalência tais que f(n) e g(n) estejam na mesma classe se e somente se f(n) = Θ(g(n)). Obs: a função lg significa log2.

4 17) Para cada afirmação abaixo, determine se ela é sempre verdadeira, nunca verdadeira, ou às vezes verdadeira e às vezes falsa para as funções assintoticamente não-negativas f e g. Se for sempre verdadeira ou nunca verdadeira, demonstre o motivo. Se for às vezes verdadeira e às vezes falsa, dê um exemplo em que é verdadeira e outro em que é falsa. a) = b) + =ϴmax, c) + =ϴ d) =Ω = e) 18) Verifique se a afirmação abaixo é verdadeira ou falsa. Justifique sua resposta. Sejam f e g funções assintoticamente não negativas. Então pelo menos uma dentre as relações f(n) = O(g(n)) e g(n) = O(f(n)) deve ser sempre verdadeira.

5 III. Análise Assintótica de Algoritmos Não-Recursivos Nos exercícios a seguir, você exercitará as técnicas de análise assintótica de algoritmos abordadas nos slides da Aula 05 do curso. 19) Considere o seguinte algoritmo para ordenar n números armazenados em um arranjo A, conhecido como ordenação por seleção : Localizar o menor elemento de A e permutar esse elemento com o elemento contido em A[0]. Em seguida, encontrar o segundo menor elemento de A e permutá-lo com o elemento A[1]. Proceder dessa maneira para os primeiros n 1 elementos de A. a) Escreva uma função em linguagem C para implementar este algoritmo (ver item a do exercício 5). b) Forneça limites assintóticos justos inferior (melhor caso) e superior (pior caso) para o tempo de execução deste algoritmo, usando as notações Ω e O. 20) Observe o algoritmo abaixo para ordenar n números armazenados em um arranjo A, onde um laço while é utilizado para fazer uma pesquisa sequencial varrendo o sub-arranjo A[0 j 1] de trás para frente à procura de um elemento maior que a chave A[j]: void insertionsort(float A[], int n) for (j=1; j<n; j++) chave = A[j]; i = j-1; while (i>0 && A[i]>chave) A[i+1] = A[i]; i = i-1; A[i+1] = chave; a) Forneça limites assintóticos justos inferior (melhor caso) e superior (pior caso) para o tempo de execução deste algoritmo, usando as notações Ω e O. b) Repare que, em cada iteração j do laço for externo, os elementos do sub-arranjo A[0 j 1] já estão ordenados. Verifique se é possível reduzir a complexidade de pior caso deste algoritmo para O(n.log(n)) se a pesquisa sequencial implementada no laço while for substituída por uma pesquisa binária. Justifique sua resposta.

6 21) O bubblesort é um algoritmo de ordenação popular, que opera permutando repetidamente elementos adjacentes que estão fora de ordem. Observe a implementação do algoritmo bubblesort em linguagem C listada abaixo: void bubblesort(float A[], int n) for (i=0; i<n; i++) for (j=n-1; j>=i+1; j--) if (A[j] < A[j-1]) aux = A[j]; A[j] = A[j-1]; A[j-1] = aux; a) Forneça limites assintóticos justos inferior (melhor caso) e superior (pior caso) para o tempo de execução deste algoritmo, usando as notações Ω e O. b) De que forma o laço for externo poderia ser modificado (sem nenhuma mudança no laço for interno) de modo a melhorar substancialmente o comportamento assintótico do algoritmo no melhor caso (arranjo de entrada previamente ordenado)? c) Qual seria o novo limite assintótico inferior justo após essa modificação?

7 IV. Implementação de Algoritmos Recursivos em C Os exercícios a seguir são um treinamento para você exercitar seu raciocínio na elaboração de algoritmos recursivos e também na implementação desses algoritmos em linguagem C. Todas as funções solicitadas nesses exercícios devem ser implementadas em linguagem C, sendo proibido o uso de estruturas de controle de laço (while e for). Chamadas recursivas devem ser sempre utilizadas em lugar de laços. Sugere-se o uso das técnicas descritas nos slides da Aula 06 do curso. Em alguns exercícios, pode ser conveniente reutilizar funções recursivas construídas em exercícios anteriores. 22) Escreva uma função recursiva que retorne a soma de todos os números naturais entre 1 e um número natural n. 23) Escreva uma função recursiva que retorne a soma de todos os números naturais que sejam múltiplos de 3 entre 1 e um número natural n. 24) Generalize a função recursiva do exercício anterior para trabalhar com múltiplos de 3 entre os números naturais m e n. 25) Generalize ainda mais a função recursiva do exercício anterior para trabalhar com múltiplos de um número natural k entre m e n. 26) Escreva uma função recursiva que retorne o valor do dígito mais significativo de um número natural n. 27) Escreva uma função recursiva que retorne a quantidade de dígitos de um número natural n. 28) Escreva uma função recursiva que retorne a soma de todos os dígitos de um natural n. 29) Escreva uma função recursiva que determine se um número natural é palíndrome (exemplos de números palíndromes : e ). Sugestão: tente uma estratégia de recursividade baseada no resultado obtido para o número correspondente ao argumento de entrada sem os dígitos mais e menos significativos. 30) Escreva uma função recursiva que determine se um número natural m pertence a um número natural n (exemplos: 12 pertence a , mas 327 não pertence a ). 31) Idem ao exercício anterior, mas sem ser necessário que os dígitos de m estejam contíguos em n (exemplos: 12 e 469 pertencem a , mas 327 não pertence a ). 32) Escreva uma função recursiva que retorne o valor do maior dígito de um natural n. 33) Escreva uma função recursiva que determine se todos os dígitos de um número natural n estão em ordem crescente.

8 34) Escreva uma função recursiva que determine se as somas de todos os pares de dígitos diametralmente opostos de um número natural n são as mesmas. Por exemplo, as somas em são as mesmas pois 1+4=3+2=5. Sugestão: a mesma fornecida para o exercício dos palíndromes. 35) Escreva uma função recursiva que retorne o valor correspondente a um número natural n com os seus dígitos reorganizados em ordem reversa. 36) Escreva uma função recursiva que determine se todos os dígitos de um número natural n são pares. 37) Escreva uma função recursiva para rodar os dígitos de um número natural n para a direita um total de k vezes. Por exemplo, rodar o número para a direita 3 vezes resulta no número ) Escreva uma função recursiva para deslocar os dígitos de um número natural n para a direita um total de k vezes descartando o dígito menos significativo a cada deslocamento. Por exemplo, deslocar o número para a direita 3 vezes resulta no número ) Escreva uma função recursiva para determinar se todos os dígitos de um número natural n são potências de 2. 40) Escreva uma função para determinar o k-ésimo maior dígito de um número natural n. 41) Escreva uma função que subtraia uma unidade de cada dígito de um número natural n. Por exemplo, para o número 4312 a sua função deve retornar como resultado o número Suponha que o seu número não contém dígitos 0. 42) Escreva uma função recursiva para multiplicar todos os dígitos de um número natural n. Por exemplo, para o número 3459 a sua função deve retornar , isto é, ) Escreva uma função recursiva que determine quantas vezes um dígito k ocorre em um número natural n. Por exemplo, o dígito 2 ocorre 3 vezes em ) Escreva uma função para determinar a maior soma de dígitos diametralmente opostos de um número natural n. 45) 26. Escreva uma função para determinar o menor número de vezes que eu tenho que rodar para a direita os dígitos de um número natural n de tal forma a obter o próprio número novamente. Por exemplo, rodando 2 vezes os dígitos do número este mesmo número é obtido como resultado. 46) Escreva uma função recursiva que determine se as somas dos dígitos diametralmente opostos de um número inteiro estão em ordem crescente de fora para dentro. Por exemplo: 2534 e têm essa propriedade, pois 2+4 = 6 < 5+3 = 8 < 9. 47) Escreva uma função para determinar se todas as somas dos dígitos diametralmente opostos de um número inteiro são números pares (neste caso 2534 tem essa propriedade, mas não).

9 V. Correção de Algoritmos Recursivos Nos exercícios a seguir, você deverá demonstrar a correção dos algoritmos recursivos pelo método indutivo abordado nos slides da Aula ) Prove por indução as afirmativas abaixo: a) Para todo 1, 1 2 = 1 2 3/4 b) Para todo 0, 2+1 = c) Para todo 1, = +1/2 d) Para todo 0, é divisível por 5. e) Para todo 0, = 1, sendo o n-ésimo número de Fibonacci. 49) Demonstre pelo método indutivo que o seguinte algoritmo recursivo retorna o valor 5 3, para todo 0. float g(float n) if (n<=1) return 2*n; return 8*g(n-1) 15*g(n-2); 50) Descreva uma implementação recursiva (em pseudo-código ou em linguagem C) para os algoritmos abaixo e demonstre sua correção pelo método indutivo: a) Busca Binária b) Ordenação por Inserção c) Ordenação por Intercalação

10 VI. Resolução de Recorrências Nos exercícios a seguir, você deverá solucionar as recorrências pelos métodos abordados nos slides da Aula ) Sejam a, b e c constantes não negativas. Prove que a solução para 1= c Tn= a.t/b + c.n =1 >1 para n uma potência de b é: On, a <, T(n) = On log n, a = b, On, a > 52) Resolva as equações de recorrência : a) b) Tn= 2T + n, para n > 1 T1=27 Tn = 7Tn/2 + n, para n > 1 T1 = 0 Tn= T n+ log n, para n 1 c) T1 = 1 Dica: use mudança de variáveis. 53) Usando substituição, resolva as recorrências : a) Mostre que a solução para T(n) = 2T( n/2 ) + 17 é O(n lg n). b) T(n) = 2T( n) ) Resolva assintoticamente as recorrências abaixo. Suponha T(n) constante para n pequeno. a) T(n) = 3T(n/2) + n lg n b) T(n) = 2T(n/2) + n/ lg n c) T(n) = 4T(n/2) + n lg n

11 55) Use indução matemática para mostrar que, quando n é uma potência exata de 2, a solução da recorrência 2 =2, = 2 + >2, >1 é = log. 56) Demonstre, com o auxílio de uma árvore de recursão, que a solução para a recorrência T(n) = T(n/3) + T(2n/3) + c.n, onde c é uma constante, é Ω(n.log(n)). 57) Use uma árvore de recursão para fornecer um limite assintoticamente restrito para a recorrência T(n) = T(.n) + T((1 ).n) + c.n, onde α é uma constante no intervalo 0 < < 1 e c > 0 também é uma constante. 58) Forneça limites assintóticos superiores e inferiores para T(n) em cada uma das recorrências a seguir. Suponha que T(n) seja constante para n suficientemente pequeno. Torne seus limites tão restritos quanto possível e justifique suas respostas. a) =2 + b) = + c) =16 + d) =7 + e) =7 + f) =2 + g) = 1+ h) = +1 i) =3 +log j) =5 + k) =4 + l) =3 +5+

12 m) =2 + n) = o T=T 1+ p T=T 1+log q = 2+2log r = + s) = 2 + log t) = 3 + log u) = + 2 v) = + ϴloglogn w) = x) = 7 + y) = z) = 2+ log aa) = + + ϴ bb) = ) Considere a recorrência = + +. Use o método da substituição para encontrar o limite superior mais justo possível para a recorrência, utilizando a notação O.

13 60) Demonstre um limite superior o mais justo possível (notação O) na solução de cada recorrência a seguir: a) =2 + b) = + +5 c) = 89+ϴ1 >, <, 61) Use o método da substituição para provar um limite inferior justo (notação Ω) na solução da seguinte recorrência: =4 + 62) Verifique se a afirmação abaixo é verdadeira ou falsa e justifique sua resposta: A solução para a recorrência =3 +logé =ϴlog.

14 VII. Análise Assintótica de Algoritmos Recursivos Nos exercícios a seguir, você determinará limites assintóticos para algoritmos recursivos, determinando as recorrências que descrevem o tempo de execução destes algoritmos e resolvendo estas recorrências, pelos métodos abordados nos slides da Aula ) A ordenação por inserção pode ser expressa sob a forma de um procedimento recursivo como a seguir. Para ordenar um arranjo A[1... n], ordenamos recursivamente o sub-arranjo A[1... n 1] e em seguida inserimos o elemento A[n] no sub-arranjo ordenado A[0... n 1]. Escreva uma recorrência para o tempo de execução dessa versão recursiva da ordenação por inserção. 64) Embora a ordenação por intercalação funcione no tempo de pior caso ϴ(n.log(n)) e a ordenação por inserção funcione no tempo de pior caso ϴ ( ), os fatores constantes na ordenação por inserção a tornam mais rápida para n pequeno. Assim, faz sentido usar a ordenação por inserção dentro da ordenação por intercalação quando os subproblemas se tornam suficientemente pequenos. Considere uma modificação na ordenação por intercalação, na qual n/k sub-listas de comprimento k são ordenadas usando-se a ordenação por inserção e, em seguida, intercaladas com o uso do mecanismo padrão de intercalação, onde k é um valor a ser determinado. a) Mostre que as n/k sub-listas, cada uma de comprimento k, podem ser ordenadas através da ordenação por inserção no tempo de pior caso ϴ(n.k). b) Mostre que as sub-listas podem ser intercaladas no tempo de pior caso ϴ(n.Iog(n/k)). c) Dado que o algoritmo modificado é executado no tempo de pior caso ϴ(n.k + n.iog(n/k)), determine o maior valor assintótico (notação ϴ) de k como uma função de n para a qual o algoritmo modificado tem o mesmo tempo de execução assintótico que a ordenação por intercalação padrão. d) Como k deve ser escolhido na prática? 65) Para cada algoritmo abaixo, forneça a recorrência que descreve seu tempo de execução no pior caso e dê o seu tempo de execução no pior caso usando a notação ϴ. a) Busca Binária b) Ordenação por Inserção c) Ordenação por Intercalação

15 VIII. Construção de Algoritmos Eficientes Nos exercícios a seguir, você construirá algoritmos ótimos e/ou sujeitos a especificações de eficiência assintótica, utilizando os conhecimentos abordados nos slides da Aula 04, 05 e ) Considere o problema de construir um arranjo ordenado C[1...m+n] composto de m+n números distintos obtidos de dois arranjos ordenados A[1...m] e B[1...n]. a) Determine uma cota inferior para este problema, expressa em notação Ω. b) Construa um algoritmo ótimo para resolver este problema, ou seja, um algoritmo que tenha a cota inferior do problema como limite assintótico superior de seu tempo de execução de pior caso. 67) Considere um conjunto S com 2 números distintos. Diz-se que um par de números distintos x,y são próximos em S se max min,, ou seja, se a distância entre x e y é, no máximo, a distância média entre números consecutivos ordenados. a) Explique brevemente porque todo grupo S com 2 números distintos contém um par de elementos próximos em S. b) Suponha que particionemos S em torno de um elemento pivô, organizando o resultado em dois subgrupos = e =. Prove que, para algum 1,2, existe um par x, y de números que são próximos em S (e não somente em Sk). c) Descreva um algoritmo de tempo O(n) para encontrar um par de números próximos em S (Dica use a estratégia dividir para conquistar ). d) Analise seu algoritmo, demonstrando o limite superior assintótico O(n). 68) Seja A[l...n] um arranjo de n números distintos. Se i < j e A[i] > A[j], então o par ( i, j ) é chamado uma inversão de A. a) Liste as cinco inversões do arranjo 2, 3, 8, 6, 1. b) Qual arranjo com elementos do conjunto 1, 2,..., n tem o número máximo de inversões? Quantas inversões ele tem? c) Qual é o relacionamento entre o tempo de execução da ordenação por inserção e o número de inversões no arranjo de entrada? Justifique sua resposta. d) Construa um algoritmo que determine o número de inversões em qualquer permutação sobre n elementos no tempo do pior caso de ϴ(n.Iog(n)). Sugestão: modifique a ordenação por intercalação.

16 69) Um vetor A[1..n] é unimodal se consiste de uma sequência crescente seguida de uma sequência decrescente, ou mais precisamente, se existe um índice m 1,2,, tal que <+1 1 < >+1 < Em particular, A[m] é o maior elemento, e é, também, o único máximo local rodeado por elementos menores (A[m-1] e A[m+1]). a) Construa um algoritmo para determinar o maior elemento de um vetor unimodal A[1..n] em tempo O(log n). b) Prove que o seu algoritmo está correto. c) Prove o limite superior assintótico de seu tempo de execução. Um polígono é convexo se todos os seus ângulos internos são menores que 180 o, como ilustrado na figura abaixo: Representa-se um polígono convexo como um vetor V[1..n] onde cada elemento do vetor representa um vértice do polígono na forma de um par ordenado (x,y). Sabe-se que V[1] é o vértice com a menor coordenada x e os vértices V[1..n] são ordenados no sentido horário, como mostra a figura. Deve-se assumir que as coordenadas x dos vértices são todas distintas entre si, assim como as coordenadas y o são. a) Construa um algoritmo para encontrar o vértice com a maior coordenada x em tempo O(log n). b) Construa um algoritmo para encontrar o vértice com a maior coordenada y em tempo O(log n). 70) Descreva um algoritmo de tempo ϴ(n.log(n)) que, dado um número x e um conjunto S composto de n números distintos, determine se existem ou não dois elementos em S cuja soma seja exatamente x. 71) Verifique se a afirmação abaixo é verdadeira ou falsa e justifique sua resposta: Um arranjo composto de n números cujos valores podem ser somente 1, 0 ou 1 pode ser ordenado em tempo de pior caso de O(n).

17 IX. Análise Assintótica Experimental No exercício a seguir, você estimará limites assintóticos e fará previsões a partir de medições experimentais construirá algoritmos ótimos e/ou sujeitos a especificações de eficiência assintótica, utilizando os conhecimentos abordados nos slides da Aula 04 e ) Três algoritmos (A, B e C) foram desenvolvidos para resolver um mesmo problema. A tabela abaixo mostra os tempos de processamento obtidos nos testes dos 3 algoritmos na resolução de problemas com tamanhos n=10, n=20, n=30 e n=40. Tamanho do Problema Algoritmo A ( hh:mm:ss ) Algoritmo B ( hh:mm:ss ) Algoritmo C ( hh:mm:ss ) n = 10 00:00:04 00:00:20 00:08:18 n = 20 00:00:32 00:01:20 00:16:36 n = 30 00:01:48 00:02:59 00:24:55 n = 40 00:04:15 00:05:19 00:33:13 a) Estime as taxas de crescimento dos três algoritmos, expressando-as na notação O. b) Estime o tempo de processamento que cada algoritmo consumiria na resolução de um problema de tamanho n=100 e n=1000. c) Qual dentre os três algoritmos é o mais recomendável para ser utilizado na resolução de problema de grande porte? E para problemas de tamanho pequeno e moderado?

Trabalho Prático 1. Valor: 1,0 pontos (10% da nota total) Data de Entrega: 02/05/2010

Trabalho Prático 1. Valor: 1,0 pontos (10% da nota total) Data de Entrega: 02/05/2010 Universidade Federal de Ouro Preto Instituto de Ciências Exatas e Biológicas Programa de Pós-Graduação em Ciência da Computação Projeto e Análise de Algoritmos - 1 o semestre de 2010 Professor: David Menotti

Leia mais

Lista 1 - PMR2300. Fabio G. Cozman 3 de abril de 2013

Lista 1 - PMR2300. Fabio G. Cozman 3 de abril de 2013 Lista 1 - PMR2300 Fabio G. Cozman 3 de abril de 2013 1. Qual String é impressa pelo programa: p u b l i c c l a s s What { p u b l i c s t a t i c void f ( i n t x ) { x = 2 ; p u b l i c s t a t i c void

Leia mais

1 a Lista de Exercícios

1 a Lista de Exercícios Universidade Federal de Ouro Preto Instituto de Ciências Exatas e Biológicas Programa de Pós-Graduação em Ciência da Computação Projeto e Análise de Algoritmos - 1 o semestre de 2010 Professor: David Menotti

Leia mais

Algoritmos e Estrutura de Dados. Algoritmos Prof. Tiago A. E. Ferreira

Algoritmos e Estrutura de Dados. Algoritmos Prof. Tiago A. E. Ferreira Algoritmos e Estrutura de Dados Aula 3 Conceitos Básicos de Algoritmos Prof. Tiago A. E. Ferreira Definição de Algoritmo Informalmente... Um Algoritmo é qualquer procedimento computacional bem definido

Leia mais

Busca Binária. Aula 05. Busca em um vetor ordenado. Análise do Busca Binária. Equações com Recorrência

Busca Binária. Aula 05. Busca em um vetor ordenado. Análise do Busca Binária. Equações com Recorrência Busca Binária Aula 05 Equações com Recorrência Prof. Marco Aurélio Stefanes marco em dct.ufms.br www.dct.ufms.br/ marco Idéia: Divisão e Conquista Busca_Binária(A[l...r],k) 1:if r < lthen 2: index = 1

Leia mais

Lista 2 - PMR2300/3200

Lista 2 - PMR2300/3200 Lista 2 - PMR2300/3200 Fabio G. Cozman, Thiago Martins 8 de março de 2015 1. Qual String é impressa pelo programa: p u b l i c c l a s s What { p u b l i c s t a t i c void f ( i n t x ) { x = 2 ; p u

Leia mais

EEL470 Algoritmos e Estruturas de Dados Prof. Heraldo L. S. Almeida Prova 1 (22/05/2009)

EEL470 Algoritmos e Estruturas de Dados Prof. Heraldo L. S. Almeida Prova 1 (22/05/2009) 1) Demonstre que, se f(n) Θ(g(n)) e g(n) O(h(n)), então h(n) Ω(f(n)). Valor: 2,0 pontos Se f(n) Θ(g(n)), então existem c 1, c 2 e n 1 tais que c 1 g(n) f(n) c 2 g(n), n n 1 Se g(n) O(h(n)), então existem

Leia mais

LISTA DE EXERCÍCIOS 1

LISTA DE EXERCÍCIOS 1 UFMG/ICEx/DCC Projeto e Análise de Algoritmos LISTA DE EXERCÍCIOS 1 Pós-Graduação em Ciência da Computação 1 o Semestre de 2011 Observações: 1. Comece a fazer esta lista imediatamente. Você nunca terá

Leia mais

LISTA DE EXERCÍCIOS 1

LISTA DE EXERCÍCIOS 1 UFMG/ICEx/DCC Algoritmos e Estruturas de Dados II LISTA DE EXERCÍCIOS 1 Graduação (Ciências Exatas & Engenharias) 1 o Semestre de 2007 Exercícios a serem entregues: 2, 4, 9, 12, 13, 17, 18, 19, 21, 22.

Leia mais

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

Estruturas de Dados, Análise de Algoritmos e Complexidade Estrutural. Carlos Alberto Alonso Sanches CT-234 Estruturas de Dados, Análise de Algoritmos e Complexidade Estrutural Carlos Alberto Alonso Sanches CT-234 2) Algoritmos recursivos Indução matemática, recursão, recorrências Indução matemática Uma

Leia mais

Lista 1. 8 de abril de Algorithms: Capítulo 0, exercícios 1 e 2. Tardos: Todos exercícios do cap 2 do livro texto, exceto 7 e 8 letra b.

Lista 1. 8 de abril de Algorithms: Capítulo 0, exercícios 1 e 2. Tardos: Todos exercícios do cap 2 do livro texto, exceto 7 e 8 letra b. Lista 1 8 de abril de 2013 1 Exercícios Básicos 1.1 Na bibliografia Algorithms: Capítulo 0, exercícios 1 e 2. Tardos: Todos exercícios do cap 2 do livro texto, exceto 7 e 8 letra b. 1.2 Outros 1. Projete

Leia mais

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

CES-11. Noções de complexidade de algoritmos. Complexidade de algoritmos. Avaliação do tempo de execução. Razão de crescimento desse tempo. CES-11 Noções de complexidade de algoritmos Complexidade de algoritmos Avaliação do tempo de execução Razão de crescimento desse tempo Notação O Exercícios COMPLEXIDADE DE ALGORITMOS Importância de análise

Leia mais

Complexidade de Algoritmos

Complexidade de Algoritmos Complexidade de Algoritmos! Uma característica importante de qualquer algoritmo é seu tempo de execução! é possível determiná-lo através de métodos empíricos, considerando-se entradas diversas! é também

Leia mais

1. O que é a eficiência assintótica de um algoritmo. Explique com suas palavras.

1. O que é a eficiência assintótica de um algoritmo. Explique com suas palavras. Disciplina: Estrutura de Dados II Turma: 4EC/5CC Data: 13/11/15 Nota: Professor: Renato E. N. de Moraes Semestre: 2015-2 Valor: 0,0 pts Aluno: Lista de exercícios 04 1. O que é a eficiência assintótica

Leia mais

Análise de algoritmos

Análise de algoritmos Análise de algoritmos Introdução à Ciência de Computação II Baseados nos Slides do Prof. Dr. Thiago A. S. Pardo Análise de algoritmos Existem basicamente 2 formas de estimar o tempo de execução de programas

Leia mais

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

Medida do Tempo de Execução de um Programa. David Menotti Algoritmos e Estruturas de Dados II DInf UFPR Medida do Tempo de Execução de um Programa David Menotti Algoritmos e Estruturas de Dados II DInf UFPR Classes de Comportamento Assintótico Se f é uma função de complexidade para um algoritmo F, então

Leia mais

Análise e Complexidade de Algoritmos

Análise e Complexidade de Algoritmos Análise e Complexidade de Algoritmos Professor Ariel da Silva Dias Algoritmos Divisão e Conquista Construção incremental Resolver o problema para um sub-conjunto dos elementos de entrada; Então, adicionar

Leia mais

Técnicas de análise de algoritmos

Técnicas de análise de algoritmos CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS Técnicas de análise de algoritmos Algoritmos e Estruturas de Dados I Natália Batista https://sites.google.com/site/nataliacefetmg/ nataliabatista@decom.cefetmg.br

Leia mais

1 a Lista Professor: Claudio Fabiano Motta Toledo Estagiário PAE: Jesimar da Silva Arantes

1 a Lista Professor: Claudio Fabiano Motta Toledo Estagiário PAE: Jesimar da Silva Arantes SSC0503 - Introdução à Ciência de Computação II 1 a Lista Professor: Claudio Fabiano Motta Toledo (claudio@icmc.usp.br) Estagiário PAE: Jesimar da Silva Arantes (jesimar.arantes@usp.br) 1. O que significa

Leia mais

Complexidade de Algoritmos

Complexidade de Algoritmos Complexidade de Algoritmos O que é um algoritmo? Sequência bem definida e finita de cálculos que, para um dado valor de entrada, retorna uma saída desejada/esperada. Na computação: Uma descrição de como

Leia mais

Solução de Recorrências

Solução de Recorrências CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS Solução de Recorrências Algoritmos e Estruturas de Dados I Natália Batista https://sites.google.com/site/nataliacefetmg/ nataliabatista@decom.cefetmg.br

Leia mais

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

É interessante comparar algoritmos para valores grandes de n. Para valores pequenos de n, mesmo um algoritmo ineficiente não custa muito para ser É interessante comparar algoritmos para valores grandes de n. Para valores pequenos de n, mesmo um algoritmo ineficiente não custa muito para ser executado 1 Fazendo estimativas e simplificações... O número

Leia mais

Classes, Herança e Interfaces

Classes, Herança e Interfaces Escola de Artes, Ciências e Humanidades EACH-USP ACH2002 Introdução à Ciência da Computação II Professor: Delano Medeiros Beder revisada pelo professor: Luciano Digiampietri EACH Segundo Semestre de 2011

Leia mais

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

Prova 1 PMR2300 / PMR3201 1o. semestre 2015 Prof. Thiago Martins Prova 1 PMR2300 / PMR3201 1o. semestre 2015 Prof. Thiago Martins Instruções: Escreva o nome e o número USP na folha de papel almaço. Indique na linha seguinte quatro das cinco questões abaixo que devem

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

Estruturas de Dados 2

Estruturas de Dados 2 Estruturas de Dados 2 Técnicas de Projeto de Algoritmos Dividir e Conquistar IF64C Estruturas de Dados 2 Engenharia da Computação Prof. João Alberto Fabro - Slide 1/83 Projeto de Algoritmos por Divisão

Leia mais

5. Invólucros Convexos no Plano (cont )

5. Invólucros Convexos no Plano (cont ) 5. Invólucros Convexos no Plano (cont ) Antonio Leslie Bajuelos Departamento de Matemática Universidade de Aveiro Mestrado em Matemática e Aplicações Complexidade Algorítmica Notação O Sejam T(n) e f(n)

Leia mais

Centro Federal de Educação Tecnológica de Minas Gerais Programa de Pós-Graduação em Modelagem Matemática e Computacional

Centro Federal de Educação Tecnológica de Minas Gerais Programa de Pós-Graduação em Modelagem Matemática e Computacional Centro Federal de Educação Tecnológica de Minas Gerais Programa de Pós-Graduação em Modelagem Matemática e Computacional Disciplina: Algoritmos e Estruturas de Dados Professor: Flávio Cardeal Lista de

Leia mais

COMPLEXIDADE DE ALGORITMOS

COMPLEXIDADE DE ALGORITMOS COMPLEXIDADE DE ALGORITMOS Algoritmos Seqüência de instruções necessárias para a resolução de um problema bem formulado Permite implementação computacional COMPLEXIDADE DE ALGORITMOS Um algoritmo resolve

Leia mais

Análise de Algoritmos

Análise de Algoritmos Análise de Algoritmos Estes slides são adaptações de slides do Prof. Paulo Feofiloff e do Prof. José Coelho de Pina. Algoritmos p. 1 Introdução CLRS 2.2 e 3.1 AU 3.3, 3.4 e 3.6 Essas transparências foram

Leia mais

Divisão e Conquista. Norton T. Roman. Apostila baseada nos trabalhos de Cid de Souza, Cândida da Silva e Delano M. Beder

Divisão e Conquista. Norton T. Roman. Apostila baseada nos trabalhos de Cid de Souza, Cândida da Silva e Delano M. Beder Divisão e Conquista Norton T. Roman Apostila baseada nos trabalhos de Cid de Souza, Cândida da Silva e Delano M. Beder Divisão e Conquista Construção incremental Ex: Consiste em, inicialmente, resolver

Leia mais

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

Projeto e Análise de Algoritmos Aula 4: Dividir para Conquistar ou Divisão e Conquista ( ) Projeto e Análise de Algoritmos Aula 4: Dividir para Conquistar ou Divisão e Conquista (2.1-2.2) DECOM/UFOP 2013/1 5º. Período Anderson Almeida Ferreira Adaptado do material desenvolvido por Andréa Iabrudi

Leia mais

Análise e Complexidade de Algoritmos

Análise e Complexidade de Algoritmos Análise e Complexidade de Algoritmos Principais paradigmas do projeto de algoritmos - Recursividade - Tentativa e erro - Divisão e Conquista - Programação dinâmica - Algoritmos Gulosos e de Aproximação

Leia mais

Aula 1. Teoria da Computação III

Aula 1. Teoria da Computação III Aula 1 Teoria da Computação III Complexidade de Algoritmos Um problema pode ser resolvido através de diversos algoritmos; O fato de um algoritmo resolver um dado problema não significa que seja aceitável

Leia mais

Análise de algoritmos

Análise de algoritmos Análise de algoritmos Recorrências Conteúdo Introdução O método mestre Referências Introdução O tempo de execução de um algoritmo recursivo pode frequentemente ser descrito por uma equação de recorrência.

Leia mais

Lista de Exercícios 6: Soluções Funções

Lista de Exercícios 6: Soluções Funções UFMG/ICEx/DCC DCC Matemática Discreta Lista de Exercícios 6: Soluções Funções Ciências Exatas & Engenharias o Semestre de 06 Conceitos. Determine e justifique se a seguinte afirmação é verdadeira ou não

Leia mais

Projeto e Análise de Algoritmos

Projeto e Análise de Algoritmos Projeto e Algoritmos Pontifícia Universidade Católica de Minas Gerais harison@pucpcaldas.br 26 de Maio de 2017 Sumário A complexidade no desempenho de Quando utilizamos uma máquina boa, ela tende a ter

Leia mais

UNIVERSIDADE FEDERAL DO ESPÍRITO SANTO CENTRO UNIVERSITÁRIO NORTE DO ESPÍRITO SANTO

UNIVERSIDADE FEDERAL DO ESPÍRITO SANTO CENTRO UNIVERSITÁRIO NORTE DO ESPÍRITO SANTO Disciplina: Estrutura de Dados II Turma: 4EC/5CC Data: 13/11/15 Nota: Professor: Renato E. N. de Moraes Semestre: 2015-2 Valor: 0,0 pts Aluno: Lista de exercícios 04 1. O que é a eficiência assintótica

Leia mais

Algoritmos de ordenação Quicksort

Algoritmos de ordenação Quicksort Algoritmos de ordenação Quicksort Sumário Introdução Descrição do quicksort Desempenho do quicksort Pior caso Melhor caso Particionamento balanceado Versão aleatória do quicksort Análise do quicksort Pior

Leia mais

Capítulo 6 Análise de Algoritmos Capítulo 6

Capítulo 6 Análise de Algoritmos Capítulo 6 666 Apêndice C Respostas e Sugestões para os Exercícios de Revisão 42. Consulte a Seção 5.4. 43. (a) Escoamento de memória.(b) Porque não há garantia que o cliente irá usá-la devidamente. 44. (a) Contagem

Leia mais

Quantidade de memória necessária

Quantidade de memória necessária Tempo de processamento Um algoritmo que realiza uma tarefa em 10 horas é melhor que outro que realiza em 10 dias Quantidade de memória necessária Um algoritmo que usa 1MB de memória RAM é melhor que outro

Leia mais

Mergesort. Aula 04. Algoritmo Mergesort. Divisão e Conquista. Divisão e Conquista- MergeSort

Mergesort. Aula 04. Algoritmo Mergesort. Divisão e Conquista. Divisão e Conquista- MergeSort Mergesort Aula 0 Divisão e Conquista- MergeSort Prof. Marco Aurélio Stefanes marco em dct.ufms.br www.dct.ufms.br/ marco Mergesort é um algoritmo de ordenação recursivo Ele recursivamente ordena as duas

Leia mais

Projeto e Análise de Algoritmos

Projeto e Análise de Algoritmos Projeto e Análise de Algoritmos Aula 01 Complexidade de Algoritmos Edirlei Soares de Lima O que é um algoritmo? Um conjunto de instruções executáveis para resolver um problema (são

Leia mais

Técnicas de projeto de algoritmos: Indução

Técnicas de projeto de algoritmos: Indução Técnicas de projeto de algoritmos: Indução ACH2002 - Introdução à Ciência da Computação II Delano M. Beder Escola de Artes, Ciências e Humanidades (EACH) Universidade de São Paulo dbeder@usp.br 08/2008

Leia mais

Lista de exercícios sobre contagem de operações Prof. João B. Oliveira

Lista de exercícios sobre contagem de operações Prof. João B. Oliveira Lista de exercícios sobre contagem de operações Prof. João B. Oliveira 1. metodo m ( Vetor V ) int i, res = 0; para i de 1 a V.size res = res + V[i]; return res; Soma de elementos de um vetor, O( ). 2.

Leia mais

Análise de algoritmos

Análise de algoritmos Análise de algoritmos Introdução à Ciência da Computação 2 Baseado nos slides do Prof. Thiago A. S. Pardo Algoritmo Noção geral: conjunto de instruções que devem ser seguidas para solucionar um determinado

Leia mais

Ordenação em tempo linear

Ordenação em tempo linear Ordenação em tempo linear CLRS cap 8 Algoritmos p. 1 Ordenação: limite inferior Problema: Rearranjar um vetor A[1..n] de modo que ele fique em ordem crescente. Existem algoritmos que consomem tempo O(n

Leia mais

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

Teoria da Computação. Aula 3 Comportamento Assintótico 5COP096. Aula 3 Prof. Dr. Sylvio Barbon Junior. Sylvio Barbon Jr 5COP096 Teoria da Computação Aula 3 Prof. Dr. Sylvio Barbon Junior 1 Sumário 1) Exercícios Medida de Tempo de Execução. 2) Comportamento Assintótico de Funções. 3) Exercícios sobre Comportamento Assintótico

Leia mais

FACULDADE CAMPO LIMPO PAULISTA BACHARELADO EM CIÊNCIA DA COMPUTAÇÃO. Projeto a Análise de Algoritmos I Lista de Exercícios 1

FACULDADE CAMPO LIMPO PAULISTA BACHARELADO EM CIÊNCIA DA COMPUTAÇÃO. Projeto a Análise de Algoritmos I Lista de Exercícios 1 FACULDADE CAMPO LIMPO PAULISTA BACHARELADO EM CIÊNCIA DA COMPUTAÇÃO Projeto a Análise de Algoritmos I Lista de Exercícios 1 Prof. Osvaldo. 1. Descreva alguns problemas associados ao emprego de metodologias

Leia mais

Recursão. Aula 1. Liana Duenha. Faculdade de Computação Universidade Federal de Mato Grosso do Sul

Recursão. Aula 1. Liana Duenha. Faculdade de Computação Universidade Federal de Mato Grosso do Sul Recursão Aula 1 Liana Duenha Faculdade de Computação Universidade Federal de Mato Grosso do Sul Algoritmos e Programação II, Análise de Sistemas, 2010 Martinez & Rubert (FACOM) Recursão APIIAS 1 / 25 Conteúdo

Leia mais

Estruturas de Dados Algoritmos

Estruturas de Dados Algoritmos Estruturas de Dados Algoritmos Prof. Eduardo Alchieri Algoritmos (definição) Sequência finita de instruções para executar uma tarefa Bem definidas e não ambíguas Executáveis com uma quantidade de esforço

Leia mais

Técnicas de projeto de algoritmos: Indução

Técnicas de projeto de algoritmos: Indução Técnicas de projeto de algoritmos: Indução ACH2002 - Introdução à Ciência da Computação II Delano M. Beder Escola de Artes, Ciências e Humanidades (EACH) Universidade de São Paulo dbeder@usp.br 08/2008

Leia mais

ANÁLISE DE ALGORITMOS: PARTE 3

ANÁLISE DE ALGORITMOS: PARTE 3 ANÁLISE DE ALGORITMOS: PARTE 3 Prof. André Backes 2 A notação grande-o é a forma mais conhecida e utilizada de análise Complexidade do nosso algoritmo no pior caso Seja de tempo ou de espaço É o caso mais

Leia mais

BCC202 - Estrutura de Dados I

BCC202 - Estrutura de Dados I BCC202 - Estrutura de Dados I Aula 06: Análise de Algoritmos (Parte 3) Reinaldo Fortes Universidade Federal de Ouro Preto, UFOP Departamento de Ciência da Computação, DECOM Website: www.decom.ufop.br/reifortes

Leia mais

Lista de Exercícios 6 Funções

Lista de Exercícios 6 Funções UFMG/ICEx/DCC DCC Matemática Discreta Lista de Exercícios 6 Funções Ciências Exatas & Engenharias o Semestre de 06 Conceitos. Determine e justifique se a seguinte afirmação é verdadeira ou não para todas

Leia mais

Algoritmos e Estrutura de Dados. Aula 04 Recorrência Prof. Tiago A. E. Ferreira

Algoritmos e Estrutura de Dados. Aula 04 Recorrência Prof. Tiago A. E. Ferreira Algoritmos e Estrutura de Dados Aula 04 Recorrência Prof. Tiago A. E. Ferreira Esta Aula... Nesta aula veremos três métodos para resolver recorrência: Método da substituição É suposto um limite hipotético

Leia mais

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

Ordenação: MergeSort. Prof. Túlio Toffolo  BCC202 Aula 14 Algoritmos e Estruturas de Dados I Ordenação: MergeSort Prof. Túlio Toffolo http://www.toffolo.com.br BCC202 Aula 14 Algoritmos e Estruturas de Dados I DIVISÃO E CONQUISTA Motivação É preciso revolver um problema com uma entrada grande

Leia mais

Prova 1 PMR3201 Computação para Automação 1o. semestre 2016 Prof. Thiago de Castro Martins

Prova 1 PMR3201 Computação para Automação 1o. semestre 2016 Prof. Thiago de Castro Martins Prova 1 PMR3201 Computação para Automação 1o. semestre 2016 Prof. Thiago de Castro Martins 1. (25 pontos) A listagem a seguir mostra o código de uma função que converte uma cadeia de caracteres com a representação

Leia mais

ORDENAÇÃO POR INTERCALAÇÃO

ORDENAÇÃO POR INTERCALAÇÃO AULA 6 ORDENAÇÃO POR INTERCALAÇÃO Na aula 5 revimos os métodos de ordenação mais básicos, que são todos iterativos, simples e têm tempo de execução de pior caso proporcional a n 2, onde n é o tamanho da

Leia mais

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

CT-234. Estruturas de Dados, Análise de Algoritmos e Complexidade Estrutural. Carlos Alberto Alonso Sanches CT-234 Estruturas de Dados, Análise de Algoritmos e Complexidade Estrutural Carlos Alberto Alonso Sanches Bibliografia T.H. Cormen, C.E. Leiserson and R.L. Rivest Introduction to algorithms R. Sedgewick

Leia mais

UNIVERSIDADE DA BEIRA INTERIOR

UNIVERSIDADE DA BEIRA INTERIOR UNIVERSIDADE DA BEIRA INTERIOR Algoritmos e Estruturas de Dados - Bioengenharia 2º Semestre Frequência Resolução 19/maio/2015 A. [3.5 val] Algoritmos de ordenação e de pesquisa Considere-se as seguintes

Leia mais

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

Análise de Problemas Recursivos. Algoritmos e Estruturas de Dados Flavio Figueiredo ( Análise de Problemas Recursivos Algoritmos e Estruturas de Dados 2 2017-1 Flavio Figueiredo (http://flaviovdf.github.io) 1 Lembrando de Recursividade Procedimento que chama a si mesmo Recursividade permite

Leia mais

Análise de Algoritmos Parte 4

Análise de Algoritmos Parte 4 Análise de Algoritmos Parte 4 Túlio Toffolo tulio@toffolo.com.br www.toffolo.com.br BCC202 Aula 07 Algoritmos e Estruturas de Dados I Como escolher o algoritmo mais adequado para uma situação? (continuação)

Leia mais

Melhores momentos AULA 1. Algoritmos p.38/86

Melhores momentos AULA 1. Algoritmos p.38/86 Melhores momentos AULA 1 Algoritmos p.38/86 Definições x := inteiro i tal que i x < i + 1 x := inteiro j tal que j 1 < x j Exercício A1.B Mostre que n 1 2 n 2 n 2 e n 2 n 2 n + 1 2 para qualquer inteiro

Leia mais

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

Ordenação: QuickSort. Prof. Túlio Toffolo  BCC202 Aula 15 Algoritmos e Estruturas de Dados I Ordenação: QuickSort Prof. Túlio Toffolo http://www.toffolo.com.br BCC202 Aula 15 Algoritmos e Estruturas de Dados I QuickSort Proposto por Hoare em 1960 e publicado em 1962. É o algoritmo de ordenação

Leia mais

Construção de Algoritmos II Aula 06

Construção de Algoritmos II Aula 06 exatasfepi.com.br Construção de Algoritmos II Aula 06 André Luís Duarte Porque mil anos são aos teus olhos como o dia de ontem que passou, e como a vigília da noite. Salmos 90:4 Recursividade e complexidade

Leia mais

ANÁLISE DE ALGORITMOS

ANÁLISE DE ALGORITMOS ANÁLISE DE ALGORITMOS Paulo Feofiloff Instituto de Matemática e Estatística Universidade de São Paulo agosto 2009 Introdução P. Feofiloff (IME-USP) Análise de Algoritmos agosto 2009 2 / 102 Introdução

Leia mais

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

ALGORITMOS E ESTRUTURAS DE DADOS 2011/2012 ANÁLISE DE ALGORITMOS. Armanda Rodrigues 3 de Outubro 2011 ALGORITMOS E ESTRUTURAS DE DADOS 2011/2012 ANÁLISE DE ALGORITMOS Armanda Rodrigues 3 de Outubro 2011 2 Análise de Algoritmos Temos até agora analisado soluções de problemas de forma intuitiva A análise

Leia mais

BCC202 - Estrutura de Dados I

BCC202 - Estrutura de Dados I BCC202 - Estrutura de Dados I Aula 13: Ordenação: MergeSort Reinaldo Fortes Universidade Federal de Ouro Preto, UFOP Departamento de Computação, DECOM Website: www.decom.ufop.br/reifortes Email: reifortes@iceb.ufop.br

Leia mais

COMPLEXIDADE DE ALGORITMOS COMPLEXIDADE DE ALGORITMOS

COMPLEXIDADE DE ALGORITMOS COMPLEXIDADE DE ALGORITMOS COMPLEXIDADE DE ALGORITMOS Algoritmos Seqüência de instruções necessárias para a resolução de um prolema em formulado Permite implementação computacional COMPLEXIDADE DE ALGORITMOS Um algoritmo resolve

Leia mais

Estruturas de Dados 2

Estruturas de Dados 2 Estruturas de Dados 2 Algoritmos de Ordenação em Tempo Linear IF64C Estruturas de Dados 2 Engenharia da Computação Prof. João Alberto Fabro - Slide 1/38 Algoritmos de Ordenação em Tempo Linear Limite Assintótico

Leia mais

Análise de Algoritmos

Análise de Algoritmos Análise de Algoritmos Parte 3 Prof. Túlio Toffolo http://www.toffolo.com.br BCC202 Aula 06 Algoritmos e Estruturas de Dados I Como escolher o algoritmo mais adequado para uma situação? (continuação) Exercício

Leia mais

Fabio G. Cozman, Thiago Martins 2017

Fabio G. Cozman, Thiago Martins 2017 Lista 1 - adendo - PMR3201 Fabio G. Cozman, Thiago Martins 2017 Exercícios 1. (P1 2016) A listagem a seguir mostra o código de uma função que converte uma cadeia de caracteres com a representação decimal

Leia mais

SCC Capítulo 3 Análise de Algoritmos - Parte 2

SCC Capítulo 3 Análise de Algoritmos - Parte 2 SCC-501 - Capítulo 3 Análise de Algoritmos - Parte 2 João Luís Garcia Rosa 1 1 Departamento de Ciências de Computação Instituto de Ciências Matemáticas e de Computação Universidade de São Paulo - São Carlos

Leia mais

Aula 06: Análise matemática de algoritmos recursivos

Aula 06: Análise matemática de algoritmos recursivos Aula 06: Análise matemática de algoritmos recursivos David Déharbe Programa de Pós-graduação em Sistemas e Computação Universidade Federal do Rio Grande do Norte Centro de Ciências Exatas e da Terra Departamento

Leia mais

Os métodos de ordenação que ordenam os elementos in situ podem ser classificados em três principais categorias:

Os métodos de ordenação que ordenam os elementos in situ podem ser classificados em três principais categorias: ORDENAÇÃO A atividade de ordenação é o processo de rearranjo de um certo conjunto de objetos de acordo com um critério (ordem) específico. O objetivo da ordenação é facilitar a localização dos membros

Leia mais

Ordenação por Intercalação Métodos de Ordenação Parte 4

Ordenação por Intercalação Métodos de Ordenação Parte 4 Ordenação por Intercalação Métodos de Ordenação Parte 4 SCC-601 Introdução à Ciência da Computação II Rosane Minghim 2010 Revisando... Também chamado merge-sort Idéia básica: dividir para conquistar Um

Leia mais

Algoritmos de Ordenação: QuickSort

Algoritmos de Ordenação: QuickSort Algoritmos de Ordenação: QuickSort ACH2002 - Introdução à Ciência da Computação II Delano M. Beder Escola de Artes, Ciências e Humanidades (EACH) Universidade de São Paulo dbeder@usp.br 10/2008 Material

Leia mais

Lista de março de 2014

Lista de março de 2014 Lista 1 19 de março de 2014 1 Exercícios Básicos 1.1 Na bibliografia Dasgupta: Capítulo 0, exercícios 1 e 2. Exercícios 2.16 e 2.17 Tardos & Kleinberg: Todos exercícios do cap 2 do livro texto, exceto

Leia mais

Comportamento Assintótico. Algoritmos e Estruturas de Dados Flavio Figueiredo (http://flaviovdf.github.io)

Comportamento Assintótico. Algoritmos e Estruturas de Dados Flavio Figueiredo (http://flaviovdf.github.io) Comportamento Assintótico Algoritmos e Estruturas de Dados 2 2017-1 Flavio Figueiredo (http://flaviovdf.github.io) 1 Até Agora Falamos de complexidade de algoritmos com base no número de passos Vamos generalizar

Leia mais

Análise de algoritmos. Parte I

Análise de algoritmos. Parte I Análise de algoritmos Parte I 1 Recursos usados por um algoritmo Uma vez que um procedimento está pronto/disponível, é importante determinar os recursos necessários para sua execução Tempo Memória Qual

Leia mais

Programação Estruturada

Programação Estruturada Programação Estruturada Recursão Professores Emílio Francesquini e Carla Negri Lintzmayer 2018.Q3 Centro de Matemática, Computação e Cognição Universidade Federal do ABC Recursão Recursão 1 Recursão 2

Leia mais

ESTRUTURAS DE DADOS E ALGORITMOS ALGORITMOS DE ORDENAÇÃO POR COMPARAÇÃO - II

ESTRUTURAS DE DADOS E ALGORITMOS ALGORITMOS DE ORDENAÇÃO POR COMPARAÇÃO - II ESTRUTURAS DE DADOS E ALGORITMOS ALGORITMOS DE ORDENAÇÃO POR COMPARAÇÃO - II Adalberto Cajueiro Departamento de Sistemas e Computação Universidade Federal de Campina Grande ALGORITMOS VISTOS ANTERIORMENTE

Leia mais

Luís Fernando Schultz Xavier da Silveira. 12 de maio de 2010

Luís Fernando Schultz Xavier da Silveira. 12 de maio de 2010 Monóides e o Algoritmo de Exponenciação Luís Fernando Schultz Xavier da Silveira Departamento de Informática e Estatística - INE - CTC - UFSC 12 de maio de 2010 Conteúdo 1 Monóides Definição Propriedades

Leia mais

Projeto de Algoritmos e Indução Matemática

Projeto de Algoritmos e Indução Matemática Capítulo 3 Projeto de Algoritmos e Indução Matemática Um algoritmo é uma descrição precisa de um método para a resolução de determinado problema. Este capítulo apresenta a relação entre a prova de teoremas

Leia mais

Aula 2. Divisão e conquista. Exemplo 1: Número de inversões de uma permutação (problema 2-4 do CLRS; veja também sec 5.4 do KT)

Aula 2. Divisão e conquista. Exemplo 1: Número de inversões de uma permutação (problema 2-4 do CLRS; veja também sec 5.4 do KT) Aula 2 Divisão e conquista Exemplo 1: Número de inversões de uma permutação (problema 2-4 do CLRS; veja também sec 5.4 do KT) Exemplo 2: Par de pontos mais próximos (sec 33.4 do CLRS) Essas transparências

Leia mais

ALGORITMOS AVANÇADOS UNIDADE II Recursividade. Luiz Leão

ALGORITMOS AVANÇADOS UNIDADE II Recursividade. Luiz Leão Luiz Leão luizleao@gmail.com http://www.luizleao.com Conteúdo Programático 2.1 - Definições recursivas 2.2 - Como implementar recursividade 2.3 - Quando não usar recursividade 2.4 - Desenvolvendo algoritmos

Leia mais

Universidade Federal do ABC Avaliação Disciplina Turma Professor Data Instruções para a prova (leia antes de começar): SelectionSort selectonsortrec

Universidade Federal do ABC Avaliação Disciplina Turma Professor Data Instruções para a prova (leia antes de começar): SelectionSort selectonsortrec Universidade Federal do ABC Avaliação: Prova 02 Disciplina: BC1424 - Algoritmos e Estruturas de Dados I Turma: Noturno Professor: Jesús P. Mena-Chalco Data: 03/05/2016 Nome completo: RA: Instruções para

Leia mais

Melhores momentos AULA 3. Algoritmos p.148/188

Melhores momentos AULA 3. Algoritmos p.148/188 Melhores momentos AULA 3 Algoritmos p.148/188 Análise da intercalação Problema: Dados e crescentes, rearranjar de modo que ele fique em ordem crescente. Entra: Sai: Algoritmos p.149/188 Algoritmos p.150/188

Leia mais

Projeto e Análise de Algoritmos

Projeto e Análise de Algoritmos Projeto e Análise de Algoritmos A. G. Silva Baseado nos materiais de Souza, Silva, Lee, Rezende, Miyazawa Unicamp Ribeiro FCUP 18 de agosto de 2017 Conteúdo programático Introdução (4 horas/aula) Notação

Leia mais

Algoritmos e Estruturas de Dados I Prof. Tiago Eugenio de Melo

Algoritmos e Estruturas de Dados I Prof. Tiago Eugenio de Melo Algoritmos e Estruturas de Dados I Prof. Tiago Eugenio de Melo tmelo@uea.edu.br www.tiagodemelo.info Observações O conteúdo dessa aula é parcialmente proveniente do Capítulo 11 do livro Fundamentals of

Leia mais

Análise de Algoritmos Estrutura de Dados II

Análise de Algoritmos Estrutura de Dados II Centro de Ciências Exatas, Naturais e de Saúde Departamento de Computação Análise de Algoritmos Estrutura de Dados II COM10078 - Estrutura de Dados II Prof. Marcelo Otone Aguiar marcelo.aguiar@ufes.br

Leia mais

7. Introdução à Complexidade de Algoritmos

7. Introdução à Complexidade de Algoritmos 7. Introdução à Complexidade de Algoritmos Fernando Silva DCC-FCUP Estruturas de Dados Fernando Silva (DCC-FCUP) 7. Introdução à Complexidade de Algoritmos Estruturas de Dados 1 / 1 Análise de Algoritmos

Leia mais

Complexidade de Algoritmos

Complexidade de Algoritmos 60 Desempenho 50 40 30 20 Algoritmo1 Algoritmo2 Algoritmo3 10 0 Complexidade de Algoritmos INFORMÁTICA BÁSICA Prof. Demétrios Coutinho C a m p u s P a u d o s F e r r o s D i s c i p l i n a d e A l g

Leia mais

Complexidade Assintótica de Programas Letícia Rodrigues Bueno

Complexidade Assintótica de Programas Letícia Rodrigues Bueno Complexidade Assintótica de Programas Letícia Rodrigues Bueno Análise de Algoritmos 1. Introdução; Análise de Algoritmos 1. Introdução; 2. Conceitos básicos; Análise de Algoritmos 1. Introdução; 2. Conceitos

Leia mais

INF 1010 Estruturas de Dados Avançadas

INF 1010 Estruturas de Dados Avançadas INF 1010 Estruturas de Dados Avançadas Complexidade de Algoritmos 2012 DI, PUC-Rio Estruturas de Dados Avançadas 2012.2 1 Introdução Complexidade computacional Termo criado por Hartmanis e Stearns (1965)

Leia mais

Carlos Eduardo Batista. Centro de Informática - UFPB

Carlos Eduardo Batista. Centro de Informática - UFPB Estrutura de Dados Carlos Eduardo Batista Centro de Informática - UFPB bidu@ci.ufpb.br Métodos de pesquisa e classificação de dados (continuação) Estruturas de Dados 2 Algoritmo de busca Recebe como argumento

Leia mais

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

Marcelo Keese Albertini Faculdade de Computação Universidade Federal de Uberlândia Introdução à Análise de Algoritmos Marcelo Keese Albertini Faculdade de Computação Universidade Federal de Uberlândia Aula de hoje Nesta aula veremos: Sobre a disciplina Exemplo: ordenação Sobre a disciplina

Leia mais

Introdução à Análise Algoritmos

Introdução à Análise Algoritmos Introdução à Análise Algoritmos Notas de aula da disciplina IME 4-182 Estruturas de Dados I Paulo Eustáquio Duarte Pinto (pauloedp arroba ime.uerj.br) abril/218 Ordenação por SELEÇÃO: Idéia: Dado um vetor

Leia mais