Recursão e Back-Tracking
|
|
- Ester Philippi Gusmão
- 7 Há anos
- Visualizações:
Transcrição
1 Recursão e Back-Tracking Fernando Silva & Luís Lopes DCC-FCUP Estruturas de Dados
2 Recursão Uma função diz-se recursiva quando se chama a si própria, directa ou indirectamente. A recursão: à semelhança dos ciclos, permite repetir a execução de um conjunto de instruções é uma técnica de programação poderosa que permite frequentemente formular problemas complexos de forma simples está na base de uma técnica algorítmica designada por dividir-para-conquistar, em que um problema é decomposto em sub-problemas idênticos de menor complexidade, aplicando-se a cada instância o mesmo algoritmo de resolução.
3 A função factorial 1 se n=0 n! = fact(n) = n fact(n 1) se n>0 Exemplo: 5! = = 5 ( ) = 5 4! Importante: o 0! = 1 funciona como caso base da recursão, Uma função recursiva deve: ter pelo menos um caso base que pára a recursão as chamadas recursivas devem aproximar-se do caso base
4 Implementação Factorial c l a s s TestFactorial { p u b l i c s t a t i c v o i d main ( String args []) { System. out. println (" fact (9) = " + fact (9)); p r i v a t e s t a t i c i n t fact ( i n t n) { i f ( n == 0 ) r e t u r n 1; e l s e r e t u r n n * fact ( n - 1 );
5 A sequência de Fibonacci 1 se n=0 fib(n) = 1 se n=1 fib(n 1) + fib(n 2) se n>1 Exemplo: fib(3) = fib(2)+fib(1) = (fib(1)+fib(0))+fib(1) = (1+1)+1 = 3 neste caso a base da recursão é composta por fib(0) = 1 e fib(1) = 1 a sequência é 1, 1, 2, 3, 5, 8, 13, 21, 34, 55,...
6 Implementação Fibonacci c l a s s TestFibonacci { p u b l i c s t a t i c v o i d main ( String args []) { System. out. println (" fib (9) = " + fib (9)); p r i v a t e s t a t i c i n t fib ( i n t n) { i f ( n == 0 n == 1 ) r e t u r n 1; e l s e r e t u r n fib ( n - 1 ) + fib ( n - 2);
7 Mais Exemplos... p r i v a t e s t a t i c i n t recsum ( i n t [] a, i n t n) { i f (n == 1) r e t u r n a [0]; e l s e r e t u r n recsum (a, n - 1) + a[n - 1];...
8 Mais Exemplos p r i v a t e s t a t i c v o i d recinvert ( i n t [] a, i n t i, i n t j) { i f ( i < j ) { i n t tmp = a[i]; a[i] = a[j]; a[j] = tmp ; recinvert (a, i + 1, j - 1);...
9 Mais Exemplos p r i v a t e s t a t i c i n t recbinarysum ( i n t [] a, i n t i, i n t j) { i f ( i == j ) r e t u r n a[i]; e l s e { i n t k = (i + j) / 2; r e t u r n recbinarysum (a,i,k) + recbinarysum (a,k + 1,j);...
10 Diagrama de chamadas para um exemplo anterior com 8 elementos
11 Um último exemplo: pesquisa binária p r i v a t e s t a t i c i n t binarysearch ( i n t [] values, i n t val ) { r e t u r n binarysearch ( values, val, 0, values. length - 1); p r i v a t e s t a t i c i n t binarysearch ( i n t [] values, i n t val, i n t low, i n i f ( high < low ) r e t u r n -1; e l s e { i n t half = low + ( high - low ) / 2; i f ( val == values [ half ] ) r e t u r n half ; e l s e i f ( val < values [ half ] ) r e t u r n binarysearch ( values, val, low, half - 1); e l s e r e t u r n binarysearch ( values, val, half + 1, high );
12 Torres de Hanoi Jogo do século XIX associado a uma história da construção do Templo de Brahma. Dadas 3 pegas em diamante, uma das quais com 64 discos em ouro, foi pedido aos monges que deslocassem todos discos da 1 a para a 3 a pega, eventualmente usando a 2 a pega, mas sem nunca colocarem um disco maior em cima de um menor. De acordo com a lenda, quando o último disco fosse colocado o mundo terminaria.
13 Torres de Hanoi Problema: dadas 3 torres A, B e C, como deslocar os discos de A para C, eventualmente usando B, deslocando um disco de cada vez e sem nunca colocar um disco maior em cima de um menor.
14 Torres de Hanoi: uma solução objectivo: partindo de uma configuração inicial chegar a uma configuração final, deslocando um disco de cada vez e sem nunca colocar um disco maior em cima de um menor:
15 Torres de Hanoi: uma solução Suponhamos que conseguimos passar N-1 discos de A para B, usando C como temporário, ficando: Para chegar à solução final, os movimentos seguintes seriam: passar o disco maior de A para C passar os N-1 discos de B para C usando A como temporário O número mínimo de movimentos para chegar à solução é 2 N 1, para N discos.
16 Torres de Hanoi c l a s s TowersOfHanoiTest {... s t a t i c v o i d movedisks ( i n t n, char from, char to, char aux ) { i f ( n == 1 ) { // one disk remaining System. out. printf (" Move disk from %c to %c%n",from,to ); numbermoves ++; e l s e { movedisks ( n - 1, from, aux, to ); // n-1 from A to B using C movedisks ( 1, from, to, aux ); // largest disk from A to C movedisks ( n - 1, aux, to, from ); // n-1 from B to C using A
17 Torres de Hanoi c l a s s TowersOfHanoiTest { s t a t i c i n t numbermoves = 0; p u b l i c s t a t i c v o i d main ( String [] args ) { Scanner stdin = new Scanner ( System. in ); System. out. println (" Number of disks in the tower?"); i n t n = stdin. nextint (); movedisks (n, A, C, B ); // start moving disks System. out. println (" movimentos = " + numbermoves );...
18 Torres de Hanoi: árvore de recursão A árvore de recursão correspondente à chamada movedisks(3, A, C, B ), representando-se apenas os argumentos do método. Na figura, A->C significa que um disco da torre A é deslocado para a torre C.
19 Retrocesso (backtracking) esta técnica é normalmente usada para se encontrar todas as soluções de um problema, por construção de soluções parciais o algoritmo procura extender a solução parcial até estar completa, mas se alguma inconsistência acontecer o algoritmo retrocede (faz backtracking), removendo a parte da solução mais recentemente construída e tenta outra possibilidade
20 Exemplo: encontrar saída de labirinto Input: 6 6 S #####...# #.#### #.####...#. G ##...#
21 Exemplo... p u b l i c c l a s s SolveMaze { s t a t i c i n t nl, nc; s t a t i c i n t si, sj; s t a t i c char [][] maze ; p u b l i c s t a t i c v o i d main ( String args []) throws IOException { File file = new File ( args [0]); Scanner input = new Scanner ( file ); nl = input. nextint (); nc = input. nextint (); maze = new char [nl ][ nc ];...
22 Exemplo... p u b l i c c l a s s SolveMaze {... p u b l i c s t a t i c v o i d main ( String args []) throws IOException {... input. nextline (); f o r ( i n t i = 0 ; i < nl ; i++ ) { String line = input. nextline (); f o r ( i n t j = 0 ; j < nc ; j++ ) { char c = line. charat ( j); i f ( c == S ) { si = i; sj = j; maze [i][j] = c; i f ( findpath (si,sj) ) System. out. println (" found ");
23 Exemplo... p r i v a t e s t a t i c boolean findpath ( i n t i, i n t j) { printmaze (); i f ( i < 0 j < 0 i > nl - 1 j > nc - 1) r e t u r n f a l s e ; i f ( maze [i][j] == # maze [i][j] == + ) r e t u r n f a l s e ; i f ( maze [i][j] == G ) r e t u r n t r u e ; maze [i][j] = + ; i f ( findpath (i+1, j ) ) r e t u r n t r u e ; i f ( findpath (i -1, j ) ) r e t u r n t r u e ; i f ( findpath (i, j +1) ) r e t u r n t r u e ; i f ( findpath (i, j -1) ) r e t u r n t r u e ; maze [i][j] =. ; r e t u r n f a l s e ;
24 Exemplo... p r i v a t e s t a t i c v o i d printmaze () { f o r ( i n t i = 0 ; i < nl ; i++ ) { f o r ( i n t j = 0 ; j < nc ; j++ ) System. out. print ( " " + maze [i][j] + " "); System. out. println (); System. out. println (); System. out. println ();
Fernando Silva DCC-FCUP. Estruturas de Dados
3. Recursividade, Bactracking e Dividir-para-Conquistar Fernando Silva DCC-FCUP Estruturas de Dados Fernando Silva (DCC-FCUP) 3. Recursividade, Bactracking e Dividir-para-Conquistar Estruturas de Dados
Leia maisOrdenação e Pesquisa
Ordenação e Pesquisa Luís Lopes DCC-FCUP Estruturas de Dados Pesquisa de Informação A pesquisa eficiente de informação é extremamente relevante, seja: num catálogo indexado por uma relação de ordem, e.g.
Leia maisIntrodução à Programação
Introdução à Programação 1.Ano LCC-MIERSI DCC - FCUP Nelma Moreira Aula 12 Recursividade Recursão versus Iteração FACTORIAL outra vez! Muitas versões. n! = n (n - 1)... 1 int facti(int n){ int fac=n; while(--n>0){
Leia maisProf. A. G. Silva. 25 de setembro de Prof. A. G. Silva INE5603 Introdução à POO 25 de setembro de / 35
INE5603 Introdução à POO Prof. A. G. Silva 25 de setembro de 2017 Prof. A. G. Silva INE5603 Introdução à POO 25 de setembro de 2017 1 / 35 Baseado em materiais da Recursividade Unisinos, Cesar Tacla (UTFPR),
Leia maisEstruturas de Dados Aula 14: Recursão
Estruturas de Dados Aula 14: Recursão Fontes Bibliográficas Livros: Projeto de Algoritmos (Nivio Ziviani): Capítulo 2; Estruturas de Dados e seus Algoritmos (Szwarefiter, et. al): Capítulo 1; Algorithms
Leia maisEstruturas de Dados Aula 14: Recursão 19/05/2011
Estruturas de Dados Aula 14: Recursão 19/05/2011 Fontes Bibliográficas Livros: Projeto de Algoritmos (Nivio Ziviani): Capítulo 2; Estruturas de Dados e seus Algoritmos (Szwarefiter, et. al): Capítulo 1;
Leia maisRecursividade. Recursividade
A recursão é uma técnica que define um problema em termos de uma ou mais versões menores deste mesmo problema. Esta ferramenta pode ser utilizada sempre que for possível expressar a solução de um problema
Leia mais1 Da aula teórica ao Java
Universidade Federal do ABC Bacharelado em Ciência da Computação Processamento da Informação - Prof. Fabrício Olivetti de França Guia de tradução entre Java e outras linguagens 1 Da aula teórica ao Java
Leia maisAlguns Exemplos em Java
Alguns Exemplos em Java Fernando Silva & Luís Lopes DCC-FCUP Estruturas de Dados Problema 1: Dígito mais frequente Exemplo: o número 3435667323 contém: 1 (2), 4 (3), 1 (4), 1 (5), 2 (6) e 1 (7) digitomaisfrequente(3435667323)
Leia maisEstrutura de Dados Conceitos Iniciais
Engenharia de CONTROLE e AUTOMAÇÃO Estrutura de Dados Conceitos Iniciais Aula 04 DPEE 08 Estrutura de Dados para Automação Curso de Engenharia de Controle e Automação Universidade Federal de Santa Maria
Leia maisÁrvores e Mapas. Luís Lopes. Estruturas de Dados DCC-FCUP
Árvores e Mapas Luís Lopes DCC-FCUP Estruturas de Dados Estruturas não lineares Os arrays e as listas são exemplos de estruturas de dados lineares, cada elemento tem: um predecessor único (excepto o primeiro
Leia maisSCC 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
Leia maisRecursão David Déharbe
Recursão David Déharbe 1 1 Objetivos da aula O conceito de recursão. Exemplos. Programação em C. 2 2 Roteiro da aula Revisão de funções; Motivação; Definição; Dois exemplos básicos; Recursão mútua; Dois
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 maisSCC0601 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:
Leia maisProgramação I Aula 15 Definições recursivas
Programação I Aula 15 Definições recursivas Pedro Vasconcelos DCC/FCUP 2018 Pedro Vasconcelos (DCC/FCUP) Programação I Aula 15 Definições recursivas 2018 1 / 30 Nesta aula 1 Definições recursivas 2 Exemplos
Leia maisCapítulo VII : A Recorrência
Capítulo VII : A Recorrência 1 _ Capítulo VII : A Recorrência Quando algo é definido em termos de si próprio. Ex1: O Tetraedro de Sierpinski Ex2: Fracções Contínuas Ex3: A Carpete de Sierpinski Ex4: A
Leia maisAula 06: Análise matemática de algoritmos recursivos
Aula 06: Análise matemática de algoritmos recursivos David Déharbe Programa de Pós-graduação em Sistemas e Computação Universidade Federal do Rio Grande do Norte Centro de Ciências Exatas e da Terra Departamento
Leia maisGFM015 Introdução à Computação. Algoritmos. Ilmério Reis da Silva UFU/FACOM
GFM015 Introdução à Computação Algoritmos Ilmério Reis da Silva ilmerio@facom.ufu.br www.facom.ufu.br/~ilmerio/ic UFU/FACOM Programa 1. Noções básicas sobre os componentes de micro computadores 2.Uso de
Leia maisProgramaçã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
Leia 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
Leia maisAlgoritmos e Estruturas de Dados I
Algoritmos e Estruturas de Dados I Prof. Daniel M. Martin (daniel.martin@ufabc.edu.br) Aula 10 (Baseada nos slides do Prof. André Balan) Recursão Recursão Da wikipedia: A recursão é o processo pelo qual
Leia maisProgramação científica C++
Programação científica C++ NIELSEN CASTELO DAMASCENO Slide 8 Matrizes como argumento de funções O nome de uma matriz (sem os colchetes) representa o endereço onde a matriz está armazenada. Ao passar o
Leia maisProcessamento da Informação
Processamento da Informação Fabrício Olivetti de França 02 de Fevereiro de 2019 Topics 1. Recursão 1 Recursão Indução Matemática Em bases matemáticas vocês aprenderam sobre indução matemática: Provamos
Leia maisProgramação I Aula 15 Definições recursivas Pedro Vasconcelos DCC/FCUP
Programação I Aula 15 Definições recursivas DCC/FCUP DCC/FCUP 2019 1/ 30 Nesta aula 1 Definições recursivas 2 Exemplos Factorial Floco de neve de Koch Torre de Hanoi DCC/FCUP 2019 2/ 30 Recursividade Uma
Leia maisMC102 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
Leia maisNotas sobre Definições Recursivas
Notas sobre Definições Recursivas Anjolina Grisi de Oliveira Centro de Informática Universidade Federal de Pernambuco CIn-UFPE Introdução A torre de Hanói Jogo antigo inventado pelo matemético francês
Leia maisRecursividade. 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
Leia maisUNIVERSIDADE FEDERAL DO PARÁ BIBLIOTECA DE OBJETOS MATEMÁTICOS COORDENADOR: Dr. MARCIO LIMA
UNIVERSIDADE FEDERAL DO PARÁ BIBLIOTECA DE OBJETOS MATEMÁTICOS COORDENADOR: Dr. MARCIO LIMA TEXTO: Torre de Hanói AUTORES: Mayara Brito (estagiária da BOM) André Brito (estagiário da BOM) ORIENTADOR: Dr.
Leia maisBruno 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
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 maisIntrodução à Programação Aula 16 Mais exemplos de recursão
Introdução à Programação Aula 16 Mais exemplos de recursão Pedro Vasconcelos DCC/FCUP 2014 Pedro Vasconcelos (DCC/FCUP) Introdução à Programação Aula 16 Mais exemplos de recursão 2014 1 / 22 Nesta aula
Leia maisSCC Introdução à Ciência de Computação II. Recursão
SCC0601 - Introdução à Ciência de Computação II 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
Leia maisAlgoritmos e Modelação Computacional. Paulo Mateus MEBiom LMAC 2018
Algoritmos e Modelação Computacional Paulo Mateus MEBiom LMAC 2018 Objetivos Edição e compilação de programas Tipos e expressões Declaração de variáveis Atribuição, composição sequencial, iterativa e alternativa
Leia maisAnálise e Síntese de Algoritmos. Revisão CLRS, Cap. 4, 6
Análise e Síntese de Algoritmos Revisão CLRS, Cap. 4, 6 Contexto Revisão Algoritmos e complexidade Notação Fundamentos: somatórios, logaritmos, etc. Exemplos de algoritmos Ordenação Procura Selecção 2007/2008
Leia maisRecursividade. 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
Leia maisAlgoritmos e Estruturas de Dados I Linguagem C
Algoritmos e Estruturas de Dados I (DCC/003) Algoritmos e Estruturas de Dados I Linguagem C Aula Tópico 11 Recursividade 1 Recursão Na linguagem C, uma função pode chamar outra função. A função main()
Leia maisExame de Admissão. Instituto Nacional de Pesquisas Espaciais 18 de setembro de 2018 A: GABARITO
Exame de Admissão Programa de Pós-Graduação em Computação Aplicada Instituto Nacional de Pesquisas Espaciais 18 de setembro de 2018 A:2018-03 GABARITO Nome: Instruções: Preencha seu nome de forma legível,
Leia maisEstrutura de Dados. Introduc a o e Alocac a o de Memo ria. Vilson Heck Junior. Instituto Federal de Santa Catarina
Estrutura de Dados Introduc a o e Alocac a o de Memo ria Vilson Heck Junior Instituto Federal de Santa Catarina 2015 Sumário 1 Sumário 2 Introdução 3 Dados Compostos Heterogêneos O Problema A Solução Objetos
Leia maisProgramação de Computadores II TCC
Programação de Computadores II TCC-00.174 Profs.: Leandro A. F. Fernandes (Turma A1) & Marcos Lage (Turma B1) (Turma A1) www.ic.uff.br/~laffernandes (Turma B1) www.ic.uff.br/~mlage Conteúdo: Material elaborado
Leia maisIntrodução à Programação
Introdução à Programação 1.Ano LCC-MIERSI DCC - FCUP Nelma Moreira Aula 10 Ordenação 2 15-1 7 9 4 6 Existem muitos métodos de ordenar Bolha Inserção Seleção Quicksort etc... Bolha (bubble sort) Percorrer
Leia maisRecursividade. 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
Leia maisEstruturas de Dados. Pedro Ribeiro 2017/2018 DCC/FCUP. Pedro Ribeiro (DCC/FCUP) Estruturas de Dados 2017/ / 16
Estruturas de Dados Pedro Ribeiro DCC/FCUP 2017/2018 Pedro Ribeiro (DCC/FCUP) Estruturas de Dados 2017/2018 1 / 16 Informações Gerais Site: http://www.dcc.fc.up.pt/~pribeiro/aulas/edados1718/ Piazza: http://piazza.com/up.pt/spring2018/cc1007
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 maisLista de Figuras Figura 1 1: Figura 1 2: Figura 1 3: Figura 1 4: Figura 1 5: Figura 1 6: Figura 1 7: Figura 2 1: Figura 2 2: Figura 2 3: Figura 2 4:
Lista de Figuras Figura 1 1: Diagrama de Funcionamento do Laço while 34 Figura 1 2: Diagrama de Funcionamento do Laço do-while 35 Figura 1 3: Diagrama de Funcionamento do Laço for 36 Figura 1 4: Diagrama
Leia maisComparaçã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
Leia maisUniversidade Federal de Uberlândia Faculdade de Computação GGI030 Programação Orientada a Objetos 1o. Semestre de 2017 Prof.
Universidade Federal de Uberlândia Faculdade de Computação GGI030 Programação Orientada a Objetos 1o. Semestre de 2017 Prof. Renato Pimentel Prática 02 Java básico Atividade individual. Crie um novo projeto
Leia maisO termo Programação Dinâmica é um bocado infeliz.
Programação Dinâmica Fernando Lobo Algoritmos e Estrutura de Dados II 1 / 18 Programação Dinâmica Outra técnica de concepção de algoritmos, tal como Divisão e Conquista ou Estratégias Greedy. O termo Programação
Leia maisIntrodução à Programação
Introdução à Programação 1. Ano LCC-MIERSI DCC - FCUP Nelma Moreira Objectivos Introdução aos conceitos fundamentais da programação de computadores tendo por base o paradigma imperativo e a linguagem C.
Leia maisLista 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
Leia maisProf. A. G. Silva. 13 de novembro de Prof. A. G. Silva INE5603 Introdução à POO 13 de novembro de / 1
INE5603 Introdução à POO Prof. A. G. Silva 13 de novembro de 2017 Prof. A. G. Silva INE5603 Introdução à POO 13 de novembro de 2017 1 / 1 Introdução à manipulação de arquivos Prof. A. G. Silva INE5603
Leia maisPROGRAMAÇÃO DINÂMICA
PROGRAMAÇÃO DINÂMICA Programação dinâmica é tipicamente aplicada para problemas de otimização. O desenvolvimento de um algoritmo de programação dinâmica pode ser divido em 4 etapas. Caracterizar uma solução
Leia maisAná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
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 maisUniversidade Federal do ABC Programação Estruturada Fabrício Olivetti França Lista de Exercícios 02
1 Objetivos da lista Universidade Federal do ABC Programação Estruturada Fabrício Olivetti França Lista de Exercícios 02 Esta lista de exercícios tem como objetivo introduzir funções na linguagem C. Como
Leia maisSCC0214 Projeto de Algoritmos
SCC0214 Projeto de Algoritmos Recursão Implemente uma função para calcular o fatorial de um número inteiro positivo 2 1 Definição Uma função é dita recursiva quando é definida em seus próprios termos,
Leia maisPermite modularidade (dividir programa em partes): Facilita a depuração (debug) e portabilidade.
222222222222222222222222222 8 - FUNÇÕES 81 - Características básicas É um trecho independente de código, com objetivos bem definidos Programas em C, geralmente consistem em várias pequenas funções, ao
Leia maisNível da Arquitetura do Conjunto das Instruções
Fluxo Seqüencial de Controle e Desvios (1) Nível da Arquitetura do Conjunto das Instruções (Aula 13) Fluxo de Controle Roberta Lima Gomes - LPRM/DI/UFES Sistemas de Programação I Eng. Elétrica 2007/2 Fluxo
Leia maisÍNDICE. PREFÁCIO xv. 3 PROCESSOS GERADOS POR PROCEDIMENTOS Recursão Linear Cálculo de potências Cálculo de factoriais 91
ÍNDICE PREFÁCIO xv 1 NOÇÕES BÁSICAS 1 1.1 Algoritmos 5 1.2 O Desenvolvimento de Programas 8 1.3 Programas em Scheme 11 1.3.1 Sintaxe e semântica 13 1.3.2 Construção de formas 15 1.4 Expressões 16 1.4.1
Leia maisIntrodução à Programação / Programação I
Introdução à Programação / Programação I Aula 19: Mais exemplos de recursão Rita P. Ribeiro 2018/2019 Departamento de Ciência de Computadores Nesta aula 1. Desenhar árvores 2. Torre de Hanoi 3. Ordenação
Leia maisLinguagem Java. Introdução. Rosemary Silveira Filgueiras Melo
Linguagem Java Introdução Rosemary Silveira Filgueiras Melo rosesfmelo@hotmail.com 1 Tópicos abordados Histórico da Linguagem Caracterização da Linguagem Criação de Programa Java inicial Entrada e Saída
Leia maisFernando Lobo. Algoritmos e Estrutura de Dados. Outra técnica de concepção de algoritmos, tal como Divisão e Conquista.
Programação Dinâmica Fernando Lobo Algoritmos e Estrutura de Dados 1 / 56 Programação Dinâmica Outra técnica de concepção de algoritmos, tal como Divisão e Conquista. O termo Programação Dinâmica é um
Leia mais04 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
Leia maisUNIVERSIDADE ESTADUAL PAULISTA Julio de Mesquita Filho" FACULDADE DE ENGENHARIA
UNIVERSIDADE ESTADUAL PAULISTA Julio de Mesquita Filho" FACULDADE DE ENGENHARIA 8ª. LISTA DE EXERCÍCIOS FUNÇÕES E PROCEDIMENTOS Disciplina: Programação de Computadores Prof. Dra Cassilda Maria Ribeiro
Leia maisAnálise de Complexidade para algoritmos iterativos e recursivos
Disciplina: Matemática Discreta Agostinho Iaqchan Ryokiti Homa Análise de Complexidade para algoritmos iterativos e recursivos Algoritmos iterativos - complexidade expressa através de somatórios. Algoritmos
Leia maisAlgoritmos e Estruturas de Dados
Algoritmos e Estruturas de Dados Prof. Yandre Maldonado - 1 RECURSIVIDADE Prof. Yandre Maldonado e Gomes da Costa Prof. Yandre Maldonado - 2 Um objeto é dito recursivo se ele consistir parcialmente ou
Leia maisProgramação I Aula 17 Correção de programas Pedro Vasconcelos DCC/FCUP
Programação I Aula 17 Correção de programas DCC/FCUP DCC/FCUP 2019 1/ 30 Nesta aula 1 Classes de erros 2 Execução passo-a-passo 3 Testes na documentação 4 Asserções 5 Outros erros comuns DCC/FCUP 2019
Leia mais1 Elementos Básicos da Linguagem C Parte 1: Revisão da Linguagem C
Conteúdo Resumido... v Tabela de Conteúdo... vii Lista de Figuras... xvii Lista de Tabelas... xxiii Lista de Algoritmos... xxv Prefácio... xxvii Objetivos e Público-alvo Organização do Livro Material Complementar
Leia maisExercícios: Recursão
Universidade Federal de Uberlândia - UFU Faculdade de Computação - FACOM Lista de exercícios de programação em linguagem C Exercícios: Recursão 1. Faça uma função recursiva que calcule e retorne o fatorial
Leia maisProjeto e Análise de Algoritmos Projeto de Algoritmos Programação Dinâmica. Prof. Humberto Brandão
Projeto e Análise de Algoritmos Projeto de Algoritmos Programação Dinâmica Prof. Humberto Brandão humberto@bcc.unifal-mg.edu.br Universidade Federal de Alfenas versão da aula: 0.3 Programação Dinâmica
Leia maisAlgoritmos e Estruturas de Dados
Algoritmos e Estruturas de Dados Prof. Yandre Maldonado - 1 RECURSIVIDADE Prof. Yandre Maldonado e Gomes da Costa Prof. Yandre Maldonado - 2 Um objeto é dito recursivo se ele consistir parcialmente ou
Leia maisSCC Capítulo 3 Análise de Algoritmos - Parte 2
SCC-501 - Capítulo 3 Análise de Algoritmos - Parte 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
Leia maisSoluçã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/ nataliabatista@decom.cefetmg.br
Leia maisPesquisa e Ordenação
Pesquisa e Ordenação SC121 - Introdução à Programação ICMC - USP - São Carlos Maio de 2009 Algoritmo de Procura Algoritmo de Procura O problema de procurar, pesquisar alguma informação numa tabela ou num
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 maisIntrodução à Linguagem Java
Introdução à Linguagem Java Luís Lopes DCC-FCUP Estruturas de Dados A Linguagem Java desenvolvida pela Sun Microsystems início em 1991 (com o nome de Oak) disponibilizada em 1995 com o nome Java fundamental
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 maisParadigmas de Projetos de Algoritmos
Paradigmas de Projetos de Algoritmos Luciana Assis 9 de junho de 2016 Luciana Assis (UFVJM) 9 de junho de 2016 1 / 36 1 Introdução 2 Força Bruta 3 Abordagem Incremental ou Construtiva 4 Recursão 5 Divisão
Leia maisIntrodução à Linguagem Java
Introdução à Linguagem Java Fernando Silva & Luís Lopes DCC-FCUP Estruturas de Dados A Linguagem Java Desenvolvida pela Sun Microsystems início em 1991 (com o nome de Oak) disponibilizada em 1995 com o
Leia maisDivisão-e-Conquista ( ) CAL ( ) MIEIC/FEUP. ./rr (1) Técnicas de Concepção de Algoritmos
1 Técnicas de Concepção de Algoritmos (1ª parte): divisão e conquista R. Rossetti, A.P. Rocha, A. Pereira, P.B. Silva, T. Fernandes CAL, MIEIC, FEUP Fevereiro de 2011 2 Divisão e Conquista (divide and
Leia maisSistemas de Produção, Espaços de estados e buscas
Sistemas de Produção, Espaços de estados e buscas Sistemas de Produção É um mecanismo genérico para modelar certos tipos de problemas. Consiste em transformar o problema em um grafo de estados. Este grafo
Leia maisPython: 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
Leia maisLISTA DE EXERCÍCIOS MÊS 04
São José dos Campos, 05 de Junho de 2008 Disciplina: CES 10 Introdução à Computação. Semestre 2008-2º Período Professor: Carlos Henrique Quartucci Forster Estagiária: Michelle de Oliveira Parreira Instituto
Leia maisProva 2 PMR3201 1o. semestre 2016 Prof. Thiago Martins
Prova 2 PMR3201 1o. semestre 2016 Prof. Thiago Martins Instruções: Escreva o nome e o número USP na folha de papel almaço. Os códigos fornecidos na seção Códigos-fonte de apoio podem ser referenciados
Leia maisDepartamento de Ciência de Computadores Estruturas de Dados (CC114) FCUP 2010/11. 2 o Teste: 20/Junho/2011
1. Cotação de cada pergunta: 1. 30 / 2. 35 / 3. 35 (Total: 100 pontos) 2. Responda às questões de forma clara e concisa nas folhas de exame distribuídas. 1. (Valorização: 30%) Responda às seguintes questões:
Leia maisIntrodução Paradigmas
Introdução Paradigmas Recursividade Algoritmos tentativa e erro Divisão e conquista Programação dinâmica Algoritmos gulosos Algoritmos aproximados 1 Introdução O projeto de algoritmos requer abordagens
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 maisFundamentos de programação
Fundamentos de programação Arquivos Entrada/Saída e formatação Edson Moreno edson.moreno@pucrs.br http://www.inf.pucrs.br/~emoreno Arquivos Arquivos de texto são muito usados para armazenar informações
Leia maisHeapSort. Estrutura de Dados II Jairo Francisco de Souza
HeapSort Estrutura de Dados II Jairo Francisco de Souza HeapSort Algoritmo criado por John Williams (1964) Complexidade O(NlogN) no pior e médio caso Mesmo tendo a mesma complexidade no caso médio que
Leia maisProgramação Orientada a Objectos - P. Prata, P. Fazendeiro
8.1 - A classe File Antes de podermos ler/escrever de/para um ficheiro temos que criar um objecto do tipo File e associar esse objecto ao ficheiro a que queremos aceder. Para isso usamos um dos construtores
Leia maisFunções Finitas II: árvores AVL
Funções Finitas II: árvores AVL Métodos de Programação II 2004/2005 1 Objectivos Estender a biblioteca de árvores binárias para suportar Árvores AVL. 2 Motivação Pretende-se adaptar o programa apresentado
Leia maisLista 2 - PMR2300/3200
Lista 2 - PMR2300/3200 Fabio G. Cozman, Thiago Martins 8 de março de 2015 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
Leia maisTé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 dbeder@usp.br 08/2008
Leia maisAnalise o código abaixo:
Recursão - introdução Analise o código abaixo: 1 # include 2 # include 3 int Fatorial ( int x) 4 int k, s =1; for (k =0;k
Leia maisEntrada Processamento Saída
Instituto Federal de Educação, Ciência e Tecnologia do Rio Grande do Norte Lista de Exercícios para a Terceira Unidade Disciplina: PEOO Professor: Eberton da Silva Marinho e-mail: ebertonsm@gmail.com Data:
Leia maisOficina cognição e lógica
DESAFIO SEQUÊNCIA LÓGICA JOGO: Torre de Hanói A torre de Hanói foi criada pelo matemático francês Édouard Lucas, incluída no terceiro volume de sua obra Récréations Mathématiques, publicada em 1893. A
Leia maisIntrodução. Por que desenvolver ALGORITMO?
Introdução Programa Computacional busca da necessidade de solução de um problema particular: a geração automática de documentos, o controle de um equipamento eletrodoméstico, a transmissão de informações
Leia mais