3. ANÁLISE DE COMPLEXIDADE PESSIMISTA

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

Download "3. ANÁLISE DE COMPLEXIDADE PESSIMISTA"

Transcrição

1 3. ANÁLISE DE COMPLEXIDADE PESSIMISTA Este capítulo introduz uma metodologia para analisar a complexidade pessimista (i. e. no pior caso) de um algoritmo com base em sua estrutura. O processo de construção de um algoritmo seria mais eficaz se a complexidade fosse um fator integrante do projeto do mesmo. Apesar de a complexidade ser uma medida muito particular à classe do algoritmo que está sendo analisado, alguns aspectos do cálculo da complexidade não dependem do que faz o algoritmo. Entre as medidas de complexidade, a complexidade no pior caso é o critério de avaliação mais utilizado. Serão estudadas, uma a uma, as principais estruturas algorítmicas a seguir: o Atribuição: v e, o Seqüência (ou composição): S ; T, o Condicional: se b então S senão T (ou se b então S), o Iteração definida (ou incondicional): para i de j até m faça S, o Iteração indefinida (ou condicional): enqto b faça S. Na seção 2 do capítulo 2 (cf ), introduzimos as seguintes variantes para o critério pessimista de complexidade de um algoritmo a: c P = [ a ](n) := Máx { desemp[ a ](d) IN / tam(d) = n }, c P < [ a ](n) := Máx { desemp[ a ](d) IN / tam(d) < n }; onde desemp[ a ](d) := custo(exec[ a ](d)). Neste capítulo daremos ênfase à variante c P < [a](n), onde vários resultados podem ser adaptados para a variante c P = [a](n). Entre as medidas de complexidade, a complexidade no pior caso é o critério de avaliação mais utilizado. Visão geral do capítulo 3.1 Preliminares e conceitos auxiliares. Introduz algumas idéias básicas importantes e conceitos auxiliares, como os de absorção e máximo assintótico em ordem, que serão usadas a seguir. 3.2 Equações de complexidade pessimista. Estuda a complexidade de cada uma das principais estruturas algorítmicas, estabelecendo equações, ilustradas por exemplos simples. 3.3 Exemplos de aplicação. Ilustra a metodologia da seção 3.2, aplicando-a a alguns exemplos de algoritmos. 3.1 PRELIMINARES E CONCEITOS AUXILIARES A motivação é reduzir o desempenho - e a complexidade - de um algoritmo à informações sobre suas partes. Podemos operar ponto a ponto com funções. Consideremos funções f e g de um conjunto D no conjunto IR+, onde definimos sua soma pontual por: ( f + g )(d) := f(d) + g(d), para cada d D. Definimos, ainda, seu máximo e mínimo pontuais, respectivamente, por: Máx ( f, g )(d) := Máx { f(d), g(d) } e mín ( f, g )(d) := mín { f(d), g(d) } Idéias básicas: componentes de algoritmos A complexidade de um algoritmo poderá ser obtida a partir das complexidades das suas partes. Em geral, cada componente executada dá sua contribuição para o desempenho e a complexidade do algoritmo.

2 Torna-se conveniente classificar as componentes de um algoritmo em conjuntivas ou disjuntivas, conforme sejam sempre executadas ou não. Por exemplo, no (trecho de) algoritmo j i + 1 ; k i - 1, essas duas atribuições são suas componentes conjuntivas. Por outro lado, essas duas atribuições são as componentes disjuntivas do (trecho de) algoritmo se i j então j i + 1 senão k i - 1. Consideremos um algoritmo a 0 com duas componentes a 1 e a 2. Para entradas de tamanho até n, a complexidade pessimista, pela sua própria definição, dá uma cota superior para o desempenho: para uma entrada d com tam(d) < n, sabemos que desemp[ a j ](d) < c P < [ a j ](n), para j = 0, 1, 2. Para o caso de componentes conjuntivas, na execução do algoritmo a 0 sobre entrada d, temos esforços computacionais associados às execuções das duas componentes a 1 e a 2. Assim, o desempenho do algoritmo a 0,com entrada d é dado por: desemp[ a 0 ](d) = desemp[ a 1 ](d) + desemp[ a 2 ](d) (3.1.1). Como as complexidades pessimistas dão cotas superiores para os desempenhos, temos: desemp[ a 0 ](d) < c P < [ a 1 ](n) + c P < [ a 2 ](n). Assim, pela definição de complexidade pessimista, obtemos a seguinte cota superior: c P < [ a 0 ](n) < c P < [ a 1 ](n) + c P < [ a 2 ](n). Por outro lado, pela equação (3.1.1) os desempenhos das partes dão cotas inferiores: desemp[ a j ](d) < desemp[ a 0 ](d), para cada j = 1, 2. De novo, como a complexidade pessimista é cota superior para o desempenho, temos: desemp[ a i ](d) < c P < [ a 0 ](n), para cada i = 1, 2. Assim, pela definição de complexidade pessimista, obtemos as seguintes cotas inferiores: c P < [ a j ](n) < c P < [ a 0 ](n), para cada j = 1, 2. Portanto, da definição de máximo pontual, vem a seguinte cota inferior para c P < [ a 0 ]: Máx ( c P < [ a 1 ], c P < [ a 2 ] )(n) < c P < [ a 0 ](n). Princípio das partes conjuntivas Para o caso de componentes conjuntivas, com o exemplo do algoritmo anterior, a complexidade pessimista do algoritmo a 0 tem cotas. Máx ( c P < [ a 1 ], c P < [ a 2 ] ) < c P < [ a 0 ] < c P < [ a 1 ] + c P < [ a 2 ]. Logo, a complexidade pessimista do algoritmo a 0 tem ordem Θ ( c P < [ a 1 ] + c P < [ a 2 ] ). Consideremos agora um algoritmo a 0 com duas componentes a 1 e a 2 disjuntivas. Neste caso, temos esforços computacionais associados às execuções ora da componente a 1, ora da componente a 2. Assim, para cada entrada d, temos: desemp[ a 0 ](d) = desemp[ a 1 ](d) ou desemp[ a 0 ](d) = desemp[ a 2 ](d) (3.1.2). Como as complexidades pessimistas dão cotas superiores para os desempenhos, temos: desemp[ a 0 ](d) < c P < [ a 1 ](n) ou desemp[ a 0 ](d) < c P < [ a 2 ](n). Assim, pela definição de máximo pontual, obtemos a seguinte cota superior: desemp[ a 0 ](d) < Máx (c P < [ a 1 ], c P < [ a 2 ] )(n). Portanto, pela definição de complexidade pessimista, obtemos a seguinte cota superior: c P < [ a 0 ](n) < Máx (c P < [ a 1 ], c P < [ a 2 ] )(n). Por outro lado, como a complexidade pessimista é cota superior para o desempenho, da expressão (3.1.2) temos: se desemp[ a 0 ](d) = desemp[ a 1 ](d), então: desemp[ a 1 ](d) < c P < [ a 0 ](n); se desemp[ a 0 ](d) = desemp[ a 2 ](d), então: desemp[ a 2 ](d) < c P < [ a 0 ](n). Assim, para qualquer entrada d com tam(d) < n, temos a seguinte cota inferior: Máx { desemp[ a 1 ](d), desemp[ a 2 ](d) } < c P < [ a 0 ](n). Logo, para o pior caso de entradas com tamanho até n, temos a cota inferior: Máx { Máx { desemp[ a 1 ](d), desemp[ a 2 ](d) } / tam(d) < n } < c P < [ a 0 ](n).

3 Mas, pode-se mostrar que Máx { c P < [ a 1 ](n), c P < [ a 2 ](n) } é uma cota inferior para: Máx { Máx { desemp[ a 1 ](d), desemp[ a 1 ](d) } / tam(d) < n }. Portanto, a definição de máximo pontual, vem a ser cota inferior para c P < [ a 0 ]: Máx ( c P < [ a 1 ], c P < [ a 2 ] )(n) < c P < [ a 0 ](n). Princípio das partes disjuntivas Para o caso de componentes disjuntivas, com o exemplo do algoritmo anterior, a complexidade pessimista do algoritmo a 0 tem cotas. c P < [ a 0 ] = Máx ( c P < [ a 1 ], c P < [ a 2 ] ). Logo, a complexidade pessimista do algoritmo a 0 tem ordem Ω ( c P < [ a 0 ] ) Conceitos auxiliares Os conceitos de absorção e máximo assintótico (em ordem) são motivados por idéias de reduzir a complexidade de um algoritmo às ordens das suas partes. A idéia de uma componente de um algoritmo absorver outra se aplica quando ambas as componentes são conjuntivas. Para o caso de componentes disjuntivas, aparece a idéia de máximo assintótico, que será considerada em seguida. Uma complexidade é absorvida por outra, por exemplo, se ambas são polinômios na mesma variável. Nesse caso, a complexidade de menor grau é absorvida. Assim, n é absorvida por n 2. Também, n. logn é absorvida por n 2. Dadas funções f e g de IN em IR+, dizemos que f é absorvida por g, sse, f é O( g ). Isto significa que: ( c IR+) ( n 0 IN) ( n > n 0 ): f(n) < c. g(n). Princípio da absorção Para funções f e g de IN em IR+, se f é absorvida por g, sua soma pontual f + g é Θ ( g ). Assim, como n. logn é absorvida por n 2, a soma ( n. logn + n 2 ) é Θ ( n 2 ). Máximo assintótico Considerando funções f e g de IN em IR+, vamos a seguir examinar algumas expressões mais simples para a ordem do máximo pontual Máx ( f, g )(n) := Máx { f(n), g(n) }. Pode acontecer, no entanto, que não exista uma dominância. Quando isso acontece, uma solução simplista, mas muitas vezes usada, é utilizar para a ordem do máximo pontual Máx ( f, g ) a soma pontual, dada por ( f + g )(n) := f(n) + g(n). Inicialmente, é claro que o máximo assintótico deve ser comutativo. (i): MxAO ( f, g ) = MxAO ( g, f ). Devemos também requerer que as funções sejam dominadas. (ii): f = O( MxAO ( f, g ) ) e g = O( MxAO ( f, g ) ). Podemos exigir que o máximo assintótico seja a melhor cota superior. (iii): MxAO ( f, g ) = O( h ), sempre que f = O( h ) e g = O( h ). Podemos requerer também a seguinte propriedade. (iv): MxAO ( f, g ) = g, sempre que ( n 0 IN) ( n > n 0 ): f(n) < g(n). Consideremos, por sua vez, funções f e g de IN em IN. O que devemos esperar de seu máximo assintótico MxAO ( f, g )?

4 3.2 EQUAÇÕES DE COMPLEXIDADE PESSIMISTA Precisamos das complexidades das componentes básicas e saber como combinar complexidades de componentes. Vamos analisar a complexidade de cada uma das principais estruturas algorítmicas. Daremos ênfase à variante c P < [a], cuja notação simplificaremos para c P [a]. Vários resultados podem ser adaptados para a variante c P = [a] Atribuição Exemplo Considere as atribuições a seguir: a) Para variáveis inteiras i e j: i 0 {inicialização} ; j i {transferência}. Ambas têm complexidade constante: Θ (1). b) Para lista v de inteiros e variável inteira m: m Max(v) {valor máximo}. Esta atribuição envolve (sendo n o comprimento da lista em v): - determinar o máximo da lista v, com complexidade Θ (n); - transferir este valor, com complexidade Θ (1). Sua complexidade tem ordem linear: Θ (n). c) Para listas u, v e w: u v {transfere lista}; w Reversa(v) {inverte lista}. A atribuição de transferência de cada elemento da lista v, tendo complexidade O (n), para uma lista u com comprimento n. A atribuição w Reversa(v) envolve: - inverter a lista v, com complexidade Θ (n); - transferir os elemento da lista invertida, com complexidade Θ (n). Sua complexidade tem ordem n + n, i. e. O (n). Assim, o desempenho da atribuição v e, com entrada d é dado por: desemp[ v e ](d) = cálc[ e ](d) + transf[ e(d) ]. Complexidade pessimista da atribuição A complexidade pessimista da atribuição v e tem cotas: Máx ( c P [ e ], c P [ e ] ) < c P [ v e ] < c P [ e ] + c P [ e ]. Logo, a ordem da complexidade pessimista da atribuição v e é dada por: c P [ v e ] = O ( c P [ e ] + c P [ e ] ). Exemplo Para listas u e v de inteiros, temos: c P [ u Ordene(v) ] = O ( c P [ Ordene ] + c P [ Ordene(v) ] ). Supondo que Ordene é um algoritmo com tempo O ( n 2 ), teremos: c P [ u Ordene(v) ] = O ( n 2 + n ) = O ( n 2 ). Note que, se a operação fundamental é a comparação, então: c P [ u Ordene(v) ] = O ( c P [ Ordene ] ) Seqüência (ou composição) Exemplo Considere as seqüências a seguir: a) Para variáveis inteiras i e j: i 0 ; j i. Sua complexidade tem ordem 1 + 1: Θ ( 1 ).

5 b) Para lista v de inteiros e variável inteira m: m Max(v) ; m m + 1. Sua complexidade tem ordem n + 1: O ( n ). c) Para listas u, v e w: u v ; w Reversa(v). Sua complexidade tem ordem n + n: Θ ( n ). Assim, o desempenho da seqüência S ; T com entrada d é dado por: desemp[ S ; T ](d) = desemp[ S ](d) + desemp[ T ](S(d)). Exemplo Considere o trecho de algoritmo: v Reversa(u) ; w Ordene(v), onde Reversa e Ordene têm complexidades Θ(n) e O(n 2 ), respectivamente. O algoritmo composto tem complexidade de ordem n + n 2, i. e. O ( n 2 ). Complexidade da seqüência com perservação (assintótica) de tamanho Se S preserva tamanho assintoticamente, então a complexidade pessimista da seqüência S ; T tem cotas: Máx ( c P [ S ], c P [ T ] ) < c P [ S ; T ] < c P [ S ] + c P [ T ]. A ordem da complexidade pessimista da seqüência S ; T é dada por: c P [ S ; T ] = O ( c P [ S ] + c P [ T ] ). Exemplo Dados algoritmos Prim(u) e Buscab(a,v), considere a seqüência: v Prim(u) ; Buscab( a, v ). Vamos supor que: - Prim(u) dá como saída a primeira metade da lista em u, com comprimento n / 2, e tem complexidade Θ ( n ); - Buscab( a, v ) procura a na lista v, com complexidade O ( logm ), para lista v com comprimento m. Assim, o algoritmo composto tem complexidade de ordem: n + log n / 2, ou seja O ( n ). Complexidade pessimista da seqüência (em geral) Para entradas com tamanho até n, i. e. s(n) := Máx { tam(s(d)) / tam(d) < n }, a complexidade pessimista da seqüência S ; T tem cotas: Máx ( c P [ S ](n), c P [ T ](s(n)) ) < c P [ S ; T ](n) < c P [ S ](n) + c P [ T ](s(n)). Logo, a complexidade pessimista da seqüência S ; T é dada por: c P [ S ; T ](n) = O ( c P [ S ](n) + c P [ T ](s(n)) ). Exemplo Considere a seqüência: v Prim(u) ; w Fin(u) ; v Ordene(v) ; w Ordene(w) ; u Concat( v, w ). Vamos supor que: - Prim é como no exemplo e, analogamente, Fin dá a segunda metade de sua entrada; - Ordene tem complexidade quadrática; - Concat( v, w ) dá como saída a concatenação das listas v e w, com complexidade O ( p + q ). Assim, o algoritmo composto tem complexidade de ordem: n + n + n n ( n 2 + n 2 ), ou seja O ( n2 ).

6 3.2.3 Condicionais Exemplo Considere as estruturas condicionais a seguir: a) Para variável inteira i: se i = 0 então i i + 1. Esta estrutura condicional envolve: - determinar se o valor de i é 0, com complexidade Θ ( 1 ); - se sim, executar a atribuição i i + 1, com complexidade Θ ( 1 ). Sua complexidade tem ordem constante: Θ ( 1 ). b) Para lista v de inteiros e variável inteira m: se m = 0 então m Max(v). Esta atribuição envolve: - determinar se o valor de m é 0, com complexidade Θ ( 1 ); - se sim, executar a atribuição m Max(v), com complexidade Θ ( n ). Sua complexidade, no pior caso, tem ordem linear: Θ ( n ). Assim, o desempenho desemp[ se b então S ](d) da estrutura condicional se b então S, com entrada d é dado por: aval[ b ](d) + desemp[ S ](d) caso o valor de b em d seja verdadeiro; aval[ b ](d) caso o valor de b em d seja falso. Complexidade da estrutura condicional simples A complexidade pessimista de se b então S tem cotas: c P [ b ] < c P [ se b então S ] < c P [ b ] + c P [ S ]. Logo, a ordem da complexidade pessimista de se b então S é dada por: c P [ se b então S ] = O ( c P [ b ] + c P [ S ] ). Exemplo Dados algoritmos Max e Ordene, (ex e 3.2.2), considere o seguinte trecho de algoritmo, para lista v de inteiros: se Max(v) = 0 então v Ordene(v). Para esta estrutura condicional temos: c P [ se Max(v) = 0 então v Ordene(v) ] = = O ( c P [ Max(v) = 0 ] + c P [ v Ordene(v) ] ). Como seus componentes têm complexidades pessimistas: c P [ Max(v) = 0 ] = O ( n ) e c P [ v Ordene(v) ] = O ( n 2 ); a ordem da complexidade pessimista desta estrutura condicional é: c P [ se Max(v) = 0 então v Ordene(v) ] = O ( n + n 2 ) = O( n 2 ). Exemplo Considere as estruturas condicionais a seguir: a) Para variáveis inteiras i e j: se i j então i i + j senão j i + 1. Esta estrutura condicional envolve: - saber se os valores de i e j são diferentes, tem complexidade Θ ( 1 ); - se sim, executar a atribuição i i + j, com complexidade Θ ( 1 ); - se não, executar a atribuição j i + 1, com complexidade Θ ( 1 ). Sua complexidade tem ordem constante: Θ ( 1 ). b) Para listas u e v (de inteiros): se u = v então v Prim(u) senão u Ordene(v). Esta estrutura condicional envolve: - determinar se as listas u e v são iguais, com complexidade O ( n ); - se sim, executar a atribuição v Prim(u), com complexidade O ( n ); - se não, executar a atribuição u Ordene(v), com complexidade O(n 2 ). Sua complexidade, no pior caso, tem ordem quadrática: O ( n 2 ).

7 Assim, a estrutura condicional se b então S senão T, com entrada d tem desempenho desemp[ se b então S senão T ](d) dado por: aval[ b ](d) + desemp[ S ](d) aval[ b ](d) + desemp[ T ](d) caso o valor de b em d seja verdadeiro; caso o valor de b em d seja falso. Complexidade pessimista da estrutura condicional composta A complexidade pessimista de se b então S senão T tem as cotas: inferior : Máx ( c P [ b ], c P [ S ], c P [ T ] ) < c P [ se b então S senão T ]; superior : c P [ se b então S senão T ] < c P [ b ] + MxAO ( c P [ S ], c P [ T ] ). A ordem da complexidade pessimista de se b então S senão T é dada por: c P [ se b então S senão T ] = O ( c P [ b ] + MxAO ( c P [ S ], c P [ T ] ). Exemplo Dados algoritmos Max, Reversa e Ordene (ex e 3.2.2), considere o seguinte trecho de algoritmo, para lista v de inteiros: se Max(v) > 0 então v Reversa(v) senão v Ordene(v). Para esta estrutura condicional temos: c P [ se Max(v) > 0 então v Reversa(v) senão v Ordene(v) ] = = O ( c P [ Max(v) > 0 ] + MxAO ( c P [ v Reversa(v) ],c P [ v Ordene(v) ] ) ). Suas componentes têm as seguintes complexidades pessimistas: c P [ Max(v) > 0 ] = O ( n ); c P [ v Reversa(v) ] = O ( n ) e c P [ v Ordene(v) ] = O ( n 2 ). Assim, temos o seguinte máximo assintótico em ordem de complexidades: MxAO ( c P [ v Reversa(v) ], c P [ v Ordene(v) ] ) = = MxAO ( n, n 2 ) = O( n 2 ). A ordem da complexidade pessimista desta estrutura condicional é: c P [ se Max(v) > 0 então v Reversa(v) senão v Ordene(v) ] = = O( n + n 2 ) = O( n 2 ).

Complexidade de Algoritmos. Edson Prestes

Complexidade de Algoritmos. Edson Prestes Edson Prestes Conceitos Auxiliares Mostre o principio da absorção Conceitos Auxiliares Considere duas funções f e g de IN em IR +. Freqüentemente, a partir de um certo ponto, uma função fica sempre maior

Leia mais

Complexidade de Algoritmos. Edson Prestes

Complexidade de Algoritmos. Edson Prestes Edson Prestes ACP - Condicionais A complexidade pessimista de se b então S é limitada da seguinte maneira A ordem da complexidade é ACP - Condicionais Qual é a complexidade do seguinte trecho de algoritmo?

Leia mais

Complexidade de Algoritmos. Edson Prestes

Complexidade de Algoritmos. Edson Prestes Edson Prestes Exemplos Exemplos A complexidade no pior caso é linear e igual a n, ou seja, é O(n) A complexidade média é linear e igual a (1+n)/2, ou seja, é O(n) Exemplos Considere o produto C de uma

Leia mais

Complexidade de Algoritmos. Edson Prestes

Complexidade de Algoritmos. Edson Prestes Edson Prestes Relembrando Complexidade é também chamada esforço requerido ou quantidade de trabalho (relacionada ao tempo ou espaço). Complexidade no pior caso; Complexidade média. É possível antecipar

Leia mais

Análise de Complexidade de Algoritmos. mario alexandre gazziro

Análise de Complexidade de Algoritmos. mario alexandre gazziro Análise de Complexidade de Algoritmos mario alexandre gazziro Definição A complexidade de um algoritmo consiste na quantidade de esforço computacional necessária para sua execução. Esse esforço é expresso

Leia mais

MCTA028 Programação Estruturada Aula 20 Exercícios de custos de um algoritmo

MCTA028 Programação Estruturada Aula 20 Exercícios de custos de um algoritmo MCTA028 Programação Estruturada Aula 20 Exercícios de custos de um algoritmo Prof. Jesús P. Mena-Chalco Q-2017 1 Estudo de algoritmos O projeto de algoritmos é influenciado pelo estudo de seus comportamentos.

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

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

BCC202 - Estrutura de Dados I

BCC202 - Estrutura de Dados I BCC202 - Estrutura de Dados I Aula 05: Análise de Algoritmos (Parte 2) ASN Universidade Federal de Ouro Preto, UFOP Departamento de Computação, DECOM Material elaborado com base nos slides do Prof. Reinaldo

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

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

Algoritmo. Exemplo. Definição. Programação de Computadores Comparando Algoritmos. Alan de Freitas Algoritmos Programação de Computadores Comparando Algoritmos Um algoritmo é um procedimento de passos para cálculos. Este procedimento é composto de instruções que definem uma função Até o momento, vimos

Leia mais

Programação II Aula 07

Programação II Aula 07 Engenharias de Produção e Petróleo Programação II Aula 07 Adan Lucio P. Rodovia BR 101 Norte, Km. 60, Bairro Litorâneo, CEP 29932-540, São Mateus ES, Tel.: +55 (27) 3312-1511 - CEUNES Métodos de Ordenação

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 05: Análise de Algoritmos (Parte 2) Reinaldo Fortes Universidade Federal de Ouro Preto, UFOP Departamento de Ciência da Computação, DECOM Website: www.decom.ufop.br/reifortes

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

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

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

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

André Vignatti DINF- UFPR

André Vignatti DINF- UFPR Notação Assintótica: Ω, Θ André Vignatti DINF- UFPR Limitantes Inferiores Considere o seguinte trecho de código: void main () { /* trecho que le N da entrada padrao */ for (i = 0 ; i< N; i++) puzzle(i);

Leia mais

Pra início de conversa... O que é um algoritmo? Exemplos de algoritmos. Como podemos descrever algoritmos? Como podemos descrever algoritmos?

Pra início de conversa... O que é um algoritmo? Exemplos de algoritmos. Como podemos descrever algoritmos? Como podemos descrever algoritmos? Pra início de conversa... O que é um algoritmo? Como podemos descrever algoritmos? avaliar algoritmos? Introdução à Análise de Algoritmos Prof. Cláudio E. C. Campelo http://claudiocampelo.com Derivado

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

Aula 02 Notação Assintótica p. 4. Usodanotação O. Notação O. Notação O, Ω, ΘeExemplos. Intuitivamente... O(f(n)) funções que não crescem mais

Aula 02 Notação Assintótica p. 4. Usodanotação O. Notação O. Notação O, Ω, ΘeExemplos. Intuitivamente... O(f(n)) funções que não crescem mais Notação O Aula 02 Notação Assintótica Notação O, Ω, Θe Prof. Marco Aurélio Stefanes marco em dct.ufms.br www.dct.ufms.br/ marco Intuitivamente... O() funções que não crescem mais rápido que funções menores

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

André Vignatti DINF- UFPR

André Vignatti DINF- UFPR Notação Assintótica: O André Vignatti DINF- UFPR Notação Assintótica Vamos expressar complexidade através de funções em variáveis que descrevam o tamanho de instâncias do problema. Exemplos: Problemas

Leia mais

Medida do Tempo de Execução de um Programa

Medida do Tempo de Execução de um Programa Medida do Tempo de Execução de um Programa Livro Projeto de Algoritmos Nívio Ziviani Capítulo 1 Seção 1.3.1 http://www2.dcc.ufmg.br/livros/algoritmos/ Comportamento Assintótico de Funções O parâmetro n

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

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

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

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

ALGORITMOS AVANÇADOS UNIDADE I Análise de Algoritmo - Notação O. Luiz Leão Luiz Leão luizleao@gmail.com http://www.luizleao.com Conteúdo Programático 1.1 - Algoritmo 1.2 - Estrutura de Dados 1.2.1 - Revisão de Programas em C++ envolvendo Vetores, Matrizes, Ponteiros, Registros

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

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

Área que visa determinar a complexidade (custo) de um algoritmo, com isso é possível: Área que visa determinar a complexidade (custo) de um algoritmo, com isso é possível: Comparar algoritmos: existem algoritmos que resolvem o mesmo tipo de problema. Determinar se o algoritmo é ótimo :

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

BC1424 Algoritmos e Estruturas de Dados I Aula 05 Custos de um algoritmo e funções de complexidade

BC1424 Algoritmos e Estruturas de Dados I Aula 05 Custos de um algoritmo e funções de complexidade BC1424 Algoritmos e Estruturas de Dados I Aula 05 Custos de um algoritmo e funções de complexidade Prof. Jesús P. Mena-Chalco 1Q-2016 1 1995 2015 2 Custo de um algoritmo e funções de complexidade Introdução

Leia mais

Algoritmos e Estruturas de Dados I Aula 06 Custos de um algoritmo

Algoritmos e Estruturas de Dados I Aula 06 Custos de um algoritmo Algoritmos e Estruturas de Dados I Aula 06 Custos de um algoritmo Prof. Jesús P. Mena-Chalco 1Q-2019 1 lista 3 7-2 6 NULL Node *Busca(int x, Node *lista) { while (lista!=null && lista->data!=x) lista =

Leia mais

Introdução à Análise de Algoritmos

Introdução à Análise de Algoritmos Quanto tempo leva a execução de determinado algoritmo? Quando temos dois algoritmos que fazem a mesma coisa, qual deles leva menos tempo? A análise do algoritmo preocupa-se com as questões acima. É sempre

Leia mais

ANÁLISE DE COMPLEXIDADE DOS ALGORITMOS

ANÁLISE DE COMPLEXIDADE DOS ALGORITMOS 1/18 ANÁLISE DE COMPLEXIDADE DOS ALGORITMOS Algoritmos 2/18 Algoritmos Algoritmo - sequência de instruções necessárias para a resolução de um problema bem formulado (passíveis de implementação em computador)

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

ESTRUTURA DE DADOS CIÊNCIA E TECNOLOGIA DO RIO. Curso de Tecnologia em Sistemas para Internet

ESTRUTURA DE DADOS CIÊNCIA E TECNOLOGIA DO RIO. Curso de Tecnologia em Sistemas para Internet INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO RIO GRANDE DO NORTE ESTRUTURA DE DADOS Docente: Éberton da Silva Marinho e-mail: ebertonsm@gmail.com eberton.marinho@ifrn.edu.br Curso de Tecnologia

Leia mais

Breve Introdução à Complexidade Assintótica de Algoritmos Letícia Rodrigues Bueno

Breve Introdução à Complexidade Assintótica de Algoritmos Letícia Rodrigues Bueno Breve Introdução à Complexidade Assintótica de Algoritmos Letícia Rodrigues Bueno Introdução Objetivo: possibilitar medir eficiência de algoritmos; Introdução Objetivo: possibilitar medir eficiência de

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

apenas os caminhos que passam só por vértices em C, exceto, talvez, o próprio v A Figura 1 a seguir ilustra o significado do conjunto C edovalordist.

apenas os caminhos que passam só por vértices em C, exceto, talvez, o próprio v A Figura 1 a seguir ilustra o significado do conjunto C edovalordist. CAMINHO DE CUSTO MÍNIMO Dados dois pontos A e B, em muitos problemas práticos fazemos 2 perguntas: 1. existe um caminho de A para B? ou 2. se existe mais de um caminho de A para B, qual deles é o mais

Leia mais

Análise de Algoritmos

Análise de Algoritmos Análise de Algoritmos Aula 04 Prof. Fernando Freitas Classes de Comportamento Assintótico Se f é uma função de complexidade para um algoritmo F, então O(f) é considerada a complexidade assintótica ou o

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

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

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

Comportamento assintótico

Comportamento assintótico ANÁLISE DE ALGORITMOS: PARTE 2 Prof. André Backes 2 Na última aula, vimos que o custo para o algoritmo abaixo é dado pela função f(n) = 4n + 3 1 3 Essa é a função de complexidade de tempo Nos dá uma ideia

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

2. Complexidade de Algoritmos

2. Complexidade de Algoritmos Introdução à Computação II 5952011 2. Complexidade de Algoritmos Prof. Renato Tinós Depto. de Computação e Matemática (FFCLRP/USP) 1 Principais Tópicos 2.1. Introdução 2.1.1. Revisão de Pseudo-Código 2.1.2.

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

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

Análise de Algoritmos

Análise de Algoritmos Análise de Algoritmos CLRS 2.2 e 3.1 AU 3.3, 3.4 e 3.6 Essas transparências foram adaptadas das transparências do Prof. Paulo Feofiloff e do Prof. José Coelho de Pina. Algoritmos p. 1 Intuitivamente...

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

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

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

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

Análise de Complexidade de Algoritmos

Análise de Complexidade de Algoritmos Análise de Complexidade de Algoritmos Algoritmos e Estruturas de Dados 2009/2010 Introdução Algoritmo: conjunto claramente especificado de instruções a seguir para resolver um problema Análise de algoritmos:

Leia mais

Otimização em Grafos

Otimização em Grafos Otimização em Grafos Luidi G. Simonetti PESC/COPPE 2017 Luidi Simonetti (PESC) EEL857 2017 1 / 33 Definição do Problema Dado: um grafo ponderado G = (V, E), orientado ou não, onde d : E R + define as distâncias

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

UNIVERSIDADE FEDERAL DO RIO DE JANEIRO DEPARTAMENTO DE CIÊNCIAS DA COMPUTAÇÃO. 4 a Lista de Exercícios Gabarito de algumas questões.

UNIVERSIDADE FEDERAL DO RIO DE JANEIRO DEPARTAMENTO DE CIÊNCIAS DA COMPUTAÇÃO. 4 a Lista de Exercícios Gabarito de algumas questões. UNIVERSIDADE FEDERAL DO RIO DE JANEIRO DEPARTAMENTO DE CIÊNCIAS DA COMPUTAÇÃO MATEMÁTICA COMBINATÓRIA 4 a Lista de Exercícios Gabarito de algumas questões. Este gabarito foi feito direto no computador

Leia mais

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

Introdução à Ciência da Computação II Introdução à Ciência da Computação II 2semestre/200 Prof Alneu de Andrade Lopes Apresentação com material gentilmente cedido pelas profas Renata Pontin Mattos Fortes http://wwwicmcuspbr/~renata e Graça

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

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

Análise e Projeto de Algoritmos

Análise e Projeto de Algoritmos Análise e Projeto de Algoritmos Mestrado em Ciência da Computação Prof. Dr. Aparecido Nilceu Marana Faculdade de Ciências I think the design of efficient algorithms is somehow the core of computer science.

Leia mais

ANÁLISE DE ALGORITMOS: PARTE 4

ANÁLISE DE ALGORITMOS: PARTE 4 ANÁLISE DE ALGORITMOS: PARTE 4 Prof. André Backes 2 Função recursiva Função que chama a si mesma durante a sua execução Exemplo: fatorial de um número N. Para N = 4 temos 4! = 4 * 3! 3! = 3 * 2! 2! = 2

Leia mais

Teoria da Computação Aula 9 Noções de Complexidade

Teoria da Computação Aula 9 Noções de Complexidade Teoria da Computação Aula 9 Noções de Complexidade Prof. Esp. Pedro Luís Antonelli Anhanguera Educacional Análise de um Algoritmo em particular Qual é o custo de usar um dado algoritmo para resolver um

Leia mais

ALGORITMOS AVANÇADOS Lista de Exercícios 01. Luiz Leão

ALGORITMOS AVANÇADOS Lista de Exercícios 01. Luiz Leão Lista de Exercícios 01 Luiz Leão luizleao@gmail.com http://www.luizleao.com Exercício 01 Qual a importância de estudarmos a complexidade dos algoritmos? Exercício 01 Resposta Qual a importância de estudarmos

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

Complexidade de algoritmos Notação Big-O

Complexidade de algoritmos Notação Big-O Complexidade de algoritmos Notação Big-O Prof. Byron Leite Prof. Tiago Massoni Engenharia da Computação Poli - UPE Motivação O projeto de algoritmos é influenciado pelo estudo de seus comportamentos Problema

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

Algoritmos e Programação I

Algoritmos e Programação I Algoritmos e Programação I Estruturas de Controle e Repetição Prof. Fernando Maia da Mota mota.fernandomaia@gmail.com CPCX/UFMS Fernando Maia da Mota 1 Estruturas de Controle Uma vez que a expressão condicional

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

Elementos de Análise Assintótica

Elementos de Análise Assintótica Elementos de Análise Assintótica Marcelo Keese Albertini Faculdade de Computação Universidade Federal de Uberlândia 23 de Março de 2018 Aula de hoje Nesta aula veremos: Elementos de Análise Assintótica

Leia mais

Algoritmos - 3. Alexandre Diehl. Departamento de Física - UFPel

Algoritmos - 3. Alexandre Diehl. Departamento de Física - UFPel Algoritmos - 3 Alexandre Diehl Departamento de Física - UFPel Estrutura sequencial Estrutura condicional Estrutura de repetição PCF2017 2 Estrutura sequencial As ações ao longo do algoritmo são executadas

Leia mais

ANÁLISE DE ALGORITMOS: PARTE 1. Prof. André Backes. Como resolver um problema no computador? Precisamos descrevê-lo de uma forma clara e precisa

ANÁLISE DE ALGORITMOS: PARTE 1. Prof. André Backes. Como resolver um problema no computador? Precisamos descrevê-lo de uma forma clara e precisa ANÁLISE DE ALGORITMOS: PARTE 1 Prof. André Backes Algoritmos 2 Como resolver um problema no computador? Precisamos descrevê-lo de uma forma clara e precisa Precisamos escrever o seu algoritmo Um algoritmo

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

Melhores momentos AULA PASSADA. Complexidade Computacional p. 136

Melhores momentos AULA PASSADA. Complexidade Computacional p. 136 Melhores momentos AULA PASSADA Complexidade Computacional p. 136 Configurações controle q 7 cabeça 1 0 1 1 0 1 1 1 fita de leitura e escrita Configuração 1 0 1q 7 1 0 1 1 1 Complexidade Computacional p.

Leia mais

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

Técnicas de Programação III Análise de Algoritmos (Continuação) Técnicas de Programação III Análise de Algoritmos (Continuação) Aula ministrada em: 23/08/2007 Prof. Mauro L. C. Silva 1/10 Objetivos da Aula Entender a Análise e a Complexidade de Algoritmos 2/10 Avaliação

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

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

Complexidade de Tempo

Complexidade de Tempo Complexidade de Tempo 1 Complexidade de Tempo Quando um problema é decidível, ele pode não ser solúvel na prática se a solução requer uma quantidade excessiva de tempo ou memória Medindo a complexidade

Leia mais

Análise de Algoritmos

Análise de Algoritmos Análise de Algoritmos Tempo e Espaço Exemplos Notação O( ) Análise de Algoritmos Como obter a solução de um problema? Especificação do problema: descrição da relação entre os valores de entrada e os de

Leia mais

Melhores momentos AULA PASSADA. Complexidade Computacional p. 205

Melhores momentos AULA PASSADA. Complexidade Computacional p. 205 Melhores momentos AULA PASSADA Complexidade Computacional p. 205 MT multifita por MT fita única Duas máquinas são equivalentes se elas reconhecem a mesma linguagem. Teorema. Dada uma máquina de Turing

Leia mais

PUC-GOIÁS - Departamento de Computação

PUC-GOIÁS - Departamento de Computação PUC-GOIÁS - Departamento de Computação Fundamentos IV/Enfase Clarimar J. Coelho Goiânia, 28/05/2014 O que é interpolação polinomial? Ideia básica Permite construir um novo conjunto de dados a partir de

Leia mais

Espaço amostral Ω: Conjunto enumerável de todos os possíveis resultados de um experimento aleatório. um evento elementar. E = E[X j ] X j.

Espaço amostral Ω: Conjunto enumerável de todos os possíveis resultados de um experimento aleatório. um evento elementar. E = E[X j ] X j. Universidade Tecnológica Federal do Paraná Professor Murilo V G da Silva Notas de aula Algoritmos Avançados I (Aula 04 Conteúdos da aula: [CLR09: cap 7 e 9][MIE05 4, 5] Vamos estudar nesta aula três algoritmos

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

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

Nem todos os problemas algorítmicos que podem ser resolvidos em princípio podem ser resolvidos na prática: os recursos computacionais requeridos Nem todos os problemas algorítmicos que podem ser resolvidos em princípio podem ser resolvidos na prática: os recursos computacionais requeridos (tempo ou espaço) podem ser proibitivos. 1 Suponha que duas

Leia mais

Algoritmos Avançados Análise de Complexidade

Algoritmos Avançados Análise de Complexidade CCAE Centro de Ciências Aplicadas e Educação UFPB - Campus IV - Litoral Norte Algoritmos Avançados Análise de Complexidade COMPLEXIDADE DE ALGORITMOS Definição: A Complexidade de um Algoritmo consiste

Leia mais

Resposta da pergunta 2: Θ(n 3 ). Resposta da pergunta 8: 1. 7 O(n). Sim. 22. n log n O(1). Não. 3. n + 7 O(n). Sim. 4. n + 7 O(1). Não.

Resposta da pergunta 2: Θ(n 3 ). Resposta da pergunta 8: 1. 7 O(n). Sim. 22. n log n O(1). Não. 3. n + 7 O(n). Sim. 4. n + 7 O(1). Não. SSC0503 - Introdução à Ciência de Computação II Respostas da 1 a Lista Professor: Claudio Fabiano Motta Toledo (claudio@icmc.usp.br) Estagiário PAE: Jesimar da Silva Arantes (jesimar.arantes@usp.br) Resposta

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 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

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

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

Projeto e Análise de Algoritmos

Projeto e Análise de Algoritmos Projeto e Análise de Algoritmos Aula 10 Métodos de Ordenação de Complexidade Linear Edirlei Soares de Lima Ordenação Problema: Entrada: conjunto de itens a 1, a 2,..., a n ; Saída:

Leia mais

Universidade Federal de Alfenas

Universidade Federal de Alfenas Universidade Federal de Alfenas Projeto e Análise de Algoritmos Aula 06 Notação O humberto@bcc.unifal-mg.edu.br Tempo de execução (ms) Última aula teórica Análise experimental 45 40 35 30 25 20 15 10 5

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

Algoritmos e Programação

Algoritmos e Programação Algoritmos e Programação Aula 5 Estruturas de Repetição Profa. Marina Gomes marinagomes@unipampa.edu.br 26/04/2017 Engenharia de Computação - Unipampa 1 Aula de Hoje Estrutura de repetição Comando for

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 1 Introdução Complexidade computacional Termo criado por Juris Hartmanis e Richard Stearns (1965) Relação entre o tamanho do problema e

Leia mais

Análise e Projeto de Algoritmos

Análise e Projeto de Algoritmos Análise e Projeto de Algoritmos Prof. Eduardo Barrére www.ufjf.br/pgcc www.dcc.ufjf.br eduardo.barrere@ice.ufjf.br www.barrere.ufjf.br Consumo de tempo assintótico Seja A um algoritmo para um problema

Leia mais

Definimos a soma de seqüências fazendo as operações coordenada-a-coordenada:

Definimos a soma de seqüências fazendo as operações coordenada-a-coordenada: Aula 8 polinômios (Anterior: chinês. ) 8.1 séries formais Fixemos um anel A. Denotaremos por A N o conjunto de todas as funções de N = {, 1, 2,... } a valores em A. Em termos mais concretos, cada elemento

Leia mais