Técnicas de projeto de algoritmos: Indução
|
|
|
- Raíssa Delgado Figueira
- 8 Há anos
- Visualizações:
Transcrição
1 Técnicas de projeto de algoritmos: Indução ACH 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 Material baseado em slides dos professores Marcos Chaim, Cid de Souza e Cândida da Silva Delano M. Beder (EACH - USP) Indução - Parte I ACH / 1
2 Indução Matemática Técnica matemática muito poderosa para provar asserções sobre números naturais. Seja T um teorema que desejamos provar. Suponha que T tenha como parâmetro um número natural n. Ao invés de provar diretamente que T é válido para todos os valores de n, basta provar as duas condições a seguir: 1 T é válido para n = 1 (passo base) 2 Para todo n > 1, se T é válido para n - 1, então T é válido para n (hipótese da indução ou passo indutivo). Delano M. Beder (EACH - USP) Indução - Parte I ACH / 1
3 Indução Matemática Normalmente, provar a condição 1 é relativamente fácil. Provar a condição 2 é mais fácil do que provar o teorema, pois pode-se utilizar do fato de que T é válido para n - 1. Por que a indução funciona? Por que as duas condições são suficientes? As condições 1 e 2 implicam que T é válido para n = 2. Se válido T é válido para n = 2, então pela condição 2 implica que T também é válido para 3, e assim por diante. O princípio da indução é um axioma dos números naturais. Delano M. Beder (EACH - USP) Indução - Parte I ACH / 1
4 Indução Matemática Exemplo 1 Considere a expressão de soma dos primeiros números naturais n, isto é, S(n) = n. Provar por indução que S(n) = n (n+1) 2. Delano M. Beder (EACH - USP) Indução - Parte I ACH / 1
5 Indução Matemática Exemplo 1 Considere a expressão de soma dos primeiros números naturais n, isto é, S(n) = n. Provar por indução que S(n) = n (n+1) 2. Prova: Passo base: Para n = 1, S(1) = 1 (trivial). Delano M. Beder (EACH - USP) Indução - Parte I ACH / 1
6 Indução Matemática Exemplo 1 Considere a expressão de soma dos primeiros números naturais n, isto é, S(n) = n. Provar por indução que S(n) = n (n+1) 2. Prova: Passo base: Para n = 1, S(1) = 1 (trivial). Passo indutivo: Pelo princípio da indução matemática podemos assumir S(n 1) = (n 1) (n 1+1) 2 como válido. Mas S(n) = S(n 1) + n = (n 1) (n 1+1) 2 + n = n (n+1) 2. Assim, provamos o passo indutivo. Logo, S(n) = n (n+1) 2 para todo n 1. Delano M. Beder (EACH - USP) Indução - Parte I ACH / 1
7 Indução Matemática Exemplo 2 Prove por indução que 2 n > 2 n n n , n 1. Delano M. Beder (EACH - USP) Indução - Parte I ACH / 1
8 Indução Matemática Exemplo 2 Prove por indução que 2 n > 2 n n n , n 1. Prova: Passo base: Para n = 1, 2 1 > 2 0 (trivial). Delano M. Beder (EACH - USP) Indução - Parte I ACH / 1
9 Indução Matemática Exemplo 2 Prove por indução que 2 n > 2 n n n , n 1. Prova: Passo base: Para n = 1, 2 1 > 2 0 (trivial). Passo indutivo: Pelo princípio da indução matemática 2 n 1 > 2 n n é verdadeiro Somando 2 n 1 nos dois lados da inequação (lembrando que 2 n 1 é positivo e por isso não altera o sinal da inequação) obtemos: 2.2 n 1 > 2 n n n Portanto, 2 n > 2 n n n O passo indutivo está provado. Logo, 2 n > 2 n n n para todo n 1. Delano M. Beder (EACH - USP) Indução - Parte I ACH / 1
10 Variações Variação 1 Caso base: n = 1 Provar que para n 2, se a propriedade é válida para n, ela é valida para n + 1. Variação 2 Caso base: n = 1, 2 e 3 Provar que para n 4, se a propriedade é válida para n, ela é valida para n + 1. Variação 3 (Indução forte) Caso base: n = 1 Provar que para n 2, se a propriedade é válida para 1 m n, ela é valida para n + 1. Delano M. Beder (EACH - USP) Indução - Parte I ACH / 1
11 Exercícios - Indução Matemática 1 Prove que n 2 = 2n3 +3n 2 +n 6, n 1 2 Prove que n 1 = n 2, n 1 3 Prove que n 3 = n4 +2n 3 +n 2 4, n 1 4 Prove que (2n 1) 3 = 2n 4 n 2, n 1 5 Prove que n = 2 n+1 1, n 0 6 Prove que 2 n n 2, n 4. 7 Prove que n 1 1 2n = 1 n n n 8 Prove a soma dos cubos de três numeros naturais positivos sucessivos é divisível por 9. 9 Prove que todo número natural n > 1 pode ser escrito como o produto de primos (indução forte). 10 Prove que todo número natural positivo pode ser escrito como a soma de diferentes potências de 2 (indução forte). Delano M. Beder (EACH - USP) Indução - Parte I ACH / 1
12 Princípio da Recursão Definições recursivas de métodos são baseadas no princípio matemático da indução. A ideia é que a solução de um problema pode ser apresentada da seguinte forma: Primeiramente, definimos a solução para os casos básicos; Em seguida, definimos como resolver o problema para os demais casos, porém, de uma forma mais simples. Delano M. Beder (EACH - USP) Indução - Parte I ACH / 1
13 Usando Indução em Programação Problema: definir a multiplicação de dois números inteiros não negativos m e n, em termos da operação de adição Qual o caso base? Delano M. Beder (EACH - USP) Indução - Parte I ACH / 1
14 Usando Indução em Programação Problema: definir a multiplicação de dois números inteiros não negativos m e n, em termos da operação de adição Qual o caso base? Se n é igual a 0, então a multiplicação é 0. Qual seria o passo indutivo Delano M. Beder (EACH - USP) Indução - Parte I ACH / 1
15 Usando Indução em Programação Problema: definir a multiplicação de dois números inteiros não negativos m e n, em termos da operação de adição Qual o caso base? Se n é igual a 0, então a multiplicação é 0. Qual seria o passo indutivo Temos que expressar a solução para n > 0, supondo que já sabemos a solução para algum caso mais simples. m n = m + (m (n 1)). Delano M. Beder (EACH - USP) Indução - Parte I ACH / 1
16 Usando Indução em Programação Problema: definir a multiplicação de dois números inteiros não negativos m e n, em termos da operação de adição Qual o caso base? Se n é igual a 0, então a multiplicação é 0. Qual seria o passo indutivo Temos que expressar a solução para n > 0, supondo que já sabemos a solução para algum caso mais simples. m n = m + (m (n 1)). Portanto, a solução do problema pode ser expressa: m 0 = 0 m n = m + (m (n 1)) Como programar esta solução em Java? Delano M. Beder (EACH - USP) Indução - Parte I ACH / 1
17 Usando Indução em Programação class Aritr { } static int multr (int m, int n) { if(n == 0) { return 0; } else { return (m + multr(m, n-1)); } } Delano M. Beder (EACH - USP) Indução - Parte I ACH / 1
18 Utilizando Recursão Comando/ Resultado Estado Expressão (expressão) (após execução/avaliação) multr (3,2)... m > 3 n > 2 n == 0 false m > 3 n > 2 return m + multr (m,n-1)... m > 3 m > 3 n > 2 n > 1 n == 0 false m > 3 m > 3 n > 2 n > 1 return m + multr (m,n-1)... m > 3 m > 3 m > 3 n > 2 n > 1 n > 0 n == 0 true m > 3 m > 3 m > 3 n > 2 n > 1 n > 0 return 0 m > 3 m > 3 n > 2 n > 1 return m + 0 m > 3 n > 2 return m + 3 multr (3,2) 6 Delano M. Beder (EACH - USP) Indução - Parte I ACH / 1
19 Recursão Para solucionar o problema, é feita uma outra chamada para o próprio método, por isso, este método é chamado recursivo. Recursividade geralmente permite uma descrição mais clara e concisa dos algoritmos, especialmente quando o problema é recursivo por natureza. Cada chamada do método multr cria novas variáveis de mesmo nome m e n. Portanto, várias variáveis m e n podem existir em um dado momento. Em um dado instante, o nome (m ou n) refere-se à variável local ao corpo do método que está sendo executado. Delano M. Beder (EACH - USP) Indução - Parte I ACH / 1
20 Recursão As execuções das chamadas de métodos são feitas em uma estrutura de pilha. Pilha: estrutura na qual a inserção (ou alocação) e a retirada (ou liberação) de elementos é feita de maneira que o último elemento inserido é o primeiro a ser retirado. Assim, o último conjunto de variáveis alocadas na pilha corresponde às variáveis e aos parâmetros do último método chamado. O espaço de variáveis e parâmetros alocado para um método é chamado de registro de ativação desse método. O registro de ativação é desalocado quando termina a execução de um método. Delano M. Beder (EACH - USP) Indução - Parte I ACH / 1
21 Recursão Variáveis que podem ser usadas no corpo de um método: variáveis ou atributos de classe (static): criados uma única vez; variáveis ou atributos de instância: criados quando é criado um novo objeto (new); parâmetros e variáveis locais: criados cada vez que é invocado o método. Na criação de uma variável local a um método, se não for especificado um valor inicial, o valor armazenado será indeterminado. Indeterminado = valor existente nos bytes alocados para essa variável na pilha de chamada dos métodos. Delano M. Beder (EACH - USP) Indução - Parte I ACH / 1
22 Iteração class Aritr { static int multr (int m, int n) { int r = 0; for (int i = 1; i <= n; i++) { r += m; } } } return r; Delano M. Beder (EACH - USP) Indução - Parte I ACH / 1
23 Iteração Comando/ Resultado Estado Expressão (expressão) (após execução/avaliação) multr (3,2)... m > 3, n > 2 int r = 0... m > 3, n > 2, r > 0 int i = 1 m > 3, n > 2, r > 0, i > 1 i <= n true m > 3, n > 2, r > 0, i > 1 r+=m 3 m > 3, n > 2, r > 3, i > 1 i++ 2 m > 3, n > 2, r > 3, i > 2 i <= n true m > 3, n > 2, r > 3, i > 2 r+=m 6 m > 3, n > 2, r > 6, i > 2 i++ 3 m > 3, n > 2, r > 6, i > 3 i <= n false m > 3, n > 2, r > 6, i > 3 for... m > 3, n > 2, r > 6 return r 6 m > 3, n > 2, r > 6 mult(3,2) 6 Delano M. Beder (EACH - USP) Indução - Parte I ACH / 1
24 Recursão x Iteração Soluções recursivas são geralmente mais concisas que as iterativas. Programas mais simples. Soluções iterativas em geral têm a memória limitada enquanto as recursivas, não. Cópia dos parâmetros a cada chamada recursiva é um custo adicional para as soluções recursivas. Programas recursivos que possuem chamadas no final do código são ditos terem recursividade de cauda. São facilmente transformáveis em uma versão não recursiva. Projetista de algoritmos deve levar consideração a complexidade (temporal e espacial), bem como os outros custos (e.g., facilidade de manutenção) para decidir por qual solução utilizar. Delano M. Beder (EACH - USP) Indução - Parte I ACH / 1
25 Exercícios 1 Forneça soluções recursivas para os problemas abaixo cálculo do fatorial de um número. cálculo do elemento n da série de Fibonacci. f 0 = 0, f 1 = 1, f n = f n 1 + f n 2 para n >= 2. busca binária. 2 Como faço para calcular a complexidade (temporal ou espacial) de um algoritmo recursivo? 3 Escreva um método recursivo que calcule a soma dos elementos positivos do vetor de inteiros v[0..n 1]. O problema faz sentido quando n é igual a 0? Quanto deve valer a soma nesse caso? (Retirado de [1]) 4 Escreva um método recursivo maxmin que calcule o valor de um elemento máximo e o valor de um elemento mínimo de um vetor v[0..n 1]. Quantas comparações envolvendo os elementos do vetor a sua função faz? (Retirado de [1]) Delano M. Beder (EACH - USP) Indução - Parte I ACH / 1
26 Exercícios 5 Escreva um método recursivo que calcule a soma dos elementos positivos do vetor v[ini..fim 1]. O problema faz sentido quando ini é igual a fim? Quanto deve valer a soma nesse caso? (Retirado de [1]) 6 Escreva um método recursivo que calcule a soma dos dígitos de um inteiro positivo n. A soma dos dígitos de 132, por exemplo, é 6. (Retirado de [1]) 7 Escreva um método recursivo onde(). Ao receber um inteiro x, um vetor v e um inteiro n, o método deve devolver j no intervalo fechado 0... n 1 tal que v[j] == x. Se tal j não existe, o método deve devolver -1. (Retirado de [1]) 8 Escreva um método recursivo que recebe um inteiro x, um vetor v e inteiros ini e fim e devolve j tal que ini j fim 1 e v[j] == x. Se tal j não existe então devolve ini-1. (Retirado de [1]) Delano M. Beder (EACH - USP) Indução - Parte I ACH / 1
27 Referências Referências utilizadas: [1] (Capítulo 5) e [2] (páginas 35-42). [1] C. Camarão & L. Figueiredo. Programação de Computadores em Java. Livros Técnicos e Científicos Editora, [2] N. Ziviani. Projeto de Algoritmos com implementações em C e Pascal. Editora Thomson, 2a. Edição, Delano M. Beder (EACH - USP) Indução - Parte I ACH / 1
MC102 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
Programação Estruturada
Programação Estruturada Recursão Professores Emílio Francesquini e Carla Negri Lintzmayer 2018.Q3 Centro de Matemática, Computação e Cognição Universidade Federal do ABC Recursão Recursão 1 Recursão 2
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
Algoritmos de Ordenação
Algoritmos de Ordenação ACH2002 - Introdução à Ciência da Computação II Delano M. Beder Escola de Artes, Ciências e Humanidades (EACH) Universidade de São Paulo [email protected] 10/2008 Material baseado em
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
Revisão: Tipo Abstrato de Dados Recursividade
Algoritmos e Estrutura de Dados II Revisão: Tipo Abstrato de Dados Recursividade Prof a Karina Oliveira [email protected] Introdução Estudo das estruturas de dados envolve dois objetivos complementares:
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]
04 Recursão SCC201/501 - Introdução à Ciência de Computação II
04 Recursão 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 Ponti Jr. (ICMCUSP) 04Recursão
Introdução à Ciência da Computação II. Recursão. Prof. Ricardo J. G. B. Campello
Introdução à Ciência da Computação II Recursão Prof. Ricardo J. G. B. Campello Agradecimentos Parte dos slides a seguir são adaptações dos originais em Pascal gentilmente cedidos pelo Prof. Rudinei Goularte
Aula prática 5. Funções Recursivas
Programação Funcional UFOP DECOM 2014.1 Aula prática 5 Funções Recursivas Resumo Definições recursivas são comuns na programação funcional. Nesta aula vamos aprender a definir funções recursivas. Sumário
Divisão e Conquista. Norton T. Roman. Apostila baseada nos trabalhos de Cid de Souza, Cândida da Silva e Delano M. Beder
Divisão e Conquista Norton T. Roman Apostila baseada nos trabalhos de Cid de Souza, Cândida da Silva e Delano M. Beder Divisão e Conquista Construção incremental Ex: Consiste em, inicialmente, resolver
Aula 05: - Recursão (parte 1)
MCTA028 Programação Estruturada Aula 05: - Recursão (parte 1) Prof. João Henrique Kleinschmidt Material elaborado pelo prof. Jesús P. Mena-Chalco 3Q-20108 Recursão: Se você ainda não entendeu; Ver: "Recursão".
Recursividade. Estrutura de Dados. Prof. Kleber Rezende
Recursividade Estrutura de Dados Prof. Kleber Rezende Considerações Iniciais Em aulas anteriores fizemos uma função que permite calcular o fatorial de um número. Naquela função, a cada nova iteração o
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
Aula 05: - Recursão (parte 1)
MCTA028 Programação Estruturada Aula 05: - Recursão (parte 1) Prof. Jesús P. Mena-Chalco [email protected] 3Q-20107 1 Recursão: Se você ainda não entendeu; Ver: "Recursão". Efeito Droste Anuncio
Algoritmos de Ordenação: Tempo Linear
Algoritmos de Ordenação: Tempo Linear ACH2002 - Introdução à Ciência da Computação II Delano M. Beder Escola de Artes, Ciências e Humanidades (EACH) Universidade de São Paulo [email protected] 10/2008 Material
Teoria da Computação. Aula 4 Técnicas de Análise 5COP096. Aula 4 Prof. Dr. Sylvio Barbon Junior. Sylvio Barbon Jr
5COP096 Teoria da Computação Aula 4 Prof. Dr. Sylvio Barbon Junior 1 Sumário 1) Técnicas de Análise de Algoritmos 2) Paradigmas de Projeto de Algoritmos 1) Indução 2) Recursão 3) Algoritmos Tentativa e
Algoritmos de Ordenação: HeapSort
Algoritmos de Ordenação: HeapSort ACH2002 - Introdução à Ciência da Computação II Delano M. Beder Escola de Artes, Ciências e Humanidades (EACH) Universidade de São Paulo [email protected] 10/2008 Material
Recursividade. 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
Algoritmos de Ordenação: MergeSort
Algoritmos de Ordenação: MergeSort ACH2002 - Introdução à Ciência da Computação II Delano M. Beder Escola de Artes, Ciências e Humanidades (EACH) Universidade de São Paulo [email protected] 10/2008 Material
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
Recursão. Aula 1. Liana Duenha. Faculdade de Computação Universidade Federal de Mato Grosso do Sul
Recursão Aula 1 Liana Duenha Faculdade de Computação Universidade Federal de Mato Grosso do Sul Algoritmos e Programação II, Análise de Sistemas, 2010 Martinez & Rubert (FACOM) Recursão APIIAS 1 / 25 Conteúdo
SCC Capítulo 2 Recursão
SCC-501 - Capítulo 2 João Luís Garcia Rosa 1 1 Departamento de Ciências de Computação Instituto de Ciências Matemáticas e de Computação Universidade de São Paulo - São Carlos http://www.icmc.usp.br/~joaoluis
Algoritmos de Ordenação: QuickSort
Algoritmos de Ordenação: QuickSort ACH2002 - Introdução à Ciência da Computação II Delano M. Beder Escola de Artes, Ciências e Humanidades (EACH) Universidade de São Paulo [email protected] 10/2008 Material
UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO. Prof.ª Danielle Casillo
UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO TEORIA DA COMPUTAÇÃO Aula 04 Programa Recursivo e Máquinas Prof.ª Danielle Casillo Funções recursivas Alguma função é recursiva quando
Complexidade Assintótica
Complexidade Assintótica 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 Material baseado
Recursividade. Objetivos do módulo. O que é recursividade
Recursividade Objetivos do módulo Discutir o conceito de recursividade Mostrar exemplos de situações onde recursividade é importante Discutir a diferença entre recursividade e iteração O que é recursividade
Análise e Complexidade de Algoritmos
Análise e Complexidade de Algoritmos Principais paradigmas do projeto de algoritmos - Recursividade - Tentativa e erro - Divisão e Conquista - Programação dinâmica - Algoritmos Gulosos e de Aproximação
ALGORITMOS AVANÇADOS UNIDADE II Recursividade. Luiz Leão
Luiz Leão [email protected] 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
Recursividade. Métodos iterativos. Prof. Cesar Augusto Tacla. Métodos iterativos utilizam estruturas de repetição
Recursividade Prof. Cesar Augusto Tacla Métodos iterativos Métodos iterativos utilizam estruturas de repetição For While Do while Normalmente, um método invoca outros métodos, não a si mesmo. 2 1 Recursividade
Universidade Federal da Grande Dourados Faculdade de Ciências Exatas e Tecnologia Bacharelado em Sistemas de Informação Estruturas de Dados I Lista II
Universidade Federal da Grande Dourados Faculdade de Ciências Exatas e Tecnologia Bacharelado em Sistemas de Informação Estruturas de Dados I Lista II Professor: MSc. Rodrigo Porfírio da Silva Sacchi 30
if not(isinstance(a, int)) or a < 0: raise ValueError ("misterio: arg nao e inteiro nao negativo") else: return misterio_aux(a, a + 1)
Capítulo 7 Recursão e iteração 1. (1) Considere a seguinte função: def misterio(a): def misterio_aux(b, c): if b == 0: return True elif c == 0: return False return misterio_aux(b -, c - ) if not(isinstance(a,
BCC402 Algoritmos e Programação Avançada Prof. Marco Antonio M. Carvalho Prof. Túlio Ângelo M. Toffolo 2011/1
BCC402 Algoritmos e Programação Avançada Prof. Marco Antonio M. Carvalho Prof. Túlio Ângelo M. Toffolo 2011/1 Na aula anterior Prova 2 Na aula de hoje Técnicas básicas de contagem; Tentativa e Erro; Recursividade.
Recursividade, Tentativa e Erro
Recursividade, Tentativa e Erro Túlio Toffolo www.toffolo.com.br Marco Antônio Carvalho [email protected] BCC402 Aula 07 Algoritmos e Programação Avançada Na aula anterior Prova 2 Na aula de hoje Técnicas
BC1424 Algoritmos e Estruturas de Dados I Aula 03: Recursão / Recursividade
BC1424 Algoritmos e Estruturas de Dados I Aula 03: Recursão / Recursividade Prof. Jesús P. Mena-Chalco 1Q-2016 1 Sobre a Lista 01 2 Lista 01 Solve me first Simple Array Sum A Very Big Sum Diagonal Difference
Bruno Hott Algoritmos e Estruturas de Dados I DECSI UFOP. Recursividade
Bruno Hott Algoritmos e Estruturas de Dados I DECSI UFOP Recursividade Conceito de Recursividade Fundamental em Matemática e Ciência da Computação Um programa recursivo é um programa que chama a si mesmo
QUESTÕES DE PROVAS ANTIGAS
CT-24 QUESTÕES DE PROVAS ANTIGAS ) Preencha a tabela abaixo com Î ou Ï: ω(log n) Θ(n) O(n log n) Ω(n 2 ) o(n ) 6n + 2n 2 + 2.log n + 4n + n.log n + log n 2) Dada a árvore binária abaixo, escreva os seus
Roteiro da segunda aula presencial - ME
PIF Enumerabilidade Teoria dos Números Congruência Matemática Elementar Departamento de Matemática Universidade Federal da Paraíba 29 de outubro de 2014 PIF Enumerabilidade Teoria dos Números Congruência
Algoritmos de Ordenação: Cota Inferior
Algoritmos de Ordenação: Cota Inferior ACH2002 - Introdução à Ciência da Computação II Delano M. Beder Escola de Artes, Ciências e Humanidades (EACH) Universidade de São Paulo [email protected] 10/2008 Material
Paradigmas. Fortran, Algol, Algol-68, Pascal, C, Cobol, PL/I
Paradigmas Paradigmas Tradicional Fortran, Algol, Algol-68, Pascal, C, Cobol, PL/I Paradigmas Tradicional Fortran, Algol, Algol-68, Pascal, C, Cobol, PL/I OO Simula-67, Smalltalk, C++, Eiffel, Object Pascal,
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
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
Projeto de algoritmos: Algoritmos Gulosos
Projeto de algoritmos: Algoritmos Gulosos 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] 09/2008
INE5403 FUNDAMENTOS DE MATEMÁTICA DISCRETA
INE5403 FUNDAMENTOS DE MATEMÁTICA DISCRETA PARA A COMPUTAÇÃO PROF. DANIEL S. FREITAS UFSC - CTC - INE Prof. Daniel S. Freitas - UFSC/CTC/INE/2007 p.1/14 3 - INDUÇÃO E RECURSÃO 3.1) Indução Matemática 3.2)
Listas Estáticas. SCC Algoritmos e Estruturas de Dados I. Prof. Fernando V. Paulovich. *Baseado no material do Prof.
Listas Estáticas SCC0202 - Algoritmos e Estruturas de Dados I Prof. Fernando V. Paulovich *Baseado no material do Prof. Gustavo Batista http://www.icmc.usp.br/~paulovic [email protected] Instituto de
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]
Recursividade. David Menotti Algoritmos e Estruturas de Dados II DInf UFPR
Recursividade David Menotti Algoritmos e Estruturas de Dados II DInf UFPR Conceito de Recursividade Fundamental em Matemática e Ciência da Computação Um programa recursivo é um programa que chama a si
USANDO UM MÉTODO INDUTIVO PARA RESOLVER PROBLEMAS. Bruno Maffeo Departamento de Informática PUC-Rio
USANDO UM MÉTODO INDUTIVO PARA RESOLVER PROBLEMAS Bruno Maffeo Departamento de Informática PUC-Rio MÉTODO INDUTIVO O método indutivo para resolver problemas aqui empregado inspira-se na formulação mais
# Estrutura de Dados # Aula 08 Recursão (conceito, utilização, exemplos) Prof. Leinylson Fontinele Pereira
# Estrutura de Dados # Aula 08 Recursão (conceito, utilização, exemplos) Prof. Leinylson Fontinele Pereira Na aula anterior... Alocação Dinâmica de Memória Introdução 3 O que vamos aprender? Recursividade
if not(isinstance(a, int)) or a < 0: raise ValueError ( misterio: arg devia ser inteiro nao negativo ) else: return misterio_aux(a, a + 1)
Capítulo 7 Recursão e iteração 1. (1) Considere a seguinte função: def misterio(a): def misterio_aux(b, c): if b == 0: return True elif c == 0: return False return misterio_aux(b - 2, c - 2) if not(isinstance(a,
SCC0601 Projeto de Algoritmos. Recursão
SCC0601 Projeto de Algoritmos Recursão Definição Uma função é dita recursiva quando é definida em seus próprios termos, direta ou indiretamente Dicionário Michaelis: ato ou efeito de recorrer Recorrer:
Hashing. ACH Introdução à Ciência da Computação II. Delano M. Beder
ing 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] 11/2008 Material baseado em slides do professor
PCC104 - 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 7 de outubro de 2016 Marco Antonio
UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO. Prof.ª Danielle Casillo
UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO Prof.ª Danielle Casillo Diferentes computadores podem ter diferentes arquiteturas e os diversos tipos de linguagem de programação.
MC102 Aula 27 Recursão II
MC102 Aula 27 Recursão II Instituto de Computação Unicamp 17 de Novembro de 2016 Roteiro 1 Recursão Relembrando 2 Cálculo de Potências 3 Torres de Hanoi 4 Recursão e Backtracking 5 Exercício (Instituto
Roteiro Prático Nº 13 Recursividade
UNIVERSIDADE FEDERAL DE ITAJUBÁ UNIFEI CAMPUS ITABIRA BAC004 TÉCNICAS DE PROGRAMAÇÃO Professores: Claudia, Denílson, Fabiana, Fernando, Juliano, Natália, Raquel, Rodrigo, Sandro e Walter Roteiro Prático
Solução de Recorrências
CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS Solução de Recorrências Algoritmos e Estruturas de Dados I Natália Batista https://sites.google.com/site/nataliacefetmg/ [email protected]
Python: Recursão. Claudio Esperança
Python: Recursão Claudio Esperança Recursão É um princípio muito poderoso para construção de algoritmos A solução de um problema é dividido em Casos simples: São aqueles que podem ser resolvidos trivialmente
Algoritmos e Programação. AULA 21: Recursividade UNIVERSIDADE FEDERAL DE PELOTAS CENTRO DE DESENVOLVIMENTO TECNOLÓGICO CIÊNCIA DA COMPUTAÇÃO
1 Algoritmos e Programação AULA 21: Recursividade UNIVERSIDADE FEDERAL DE PELOTAS CENTRO DE DESENVOLVIMENTO TECNOLÓGICO CIÊNCIA DA COMPUTAÇÃO 2 Recursividade A recursão é o processo pelo qual passa um
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
Introdução à Análise Algoritmos
Introdução à Análise Algoritmos Notas de aula da disciplina IME 4-182 Estruturas de Dados I Paulo Eustáquio Duarte Pinto (pauloedp arroba ime.uerj.br) abril/218 Ordenação por SELEÇÃO: Idéia: Dado um vetor
Indução Matemática. George Darmiton da Cunha Cavalcanti CIn - UFPE
Indução Matemática George Darmiton da Cunha Cavalcanti CIn - UFPE Introdução Qual é a fórmula para a soma dos primeiros n inteiros ímpares positivos? Observando os resultados para um n pequeno, encontra-se
Comparação com Divisão e Conquista
Programação Dinâmica Programação Dinâmica Fernando Lobo Algoritmos e Estrutura de Dados II Outra técnica de concepção de algoritmos, tal como Divisão e Conquista ou Estratégias Greedy. O termo Programação
Recursividade 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.
Lista 1 - PMR2300. Fabio G. Cozman 3 de abril de 2013
Lista 1 - PMR2300 Fabio G. Cozman 3 de abril de 2013 1. Qual String é impressa pelo programa: p u b l i c c l a s s What { p u b l i c s t a t i c void f ( i n t x ) { x = 2 ; p u b l i c s t a t i c void
Matemática Discreta - 06
Universidade Federal do Vale do São Francisco Curso de Engenharia da Computação Matemática Discreta - 06 Prof. Jorge Cavalcanti [email protected] www.univasf.edu.br/~jorge.cavalcanti www.twitter.com/jorgecav
Lista Encadeada (Linked List)
Lista Encadeada (Linked List) As listas ou listas encadeadas são a estrutura de dados mais simples concebível excetuando-se naturalmente os arrays. Listas encadeadas nada mais são que uma seqüência de
