Análise e Projeto de Algoritmos
|
|
|
- Jerónimo Veiga Neiva
- 9 Há anos
- Visualizações:
Transcrição
1 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. It s at the center of our field. Donald Knuth Bauru Porquê o estudo da Complexidade? Objetivo do curso: Enfatizar a eficiência como critério para projeto de algoritmos Muitas vezes as pessoas quando começam a estudar algoritmos perguntam-se qual a necessidade de desenvolver novos algoritmos para problemas que já têm solução. Porquê o estudo da Complexidade? A performance é extremamente importante na Informática, pois Complexidade de Tempo log 2 n Tamanho máximo de problema resolvível na máquina lenta x 0 Tamanho máximo de problema resolvível na máquina 10 vezes mais rápida (x 0 ) 10 existe uma necessidade constante de melhorar os algoritmos. n x 1 10 x 1 Apesar de parecer contraditório, com o aumento da velocidade n log 2 n x 2 10 x 2 (para x 2 grande) dos computadores, torna-se cada vez mais importante n 2 x 3 3,16 x 3 desenvolver algoritmos mais eficientes, devido ao aumento constante do "tamanho" dos problemas a serem resolvidos. n 3 2 n 3 n x 4 x 5 x 6 2,15 x 4 x 5 + 3,3 x 6 + 2,09
2 Problema: é simplesmente uma tarefa a ser executada; é uma função ou associação de entradas com saídas. Algoritmo: é um método ou um processo usado para resolver um problema. Programa: é uma instanciação de um algoritmo em uma linguagem de programação computacional. DEFINIÇÕES: Quando estudamos algoritmos, um aspecto que devemos considerar, além de sua correção, é a sua análise de eficiência. A análise de algoritmos pode ser definida como o estudo da estimativa de recursos (tempo, espaço, etc) consumidos pelos algoritmos. Analisar um algoritmo significa prever os recursos que o algoritmo necessitará (Cormen, et al. 2001). Análise de algoritmos significa, também, estimar o grau de dificuldade dos problemas. Análise de Algoritmos: Correção de algoritmos
3 Correção de algoritmos Correção de algoritmos Análise de Algoritmos: Análise de Algoritmos: empírica Análise de Algoritmos: empírica Análise de Algoritmos: empírica
4 Análise de Algoritmos: Estrutura de análise de algoritmos: Estrutura de análise de algoritmos: Tamanho da entrada: Tempo de execução: Eficiência de algoritmos:
5 EM ANÁLISE DE ALGORITMOS ESTUDAMOS: O conceito de taxa de crescimento de funções; O conceito de limite superior e inferior de uma taxa de crescimento, e como estimar estes limites para um algoritmo ou problema; e A diferença entre o custo de um algoritmo e o custo de um problema. FERRAMENTAS MATEMÁTICAS EXIGIDAS: Análise Combinatória; Teoria das probabilidades; Destreza matemática: Indução Matemática; Séries e Produtórios; Potências e Logaritmos, etc. PARA QUE UTILIZAMOS A ANÁLISE DE ALGORITMOS? Para saber se os algoritmos são viáveis; Para saber qual é o melhor algoritmo para a resolução do problema; Para projetar algoritmos mais eficientes. CUSTO DO ALGORITMO Quando analisamos um algoritmo nós desejamos saber qual é o seu custo. CUSTO DO ALGORITMO Para sabermos do custo nós necessitamos: Prever a quantidade de recursos (memória - complexidade de espaço, e tempo de execução - complexidade de tempo); Do modelo de tecnologia adotado para a sua implementação. MODELO DE COMPUTAÇÃO Ao invés de escolher uma máquina particular, em relação a qual a eficiência dos algoritmos seria avaliada, é certamente mais conveniente utilizar-se de um modelo matemático de um computador.
6 MODELO DE COMPUTAÇÃO Modelo adotado: (modelo RAM) as operações são todas executadas seqüencialmente; a execução de toda e qualquer operação toma uma unidade de tempo; a memória é infinita. TEMPO DE EXECUÇÃO O tempo de execução de um algoritmo sobre uma particular entrada de dados é o número de operações primitivas ou passos executados. Exemplos de operações: adição, subtração, multiplicação, comparação,... TEMPO DE EXECUÇÃO O tempo de execução (custo) é expresso em função do tamanho da entrada de dados. Custo = T(n): é a medida de tempo necessário para executar um algoritmo para um problema de tamanho n. EXEMPLOS DE COMPLEXIDADE DE TEMPO Vamos tomar dois algoritmos de ordenação e analisar a quantidade de certas operações que são executadas por cada algoritmo: Primeiro Caso: Bubblesort (algoritmo da bolha) Segundo Caso: Seleção Direta EXEMPLOS DE COMPLEXIDADE DE TEMPO Bubblesort é o mais primitivo dos métodos de ordenação de um vetor. A idéia é percorrer um vetor de n posições n vezes, a cada vez comparando dois elementos e trocando-os caso o primeiro seja maior que o segundo. OrdenaBolha Inteiro i, j, x, a[n] inicio para i de 1 até n faça para j de 2 até n faça se (a[j-1]>a[j]) então x a[j-1]; a[j-1] a[j]; a[j] x; fim se fim para fim para fim
7 Bubblesort A comparação (a[j-1]>a[j]) vai ser executada n(n-1) vezes. No caso de um vetor na ordem inversa, as operações de atribuição poderão ser executadas até 3((n-1)+(n-2) )=3n(n-1)/2 vezes, já que uma troca de elementos não significa que um dos elementos trocados tenha encontrado o seu lugar definitivo. EXEMPLOS DE COMPLEXIDADE DE TEMPO Seleção Direta é uma forma intuitiva de ordenar um vetor. Primeiramente, escolhemos o menor elemento do vetor e o trocamos de posição com o primeiro. Depois, começamos do segundo e escolhemos novamente o menor dentre os restantes e o trocamos de posição com o segundo e assim por diante. SeleçãoDireta Inteiro i, j, x, a[n] Inicio para i de 1 até n-1 faça k i; x a[i]; para j de i+1 até n faça se (a[j]<x) então k j; x a[k]; fim se fim para a[k] a[i]; a[i] x; fim para fim Seleção Direta Neste algoritmo o número de vezes que a comparação (a[j] < x) é executada no pior caso é igual a (n-1)+(n- 2) =[n(n-1)]/2. O número de trocas (a[k] a[i]; a[i] x) realizado no pior caso é igual a 2(n-1). O pior caso acontece quando o maior elemento está na primeira posição e o restante já está ordenado. INTERPRETAÇÃO Observe que os dois exemplos considerados foram contabilizados os números de comparações e de trocas. Estes dois parâmetros foram tomados como critérios para comparar para comparar os dois algoritmos de ordenação. INTERPRETAÇÃO Como já foi dito, a única forma de se poder comparar dois algoritmos é descrevendo o seu comportamento temporal/espacial em função do tamanho do conjunto de dados de entrada.
8 Assim, se tomarmos as operações de troca de valores como critério para calcular a eficiência dos algoritmos, podemos dizer que: Custo Bubblesort T(n) = 3n(n-1)/2= 1,5n 2 1,5n para o pior caso; Custo Seleção Direta T(n)= 2(n-1)= 2n 2 para o pior caso. Note que nos dois exemplos foram tomados como medida de desempenho a quantidade de operações de trocas, mas em análise de algoritmos nós não nos prendemos somente a este aspecto. COMPARAÇÃO DE ALGORITMOS Vamos supor que nós temos dois algoritmos a e b para a solução de um problema. Se a complexidade de um é expressa por T a (n) = n 2 e a do outro por T b (n) = 100.n. Isto significa que o algoritmo a cresce quadraticamente (uma parábola) e que o algoritmo b cresce linearmente (embora seja uma reta bem inclinada). 16 x T a (n) = n 2 T b (n) = 100.n COMPARAÇÃO DE ALGORITMOS É interessante saber como o algoritmo se comporta com uma quantidade de dados realística para o problema e o que acontece quanto esta quantidade varia. A eficiência do algoritmo torna-se muito importante quando o problema a ser resolvido é de grande dimensão, ou seja, problemas definidos por grande quantidades de dados. TIPOS DE ANÁLISE Não estamos interessados somente no tempo de execução geral, estamos também interessados nos extremos: Pior caso significa o tempo máximo de execução. Caso médio tempo médio de execução para todo tipo de entrada possível. Neste caso é necessário conhecer a distribuição estatística dos dados de entrada. Melhor caso - resultado do menor tempo possível.
9 Pior Caso Este método é normalmente representado por O ( ). Se dissermos que um determinado algoritmo é representado por g(x) e a sua complexidade Pior Caso é n, será representada por g(x) = O(n). Consiste basicamente em assumir o pior dos casos que podem acontecer, sendo muito usado e sendo normalmente o mais fácil de determinar. Exemplo: Se existirem cinco baús, sendo que apenas um deles tem algo dentro e os outros estão vazios, a complexidade pior caso será O(5), pois no pior dos casos acerta-se o baú cheio na quinta tentativa. Representa-se por Ω ( ). Melhor Caso Método que consiste em assumir que vai acontecer o melhor. Pouco usado. Tem aplicação em poucos casos. Exemplos: Se tivermos uma lista de números e quisermos encontrar algum deles assume-se que a complexidade melhor caso é Ω (1), pois o número pode estar logo na cabeça da lista. Caso Médio Representa-se por θ( ). Este método é o mais difícil de determinar, pois necessita de análise estatística e, portanto, de muitos testes. No entanto, é muito usado, pois é também o que representa mais corretamente a complexidade do algoritmo. TIPOS DE ANÁLISE Freqüência de utilização de cada um dos casos: Pior caso a maioria das vezes; Caso médio algumas vezes, mas nem sempre é possível; Melhor caso raramente utilizado é bom para mostrar que o tempo mínimo de um algoritmo é ruim. TIPOS DE ANÁLISE TIPOS DE ANÁLISE
10 Exemplo: Pesquisa Seqüencial Problema: encontrar um valor específico dentro de uma seqüência de valores. Algoritmo: Pesquisa Seqüencial 1. melhor caso : T(n)=1 (quantidade de comparações) 2. pior caso: T(n)= n 3. caso médio: T(n)=(n+1)/2 T(n)= 1 p(1) + 2 p(2) + 3 p(3) n p(n); P(i) = 1/n se cada registro tem a mesma probabilidade de ser selecionado. Portanto T(n) = (1/n) ( n) = (1/n) [(n+1)(n/2)] = (n+1)/2 Soma de uma progressão aritmética: (a 1 + a n )(n/2). Observações: Observações: 1. Em análise de algoritmos normalmente nos concentramos no tempo de execução do pior caso, pois esta é a situação crítica na execução de um algoritmo. 2. Na vida real nós descobrimos que o tempo do caso médio, embora seja bastante útil conhecê-lo, freqüentemente não é melhor que o pior caso. Sem contar que o cálculo do tempo para o caso médio normalmente é bem mais complexo. COMPLEXIDADE LOCAL (linha por linha) COMPLEXIDADE LOCAL (linha por linha) A análise de complexidade local de um algoritmo procura estimar seu tempo de execução baseado na quantidade operações primitivas que o algoritmo executa. A análise é realizada para cada linha do algoritmo, contabilizando o número de operações primitivas. Essa análise nos fornece uma função matemática expressando o total de operações com base no tamanho do problema (tamanho n) e o custo (valor constante) de cada operação.
11 COMPLEXIDADE LOCAL (linha por linha) Exemplo: Algoritmo de ordenação por inserção. COMPLEXIDADE LOCAL (linha por linha) Exemplo: Algoritmo de ordenação por inserção. COMPLEXIDADE LOCAL (linha por linha) Exemplo: Algoritmo de ordenação por inserção. COMPLEXIDADE LOCAL (linha por linha) Exemplo: Algoritmo de ordenação por inserção. COMPLEXIDADE LOCAL (linha por linha) Exemplo: Algoritmo de ordenação por inserção. COMPLEXIDADE LOCAL (linha por linha) Exemplo: Algoritmo de ordenação por inserção.
12 COMPLEXIDADE LOCAL (linha por linha) COMPLEXIDADE ASSINTÓTICA Exemplo: Algoritmo de ordenação por inserção. Pior Caso: T(n)= an 2 + bn + c Caso Médio: T(n)= an 2 + bn + c Melhor Caso: T(n)= an + b A análise assintótica de algoritmos é uma forma de estimar o custo (tempo/espaço) de um algoritmo com base no comportamento assintótico de sua função custo. COMPLEXIDADE ASSINTÓTICA COMPLEXIDADE ASSINTÓTICA Em análise assintótica as constantes multiplicativas e termos de menor ordem são ignorados e é adotada uma notação matemática específica para representar a complexidade o algoritmo. Exemplo: T(n)= 3n 3 +2n = Θ(n 3 ) Embora seja possível encontrar outras abordagem técnicas para análise de algoritmos, a análise assintótica é abordagem mais utilizada e encontrada na literatura. COMPLEXIDADE ASSINTÓTICA Uma tarefa freqüente em análise assintótica de algoritmos é a comparação de funções matemáticas. Assim, é muito importante a familiarização com muitas dessas funções e as relações de comportamento assintótico entre elas. Principais Funções: Ilustração de algumas funções que normalmente aparecem em análise de algoritmos.
13 Exemplo: Considere 5 algoritmos A 1 a A 5, de complexidades diferentes, para resolver um mesmo problema e suponha que uma operação leva 1 ms para ser efetuada. n A 1 T 1 (n)= n 0.016s 0.032s 0.512s A 2 T 2 (n)=nlog n 0.064s 0.16s 4.6s A 3 T 3 (n)=n s 1s 4m22s A 4 T 4 (n)=n 3 4s 33s 1 Dia 13h A 5 T 5 (n)=2 n 1m4s 49 Dias Séculos
14
15
16
17 Limite Superior (Upper Bound) Dado um problema, por exemplo, a multiplicação de duas matrizes quadradas de ordem n (n*n). Conhecemos um algoritmo para resolver este problema(pelo método trivial) de complexidade O(n 3 ). Sabemos assim que a complexidade deste problema não deve superar O(n 3 ), uma vez que existe um algoritmo desta complexidade que o resolve. Limite Superior (Upper Bound) O limite superior de um algoritmo pode mudar se alguém descobrir um algoritmo melhor. Isso de fato aconteceu com o algoritmo de Strassen que é de O(n log 7 ). Assim o limite superior do problema de multiplicação de matrizes passou a ser O(n log 7 ). Outros pesquisadores melhoraram ainda este resultado. Atualmente, o melhor resultado é o de Coppersmith e Winograd de O(n ). Limite Superior (Upper Bound) O limite superior de um algoritmo é parecido com o recorde mundial de uma modalidade de atletismo. Ela é estabelecida pelo melhor atleta (algoritmo) do momento. Assim como o recorde mundial o limite superior pode ser melhorado por um algoritmo (atleta) mais veloz. Limite Inferior (Lower Bound) Às vezes é possível demonstrar que para um dado problema, qualquer que seja o algoritmo a ser usado, o problema requer pelo menos um certo número de operações. Essa complexidade é chamada Limite Inferior (Lower Bound). O limite inferior depende do problema, mas não do particular algoritmo. Usamos a letra Ω para denotar um limite inferior. Limite Inferior (Lower Bound) Para o problema de multiplicação de matrizes de ordem n, apenas para ler os elementos das duas matrizes de entrada leva O(n 2 ). Assim uma cota inferior trivial é Ω(n 2 ).
18 Limite Inferior (Lower Bound) Na analogia anterior, um limite inferior de uma modalidade de atletismo não dependeria mais do atleta. Seria algum tempo mínimo que a modalidade exige, qualquer que seja o atleta. Um limite inferior trivial para os 100 metros seria o tempo que a velocidade da luz leva a percorrer 100 metros no vácuo. Limite Inferior (Lower Bound) Se um algoritmo tem uma complexidade que é igual ao limite inferior do problema então o algoritmo é ótimo. O algoritmo de CopperSmith e Winograd é de O(n ), mas o limite inferior é de Ω(n 2 ). Portanto, não é ótimo. Pode ser que este limite superior possa ainda ser melhorado. Exercícios Exercícios Exercícios Exercícios
19 Exercícios Exercícios Exercícios Exercícios Recorrência
20
21
22
23
24
25
ALGORITMOS AVANÇADOS UNIDADE I Análise de Algoritmo - Notação O. Luiz Leão
Luiz Leão [email protected] 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
Complexidade de Algoritmos
Complexidade de Algoritmos Complexidade de Algoritmos Definição A Complexidade de um Algoritmo consiste na quantidade de trabalho necessária para a sua execução, expressa em função das operações fundamentais,
Projeto e Análise de Algoritmos. Introdução. Prof. Ademir Constantino Universidade Estadual de Maringá Departamento de Informática
Projeto e Análise de Algoritmos Introdução Prof. Ademir Constantino Universidade Estadual de Maringá Departamento de Informática Projeto e Análise de Algoritmos Eu penso que o projeto de algoritmos eficientes
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
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
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
Complexidade de Tempo e Espaço
Complexidade de Tempo e Espaço Profa. Sheila Morais de Almeida DAINF-UTFPR-PG junho - 2018 Sheila Almeida (DAINF-UTFPR-PG) Complexidade de Tempo e Espaço junho - 2018 1 / 43 Este material é preparado usando
Teoria dos Grafos. Valeriano A. de Oliveira Socorro Rangel Departamento de Matemática Aplicada.
Teoria dos Grafos Valeriano A. de Oliveira Socorro Rangel Departamento de Matemática Aplicada [email protected], [email protected] Grafos e Algoritmos Preparado a partir do texto: Rangel, Socorro.
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
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
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
01 Análise de Algoritmos (parte 2) SCC201/501 - Introdução à Ciência de Computação II
01 Análise de Algoritmos (parte 2) SCC201/501 - Introdução à Ciência de Computação II Prof. Moacir Ponti Jr. www.icmc.usp.br/~moacir Instituto de Ciências Matemáticas e de Computação USP 2010/2 Moacir
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
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 [email protected]
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
Complexidade de Algoritmos
MAC 5710 - Estruturas de Dados - 2008 Objetivo de estudar complexidade de algoritmos Por que analisar a complexidade dos algoritmos? A preocupação com a complexidade de algoritmos é fundamental para projetar
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
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)
03 Análise de Algoritmos (parte 3) SCC201/501 - Introdução à Ciência de Computação II
03 Análise de Algoritmos (parte 3) SCC201/501 - Introdução à Ciência de Computação II Prof. Moacir Ponti Jr. www.icmc.usp.br/~moacir Instituto de Ciências Matemáticas e de Computação USP 2010/2 Moacir
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
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
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
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
Teoria da Computação Aula 8 Noções de Complexidade
Teoria da Computação Aula 8 Noções de Complexidade Prof. Esp. Pedro Luís Antonelli Anhanguera Educacional Motivação: Por que estudar algoritmos? Perguntas: - Por que estudar algoritmos se os computadores
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:
Análise de algoritmos Parte I
Parte I SCE-8 Introdução à Ciência da Computação II Rosane Minghim Algoritmo Noção geral: conjunto de instruções que devem ser seguidas para solucionar um determinado problema Cormen et al. (2002) Qualquer
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
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
É 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
Algoritmos de Ordenação
Algoritmos de Ordenaçã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 [email protected] 10/2008 Material baseado em
Algoritmos e Estruturas de Dados I Prof. Tiago Eugenio de Melo
Algoritmos e Estruturas de Dados I Prof. Tiago Eugenio de Melo [email protected] www.tiagodemelo.info Observações O conteúdo dessa aula é parcialmente proveniente do Capítulo 11 do livro Fundamentals of
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
Projeto e Análise de Algoritmos
Projeto e Algoritmos Pontifícia Universidade Católica de Minas Gerais [email protected] 26 de Maio de 2017 Sumário A complexidade no desempenho de Quando utilizamos uma máquina boa, ela tende a ter
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
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 ([email protected]) Estagiário PAE: Jesimar da Silva Arantes ([email protected]) 1. O que significa
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
Teoria da computabilidade Indecidíveis Decidíveis
Bacharelado em Ciência da Computação Disciplina: Algoritmos e Estruturas de Dados I Professor: Mário Luiz Rodrigues Oliveira Teoria da computabilidade Indecidíveis Decidíveis Teoria da complexidade Intratáveis:
Algoritmos de Ordenação
Algoritmos de Ordenação Introdução à Ciência da Computação Prof. Edison Ishikawa Objetivo Apresentar diferentes algoritmos de ordenação de dados Mostrar como analisar os algoritmos em termos de tempo de
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)
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
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
Aula 03: Análise de algoritmos melhor caso, pior caso e caso médio
Aula 03: Análise de algoritmos melhor caso, pior caso e caso médio 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
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
Análise e Projeto de Algoritmos
Análise e Projeto de Algoritmos Prof. Eduardo Barrére www.ufjf.br/pgcc www.dcc.ufjf.br [email protected] www.barrere.ufjf.br Consumo de tempo assintótico Seja A um algoritmo para um problema
a complexidade no desempenho de algoritmos
capítulo 1 introdução Os algoritmos são o cerne da computação. Este capítulo introdutório procura ressaltar a importância da complexidade e dos métodos de projeto e análise de algoritmos. Partindo da ideia
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
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
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
Técnicas de Projeto de Algoritmos
UNIVERSIDADE NOVE DE JULHO - UNINOVE Pesquisa e Ordenação Técnicas de Projeto de Algoritmos Material disponível para download em: www.profvaniacristina.com Profa. Vânia Cristina de Souza Pereira 03 _ Material
Análise de complexidade
Introdução Algoritmo: sequência de instruções necessárias para a resolução de um problema bem formulado (passíveis de implementação em computador) Estratégia: especificar (definir propriedades) arquitectura
Análise e Projeto de Algoritmos
Análise e Projeto de Algoritmos Prof. Eduardo Barrére www.ufjf.br/pgcc www.dcc.ufjf.br [email protected] www.barrere.ufjf.br Solução de recorrências Para analisar o consumo de tempo de um algoritmo
Análise e Projeto de Algoritmos
Análise e Projeto de Algoritmos Prof. Eduardo Barrére www.ufjf.br/pgcc www.dcc.ufjf.br [email protected] www.barrere.ufjf.br A Disciplina... Lecionada por dois professores: Eduardo Barrére Foco
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.
Algoritmos de Ordenação. Cota inferior. Professora: Fátima L. S. Nunes SISTEMAS DE INFORMAÇÃO
Algoritmos de Ordenação Cota inferior Professora: Fátima L. S. Nunes 1 1 1 Algoritmos de Ordenação Algoritmos de ordenação que já conhecemos: 2 2 2 Algoritmos de Ordenação Algoritmos de ordenação que já
ESTRUTURAS DE DADOS prof. Alexandre César Muniz de Oliveira
ESTRUTURAS DE DADOS prof. Alexandre César Muniz de Oliveira 1. Introdução 2. Pilhas 3. Filas 4. Listas 5. Árvores 6. Grafos 7. Complexidade 8. Ordenação 9. Busca Sugestão bibliográfica: ESTRUTURAS DE DADOS
Introdução à Ciência da Computação II
Introdução à Ciência da Computação II Análise de Algoritmos: Parte I Prof. Ricardo J. G. B. Campello Este material consiste de adaptações e extensões de slides disponíveis em http://ww3.datastructures.net
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
Princípio da Multiplicação Gerando todas as palavras de um alfabeto. > Princípios de Contagem e Enumeração Computacional 0/18
Conteúdo 1 Princípios de Contagem e Enumeração Computacional Princípio da Multiplicação Gerando todas as palavras de um alfabeto Permutações > Princípios de Contagem e Enumeração Computacional 0/18 Objetivos
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
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
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);
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
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
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
Projeto e Análise de Algoritmos Análise de Complexidade. Prof. Luiz Chaimowicz
Projeto e Análise de Algoritmos Análise de Complexidade Prof. Luiz Chaimowicz AGENDA Modulo 1 Data Assunto Capítulos 05/03 Algoritmos / Invariantes / Intro Análise de Complexidade 07/03 Não Haverá Aula
Teoria dos Grafos Aula 7
Teoria dos Grafos Aula 7 Aula passada Implementação BFS DFS, implementação Complexidade Aplicações Aula de hoje Classe de funções e notação Propriedades da notação Funções usuais Tempo de execução Comparando
Algoritmos de Ordenação: Cota Inferior
Algoritmos de Ordenação: Cota Inferior 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 [email protected] 10/2008 Material
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
Á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 :
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
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
Análise empírica de algoritmos de ordenação
Análise empírica de algoritmos de ordenação Mario E. Matiusso Jr. (11028407) Bacharelado em Ciências da Computação Universidade Federal do ABC (UFABC) Santo André, SP Brasil mario3001[a]ig.com.br Resumo:
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
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
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
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
Análise e Técnicas de Algoritmos
Análise e Técnicas de Algoritmos Prof. Jorge Figueiredo http://www.dsc.ufcg.edu.br/~abrantes/atal032.html Jorge Figueiredo Aula 1-1 Agenda Apresentação do curso Motivação Introdução informal Jorge Figueiredo
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
5. Análise de Complexidade de Algoritmos. João Pascoal Faria (versão original) Ana Paula Rocha (versão 2003/2004) Luís Paulo Reis (versão 2005/2006)
5. Análise de Complexidade de Algoritmos João Pascoal Faria (versão original) Ana Paula Rocha (versão 2003/2004) Luís Paulo Reis (versão 2005/2006) FEUP - MIEEC Prog 2-2006/2007 Introdução Algoritmo: conjunto
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
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
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 [email protected] 10/2008 Material
