Análise de Complexidade de Algoritmos. mario alexandre gazziro
|
|
|
- Lucca Brandt Rosa
- 7 Há anos
- Visualizações:
Transcrição
1 Análise de Complexidade de Algoritmos mario alexandre gazziro
2 Definição A complexidade de um algoritmo consiste na quantidade de esforço computacional necessária para sua execução. Esse esforço é expresso em função de operações fundamentais, as quais variam de algoritmo para algoritmo, dependendo também do volume de dados de entrada.
3 Eficiência de algoritmos Para um dado problema, considere dois algoritmos que o resolvem. Seja n um parâmetro que caracteriza o tamanho da entrada do algoritmo. Por exemplo, ordenar n números ou multiplicar duas matrizes quadradas n x n (cada uma com n 2 elementos). Como podemos comparar os dois algoritmos para escolher o melhor?
4 Complexidade de tempo ou de espaço Precisamos definir uma medida que expresse a eficiência dos algoritmos. Podemos avaliar um algoritmo em termos de tempo de execução ou do espaço (memória) utilizado. Para medir o tempo, poderiamos considerar o tempo absoluto (em segundos, minutos, horas, dias etc.). Porém, medir o tempo absoluto não é interessante por apresentar dependência com o hardware utilizado. Dado esse fato, em análise de algoritmos, contamos o número de operações (consideradas relevantes) realizadas pelo algoritmo, expressando esse número como uma função do número de entradas n.
5 Melhor caso, caso médio e pior caso A quantidade de operações realizadas por um algoritmo específico pode depender do tamanho da entrada do mesmo. Nosso interesse maior reside no pior caso, definido pelo maior número de operações realizadas para qualquer entrada de tamanho n. Extraído e adaptado de [1]
6 Análise do melhor caso Definido pela letra grega Ω (Ômega). Representa o menor tempo de execução de um algoritmo para uma dada entrada de tamanho n. É raramente utilizado, por ter aplicação em poucos casos. Exemplo: O algoritmo de pesquisa sequêncial em um vetor tem complexidade f(n) = Ω(1). A análise assume que o número procurado tenha sido o primeiro encontrado na lista. Abordagem otimista!
7 Análise do caso médio Representado pela letra grega ϴ (Theta). Deve-se obter a média dos tempos de execução de todas as entradas de tamanho n. Outra forma é determinar a probabilidade de uma determinada condição ocorrer. Exemplo: O algoritmo de pesquisa sequêncial em um vetor tem complexidade f(n) = ϴ(n/2). Em média será necessário visitar n/2 elementos do vetor até encontrar o elemento procurado. Muito dificil de determinar na maioria dos casos!
8 Análise do pior caso Representado pela letra grega O (Ômicron). Baseia-se no maior tempo de execução sobre todas as entradas de tamanho n. É o metodo mais facil de se determinar. Exemplo: O algoritmo de pesquisa sequêncial em um vetor tem complexidade f(n) = O(n). No pior caso será necessário visitar todos os n elementos do vetor até encontrar o elemento procurado. Abordagem pessimista!
9 Notação O Vamos analisar o seguinte exemplo: int Soma(int N) int i, resultado; (1) resultado = 0; (2) for (i=1; i<=n;i++); (3) resultado += i*i*i; (4) return resultado; Sendo que cada operação realizada consome 1 unidade de tempo do computador, e a declaração da função não conta tempo, temos: - As linhas (1) e (4) realizam 1 operação cada, ou seja, 1 unidade de tempo cada: 0N A linha (3) possui 4 operações (duas multiplicações, uma soma e uma atribuição) e é executada N vezes, levando 4 unidades de tempo para ser executada: 4N A linha (2) possui uma inicialização de i, testes para i<=n e incremento de i, totalizando um custo de 1 + N+1 + N: 2N N + 4
10 Comportamento assintótico Um caso particular interessante é quando n tem valor muito grande (n ), denominado comportamento assintótico. Consideremos como exemplo os dois algoritmos a seguir: Algoritmo I: f 1 (n) = 5n 2 + 7n operações Algoritmo II: f 2 (n) = 600n operações Os termos inferiores as constantes multiplicativas contribuem pouco na comparação e podem ser descartados. O importante é verificar que f 1 (n) cresce com n 2, ao passo que f 2 (n) cresce com n. Um crescimento quadrático é considerado pior que um crescimento linear. Dessa forma, devemos optar pelo algortimo II ao invés do algoritmo I.
11 Limite superior e inferior Um algoritmo como busca binária normalmente é executado um pouco mais rápido em vetores de tamanho exato n=2 k -1 (onde k é inteiro). Trata-se de um pequeno detalhe, porém cria oscilações no tempo de execução do mesmo. Essas oscilações são representadas dentro de um limite superior e de um limite inferior, como mostra a figura. Extraído e adaptado de [1]
12 Mudança de limite superior Dado o problema de multiplicação de duas matrizes quadradas n x n. Sabemos que um algoritmo pode resolver esse problema pelo método trivial, com complexidade O(n 3 ). Logo, o limite superior desse problema é O(n 3 ). Porém, o limite superior de um problema pode mudar, se alguem descobrir um algoritmo melhor. Para esse mesmo problema, o algotirmo de Strassen reduziu a complexidade Para O(n log7 ), alterando assim o limite superior. Coopersmith e Winograd melhoraram ainda mais para O(n 2,376 ). Extraído e adaptado de [1]
13 Relações de dominância na notação O O uso da notação O agrupa as funções em um conjunto de classes, sendo que todas as funçoes equivalentes pertencem a mesma classe. Por exemplo, f(n)=0,37n e g(n)=234,664 pertencem a mesma classe. Listamos, a seguir, essas classes: Funções constantes: f(n) = 1 Funções logaritmicas: f(n) = log n Funções lineares: f(n) = n Funções superlineares: f(n) = n log n Funções quadráticas: f(n) = n 2 Funções cúbicas: f(n) = n 3 Funções exponenciais: f(n) = c n Funções fatoriais: f(n) = n!
14 Complexidade constante Representação: O(1) Descrição: São algoritmos onde a complexidade independe do tamanho n de entradas. É o único em que as instruções dos algoritmos são executadas um número fixo de vezes. if (condição == true) then ; realiza operação em tempo constante else ; realiza operação em tempo constante
15 Complexidade linear Representação: O(n) Descrição: Uma operação é realizada em cada elemento de entrada. Como exemplo, a pesquisa de elementos em uma lista. for (i=0; i<n; i++) if (condição == true) then ; realiza operação em tempo constante else ; realiza operação em tempo constante
16 Complexidade logarítimica Representação: O(log n) Descrição: Ocorre tipicamente em algoritmos que dividem o problema em partes menores. int PesquisaBinaria ( int array[], int chave, int N) int inf = 0; int sup = N - 1; int meio; while (inf <= sup) meio = (inf+sup)/2; if (chave == array[meio]) return meio; else if (chave < array[meio]) sup = meio-1; else inf = meio+1; return -1; // não encontrado
17 Complexidade log linear (superlinear) Representação: O(n log n) Descrição: Ocorre tipicamente em algoritmos que dividem o problema em partes menores, porém, juntando posteriormente a solução dos problemas menores. void merge(int inicio, int fim) if (inicio < fim) int meio = (inicio + fim) / 2; merge(inicio, meio); merge(meio + 1, fim); mesclar(inicio, meio, fim);
18 Complexidade quadrática Representação: O(n 2 ) Descrição: Itens são processados aos pares, geralmente com um loop dentro do outro (loops aninhados). void bubblesort(int[] a) for (int i = 0; i < a.length-1; i++) for (int j = 0; j < a.length-1; j++) if (a[j] > a[j+1]) swap(a, j, j+1);
19 Complexidade cúbica Representação: O(n 3 ) Descrição: Itens são processados três a três, geralmente com um loop dentro de outros dois. int dist[n][n]; int i, j, k; for ( k = 0; k < N; k++ ) for ( i = 0; i < N; i++ ) for ( j = 0; j < N; j++ ) dist[i][j] = min( dist[i][j], dist[i][k] + dist[k][j] );
20 Complexidade exponencial e fatorial Representação: O(2n) e O(n!) Descrição: Essas classes configuram a utilização de força bruta para obtenção da solução de um problema. A classe exponencial geralmente é implementada com base diretamente no enunciado do problema e nas definições dos conceitos envolvidos. Como exemplo dessa classe, temos a busca por senhas numéricas de n digitos, representando um espaço de 10 n senhas. A classe fatorial consiste em testar todas as possíveis permutações existentes na solução, a procura da solução ótima para o problema. Como exemplo dessa classe, temos o problema do Caixeiro Viajante. Tal problema envolve encontrar a rota mínima para visitar várias cidades sem repetir nenhuma.
21 Taxas de crescimento Dado um computador que consome 1 nanosegundo para executar uma operação, a tabela abaixo mostra o tempo de execução aproximado de um algoritmo com diferentes ordens de complexidade, para 13 tamanhos de entrada: n f(n)* lg n n n lg n n 2 2 n n! ,003 µs 0,004 µs 0,005 µs 0,005 µs 0,006 µs 0,007 µs 0,010 µs 0,013 µs 0,017 µs 0,020 µs 0,023 µs 0,027 µs 0,030 µs 0,01 µs 0,02 µs 0,03 µs 0,04 µs 0,05 µs 0,1 µs 1,00 µs 10 µs 0,10 ms 1 ms 0,01 s 0,10 s 1 s 0,033 µs 0,086 µs 0,147 µs 0,213 µs 0,282 µs 0,644 µs 9,966 µs 130 µs 1,67 ms 19,93 ms 0,23 s 2,66 s 29,90 s 0,1 µs 0,4 µs 0,9 µs 1,6 µs 2,5 µs 10 µs 1 ms 100 ms 10 s 16,7 min 1,16 dias 115,7 dias 31,7 anos 1 µs 1 ms 1 s 18,3 min 13 dias 4x10 13 anos 3,63 ms 77,1 anos 8,4x10 15 anos Extraído e adaptado de [1]
22 Problemas intratáveis e aproximações Existe ainda a classe de problemas para os quais não existe solução algoritmica eficiente. São os chamados problemas intratáveis. Em geral, são necessárias utilização de heurísticas para aproximar a solução ótima.
23 Referências [1] Skiena, S. S. The Algorithm Design Manual, Second Edition, Springer, ISBN: , Springer-Verlag 2008.
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
Á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 :
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
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
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
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
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
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
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 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 Consumo de tempo assintótico Seja A um algoritmo para um problema
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
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.
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
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
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
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
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
Análise de Algoritmos
Análise de Algoritmos Parte 1 Prof. Túlio Toffolo http://www.toffolo.com.br BCC202 Aula 04 Algoritmos e Estruturas de Dados I Qual a diferença entre um algoritmo e um programa? Como escolher o algoritmo
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
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);
Medida do Tempo de Execução de um Programa. Bruno Hott Algoritmos e Estruturas de Dados I DECSI UFOP
Medida do Tempo de Execução de um Programa Bruno Hott Algoritmos e Estruturas de Dados I DECSI UFOP Medida do Tempo de Execução de um Programa O projeto de algoritmos é fortemente influenciado pelo estudo
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
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:
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
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
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.
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
Noções de complexidade de algoritmos
Noções de complexidade de algoritmos 358 Tempo de Execução A avaliação de desempenho de um algoritmo quanto executado por um computador pode ser feita a posteriori ou a priori. Uma avaliação a posteriori
Aula 02: Custos de um algoritmo e funções de complexidade
MCTA028 Programação Estruturada Aula 02: Custos de um algoritmo e funções de complexidade Prof. Jesús P. Mena-Chalco [email protected] 3Q-20106 1 Linguagem C: Tipos de dados 2 Linguagem C: Tipos
Análise da Complexidade de Algoritmos
Análise da Complexidade de Algoritmos (revisões) Algoritmos e Estruturas de Dados II Licenciatura em Engenharia Informática e Computação www.fe.up.pt/ rcamacho/cadeiras/aed2 LIACC/FEUP Universidade do
5COP096 TeoriadaComputação
Sylvio 1 Barbon Jr [email protected] 5COP096 TeoriadaComputação Aula 13 Prof. Dr. Sylvio Barbon Junior Sumário - Problemas NP-Completo Algoritmos Não-deterministas; Classes NP-Completo e NP-Dificil; Teorema
Capítulo. Análise de Algoritmos. 6.1 Complexidade de Algoritmos 6.1
Capítulo 6 Análise de Algoritmos A eficiência (ou desempenho) de um programa é medida em termos do espaço de armazenamento e pelo tempo que ele utiliza para realizar uma tarefa. Mais precisamente, um programa
Programação II. Árvores Binárias (Binary Trees) Bruno Feijó Dept. de Informática, PUC-Rio
Programação II Árvores Binárias (Binary Trees) Bruno Feijó Dept. de Informática, PUC-Rio Árvores Dados organizados de maneira hierárquica Exemplos: arquivos em diretórios, subdivisão de espaço 2D em um
Análise de Algoritmos Parte 4
Análise de Algoritmos Parte 4 Túlio Toffolo [email protected] www.toffolo.com.br BCC202 Aula 07 Algoritmos e Estruturas de Dados I Como escolher o algoritmo mais adequado para uma situação? (continuação)
Aula 3 Listas Lineares Sequenciais Ordenadas. prof Leticia Winkler
Aula 3 Listas Lineares Sequenciais Ordenadas prof Leticia Winkler 1 Listas Lineares Sequenciais Ordenadas Elementos da lista estão dispostos num vetor (contíguos na memória) e ordenado de acordo com alguma
Departamento de Engenharia Rural Centro de Ciências Agrárias. Programação I
Departamento de Engenharia Rural Centro de Ciências Agrárias Programação I Algoritmos de busca Basicamente podem ser citadas duas estratégias para procurar (ou buscar) algo em uma coleção de dados: Busca
Estruturas de Dados, Análise de Algoritmos e Complexidade Estrutural. Carlos Alberto Alonso Sanches
CT-234 Estruturas de Dados, Análise de Algoritmos e Complexidade Estrutural Carlos Alberto Alonso Sanches CT-234 2) Algoritmos recursivos Indução matemática, recursão, recorrências Indução matemática Uma
Algoritmos e Estrutura de Dados
Algoritmos e Estrutura de Dados Ricardo Terra rterrabh [at] gmail.com Ricardo Terra (rterrabh [at] gmail.com) Algoritmos e Estrutura de Dados Outubro, 2013 1 / 136 CV Nome: Ricardo Terra Email: rterrabh
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
Aula 10: Tratabilidade
Teoria da Computação DAINF-UTFPR Aula 10: Tratabilidade Prof. Ricardo Dutra da Silva Na aula anterior discutimos problemas que podem e que não podem ser computados. Nesta aula vamos considerar apenas problemas
Tabelas Hash. informação, a partir do conhecimento de sua chave. Hashing é uma maneira de organizar dados que:
Tabelas Hash Tabelas Hash O uso de listas ou árvores para organizar informações é interessante e produz bons resultados. Porem, em nenhuma dessas estruturas se obtém o acesso direto a alguma informação,
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 Classe de Problemas P A classe de algoritmos P é formada pelos procedimentos
Resolução De Problemas Em Informática. Docente: Ana Paula Afonso Resolução de Problemas. 1. Analisar o problema
ALGORITMIA Resolução De Problemas Em Informática Docente: Ana Paula Afonso 2000-2001 Resolução de Problemas 1. Analisar o problema Conhecer o bem o problema Descrever o problema: subdividir, detalhar 2.
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.
Programação de Computadores II. Cap. 17 Busca
Programação de Computadores II Cap. 17 Busca Livro: Waldemar Celes, Renato Cerqueira, José Lucas Rangel. Introdução a Estruturas de Dados, Editora Campus (2004) Slides adaptados dos originais dos profs.:
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
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
Universidade Federal de Mato Grosso do Sul Faculdade de Computação Disciplina de Verão: Algoritmos e Programação II
Universidade Federal de Mato Grosso do Sul Faculdade de Computação Disciplina de Verão: Algoritmos e Programação II Professores: Liana Duenha 10 de março de 2014 Professores: Liana Duenha () Universidade
Sistemas Distribuídos: Princípios e Algoritmos Introdução à Análise de Complexidade de Algoritmos
Sistemas Distribuídos: Princípios e Algoritmos Introdução à Análise de Complexidade de Algoritmos Francisco José da Silva e Silva Laboratório de Sistemas Distribuídos (LSD) Departamento de Informática
Complexidade assintótica de programas
Complexidade assintótica de programas Técnicas de análise de algoritmos são consideradas partes integrantes do processo moderno de resolver problemas, permitindo escolher, de forma racional, um dentre
Algoritmos e Estruturas de Dados I (DCC/003) Estruturas Condicionais e de Repetição
Algoritmos e Estruturas de Dados I (DCC/003) Estruturas Condicionais e de Repetição 1 Comando while Deseja-se calcular o valor de: 1 + 2 + 3 +... + N. Observação: não sabemos, a priori, quantos termos
Técnicas de projeto de algoritmos: Indução
Técnicas de projeto de algoritmos: Indução ACH2002 - Introdução à Ciência da Computação II Delano M. Beder Escola de Artes, Ciências e Humanidades (EACH) Universidade de São Paulo [email protected] 08/2008
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
Programação: Vetores
Programação de Computadores I Aula 09 Programação: Vetores José Romildo Malaquias Departamento de Computação Universidade Federal de Ouro Preto 2011-1 1/62 Motivação Problema Faça um programa que leia
Tabelas de hash Acabamos de estudar como implementar uma tabela hashing aberta e estudaremos agora como implementar uma tabela hashing fechada ou
Tabelas de hash Acabamos de estudar como implementar uma tabela hashing aberta e estudaremos agora como implementar uma tabela hashing fechada ou também denominada de tabela hashing com endereçamento aberto.
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
5. Expressões aritméticas
5. Expressões aritméticas 5.1. Conceito de Expressão O conceito de expressão em termos computacionais está intimamente ligado ao conceito de expressão (ou fórmula) matemática, onde um conjunto de variáveis
I. Correção de Algoritmos Não-Recursivos
I. Correção de Algoritmos Não-Recursivos Nos exercícios a seguir, você deverá demonstrar a correção dos algoritmos por meio dos conceitos vistos nos slides da Aula 03. 1) Prove que o seguinte algoritmo
ANÁLISE DE ALGORITMOS (INF 1721)
PUC-Rio Departamento de Informática Prof. Marcus Vinicius S. Poggi de Aragão (3WA) Lorenza Moreno e David Sotelo (3WB) Horário: 2as. e 4as. 15-17hs (3WA), 3as. e 5as. 19-21 (3WB) 5 de abril de 2010 Período:
Algoritmos de pesquisa
Define-se pesquisa como a operação que permite encontrar ou concluir que não existe, um dado elemento num dado conjunto. A pesquisa de um elemento pode ser feita num conjunto ordenado ou não. Quando o
Ordenação. Insertion Sort
Sumário por trocas de vizinhos. Análise. Limites teóricos Insertion sort. Shellsort recursiva: Mergesort. Análise. Com heap binário: Heapsort. Análise. Divisão e conquista: Quicksort. Análise. Limites
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
Introdução à Programação em C. Prof. Ricardo Teixeira Tecnologia em Mecatrônica Industrial SENAI
Introdução à Programação em C Prof. Ricardo Teixeira Tecnologia em Mecatrônica Industrial SENAI Linguagem C Criada em 1972 para uso no LINUX; Sintaxe base para diversas outras (Java, JavaScript, PHP, C++,
Ciclos hamiltonianos e o problema do caixeiro viajante
Ciclos hamiltonianos e o problema do caixeiro viajante Algoritmos em Grafos Marco A L Barbosa cba Este trabalho está licenciado com uma Licença Creative Commons - Atribuição-CompartilhaIgual 4.0 Internacional.
Universidade da Madeira. 1. Recursão. 3. Busca. Profa. Dra. Laura Rodríguez Estruturas de dados e algoritmos 2
Profa. Dra. Laura Rodríguez E-mail: [email protected] Universidade da Madeira 1. Recursão 2. Ordenação 3. Busca Profa. Dra. Laura Rodríguez Estruturas de dados e algoritmos 2 1 1. Recursão 2. Ordenação 3.
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
Exemplo de Aplicação de Algoritmos Genéticos. Prof. Juan Moisés Mauricio Villanueva cear.ufpb.br/juan
Exemplo de Aplicação de Algoritmos Genéticos Prof. Juan Moisés Mauricio Villanueva [email protected] cear.ufpb.br/juan Estrutura do Algoritmo Genético Algoritmo genético Inicio t = 0 inicializar P(t)
Programação II. Busca em Vetor (search) Bruno Feijó Dept. de Informática, PUC-Rio
Programação II Busca em Vetor (search) Bruno Feijó Dept. de Informática, PUC-Rio Busca em Vetor Problema: Entrada: vetor v com n elementos elemento d a procurar Saída m se o elemento procurado está em
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
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
Técnicas de projeto de algoritmos: Indução
Técnicas de projeto de algoritmos: Indução ACH2002 - Introdução à Ciência da Computação II Delano M. Beder Escola de Artes, Ciências e Humanidades (EACH) Universidade de São Paulo [email protected] 08/2008
TÉCNICO DE INFORMÁTICA - SISTEMAS
782 - Programação em C/C++ - estrutura básica e conceitos fundamentais Linguagens de programação Linguagem de programação são conjuntos de palavras formais, utilizadas na escrita de programas, para enunciar
05 Análise de Algoritmos (parte 4) SCC201/501 - Introdução à Ciência de Computação II
05 Análise de Algoritmos (parte 4) 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
Noções de algoritmos - Aula 1
Noções de algoritmos - Aula 1 Departamento de Física UFPel Definição de algoritmo Sequência ordenada e finita de operações para a realização de uma tarefa. Tarefa: Experimento de Física I. Passo 1: Reunir
Análise e Síntese de Algoritmos. Revisão CLRS, Cap. 7-10
Análise e Síntese de Algoritmos Revisão CLRS, Cap. 7-10 Contexto Revisão Algoritmos e complexidade Notação Fundamentos: somatórios, recorrências, etc. Exemplos de algoritmos Ordenação Procura Selecção
Algoritmos de Ordenação
Algoritmos de Ordenação! Problema: encontrar um número de telefone em uma lista telefônica! simplificado pelo fato dos nomes estarem em ordem alfabética! e se estivesse sem uma ordem?! Problema: busca
Distâncias Mínimas. Pedro Ribeiro 2014/2015 DCC/FCUP. Pedro Ribeiro (DCC/FCUP) Distâncias Mínimas 2014/ / 27
Distâncias Mínimas Pedro Ribeiro DCC/FCUP 2014/2015 Pedro Ribeiro (DCC/FCUP) Distâncias Mínimas 2014/2015 1 / 27 Distâncias Mínimas Uma das aplicações mais típicas em grafos é o cálculo de distâncias.
Busca em Espaço de Estados a
Busca em Espaço de Estados a Fabrício Jailson Barth BandTec Agosto de 2012 a Slides baseados no material do Prof. Jomi F. Hübner (UFSC) Introdução 2 Agente orientado a meta O projetista não determina um
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
Algoritmos e Estruturas de Dados I1 Prof. Eduardo 1
Algoritmos e Estruturas de Dados I1 Prof. Eduardo 1 ORDENAÇÃO E BUSCA Ordenação: Bublesort, seleção direta e inserção direta. Busca: linear e binária 1 - ORDENAÇÃO (CLASSIFICAÇÃO) DE DADOS Em diversas
MATRIZES - PARTE Mais exemplos Multiplicação de duas matrizes AULA 26
AULA 26 MATRIZES - PARTE 2 26. Mais exemplos Nesta aula, veremos mais dois algoritmos envolvendo matrizes. O primeiro deles calcula a matriz resultante da multiplicação de duas matrizes e utiliza três
Métodos Computacionais. Comandos Condicionais e de Repetição em C
Métodos Computacionais Comandos Condicionais e de Repetição em C Tópicos da Aula Hoje vamos acrescentar comportamentos mais complexos a programas em C Comandos Condicionais if-else switch Comandos de Repetição
Estrutura de Dados. Algoritmos de Ordenação. Prof. Othon M. N. Batista Mestre em Informática
Estrutura de Dados Algoritmos de Ordenação Prof. Othon M. N. Batista Mestre em Informática Roteiro Introdução Ordenação por Inserção Insertion Sort Ordenação por Seleção Selection Sort Ordenação por Bolha
