Área que visa determinar a complexidade (custo) de um algoritmo, com isso é possível:
|
|
|
- Sophia Almada Brunelli
- 9 Há anos
- Visualizações:
Transcrição
1 Á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 : os algoritmos apresentam um limite inferior para a sua complexidade (definido matematicamente). Se a complexidade é ótima então está abaixo deste limite. Fonte: UFPB (
2 Um algoritmo serve para resolver um determinado problema, e todos os problemas têm sempre uma entrada de dados O tamanho dessa entrada (N) tem geralmente efeito direto no tempo de resposta de um algoritmo Dependendo do problema a ser resolvido, já existem algoritmos prontos ou que podem ser adaptados O problema é: qual algoritmo escolher?
3 Pode-se falar de dois tipos de complexidade de algoritmos : Complexidade Espacial: Quantidade de recursos utilizados para resolver o problema; Complexidade Temporal: Quantidade de tempo utilizado. Pode ser vista também como o número de instruções necessárias para resolver um determinado problema; Em ambos os casos, a complexidade é medida de acordo com o tamanho dos dados de entrada (n) Estamos mais interessados em calcular a Complexidade Temporal de um algoritmo!
4 Existem três perspectivas para análise de complexidade: Melhor Caso (Ω) Caso Médio (θ) Pior Caso (O) Nas três perspectivas, a função f(n) retorna a complexidade de um algoritmo com entrada de tamanho n
5 ANÁLISE DO MELHOR CASO Definido pela letra grega Ω(Ômega) Exprime o menor tempo de execução de um algoritmo para uma entrada de tamanho n É pouco usado, por ter aplicação em poucos casos. Ex.: O algoritmo de pesquisa sequêncial em um vetor tem complexidade f(n) = Ω(1) A análise assume que o número procurado seria o primeiro selecionado na lista. Abordagem otimista!
6 ANÁLISE DO CASO MÉDIO Definido pela letra grega g θ (Theta) Deve-se obter a média dos tempos de execução de todas as entradas de tamanho n, ou baseado em probabilidade de determinada condição ocorrer Ex.: 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 Melhor aproximação Muito difícil de determinar na maioria dos casos
7 ANÁLISE DO PIOR CASO Representado pela letra grega O (big O) Big O maiúsculo. Trata-se da letra grega ômicron maiúscula Baseia-se no maior tempo de execução sobre todas as entradas de tamanho n (ordem de grandeza) É o método mais fácil de se obter (o mais usado). ) Ex.: 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!
8 A Notação O Tempo (ou espaço) é contabilizado em número de passos do algoritmo (unidade de armazenamento) Análise do algoritmo determina uma função que depende do tamanho da entrada n. à medida que n aumenta, aumenta a complexidade do algoritmo (esforço computacional) 8
9 A Notação O Desprezar constantes aditivas ou multiplicativas Número de passos 3n será aproximado para n Interesse assintótico termos de menor grau podem ser desprezados n 2 + n será aproximado para n 2 6n 3 + 4n - 9 será aproximado para n 3 9
10 Cálculo da complexidade do algoritmo Foi visto que, para calcular a complexidade de um algoritmo, deve-se analisar o pior caso (O(x)) A análise deve ser feita de acordo com a tabela a seguir Número de Operações Complexidade d f(n) c xf(n) f(n) + f(n) f(n) + g(n) f(n) x g(n) O(f(n)) O(f(n)) O(f(n)) O(max(f(n),g(n)) O(f(n) x g(n))
11 Técnicas de análise da complexidade do algoritmo Alguns princípios podem ser seguidos: 1. O tempo de execução de um comando de atribuição, de leitura ou de escrita pode ser considerado como O(1). 2. O tempo de execução de um comando de decisão é O(1); 3. O tempo para executar um looping é a soma do tempo de execução do corpo do looping, multiplicado pelo número de iterações do looping. 4. Quando o programa possui funções não recursivas, o tempo de execução de cada função deve ser computado separadamente um a um, iniciando com funções que não chamam outras funções.
12
13 Cálculo da complexidade do algoritmo Ex1 f(x)= n * (n* (n* ( ) ) ) 3+n* n * n * n 3 Desprezouse os f(x) = O(n 3 termos de ) menor grau
14 ORDENS DE ALGORITMOS Complexidade Constante Complexidade Linear Complexidade Logarítmica Complexidade Log Linear Complexidade Quadrática Complexidade Cúbica Complexidade Exponencial Complexidade Fatorial
15 COMPLEXIDADE CONSTANTE - O(1) São os 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 { 1+( realiza alguma operação em tempo constante 1 else { 1+( realiza alguma operação em tempo constante 1 f(x) = 1+(1)*1+(1) = 4 => O(1)
16 COMPLEXIDADE LINEAR O(N) Uma operação é realizada em cada elemento de entrada, ex.: pesquisa de elementos em uma lista for (i = 0; i < N; i++) { if (condição == true){ 1+( comandos de leitura, escrita ou condicionais; 1 else { 1+( comandos de leitura, escrita ou condicionais; 1 n*( f(x) = n*(1+(1)*1+(1))=> n*(2*2) = n(4) =>O(n)
17 COMPLEXIDADE LOGARÍTMICA - O(LOG 2 N) Ocorre tipicamente em algoritmos que dividem o problema em problemas menores int PesquisaBinaria ( int array[], int chave, int N){ ( int inf = 0; 1+ int sup = N - 1; 1+ int meio; 1 while (inf <= sup) { n*( meio = (inf+sup)/2; 1+ if (chave == array[meio]){ 1+( return meio; 1 else{ 1+( if (chave < array[meio]){ 1+( sup = meio-1; 1 else{ 1+( inf = meio+1; 1 return -1; // não encontrado 1 f(x) = (1+1+1*n*(1+1+(1)*1+(1+(1)*1+(1)))*1) = 3*n(6). Como Log 2 (6) = 3 => (Log 2 (n))
18 COMPLEXIDADE LOG LINEAR O(NLOG 2 N) Ocorre tipicamente em algoritmos que dividem o problema em problemas 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); } }
19 COMPLEXIDADE QUADRÁTICA O(N²) Itens são processados aos pares, geralmente com um loop dentro do outro void bubblesort(int[] a) { ( for (int i = 0; i < a.length-1; i++) { n*( for (int j = 0; j < a.length-1; j++) { n*( n( if (a[j] > a[j+1]) { 1+( swap(a, j, j+1); 3 f(x) = (n*(n*(1+(3)))) = (n*(n+4)) = n 2 +4n => O(n 2 )
20 COMPLEXIDADE CÚBICA O(N³) Itens são processados três a três, geralmente com um loop dentro do outros dois int dist[n][n]; 1+ int i, j, k; 1+ for ( k = 0; k < N; k++ ) n*( for ( i= 0; i< N; i++ ) n*( for ( j = 0; j < N; j++ ) n*( dist[i][j] = min( dist[i][j], dist[i][k] + dist[k][j] ); 1))) f(x) = 1+1+n*(n*(n*(1))) = 4+n 3 => O(n 3 )
21 COMPLEXIDADE EXPONENCIAL O(2 N ) Utilização de Força Bruta para encontrar a solução de um problema. A solução geralmente é baseada diretamente no enunciado do problema e nas definições dos conceitos envolvidos Ex.: Utilizando apenas números é possível criar 10 n senhas de n dígitos Um algoritmo de força bruta para quebrar uma dessas senhas tem complexidade O(2 n )
22 COMPLEXIDADE FATORIAL O(N!) Também é baseada na utilização de força bruta para encontrar a solução de um problema Consiste em testar todas as possíveis permutações existentes na solução à procura da solução ótima para o problema Ex.: Problema do Caixeiro Viajante Encontrar a rota mínima para visitar várias cidades sem repetir nenhuma É um problema base para o projeto de microchips, sequênciamento de genôma e muitas outras aplicações Não possui solução exata eficiente (Problema NP) Utilização de heurísticas para aproximar a solução ótima 22
23 ORDENS DE COMPLEXIDADE Imagine um computador que leva 1ms (0,00s) para executar uma operação. A tabela abaixo indica o tempo aproximado de execução de um algoritmo com diferentes ordens de complexidades para 3 tamanhos de entrada n O(n) Log 2 (n) nlog 2 (n) O(n 2 ) O(n 3 ) O(2 n ) O(n!) s 0.004s 0.064s 0.256s 4s 1m5s 663 anos s 0.005s 0.16s 1s 33s 49 dias sec s 0.009s 4.608s 4m22s 37h sec... 23
24 Exemplo de estudo comparativo da complexidade de algoritmos: - Dado 3 algoritmos, verificar qual deles demanda maior custo, seguindo o princípio do pior caso. Algoritmo 1: Soma de vetores: for(i=0;i<n;i++){ n*( n( S[i] = X[i] + Y[i]; 1 f(x) = n*(1) => f(x) = O(n) Então, complexidade linear (O(n))
25 Exemplo de estudo comparativo da complexidade de algoritmos - continuação Algoritmo 2: Soma de matrizes: for(i=0;i<n;i++){ n*( for(j=0;j<n;j++){ n*( n( C[i,j] =A[i,j] + B[i,j]; 1 g(x) = n*(n*(1)) => h(x) = O(n 2 ) Então, grau de complexidade quadrática (O(n 2 ))
26 Exemplo de estudo comparativo da complexidade de algoritmos - continuação Algoritmo 3: Produto de matrizes: for(i=0;i<n;i++){ i< i++){ n*( for(j=0;j<n;j++){ n*( P[i,j] =0; 1+ for(k=0;k<n;k++){ ; n*( P[i,j] = P[i,j] + A[i,k] * B[k,j] 1 h(x) n*(n*(1+n*(1))) n*(n*(1+n)) n*(n+n 2 ) n*(n 2 ) >h(x) O(n 3 ) h(x) = n*(n*(1+n*(1))) = n*(n*(1+n)) = n*(n+n 2 ) = n*(n 2 )=>h(x)= O(n 3 ) Então, grau de complexidade cúbica (O(n 3 ))
27 Exemplo de estudo comparativo da complexidade de algoritmos - continuação Comparando agora os três algoritmos dos exemplos anteriores, temos: f(x)+g(x)+h(x) ( )+h( ) = max(o(n),o(n 2 )O( ),O(n 3 )) Dessa forma, concluímos que o algoritmo que teve o maior custo foi o do exemplo 3 (h(x) = O(n 3 )), pois o expoente do grau de complexidade (n) é o maior é o maior deles (expoente 3). Então, seu grau de complexidade resultante é cúbico. 27
28 Exercícios Informe a complexidade dos algoritmos abaixo: 1. int a,b, aux; scanf( %d%d,&a,&b); aux = a; a = b; b = aux; printf( %d, %d,a,b);
29 Exercícios 2. float media, notas[100]; int i, soma = 0, media; for(i=0;i<=100;i++) { printf( entre com a nota ); scanf( %d,¬as[i]); soma = soma + notas[i]; } media = soma/100; printf( A media é: %d, media);
30 Exercícios 3. for(i=0;i<=n_lin1;i++) { for(j=0;j<=n_col2;j++) { C[i,j] = 0; for(k=0;k<=n_col1;k++) { C[i,j] = C[i,j] + A[i,k] * B[k,j]; } } }
31 Exercícios 4. for(j=1;j<=n;j++){ for(k=1;k<=n;k++){ p=p+1; } }
32 Exercícios Faça agora um estudo comparativo e determine qual ou quais dos 4 algoritmos do exercícios anterior tem a maior complexidade
33 Exercícios Prova de concursos: (ENADE-2005-Q15) - Considere o algoritmo que implementa o seguinte processo: uma coleção desordenada de elementos é dividida em duas metades e cada metade é utilizada como argumento para a reaplicação recursiva do procedimento. Os resultados das duas reaplicações são, então, combinados pela intercalação dos elementos de ambas, resultando em uma coleção ordenada. Qual é a complexidade desse algoritmo? (A) O(n2) (B) O(n2n) (C) O(2n) (D) O(log n log n) (E) O(n log n)
34 UNIDADE II Introdução à Complexidade de Algoritmos FIM
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 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
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
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,
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
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
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
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 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 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 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
É 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
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
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
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
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
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)
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
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
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 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]
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
Pesquisa Sequencial e Binária. Introdução à Programação SI2
Pesquisa Sequencial e Binária Introdução à Programação SI2 3 Contexto Diferentes estratégias para pesquisa (busca) de um elemento específico em um conjunto de dados. Lista, array, coleção Operação importante,
Pesquisa Sequencial e Binária
Pesquisa Sequencial e Binária Prof. Wylliams Barbosa Santos [email protected] Introdução à Programação Crédito de Conteúdo: Professora Ceça Moraes Agenda Pesquisa Sequencial Noções de complexidade Pesquisa
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.
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
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
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
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
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
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
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:
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
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
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 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
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
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
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
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
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.
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);
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)
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
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
ESTRUTURA DE DADOS I AULA I
ESTRUTURA DE DADOS I AULA I PROF. ME. HÉLIO ESPERIDIÃO O que é um dado? Dado pode ser definido como a matéria-prima originalmente obtida de uma ou mais fontes (etapa de coleta). o que é a informação A
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
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
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);
Complexidade de Algoritmos
Complexidade de Algoritmos Prof. Diego Buchinger [email protected] [email protected] Prof. Cristiano Damiani Vasconcellos [email protected] Funções de Complexidade Considere
Medida do Tempo de Execução de um Programa. David Menotti Algoritmos e Estruturas de Dados II DInf UFPR
Medida do Tempo de Execução de um Programa David Menotti Algoritmos e Estruturas de Dados II DInf UFPR Medida do Tempo de Execução de um Programa O projeto de algoritmos é fortemente influenciado pelo
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
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
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
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
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
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
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
Análise e Complexidade de Algoritmos
Análise e Complexidade de Algoritmos Métodos de busca - seqüêncial - binária Prof. Rodrigo Rocha [email protected] http://www.bolinhabolinha.com Onde Estamos Ementa Revisão: Estrutura de dados;crescimento
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
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.
Algoritmos e Estruturas de Dados I Aula 06 Custos de um algoritmo
Algoritmos e Estruturas de Dados I Aula 06 Custos de um algoritmo Prof. Jesús P. Mena-Chalco 1Q-2019 1 lista 3 7-2 6 NULL Node *Busca(int x, Node *lista) { while (lista!=null && lista->data!=x) lista =
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
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
MC102 Algoritmos e Programação de Computadores
MC102 Algoritmos e Programação de Computadores Instituto de Computação UNICAMP Primeiro Semestre de 2015 Roteiro 1 Fundamentos de análise de algoritmos 2 Cálculo da função de custo 3 Exercícios Instituto
MAC121 ALGORITMOS E ESTRUTURAS DE DADOS I 2O. SEMESTRE DE 2017
PROVA 1 MAC121 ALGORITMOS E ESTRUTURAS DE DADOS I 2O. SEMESTRE DE 2017 Nome: Número USP: Instruções: (1 ) Esta prova é individual. (2 ) Não destaque as folhas deste caderno. (3 ) A prova consiste de 6
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
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.
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
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
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:
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
Técnicas de análise de algoritmos
CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS Técnicas de análise de algoritmos Algoritmos e Estruturas de Dados I Natália Batista https://sites.google.com/site/nataliacefetmg/ [email protected]
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
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
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
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
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
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 Algoritmo e Etrutura de Dado I DECSI UFOP Clae de Comportamento Aintótico Se f é uma função de complexidade para um algoritmo F, então O(f) é coniderada
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
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.
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
