Construção de Algoritmos II Aula 06
|
|
- José Vilarinho Marinho
- 5 Há anos
- Visualizações:
Transcrição
1 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
2 Recursividade e complexidade Módulos recursivos Introdução à de Algoritmo 2
3 Módulos recursivos Podemos ativar um módulo de forma recursiva Para isso, temos que inserir a ativação do módulo, dentro do próprio módulo usando um critério de parada Isso é chamado de ativação (ou chamada) recursiva 3
4 Módulos recursivos Para que ativação seja correta, devemos pensar em quando a chamada será finalizada Devemos conhecer a função de recursividade Objetivo é resolver um problema mais simples (diminuir o problema) Segue a ideia de dividir para conquistar 4
5 Pensando recursivamente Remover todas as bolinhas de uma caixa com 3 bolinhas 5
6 Pensando recursivamente Remover 1 bolinha e tento resolver outro problema menor Remover todas as bolinhas de uma caixa com 2 bolinhas 6
7 Módulos recursivos Remover 1 bolinha e tento resolver outro problema menor Remover todas as bolinhas de uma caixa com 1 bolinha 7
8 Módulos recursivos Remover 1 bolinha e tento resolver outro problema menor Remover todas as bolinhas de uma caixa vazia (resolvido) 8
9 Módulos recursivos Temos que pensar em dois elementos Generalização Representação genérica da função Caso base Critério de parada 9
10 Módulos recursivos Temos que pensar em dois elementos Generalização Representação genérica da função Caso base Remover todas as bolinhas de uma caixa com n-1 bolinhas Critério de parada Se a caixa estiver vazia pare 10
11 Módulos recursivos Fatorial Generalização 5! = 5 * 4 * 3 * 2 * 1 7! = 7 * 6 * 5 * 4 * 3 * 2 * 1 n! = n * (n 1) * (n 2) * * 1 Caso base 0! = 1 11
12 Módulos recursivos inicio módulo fat(inteiro n) se(n = 0)então retorne 1; senão retorne n * fat(n-1); fimmódulo; escreva(fat(4)); fim 12
13 Módulos recursivos Pilha inicio módulo fat(inteiro n) se(n = 0)então retorne 1; senão retorne n * fat(n-1); fimmódulo; escreva(fat(4)); fim fat(4) n 4 * fat(3) Topo 13
14 Módulos recursivos Pilha inicio módulo fat(inteiro n) se(n = 0)então retorne 1; senão retorne n * fat(n-1); fimmódulo; escreva(fat(4)); fim fat(3) n 3 fat(4) n 4 * fat(2) * fat(3) Topo 14
15 Módulos recursivos Pilha inicio módulo fat(inteiro n) se(n = 0)então retorne 1; senão retorne n * fat(n-1); fimmódulo; escreva(fat(4)); fim fat(2) n 2 fat(3) n 3 fat(4) n 4 * fat(1) * fat(2) * fat(3) Topo 15
16 Módulos recursivos Pilha inicio módulo fat(inteiro n) se(n = 0)então retorne 1; senão retorne n * fat(n-1); fimmódulo; escreva(fat(4)); fim fat(1) n 1 fat(2) n 2 fat(3) n 3 fat(4) n 4 * fat(0) * fat(1) * fat(2) * fat(3) Topo 16
17 Módulos recursivos fat(0) Pilha Topo retorna 1 inicio módulo fat(inteiro n) se(n = 0)então retorne 1; senão retorne n * fat(n-1); fimmódulo; escreva(fat(4)); fim fat(1) n 1 fat(2) n 2 fat(3) n 3 fat(4) n 4 * fat(0) * fat(1) * fat(2) * fat(3) 17
18 Módulos recursivos Pilha inicio módulo fat(inteiro n) se(n = 0)então retorne 1; senão retorne n * fat(n-1); fimmódulo; escreva(fat(4)); fim fat(1) n 1 fat(2) n 2 fat(3) n 3 fat(4) n 4 * 1 * fat(1) * fat(2) * fat(3) Topo 18
19 Módulos recursivos Pilha inicio módulo fat(inteiro n) se(n = 0)então retorne 1; senão retorne n * fat(n-1); fimmódulo; escreva(fat(4)); fim fat(2) n 2 fat(3) n 3 fat(4) n 4 * 1 * fat(2) * fat(3) Topo 19
20 Módulos recursivos Pilha inicio módulo fat(inteiro n) se(n = 0)então retorne 1; senão retorne n * fat(n-1); fimmódulo; escreva(fat(4)); fim fat(3) n 3 fat(4) n 4 * 2 * fat(3) Topo 20
21 Módulos recursivos Pilha inicio módulo fat(inteiro n) se(n = 0)então retorne 1; senão retorne n * fat(n-1); fimmódulo; escreva(fat(4)); fim fat(4) n 4 * 6 Topo 21
22 Módulos recursivos Pilha inicio módulo fat(inteiro n) se(n = 0)então retorne 1; senão retorne n * fat(n-1); fimmódulo; escreva(fat(4)); fim 22
23 Exercício de fixação Crie um módulo com chamada recursiva que exiba a soma dos 5 primeiros inteiros positivos Ilustre o funcionamento de sua solução mostrando a pilha de execução 23
24 Exercício de fixação Crie um módulo com chamada recursiva que exiba os 10 primeiros pares a partir de um valor fornecido pelo usuário Crie um módulo com chamada recursiva que exiba a soma de todos os números inteiros entre um intervalo definido pelo usuário Crie um módulo com chamada recursiva que exiba os 10 primeiros impares a partir de uma valor fornecido pelo usuário 24
25 Temos visto que um algoritmo é usado para solucionar um problema de forma organizada e bem definida da seguinte forma: Entrada Processamento Saída 25
26 Instância de problema São todas as possibilidades usadas na entrada e que gera uma saída particular <9 7 2> Ordena <2 7 9> < > Ordena < > 26
27 Porque analisar a eficiência de um algoritmo? Calcular um sistema de equações lineares de ordem 3 27
28 Como medir a eficiência? Estudo experimental ou benchmark Implementar o algoritmo Executar com diferentes instâncias de problemas Medir o tempo de execução 28
29 Limitações Necessidade de implementar o algoritmo em uma linguagem Não podemos experimentar todos os cenários possíveis Compilador, SO, hardware, etc, influenciam no tempo de execução 29
30 Maneira ideal Contar o número de operações relevantes ao algoritmo Operações primitivas Operações aritméticas Comparações Leitura Escrita etc 30
31 Modelo de Computação Devemos definir o modelo onde nossa análise será realizada RAM (Random Access Machine) Instruções são executadas sequencialmente (não há concorrência) Apresenta instruções presentes em computadores reais Cada instrução é executada em tempo constante 31
32 Quantas ações são necessárias para calcularmos a média aritmética dos dados armazenados em um vetor
33 Exemplo soma 0; media 0; para i de o até n passo 1 faça soma fimpara; soma + vet[i]; media soma / n; Quantas operações podemos contar? 33
34 Exemplo soma 0; 1 media 0; 1 para i de o até n passo 1 faça n + 1 soma soma + vet[i]; n fimpara; media soma / n; 1 Qual a soma do tempo total? 2 n
35 Não nos interessa o número exato do tempo mas sim na ordem de grandeza 2n + 4 => o n é o elemento principal pois se ele for muito grande as constantes 2 e 4 não influenciam muito na ordem de grandeza Pense no n com 2, 10, 100, de elementos O n é o fator que possui maior influência na ordem de grandeza 35
36 Dizemos no exemplo anterior: T(n) = O(n) Analisando tempo de execução => T(n) é chamada função complexidade de tempo Analisando memória necessária => T(n) é chamada função complexidade de espaço n em O(n) representa o tamanho da entrada 36
37 Exercício: encontrar o maior valor em um vetor [ ] pos 0; maior 1; para i de 2 até 6 passo 1 faça se (v[i] > v[maior])então maior i; fimse; fimpara; 37
38 Exercício: encontrar o maior valor em um vetor [ ] pos 0; 1 maior 1; 1 para i de 2 até 6 passo 1 faça n 1 se (v[i] > v[maior])então n 1 maior i; n 1* fimse; fimpara; 3n 1 * consideramos o pior caso 38
39 Bubblesort vet = [7, 6, 5, 4, 3, 2, 1]; tam 7; para i de tam até 1 passo 1 faça fimpara; para j de 1 até i passo 1 faça if(vet[j] > vet[j+1])então fimse; fimpara; aux = vet[j]; vet[j] vet[j+1]; vet[j+1] aux; 39
40 Bubblesort O(n 2 ) vet = [7, 6, 5, 4, 3, 2, 1]; tam 7; 1 para i de tam até 1 passo 1 faça n para j de 1 até i passo 1 faça n 1, n 2, n 3, n 4, n 5, n 6 se(vet[j] > vet[j+1])então n 1,... fimse; fimpara; aux = vet[j]; n 1,... vet[j] vet[j+1]; n 1,... vet[j+1] aux; n 1,... fimpara; n * 30n = n * n = n 2 40
41 Comparando T(n) = O(n) (linear) n = 100 => T(n) = 100 T(n) = O(n 2 ) (quadrática) n = 100 => T(n) = = Se precisamos decidir qual algoritmo usar, devemos preferir o de menor complexidade 41
42 Pior caso => O É o que devemos nos preocupar Melhor caso => Ω Para efeito de comparação Caso médio => Θ Pode ser muito complexo de ser obtido 42
43 Pior caso (O): valor que não existe no vetor vet = [7, 6, 5, 4, 3, 2, 1]; pos 1; i 1; k = 8; // chave a ser buscada enquanto(i < tam AND pos = 1)faça se (vet[i] = k)então fimse; pos i; i i + 1; fimenquanto; 43
44 Pior caso: valor que não existe no vetor vet = [7, 6, 5, 4, 3, 2, 1]; pos 1; 1 i 1; 1 k = 8; // chave a ser buscada 1 enquanto(i < tam AND pos = 1)faça n + 1 se (vet[i] = k)então fimse; pos i; 1 n i i + 1; n fimenquanto; 3n
45 Pior caso: valor que não existe no vetor vet = [7, 6, 5, 4, 3, 2, 1]; pos 1; i 1; T(n) = O(n) k = 8; // chave a ser buscada enquanto(i < tam AND pos = 1)faça se (vet[i] = k)então fimse; pos i; i i + 1; fimenquanto; 45
46 Melhor caso (Ω): valor está na 1ª posição do vetor vet = [7, 6, 5, 4, 3, 2, 1]; pos 1; i 1; k = 8; // chave a ser buscada enquanto(i < tam AND pos = 1)faça se (vet[i] = k)então fimse; pos i; i i + 1; fimenquanto; 46
47 Melhor caso: valor está na 1ª posição do vetor vet = [7, 6, 5, 4, 3, 2, 1]; pos 1; 1 i 1; 1 k = 7; // chave a ser buscada 1 enquanto(i < tam AND pos = 1)faça 2 se (vet[i] = k)então 1 fimse; pos i; 1 i i + 1; 1 fimenquanto; 8 47
48 Melhor caso: valor está na 1ª posição do vetor vet = [7, 6, 5, 4, 3, 2, 1]; pos 1; i 1; T(n) = Ω(1) k = 8; // chave a ser buscada enquanto(i < tam AND pos = 1)faça se (vet[i] = k)então fimse; pos i; i i + 1; fimenquanto; 48
49 Para facilitar a análise vamos considerar a instrução mais relevante No nosso exemplo o se é a instrução mais relevante pois é ela que controla quantas vezes o laço vai ser executado se não for o pior caso 49
50 Caso médio (Θ): média das execuções vet = [7, 6, 5, 4, 3, 2, 1]; pos 1; i 1; k = 8; // chave a ser buscada enquanto(i < tam AND pos = 1)faça se (vet[i] = k)então // vamos analisar seu o comportamento fimse; pos i; i i + 1; fimenquanto; 50
51 Caso médio: média das execuções vet = [7, 6, 5, 4, 3, 2, 1]; pos 1; i 1; k = 7; // chave a ser buscada enquanto(i < tam AND pos = 1)faça se (vet[i] = k)então ( n 1 + n) fimse; pos i; i i + 1; fimenquanto; 51
52 Temos que: n n 1+n= i=1 i Podemos dizer que: n i=1 i n 2 (n+1) n (n+1) 2 Logo, média = n (n+1) 2 n (n+1) 2 n 52
53 Caso médio: média das execuções vet = [7, 6, 5, 4, 3, 2, 1]; pos 1; i 1; T(n) = Θ(n) k = 8; // chave a ser buscada enquanto(i < tam AND pos = 1)faça se (vet[i] = k)então fimse; pos i; i i + 1; fimenquanto; 53
54 Para entradas pequenas, a escolha do algoritmo não importa tanto 54
55 A medida que a quantidade de entradas aumenta, a escolha fica mais seletiva 55
56 Comportamento assintótico Comportamento da função para valores muito grande - <= n <= + 56
57 Note que o comportamento do crescimento não é influenciado pelas constantes Logo, podemos desconsiderá-las 57
58 Analisando o comportamento das curvas para valores pequenos qual escolher? 58
59 Analisando o comportamento das curvas para valores grandes (assintótico) qual escolher? 59
60 Devemos desconsiderar as constantes no crescimento da função somente para valores muito grandes 60
61 Dizemos que existe um valor de tamanho de entrada chamado n 0 que a partir dele o algoritmo é pior do que outros 61
62 5n => n0 = 1, 5n 2 => n 0 = 2, 2 n => n 0 = 9 62
63 Exemplo de gráficos das notações de complexidade 63
64 À direita de n0 o valor de f(n) sempre está entre c 1 g(n) e c 2 g(n) inclusive 64
65 À direita de n0 o valor de f(n) sempre está em ou abaixo de cg(n) 65
66 À direita de n0 o valor de f(n) sempre está em ou acima de cg(n) 66
67 67
Teoria da Computação Aula 9 Noções de Complexidade
Teoria da Computação Aula 9 Noções de Complexidade Prof. Esp. Pedro Luís Antonelli Anhanguera Educacional Análise de um Algoritmo em particular Qual é o custo de usar um dado algoritmo para resolver um
Leia maisCOMPLEXIDADE DE ALGORITMOS
COMPLEXIDADE DE ALGORITMOS Algoritmos Seqüência de instruções necessárias para a resolução de um problema bem formulado Permite implementação computacional COMPLEXIDADE DE ALGORITMOS Um algoritmo resolve
Leia maisProjeto e Análise de Algoritmos
Projeto e Análise de Algoritmos Aula 01 Complexidade de Algoritmos Edirlei Soares de Lima O que é um algoritmo? Um conjunto de instruções executáveis para resolver um problema (são
Leia maisTé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
Leia maisexatasfepi.com.br CAII Modularização André Luís Duarte "E quem não toma a sua cruz, e não segue após mim, não é digno de mim.
exatasfepi.com.br CAII Modularização André Luís Duarte "E quem não toma a sua cruz, e não segue após mim, não é digno de mim." Mateus 10:38 Modularizando Algoritmos Decomposição de problemas Módulos ou
Leia maisUniversidade Federal de Alfenas
Universidade Federal de Alfenas Projeto e Análise de Algoritmos Aula 06 Notação O humberto@bcc.unifal-mg.edu.br Tempo de execução (ms) Última aula teórica Análise experimental 45 40 35 30 25 20 15 10 5
Leia maisPreliminares. Profa. Sheila Morais de Almeida. agosto
Preliminares Profa. Sheila Morais de Almeida DAINF-UTFPR-PG agosto - 2016 Algoritmos Definição - Skiena Algoritmo é a ideia por trás dos programas de computador. É aquilo que permanece igual se o programa
Leia maisAula 1. Teoria da Computação III
Aula 1 Teoria da Computação III Complexidade de Algoritmos Um problema pode ser resolvido através de diversos algoritmos; O fato de um algoritmo resolver um dado problema não significa que seja aceitável
Leia maisESTRUTURA DE DADOS CIÊNCIA E TECNOLOGIA DO RIO. Curso de Tecnologia em Sistemas para Internet
INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO RIO GRANDE DO NORTE ESTRUTURA DE DADOS Docente: Éberton da Silva Marinho e-mail: ebertonsm@gmail.com eberton.marinho@ifrn.edu.br Curso de Tecnologia
Leia maisAnálise de Algoritmos Estrutura de Dados II
Centro de Ciências Exatas, Naturais e de Saúde Departamento de Computação Análise de Algoritmos Estrutura de Dados II COM10078 - Estrutura de Dados II Prof. Marcelo Otone Aguiar marcelo.aguiar@ufes.br
Leia maisProjeto e Análise de Algoritmos
Projeto e Análise de Algoritmos A. G. Silva Baseado nos materiais de Souza, Silva, Lee, Rezende, Miyazawa Unicamp Ribeiro FCUP 18 de agosto de 2017 Conteúdo programático Introdução (4 horas/aula) Notação
Leia maisCOMPLEXIDADE 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
Leia maisEstruturas de Dados Algoritmos
Estruturas de Dados Algoritmos Prof. Eduardo Alchieri Algoritmos (definição) Sequência finita de instruções para executar uma tarefa Bem definidas e não ambíguas Executáveis com uma quantidade de esforço
Leia maisComplexidade de algoritmos Notação Big-O
Complexidade de algoritmos Notação Big-O Prof. Byron Leite Prof. Tiago Massoni Engenharia da Computação Poli - UPE Motivação O projeto de algoritmos é influenciado pelo estudo de seus comportamentos Problema
Leia maisCAI Fluxograma Revisão 7
exatasfepi.com.br CAI Fluxograma Revisão 7 André Luís Duarte O coração do entendido adquire o conhecimento, e o ouvido dos sábios busca a sabedoria. Pv 18:15 Fluxograma Introdução Formas básicas Estrutura
Leia maisComplexidade 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
Leia maisAnálise de Algoritmos Parte 4
Análise de Algoritmos Parte 4 Túlio Toffolo tulio@toffolo.com.br 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)
Leia maisANÁLISE DE ALGORITMOS: PARTE 3
ANÁLISE DE ALGORITMOS: PARTE 3 Prof. André Backes 2 A notação grande-o é a forma mais conhecida e utilizada de análise Complexidade do nosso algoritmo no pior caso Seja de tempo ou de espaço É o caso mais
Leia maisAná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
Leia maisESTRUTURAS DE CONTROLE ESTRUTURAS DE REPETIÇÃO
ESTRUTURAS DE CONTROLE ESTRUTURAS DE REPETIÇÃO Baseado nos slides de autoria de Rosely Sanches Estruturas de Controle ESTRUTURA SEQUENCIAL ESTRUTURAS CONDICIONAIS Estrutura Condicional Simples Estrutura
Leia maisAnálise de algoritmos. Parte I
Análise de algoritmos Parte I 1 Procedimento X Algoritmo Procedimento: sequência finita de instruções, que são operações claramente descritas, e que podem ser executadas mecanicamente, em tempo finito.
Leia maisMC102 Aula 26. Instituto de Computação Unicamp. 17 de Novembro de 2016
MC102 Aula 26 Recursão Instituto de Computação Unicamp 17 de Novembro de 2016 Roteiro 1 Recursão Indução 2 Recursão 3 Fatorial 4 O que acontece na memória 5 Recursão Iteração 6 Soma em um Vetor 7 Números
Leia maisAlgoritmos e Estrutura de Dados. Algoritmos Prof. Tiago A. E. Ferreira
Algoritmos e Estrutura de Dados Aula 3 Conceitos Básicos de Algoritmos Prof. Tiago A. E. Ferreira Definição de Algoritmo Informalmente... Um Algoritmo é qualquer procedimento computacional bem definido
Leia maisElementos de Análise Assintótica
Elementos de Análise Assintótica Marcelo Keese Albertini Faculdade de Computação Universidade Federal de Uberlândia 23 de Março de 2018 Aula de hoje Nesta aula veremos: Elementos de Análise Assintótica
Leia maisRecursividade Alguns problemas são definidos com base nos mesmos, ou seja, podem ser descritos por instâncias do próprio problema.
Recursividade Alguns problemas são definidos com base nos mesmos, ou seja, podem ser descritos por instâncias do próprio problema. Para tratar estas classes de problemas, utilizase o conceito de recursividade.
Leia maisIntrodução a Algoritmos Parte 08
Universidade Federal do Vale do São Francisco Curso de Engenharia de Computação Introdução a Algoritmos Parte 08 (Baseado no Material do Prof. Marcelo Linder) Prof. Jorge Cavalcanti jorge.cavalcanti@univasf.edu.br
Leia maisComportamento assintótico
ANÁLISE DE ALGORITMOS: PARTE 2 Prof. André Backes 2 Na última aula, vimos que o custo para o algoritmo abaixo é dado pela função f(n) = 4n + 3 1 3 Essa é a função de complexidade de tempo Nos dá uma ideia
Leia maisGBC015: INTRODUÇÃO À CIÊNCIA DA COMPUTAÇÃO. Teoria de Algoritmos: Complexidade
GBC015: INTRODUÇÃO À CIÊNCIA DA COMPUTAÇÃO Teoria de Algoritmos: Complexidade Ilmério Reis da Silva ilmerio@ufu.br www.facom.ufu.br/~ilmerio/icc UFU/FACOM/BCC Introdução Antes de executar um programa é
Leia maisBreve Introdução à Complexidade Assintótica de Algoritmos Letícia Rodrigues Bueno
Breve Introdução à Complexidade Assintótica de Algoritmos Letícia Rodrigues Bueno Introdução Objetivo: possibilitar medir eficiência de algoritmos; Introdução Objetivo: possibilitar medir eficiência de
Leia maisCT-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
Leia maisALGORITMOS E ESTRUTURAS DE DADOS 2011/2012 ANÁLISE DE ALGORITMOS. Armanda Rodrigues 3 de Outubro 2011
ALGORITMOS E ESTRUTURAS DE DADOS 2011/2012 ANÁLISE DE ALGORITMOS Armanda Rodrigues 3 de Outubro 2011 2 Análise de Algoritmos Temos até agora analisado soluções de problemas de forma intuitiva A análise
Leia maisBC1424 Algoritmos e Estruturas de Dados I Aula 05 Custos de um algoritmo e funções de complexidade
BC1424 Algoritmos e Estruturas de Dados I Aula 05 Custos de um algoritmo e funções de complexidade Prof. Jesús P. Mena-Chalco 1Q-2016 1 1995 2015 2 Custo de um algoritmo e funções de complexidade Introdução
Leia maisAlgoritmo. Exemplo. Definição. Programação de Computadores Comparando Algoritmos. Alan de Freitas
Algoritmos Programação de Computadores Comparando Algoritmos Um algoritmo é um procedimento de passos para cálculos. Este procedimento é composto de instruções que definem uma função Até o momento, vimos
Leia maisAndré Vignatti DINF- UFPR
Notação Assintótica: O André Vignatti DINF- UFPR Notação Assintótica Vamos expressar complexidade através de funções em variáveis que descrevam o tamanho de instâncias do problema. Exemplos: Problemas
Leia maisAnálise de algoritmos
Análise de algoritmos SCE-181 Introdução à Ciência da Computação II Alneu Lopes Thiago A. S. Pardo 1 Algoritmo Noção geral: conjunto de instruções que devem ser seguidas para solucionar um determinado
Leia maisIntrodução à Análise Algoritmos
Introdução à Análise Algoritmos Notas de aula da disciplina IME 4-182 Estruturas de Dados I Paulo Eustáquio Duarte Pinto (pauloedp arroba ime.uerj.br) abril/218 Ordenação por SELEÇÃO: Idéia: Dado um vetor
Leia maisQuantidade de memória necessária
Tempo de processamento Um algoritmo que realiza uma tarefa em 10 horas é melhor que outro que realiza em 10 dias Quantidade de memória necessária Um algoritmo que usa 1MB de memória RAM é melhor que outro
Leia maisRecursividade. Prof. Jesus José de Oliveira Neto
Recursividade Prof. Jesus José de Oliveira Neto Algoritmos podem ser definidos de duas formas: Forma iterativa ou não recursiva: utiliza laços de repetição (while, for, do/while) Forma recursiva: métodos
Leia maisAnálise e Projeto de Algoritmos
Análise e Projeto de Algoritmos Mestrado em Ciência da Computação Prof. Dr. Aparecido Nilceu Marana Faculdade de Ciências I think the design of efficient algorithms is somehow the core of computer science.
Leia maisPC Fluxograma Revisão 8
exatasfepi.com.br PC Fluxograma Revisão 8 André Luís Duarte O coração do entendido adquire o conhecimento, e o ouvido dos sábios busca a sabedoria. Pv 18:15 Fluxograma Introdução Formas básicas Estrutura
Leia maisComputação I: Representações de Algoritmos
Computação I: Representações de Algoritmos reginaldo.re@utfpr.edu.br * Parte da apresentação foi gentilmente cedida pelo prof. Igor Steinmacher Agenda Objetivos Relembrando... Algoritmos para desenvolver
Leia maisExercícios Aula Prática VII
Exercícios Aula Prática VII Estruturas de dados homogêneas 99 As estruturas de dados homogêneas que estudaremos são os vetores também conhecidos com arranjos. Vetores nada mais são que matrizes. Matriz
Leia maisÉ interessante comparar algoritmos para valores grandes de n. Para valores pequenos de n, mesmo um algoritmo ineficiente não custa muito para ser
É interessante comparar algoritmos para valores grandes de n. Para valores pequenos de n, mesmo um algoritmo ineficiente não custa muito para ser executado 1 Fazendo estimativas e simplificações... O número
Leia maisIntrodução à Ciência da Computação II
Introdução à Ciência da Computação II 2semestre/200 Prof Alneu de Andrade Lopes Apresentação com material gentilmente cedido pelas profas Renata Pontin Mattos Fortes http://wwwicmcuspbr/~renata e Graça
Leia maisTeoria 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:
Leia mais1 a Lista Professor: Claudio Fabiano Motta Toledo Estagiário PAE: Jesimar da Silva Arantes
SSC0503 - Introdução à Ciência de Computação II 1 a Lista Professor: Claudio Fabiano Motta Toledo (claudio@icmc.usp.br) Estagiário PAE: Jesimar da Silva Arantes (jesimar.arantes@usp.br) 1. O que significa
Leia maisTeoria 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 antunes@ibilce.unesp.br, socorro@ibilce.unesp.br Grafos e Algoritmos Preparado a partir do texto: Rangel, Socorro.
Leia maisAnálise de algoritmos
Análise de algoritmos Introdução à Ciência da Computação 2 Baseado nos slides do Prof. Thiago A. S. Pardo Algoritmo Noção geral: conjunto de instruções que devem ser seguidas para solucionar um determinado
Leia maisANÁLISE DE ALGORITMOS: PARTE 1. Prof. André Backes. Como resolver um problema no computador? Precisamos descrevê-lo de uma forma clara e precisa
ANÁLISE DE ALGORITMOS: PARTE 1 Prof. André Backes Algoritmos 2 Como resolver um problema no computador? Precisamos descrevê-lo de uma forma clara e precisa Precisamos escrever o seu algoritmo Um algoritmo
Leia maisAná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
Leia mais2. Complexidade de Algoritmos
Introdução à Computação II 5952011 2. Complexidade de Algoritmos Prof. Renato Tinós Depto. de Computação e Matemática (FFCLRP/USP) 1 Principais Tópicos 2.1. Introdução 2.1.1. Revisão de Pseudo-Código 2.1.2.
Leia maisBusca em Memória Primária Estrutura de Dados II
Centro de Ciências Exatas, Naturais e de Saúde Departamento de Computação Busca em Memória Primária Estrutura de Dados II Estrutura de Dados II COM10078 2017-I Prof. Marcelo Otone Aguiar marcelo.aguiar@ufes.br
Leia maisBusca em Memória Primária Estrutura de Dados II
Centro de Ciências Exatas, Naturais e de Saúde Departamento de Computação Busca em Memória Primária Estrutura de Dados II COM10078 Estrutura de Dados II Prof. Marcelo Otone Aguiar marcelo.aguiar@ufes.br
Leia maisComplexidade de Algoritmos
60 Desempenho 50 40 30 20 Algoritmo1 Algoritmo2 Algoritmo3 10 0 Complexidade de Algoritmos INFORMÁTICA BÁSICA Prof. Demétrios Coutinho C a m p u s P a u d o s F e r r o s D i s c i p l i n a d e A l g
Leia maisComplexidade de Algoritmos
Complexidade de Algoritmos O que é um algoritmo? Sequência bem definida e finita de cálculos que, para um dado valor de entrada, retorna uma saída desejada/esperada. Na computação: Uma descrição de como
Leia maisESTRUTURAS DE REPETIÇÃO - PARTE 1
AULA 15 ESTRUTURAS DE REPETIÇÃO - PARTE 1 15.1 O comando enquanto-faca- Considere o problema de escrever um algoritmo para ler um número inteiro positivo, n, e escrever todos os números inteiros de 1 a
Leia maisTécnicas de Programação III Análise de Algoritmos (Continuação)
Técnicas de Programação III Análise de Algoritmos (Continuação) Aula ministrada em: 23/08/2007 Prof. Mauro L. C. Silva 1/10 Objetivos da Aula Entender a Análise e a Complexidade de Algoritmos 2/10 Avaliação
Leia maisComplexidade Assintótica de Programas Letícia Rodrigues Bueno
Complexidade Assintótica de Programas Letícia Rodrigues Bueno Análise de Algoritmos 1. Introdução; Análise de Algoritmos 1. Introdução; 2. Conceitos básicos; Análise de Algoritmos 1. Introdução; 2. Conceitos
Leia maisInformática Portugol IDE Revisão 1
exatasfepi.com.br Informática Portugol IDE Revisão 1 André Luís Duarte Honra a teu pai e a tua mãe (que é o primeiro mandamento com promessa), para que te vá bem, e sejas de longa vida sobre a terra.(ef
Leia maisComportamento Assintótico. Algoritmos e Estruturas de Dados Flavio Figueiredo (http://flaviovdf.github.io)
Comportamento Assintótico Algoritmos e Estruturas de Dados 2 2017-1 Flavio Figueiredo (http://flaviovdf.github.io) 1 Até Agora Falamos de complexidade de algoritmos com base no número de passos Vamos generalizar
Leia maisMCTA028 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
Leia maisIntrodução a Algoritmos Parte 06
Universidade Federal do Vale do São Francisco Curso de Engenharia de Computação Introdução a Algoritmos Parte 06 (Baseado no Material do Prof. Marcelo Linder) Prof. Jorge Cavalcanti jorge.cavalcanti@univasf.edu.br
Leia maisALGORITMOS AVANÇADOS UNIDADE II Recursividade. Luiz Leão
Luiz Leão luizleao@gmail.com http://www.luizleao.com Conteúdo Programático 2.1 - Definições recursivas 2.2 - Como implementar recursividade 2.3 - Quando não usar recursividade 2.4 - Desenvolvendo algoritmos
Leia maisTeoria 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
Leia maisAnálise e Complexidade de Algoritmos
Análise e Complexidade de Algoritmos Professor Ariel da Silva Dias Introdução Apresentação Professor Professor Ariel Dias Apresentação Disciplina O que veremos? www.arieldias.com BlackBoard Apresentação
Leia maisCCO 016 Fundamentos de Programação
CCO 016 Fundamentos de Programação Prof. Roberto Affonso da Costa Junior Universidade Federal de Itajubá AULA 09 Agregados Homogêneos Variáveis Indexadas Vetores EXEMPLO 1 Um programa deve calcular quem
Leia maisBCC202 - Estrutura de Dados I
BCC202 - Estrutura de Dados I Aula 06: Análise de Algoritmos (Parte 3) Reinaldo Fortes Universidade Federal de Ouro Preto, UFOP Departamento de Ciência da Computação, DECOM Website: www.decom.ufop.br/reifortes
Leia maisAnálise de algoritmos
Análise de algoritmos Introdução à Ciência de Computação II Baseados nos Slides do Prof. Dr. Thiago A. S. Pardo Análise de algoritmos Existem basicamente 2 formas de estimar o tempo de execução de programas
Leia maisAnálise de Complexidade de Algoritmos. mario alexandre gazziro
Análise de Complexidade de Algoritmos mario alexandre gazziro Definição A complexidade de um algoritmo consiste na quantidade de esforço computacional necessária para sua execução. Esse esforço é expresso
Leia maisESTRUTURAS DE DADOS E ALGORITMOS APRESENTAÇÃO DO CURSO E INTRODUÇÃO
ESTRUTURAS DE DADOS E ALGORITMOS APRESENTAÇÃO DO CURSO E INTRODUÇÃO Adalberto Cajueiro (adalberto@computacao.ufcg.edu.br) Departamento de Sistemas e Computação Universidade Federal de Campina Grande 1
Leia maisFACULDADE CAMPO LIMPO PAULISTA BACHARELADO EM CIÊNCIA DA COMPUTAÇÃO. Projeto a Análise de Algoritmos I Lista de Exercícios 1
FACULDADE CAMPO LIMPO PAULISTA BACHARELADO EM CIÊNCIA DA COMPUTAÇÃO Projeto a Análise de Algoritmos I Lista de Exercícios 1 Prof. Osvaldo. 1. Descreva alguns problemas associados ao emprego de metodologias
Leia maisTeoria 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
Leia maisESTRUTURAS DE CONTROLE
ESTRUTURAS DE CONTROLE ESTRUTURAS DE REPETIÇÃO Estruturas de Controle ESTRUTURA SEQUENCIAL ESTRUTURAS CONDICIONAIS Estrutura Condicional Simples Estrutura Condicional Composta Seleção entre duas ou mais
Leia maisAndré Vignatti DINF- UFPR
Notação Assintótica: Ω, Θ André Vignatti DINF- UFPR Limitantes Inferiores Considere o seguinte trecho de código: void main () { /* trecho que le N da entrada padrao */ for (i = 0 ; i< N; i++) puzzle(i);
Leia maisEstruturas 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
Leia maisPCC104 - Projeto e Análise de Algoritmos
PCC104 - Projeto e Análise de Algoritmos Marco Antonio M. Carvalho Departamento de Computação Instituto de Ciências Exatas e Biológicas Universidade Federal de Ouro Preto 16 de agosto de 2018 Marco Antonio
Leia maisAEDI Introdução Revisão 2
exatasfepi.com.br AEDI Introdução Revisão 2 André Luís Duarte...mas os que esperam no Senhor renovarão as suas forças; subirão com asas como águias; correrão, e não se cansarão; andarão, e não se fatigarão.is
Leia maisLINGUAGEM DE PROGRAMAÇÃO
Técnico em Informática LINGUAGEM DE PROGRAMAÇÃO Profª Ana Paula anapaula_mandelli@hotmail.com Estruturas de Repetição Em muitos casos, o algoritmo solução para uma determinada classe de problemas, apresenta
Leia maisCURSO DE ESTRUTURA DE DADOS MÓDULO: ALGORITMOS DE ORDENAÇÃO E PESQUISA PROFESSORA: DANIELA ELOISE FLÔR COLABORADORA: MARIA CAROLINA SILA VANUCHI
CURSO DE ESTRUTURA DE DADOS MÓDULO: ALGORITMOS DE ORDENAÇÃO E PESQUISA PROFESSORA: DANIELA ELOISE FLÔR COLABORADORA: MARIA CAROLINA SILA VANUCHI O QUE SÃO ALGORITMOS DE ORDENAÇÃO? São algoritmos que organizam
Leia maisAlgoritmos e Estruturas de Dados I Prof. Tiago Eugenio de Melo
Algoritmos e Estruturas de Dados I Prof. Tiago Eugenio de Melo tmelo@uea.edu.br www.tiagodemelo.info Observações O conteúdo dessa aula é parcialmente proveniente do Capítulo 11 do livro Fundamentals of
Leia maisEste conceito é bastante simples e será útil e conveniente nos itens seguintes, na definição das estruturas básicas de controle de execução.
Capítulo 7 Controle de Fluxo de Execução Até o momento os algoritmos estudados utilizam apenas instruções primitivas de atribuição, e de entrada e saída de dados. Qualquer conjunto de dados fornecido a
Leia maisMó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);
Leia mais3. ANÁLISE DE COMPLEXIDADE PESSIMISTA
3. ANÁLISE DE COMPLEXIDADE PESSIMISTA Este capítulo introduz uma metodologia para analisar a complexidade pessimista (i. e. no pior caso) de um algoritmo com base em sua estrutura. O processo de construção
Leia maisMedida 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
Leia maisAlgoritmos. Prof. Jonatas Bastos Site:
Algoritmos Prof Jonatas Bastos Email: jonatasfbastos@gmailcom Site: http://jonatasfbastoswordpresscom/ 1 Estrutura de Repetição Computadores não reclamam por executar alguma tarefa, nem se cansam em fazer
Leia maisAlgoritmos 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
Leia maisModularização. Prof. Antonio Almeida de Barros Junior
Modularização Prof. Antonio Almeida de Barros Junior 1 Modularização A modularização consiste em decompor um programa em uma série de subprogramas individuais; Trata-se de um método utilizado para facilitar
Leia maisPra início de conversa... O que é um algoritmo? Exemplos de algoritmos. Como podemos descrever algoritmos? Como podemos descrever algoritmos?
Pra início de conversa... O que é um algoritmo? Como podemos descrever algoritmos? avaliar algoritmos? Introdução à Análise de Algoritmos Prof. Cláudio E. C. Campelo http://claudiocampelo.com Derivado
Leia maisALGORITMOS AVANÇADOS UNIDADE I Análise de Algoritmo - Notação O. Luiz Leão
Luiz Leão luizleao@gmail.com http://www.luizleao.com Conteúdo Programático 1.1 - Algoritmo 1.2 - Estrutura de Dados 1.2.1 - Revisão de Programas em C++ envolvendo Vetores, Matrizes, Ponteiros, Registros
Leia maisCapítulo 6 Análise de Algoritmos Capítulo 6
666 Apêndice C Respostas e Sugestões para os Exercícios de Revisão 42. Consulte a Seção 5.4. 43. (a) Escoamento de memória.(b) Porque não há garantia que o cliente irá usá-la devidamente. 44. (a) Contagem
Leia maisAná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
Leia maisProjeto 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
Leia maisAlgoritmos e Estruturas de Dados I Aula 06 Custos de um algoritmo
Algoritmos e Estruturas de Dados I Aula 06 Custos de um algoritmo Prof. Jesús P. Mena-Chalco 1Q-2019 1 lista 3 7-2 6 NULL Node *Busca(int x, Node *lista) { while (lista!=null && lista->data!=x) lista =
Leia maisCES-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
Leia maisMedida 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
Leia maisProjeto e Análise de Algoritmos
Projeto e Análise de Algoritmos Conceitos básicos Metodo de provas: Indução Diane Castonguay diane@inf.ufg.br Instituto de Informática Universidade Federal de Goiás Notações = para todo = existe! = único
Leia mais7. Introdução à Complexidade de Algoritmos
7. Introdução à Complexidade de Algoritmos Fernando Silva DCC-FCUP Estruturas de Dados Fernando Silva (DCC-FCUP) 7. Introdução à Complexidade de Algoritmos Estruturas de Dados 1 / 1 Análise de Algoritmos
Leia maisFig.1: Ilustração de Estrutura de Controle Fonte:Internet
4. Estrutura de Controle Os algoritmos são criados para solucionar problemas propostos utilizando conceitos de bloco lógico, entrada e saída de dados, constantes, variáveis, expressões lógicas, atribuições
Leia maisMedida do Tempo de Execução de um Programa
Medida do Tempo de Execução de um Programa Livro Projeto de Algoritmos Nívio Ziviani Capítulo 1 Seção 1.3.1 http://www2.dcc.ufmg.br/livros/algoritmos/ Comportamento Assintótico de Funções O parâmetro n
Leia mais