Introdução à Ciência da Computação II
|
|
|
- Lucinda Cordeiro Carreira
- 7 Há anos
- Visualizações:
Transcrição
1 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 e Graça Nunes : Ordens de Magnitude Definição de Ordem Relação entre as Ordens Quem é o parâmetro N? Upper e Lower Bounds Análise de Algoritmos X Análise de Classes de Algoritmos Classes de Problemas P e NP Fonte: Critérios para o julgamento de um programa: Ele faz exatamente o que queremos que faça? Ele o faz corretamente, de acordo com as especificações originais da tarefa? Há uma documentação que descreva como usá-lo e como ele trabalha? As sub-rotinas são criadas de tal modo que realizem sub-funções lógicas? O código é legível? Eficiência Ele é executado em tempo ótimo de execução? Ele usa espaço de memória mínimo necessário para sua execução? Critérios vitais quando se constrói software Os critérios: Ele é executado em tempo ótimo de execução? Ele usa espaço de memória mínimo necessário para sua execução? têm relação com a performance do programa A avaliação da performance pode ser dividida em duas fases: (a) estimativas prévias e (b) testes posteriores 1
2 Estimativas Prévias: Suponha a existência de um comando x = x + 1 em algum lugar do programa Queremos estimar: (1) o tempo que tomará uma única execução sua, e (2) o número de vezes que ele será executado O produto desses valores nos dará o tempo total gasto pelo comando A estatística (2) é chamada de Contagem de Freqüência, e ela pode variar de um conjunto de dados para outro Assim, é necessário escolher amostras adequadas de dados para se estimar a freqüência Quanto a (1), é impossível determinar exatamente quanto tempo leva para executar qualquer comando, a menos que tenhamos informações como: a máquina em que o programa está sendo executado; o conjunto de instruções da linguagem de máquina; o tempo gasto por cada instrução de máquina; a tradução que o compilador fará da LFonte para a LMáquina E mesmo assim, isso é insuficiente, pois: Exemplos compiladores podem variar em diferentes máquinas; imprevisibilidade de ambientes de multiprogramação, multiprocessamento ou processamento distribuído x = x + 1 for (i = 1; i<=n; i++) x = x + 1 for (i = 1; i<=n; i++) for (j = 1; j<=n; j++) x = x + 1 Assim, vamos nos limitar a considerar apenas a contagem de freqüência de todos os comandos de um programa Além disso, vamos considerar um tempo constante para todo comando (a) Freq(a) = 1 (b) Freq(b) = n (c) Freq(c) = n 2 2
3 1, n e n 2 são ordens de magnitude diferentes e crescentes, assim como 1, 10, 100 seriam, se fizéssemos n=10 Fórmulas Úteis Σ 1 i n (1) =? Σ 1 i n (i) =? Em nossa análise, estaremos interessados principalmente em determinar a ordem de magnitude de um algoritmo, o que significa que estaremos preocupados com os comandos mais freqüentes Σ 1 i n (i2 ) = n(n+1)(2n+1) ordem n 3 Em geral, Σ 1 i n (ik ) = n k+1 + termos de menor grau, k+1 k 0 Fórmulas Úteis Σ 1 i n (1) = n Σ 1 i n (i) = n(n+1) ordem n2 2 Σ 1 i n (i2 ) = n(n+1)(2n+1) ordem n 3 Em geral, Σ 1 i n (ik ) = n k+1 + termos de menor grau, k+1 k 0 Exemplo No Exemplo de Fibonacci: fib(n): início x, y, k 0,1,0 (3) enquanto k < n (n+1) faça x, y, k y, x + y, k + 1; (5*n) devolva x fim Este procedimento executa apenas n + 4 operações para calcular Fib(n) Expressamos esta freqüência como O(n), ignorando as constantes e 4, significando que a ordem de magnitude é proporcional a n Ou seja, conforme n cresce, o tempo gasto pelo algoritmo cresce linearmente em função de n 3
4 Definição de Ordem Ordem Ex a função 001n² + 10n é dita ser da ordem da função n², O(n²), pois quando ela cresce torna-se mais proximamente proporcional a n² Definição: f(n) = O(g(n)) se e só se existem duas constantes c e n 0 tal que f(n) c g(n), para todo n n 0 n é um parâmetro que caracteriza o tamanho da entrada e/ou a saída do algoritmo Isto é, a partir de um certo n0, f(n) não cresce mais que cg(n); ou f(n) tem o mesmo tipo de crescimento que g(n) Ex f(n) = n² + 100n, f(n) é O(n²) => c = 2, no = Seqüência1 Seqüência Seq1: n² + 100n Seq2: 2n² Definição de Ordem Relação entre as Ordens Obs: Relação entre as ordens O(1) - tempo constante O(log 2 n) - ordem logarítmica O(n) - ordem linear O(n 2 ) - ordem quadrática O(n 3 ) - ordem cúbica O(2 n ) - ordem exponencial 4
5 Relação entre as Ordens Função de Tamanho do problema n Complexidade log 2 n n nlog 2 n 033* * *105 n n n *10 30 > > n! 3*10 > > > Método Dado um algoritmo, calculamos a freqüência de seus comandos e fazemos a soma de todas elas A ordem de magnitude do algoritmo é dada pela ordem do(s) comando(s) mais freqüente(s) Assim, se a soma é dada por um polinômio: P(n) = c k n k + c k-1 n k-1 ++ c 1 n + c 0, onde c k 0, então P(n) = O(n k ) Mas, se algum passo for executado, por exemplo, 2 n vezes, a expressão passa a ser P(n) = O(2 n ) Quem é o Parâmetro N? Quem é o Parâmetro N? Considere o papel do parâmetro n nas seguintes classes de problemas: Encontrar o maior número de uma seqüência de n inteiros Resolver um conjunto de equações algébricas lineares Ax = b, onde A é uma matriz real n x n e b é um vetor real de tamanho n Seja W um array unidimensional de n inteiros distintos Ordenar as entradas de W em ordem crescente Avaliar o polinômio P n (x)= n k=0 a n-k x k quando x=x 0 Em cada um desses problemas, o parâmetro n provê uma medida do tamanho do problema no sentido de que o tempo requerido para solucioná-lo, ou o espaço de armazenamento necessário, ou ambos, serão incrementados conforme n aumenta A ordem de magnitude dará exatamente a proporção em que ocorre esse incremento Na verdade, O( ) nos dá o limitante superior do recurso (tempo ou espaço) necessário para o algoritmo 5
6 Upper e Lower Bounds Upper e Lower Bounds A análise do algoritmo nos fornece um limite superior (upper bound) para a quantidade de recursos que é suficiente para resolver um problema Para saber se e quanto podemos melhorar este algoritmo, no entanto, precisamos estabelecer um limite inferior (lower bound) na quantidade de recursos necessários, ou seja, qual a quantidade mínima necessária de recursos para a resolução do problema Idealmente, os dois limites, inferior e superior, deveriam ser iguais, pois neste caso conheceríamos exatamente a quantidade de recursos que é tanto necessária quanto suficiente para resolver um problema Se dispusermos de um algoritmo que utilize exatamente esta quantidade de recursos, então, teremos um algoritmo ótimo para a tarefa, no sentido de que a quantidade de recursos utilizada por qualquer outro algoritmo para a tarefa será maior, ou no melhor caso igual à do algoritmo que temos A diferença entre o limite inferior e o superior nos dá uma medida de quanto um algoritmo pode ser melhorado Nem sempre, no entanto, é possível se construir algoritmos ótimos Análise de Algoritmos X Análise de Classes de Algoritmos Objetivo: Identificar o "melhor algoritmo possível" da família de algoritmos que solucionam um determinado problema Exemplo1: Ordenação de n elementos (memória interna) Critério: tempo de execução medido pelo número C de comparações entre chaves Lower Bound da Classe: C n log 2 n - O(nlog 2 n) Upper Bound da Classe: C n 2 - O(n 2 ) Análise de Algoritmos X Análise de Classes de Algoritmos Métodos Diretos (inserção, seleção e troca): O(n 2 ) no pior caso Métodos Avançados: Shellsort (inserção melhorada): O(n 12 ) no pior caso Heapsort (seleção melhorada): O(n log 2 n) no pior caso Quicksort (troca melhorada): O(n log 2 n) no melhor caso e caso médio; O(n 2 ) no pior caso n pequeno qualquer método direto
7 Análise de Algoritmos X Análise de Classes de Algoritmos Atenção: algoritmos podem não alcançar o limite mínimo Exemplo3: Multiplicação de Matrizes n x n Lower Bound da classe: O(n2) Algoritmo mais rápido: O(n28) Algoritmo usual: O(n3) Exemplo - Busca Seqüencial Chaves Campos usados para identificação de um registro no arquivo Busca através de exames das chaves Se um arquivo tem n registro, com Ki como o valor da chave do registro Ri, a recuperação é feita via exame das chaves Kn,k1 -Pior caso n + 1 comparações - Busca com êxito - Número de comparações em média ( n +1) / 2 N eficiência Exemplo - Busca Binária Arquivo ordenado seqüencialmente Busca começa examinando o registro do meio do arquivo, ao invés de um por um, iniciando em uma das extremidades, como na busca seqüencial Supondo que o arquivo está ordenada por valores de chave crescente, dependendo do resultado da comparação com a chave do meio: K < Km, registro procurado encontra-se na metade do arquivo com chaves de valores mais baixos; K = Km, registro encontrado; K > Km, registro procurado encontra-se na metade do arquivo com chaves de valores mais altos A cada comparação ou a busca termina ou o tamanho do arquivo a ser pesquisado é reduzido a metade do tamanho original Comp n Tam n/2 n/4 n/8 n/2^k Estratégia: Dividir para conquistar!! Busca Binária log(31+1) n log2(n+1) Considere que o valor de um módulo é o índice da chave a ser testada N=31 registros; 1a chave a ser testada é K1, pois (1+31)/2 =1 30 N comp 1 1 log(1+1) 3 2 log(3+1) 7 2 log(7+1) 15 3 log(15+1) 7
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
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
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)
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]
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 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
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
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
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
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
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
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
5. Algoritmos de Ordenação
Introdução à Computação II 5952011 5. Algoritmos de Ordenação Prof. Renato Tinós Depto. de Computação e Matemática (FFCLRP/USP) 1 Principais Tópicos 5.1. Ordenação por Inserção 5.2. Ordenação por Seleção
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
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
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
É 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
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)
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
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
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
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
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
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
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
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.
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,
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
Á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 :
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
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
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
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.
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
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
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.
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
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
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
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
Divisão e conquista. Eficiência de divisão e conquista
Divisão e conquista Divisão: resolver recursivamente problemas mais pequenos (até caso base) Conquista: solução do problema original é formada com as soluções dos subproblemas á divisão quando o algoritmo
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.
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
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
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
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
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
Módulo 7. Complexidade de Algoritmos. Algoritmos e Estruturas de Dados II C++ Rone Ilídio
Módulo 7 Complexidade de Algoritmos Algoritmos e Estruturas de Dados II C++ Rone Ilídio Tempo de execução de um programa Qual algoritm executará mais rápido? int main(){ SYSTEMTIME inicio,fim; GetSystemTime(&inicio);
4º 20/10/2003. ÍNDICE
Universidade Federal de Juiz de Fora UFJF. Departamento de Ciência da Computação DCC. Curso de Ciência da Computação. Análise e Projeto de Algoritmos 4º período. Filippe Jabour. Atualizado em 20/10/2003.
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
BUSCA EM ARRAYS. Prof. André Backes. Ato de procurar por um elemento em um conjunto de dados
BUSCA EM ARRAYS Prof. André Backes Definição 2 Ato de procurar por um elemento em um conjunto de dados Recuperação de dados armazenados em um repositório ou base de dados A operação de busca visa responder
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
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
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
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
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
Métodos de Ordenação Parte I
Estrutura de Dados II Métodos de Ordenação Parte I Prof a Márcio Bueno [email protected] / [email protected] Material baseado nos materiais da Prof a Ana Eliza e Prof. Robson Lins Rearranjar
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
4. Algoritmos de Busca em Vetores
Introdução à Computação II 5952011 4. Algoritmos de Busca em Vetores Prof. Renato Tinós Local: Depto. de Computação e Matemática (FFCLRP/USP) 1 Principais Tópicos 4.1. Introdução 4.2. Busca Linear 4.2.1.
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
Projeto e Análise de Algoritmos NP Completude. Prof. Humberto Brandão
Projeto e Análise de Algoritmos NP Completude Prof. Humberto Brandão [email protected] Universidade Federal de Alfenas versão da aula: 0.4 Introdução Problemas intratáveis ou difíceis são comuns
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
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
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
Modelagem com relações de recorrência. Exemplo: Determinada população dobra a cada ano; população inicial = 5 a n = população depois de n anos
Relações de recorrência 8. RELAÇÕES DE RECORRÊNCIA Introdução a relações de recorrência Modelagem com relações de recorrência Solução de relações de recorrência Exemplos e aplicações Relações de recorrência
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
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:
Extra- Algoritmos de Ordenação
Extra- Algoritmos de Ordenação 1 Introdução Ordenar: processo de rearranjar um conjunto de objetos em uma ordem ascendente ou descendente. A ordenação visa facilitar a recuperação posterior de itens do
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
Métodos de Ordenação
Métodos de Ordenação Conceitos básicos sobre ordenação Ordenar corresponde ao processo de rearranjar um conjunto de objetos em uma ordem específica. Objetivo da ordenação: facilitar a recuperação posterior
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
MCTA028 Programação Estruturada Aula 19 Custos de um algoritmo e funções de complexidade
MCTA028 Programação Estruturada Aula 19 Custos de um algoritmo e funções de complexidade Prof. Jesús P. Mena-Chalco 3Q-2017 1 0 A = n-1... 2 0 A = n-1... - O programa funciona (está correto)? - Como medir/mensurar
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
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
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
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
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
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
Ordenação. Prof. Jonas Potros
Ordenação Prof. Jonas Potros Conceitos Básicos Ordenar: processo de rearranjar um conjunto de objetos em uma ordem ascendente ou descendente. A ordenação visa facilitar a recuperação posterior de itens
