Fernando Silva DCC-FCUP. Estruturas de Dados

Tamanho: px
Começar a partir da página:

Download "Fernando Silva DCC-FCUP. Estruturas de Dados"

Transcrição

1 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 1 / 18 Recursão Uma função diz-se recursiva quando se chama a si própria, directa ou indirectamente. A recursão: é uma técnica de programação poderosa que, muitas das vezes, simplifica imenso a definição da solução, a sua percepção e implementação. permite, à semelhança dos ciclos, repetir a execução de um conjunto de instruções. está na base de uma técnica algoritmica, dividir-para-conquistar, em que a resolução de um problema consiste na sua decomposição em sub-problemas idênticos de menor complexidade, repetindo-se nestes o mesmo algoritmo. Exemplo: Factorial: fact(n) = n fact(n 1), n 1 e fact(0) = 1 Fernando Silva (DCC-FCUP) 3. Recursividade, Bactracking e Dividir-para-Conquistar Estruturas de Dados 2 / 18

2 A função factorial A definição recursiva da 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 ou base de terminação da recursividade (i.e o que permite parar a recursividade). Funções recursivas têm de ter: pelo menos um caso base de paragem da recursividade apenas uma chamada recursiva (possivelmente com vários pontos de chamada). A chamada recursiva deve aproximar-se do caso base de terminação. Fernando Silva (DCC-FCUP) 3. Recursividade, Bactracking e Dividir-para-Conquistar Estruturas de Dados 3 / 18 Implementação Factorial Fernando Silva (DCC-FCUP) 3. Recursividade, Bactracking e Dividir-para-Conquistar Estruturas de Dados 4 / 18

3 Recursividade Linear Fernando Silva (DCC-FCUP) 3. Recursividade, Bactracking e Dividir-para-Conquistar Estruturas de Dados 5 / 18 Recursividade Binária Fernando Silva (DCC-FCUP) 3. Recursividade, Bactracking e Dividir-para-Conquistar Estruturas de Dados 6 / 18

4 Recursividade Binária - árvore de execução Fernando Silva (DCC-FCUP) 3. Recursividade, Bactracking e Dividir-para-Conquistar Estruturas de Dados 7 / 18 Recursividade na cauda (tail recursion) As funções recursivas gastam normalmente mais memória (criam novos ambientes de execução em cada chamada). Diz-se que um algoritmo exibe recursividade na cauda se a chamada recursiva for a última instrução do algoritmo. Nestes casos, podemos sempre converter o algoritmo numa versão não recursiva potencialmente mais eficiente. Fernando Silva (DCC-FCUP) 3. Recursividade, Bactracking e Dividir-para-Conquistar Estruturas de Dados 8 / 18

5 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 bispos 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. Foi-lhes dito que quando terminassem seria o fim do mundo. 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. Fernando Silva (DCC-FCUP) 3. Recursividade, Bactracking e Dividir-para-Conquistar Estruturas de Dados 9 / 18 Torres de Hanoi: uma solução (1) 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: Fernando Silva (DCC-FCUP) 3. Recursividade, Bactracking e Dividir-para-ConquistarEstruturas de Dados 10 / 18 Que passos devo dar?

6 Torres de Hanoi: uma solução (2) 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. Fernando Silva (DCC-FCUP) 3. Recursividade, Bactracking e Dividir-para-ConquistarEstruturas de Dados 11 / 18 Torres de Hanoi: método moverdiscos() Fernando Silva (DCC-FCUP) 3. Recursividade, Bactracking e Dividir-para-ConquistarEstruturas de Dados 12 / 18

7 Torres de Hanoi: classe principal Fernando Silva (DCC-FCUP) 3. Recursividade, Bactracking e Dividir-para-ConquistarEstruturas de Dados 13 / 18 Torres de Hanoi: árvore de recursão A árvore de recursão correspondente à chamada moverdiscos(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. Fernando Silva (DCC-FCUP) 3. Recursividade, Bactracking e Dividir-para-ConquistarEstruturas de Dados 14 / 18

8 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. Exemplo/Problema: Calcular todas as soluções do problema de colocar N rainhas num tabuleiro N N sem que se ataquem mutuamente. Fernando Silva (DCC-FCUP) 3. Recursividade, Bactracking e Dividir-para-ConquistarEstruturas de Dados 15 / 18 Solução para as 8 Rainhas: classes Vamos estruturar uma implementação com duas classes: Notas sobre a solução: Apenas precisamos de um vector, s[], para representar a solução que se está a construir no tabuleiro (não precisamos da matrizes). Neste caso, s[c]= l; representa que na linha l e coluna c está colocada a rainha número c. Fernando Silva (DCC-FCUP) 3. Recursividade, Bactracking e Dividir-para-ConquistarEstruturas de Dados 16 / 18

9 Solução para as 8 Rainhas: colocarainhas() Fernando Silva (DCC-FCUP) 3. Recursividade, Bactracking e Dividir-para-ConquistarEstruturas de Dados 17 / 18 Solução para as 8 Rainhas: atacada() Fernando Silva (DCC-FCUP) 3. Recursividade, Bactracking e Dividir-para-ConquistarEstruturas de Dados 18 / 18

Recursão e Back-Tracking

Recursão e Back-Tracking Recursão e Back-Tracking Fernando Silva & Luís Lopes DCC-FCUP Estruturas de Dados Recursão Uma função diz-se recursiva quando se chama a si própria, directa ou indirectamente. A recursão: à semelhança

Leia mais

Programação I Aula 15 Definições recursivas

Programaçã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 mais

Programação I Aula 15 Definições recursivas Pedro Vasconcelos DCC/FCUP

Programaçã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 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 # 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 mais

Algoritmos e Estruturas de Dados I

Algoritmos 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 mais

Estruturas de Dados, Análise de Algoritmos e Complexidade Estrutural. Carlos Alberto Alonso Sanches

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

Leia mais

Recursão. Prof. Cristiano André da Costa. [Versão de Março de 2000] Definição

Recursão. Prof. Cristiano André da Costa. [Versão de Março de 2000] Definição Recursão [Versão de Março de 2000] Definição Um objeto é dito recursivo se ele consistir parcialmente ou for definido em termos de si próprio Recursões ocorrem na matemática, informática, no dia a dia...

Leia mais

Capítulo VII : A Recorrência

Capí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 mais

Introdução à Programação

Introduçã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 mais

Análise e Complexidade de Algoritmos

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

Leia mais

Recursividade Exaustiva e Backtracking

Recursividade Exaustiva e Backtracking Universidade Federal do Espírito Santo Centro de Ciências Agrárias CCA UFES Departamento de Computação Recursividade Exaustiva e Tópicos Especiais em Programação Site: http://jeiks.net E-mail: jacsonrcsilva@gmail.com

Leia mais

Utilização do Conjunto de Cantor para a resolução da Torre de Hanoi

Utilização do Conjunto de Cantor para a resolução da Torre de Hanoi Utilização do Conjunto de Cantor para a resolução da Torre de Hanoi Filipe Daniel Lemos FEUP 030509045 Dezembro de 2004 Resumo Segundo trabalho para a cadeira de Física dos sitemas dinâmicos do curso de

Leia mais

Estruturas de Dados Aula 14: Recursão

Estruturas 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 mais

Estruturas de Dados Aula 14: Recursão 19/05/2011

Estruturas 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 mais

7. Introdução à Complexidade de Algoritmos

7. Introdução à Complexidade de Algoritmos 7. Introdução à Complexidade de Algoritmos Fernando Silva DCC-FCUP Estruturas de Dados Fernando Silva (DCC-FCUP) 7. Introdução à Complexidade de Algoritmos Estruturas de Dados 1 / 1 Análise de Algoritmos

Leia mais

Solução de Recorrências

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/ nataliabatista@decom.cefetmg.br

Leia mais

MC102 Aula 27 Recursão II

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

Leia mais

Introdução à Programação

Introduçã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 mais

Aula prática 5. Funções Recursivas

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

Leia mais

Prof. A. G. Silva. 25 de setembro de Prof. A. G. Silva INE5603 Introdução à POO 25 de setembro de / 35

Prof. 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 mais

Lista 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: 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 mais

SCC0214 Projeto de Algoritmos

SCC0214 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 mais

GFM015 Introdução à Computação. Algoritmos. Ilmério Reis da Silva UFU/FACOM

GFM015 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 mais

Estrutura de Dados e Arquivos Ementa Objetivo Geral Conteúdo Avaliação

Estrutura de Dados e Arquivos Ementa Objetivo Geral Conteúdo Avaliação Faculdades NDA Plano de Ensino Curso:SISTEMAS DE INFORMAÇÃO Disciplina: Estrutura de Dados e Arquivos Carga horária semanal: 4 Ano: 2006 Turma: MD3 e ME3 Carga horária total: 80 Corpo docente: Ly Freitas

Leia mais

UNIVERSIDADE 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 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 mais

SCC0601 Projeto de Algoritmos. Recursão

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:

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. 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 mais

Processamento da Informação

Processamento 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 mais

Deve-se mover um disco por vez; Nunca se deve colocar um disco sobre o outro menor do que ele.

Deve-se mover um disco por vez; Nunca se deve colocar um disco sobre o outro menor do que ele. Princípio da Indução Matemática A torre de Brahma A Torre de Brahma tem origem em um mito indiano, segundo o qual o centro do mundo encontrar-se-ia sob a cúpula de um templo situado em Benares, na Índia.

Leia mais

Recursividade. Objetivos do módulo. O que é recursividade

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

Leia mais

1 Elementos Básicos da Linguagem C Parte 1: Revisão da Linguagem C

1 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 mais

Estrutura de Dados Conceitos Iniciais

Estrutura 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

ALGORITMOS AVANÇADOS UNIDADE II Recursividade. Luiz Leão

ALGORITMOS 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 mais

INTELIGÊNCIA ARTIFICIAL. Prof. Cedric Luiz de Carvalho

INTELIGÊNCIA ARTIFICIAL. Prof. Cedric Luiz de Carvalho INTELIGÊNCIA ARTIFICIAL Será que ainda vou precisar 2/30 de Inteligência Artificial? 3/30 O que é IA? Campo do conhecimento que tenta entender e construir agentes inteligentes 4/30 Quais ações podem ser

Leia mais

Análise de Algoritmos Parte 4

Aná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 mais

8. Árvores. Fernando Silva DCC-FCUP. Estruturas de Dados. Fernando Silva (DCC-FCUP) 8. Árvores Estruturas de Dados 1 / 38

8. Árvores. Fernando Silva DCC-FCUP. Estruturas de Dados. Fernando Silva (DCC-FCUP) 8. Árvores Estruturas de Dados 1 / 38 8. Árvores Fernando Silva DCC-FCUP Estruturas de Dados Fernando Silva (DCC-FCUP) 8. Árvores Estruturas de Dados 1 / 38 Árvores - estruturas não lineares (1) Uma lista é um exemplo de uma estrutura de dados

Leia mais

8. Árvores. Fernando Silva. Estruturas de Dados DCC-FCUP. Fernando Silva (DCC-FCUP) 8. Árvores Estruturas de Dados 1 / 38

8. Árvores. Fernando Silva. Estruturas de Dados DCC-FCUP. Fernando Silva (DCC-FCUP) 8. Árvores Estruturas de Dados 1 / 38 8. Árvores Fernando Silva DCC-FCUP Estruturas de Dados Fernando Silva (DCC-FCUP) 8. Árvores Estruturas de Dados 1 / 38 Árvores - estruturas não lineares (1) Uma lista é um exemplo de uma estrutura de dados

Leia mais

Problemas e Estratégias. March 31, 2016

Problemas e Estratégias. March 31, 2016 Problemas e Estratégias March 31, 2016 Exemplos de Aplicações Jogo dos oito :-) Mundo dos blocos (ex: torre de Hanoi) Problema das n-rainhas Criptoaritmética Missionários e Canibais Resta-um e muitos outros...

Leia mais

Programação Estruturada

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

Leia mais

Aula 06: Análise matemática de algoritmos recursivos

Aula 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 mais

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 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 mais

Recursividade. Recursividade

Recursividade. 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 mais

Introdução à Computação II Unesp Rio Claro 2012Prof. Rafael Oliveira

Introdução à Computação II Unesp Rio Claro 2012Prof. Rafael Oliveira Recursão A recursão é bastante usada na matemática para definir funções, usando elas mesmas nas suas próprias definições. Por exemplo o cálculo de um fatorial, pode ser representada em forma de recursão

Leia mais

Exemplos. Jogo dos oito :-) Mundo dos blocos (ex: torre de Hanoi) Poblema das rainhas. Criptoaritmética. Missionários e Canibais.

Exemplos. Jogo dos oito :-) Mundo dos blocos (ex: torre de Hanoi) Poblema das rainhas. Criptoaritmética. Missionários e Canibais. istemas Inteligentes, 10-11 1 Exemplos Jogo dos oito :-) Mundo dos blocos (ex: torre de Hanoi) Poblema das rainhas Criptoaritmética Missionários e Canibais Resta-um e muitos outros... istemas Inteligentes,

Leia mais

Projecto de Algoritmos e Estruturas de Dados

Projecto de Algoritmos e Estruturas de Dados Projecto de Algoritmos e Estruturas de Dados Licenciatura em Engenharia Electrotécnica e de Computadores Licenciatura em Engenharia Electrónica 1 o ano, 2 o Semestre, 2005/2006 Instituto Superior Técnico

Leia mais

Projeto de Monitoria: Torre de Hanoi

Projeto de Monitoria: Torre de Hanoi Projeto de Monitoria: Torre de Hanoi PURO UFF Matematica Discreta 2010 Professor Orientador: Eduardo Ochs Aluno: Frederico Castelões Nery de Sá 1 A torre de Hanói 1.1 Breve descrição. A torre de Hanói

Leia mais

Exercícios - Factorial

Exercícios - Factorial Exercícios - Factorial Escrever uma função fact(n) que calcula o factorial de um número n. fact(n) = 1*2*...*N e fact(0)=1 Introdução 1.1 Exercícios - MDC mdc(15,24) Máximo Divisor Comum Algoritmo: 15

Leia mais

Branch and Bound - Ramicar e Limitar

Branch and Bound - Ramicar e Limitar Programação Linear Inteira Branch and Bound Haroldo Gambini Santos Universidade Federal de Ouro Preto - UFOP 30 de agosto de 2011 1 / 19 Branch and Bound - Ramicar e Limitar Idéia Básica O algoritmo roda

Leia mais

Técnicas de projeto de algoritmos: Indução

Técnicas de projeto de algoritmos: Indução Técnicas de projeto de algoritmos: Indução ACH2002 - Introdução à Ciência da Computação II Delano M. Beder Escola de Artes, Ciências e Humanidades (EACH) Universidade de São Paulo dbeder@usp.br 08/2008

Leia mais

Introdução à Programação Aula 16 Mais exemplos de recursão

Introduçã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 mais

Programação Dinâmica I SCC0210 Algoritmos Avançados (2/2011) Lucas Schmidt Cavalcante

Programação Dinâmica I SCC0210 Algoritmos Avançados (2/2011) Lucas Schmidt Cavalcante Programação Dinâmica I SCC0210 Algoritmos Avançados (2/2011) Lucas Schmidt Cavalcante Introdução Soma máxima de uma subsequência contígua Problema do troco Quantidade de formas de dar troco Problema da

Leia mais

Pesquisa: operação elementar

Pesquisa: operação elementar Pesquisa: operação elementar uma das operações mais usadas em programação pesquisas em: vectores, matrizes, tabelas de registos, ficheiros, tipos de dados estruturados (hierarquicos),... necessidade de

Leia mais

Recursividade. Prof. Jesus José de Oliveira Neto

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

Leia mais

Projeto 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 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 mais

ALGORITMOS AVANÇADOS. UNIDADE III Algoritmo de Ordenação por Intercalação (Mergesort) Luiz Leão

ALGORITMOS AVANÇADOS. UNIDADE III Algoritmo de Ordenação por Intercalação (Mergesort) Luiz Leão UNIDADE III Algoritmo de Ordenação por Intercalação (Mergesort) Luiz Leão luizleao@gmail.com http://www.luizleao.com Conteúdo Programático 3.1 - Definição 3.2 - Dividir para conquistar 3.3 - Problema da

Leia mais

Aná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 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 mais

Notas sobre Definições Recursivas

Notas 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 mais

Recursividade. David Menotti Algoritmos e Estruturas de Dados II DInf UFPR

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

Leia mais

Estruturas de Dados. Pedro Ribeiro 2017/2018 DCC/FCUP. Pedro Ribeiro (DCC/FCUP) Estruturas de Dados 2017/ / 16

Estruturas 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 mais

Bruno Hott Algoritmos e Estruturas de Dados I DECSI UFOP. Recursividade

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

Leia mais

Divisão e Conquista. Fernando Lobo. Algoritmos e Estrutura de Dados II. É uma técnica para resolver problemas (veremos outras técnicas mais adiante).

Divisão e Conquista. Fernando Lobo. Algoritmos e Estrutura de Dados II. É uma técnica para resolver problemas (veremos outras técnicas mais adiante). Divisão e Conquista Fernando Lobo Algoritmos e Estrutura de Dados II 1 / 27 Divisão e Conquista É uma técnica para resolver problemas (veremos outras técnicas mais adiante). Consiste em 3 passos: Dividir

Leia mais

MÓDULO 2 POTÊNCIA. Capítulos do módulo:

MÓDULO 2 POTÊNCIA. Capítulos do módulo: MÓDULO 2 POTÊNCIA Sabendo que as potências tem grande importância no mundo da lógica matemática, nosso curso terá por objetivo demonstrar onde podemos utilizar esses conceitos no nosso cotidiano e vida

Leia mais

Disciplina de Fundamentos da Programação

Disciplina de Fundamentos da Programação Exercício Desao N o 2 O Y funciona! Disciplina de Fundamentos da Programação Nota: Este exercício foi desenvolvido para aqueles alunos que pretendem ir mais além. Não substitui de forma alguma os exercícios

Leia mais

PROGRAMAÇÃO E ALGORITMOS (LEI) Universidade da Beira Interior, Departamento de Informática Hugo Pedro Proença, 2016/2017

PROGRAMAÇÃO E ALGORITMOS (LEI) Universidade da Beira Interior, Departamento de Informática Hugo Pedro Proença, 2016/2017 PROGRAMAÇÃO E ALGORITMOS (LEI) Universidade da Beira Interior, Departamento de Informática Hugo Pedro Proença, 2016/2017 Resumo Definição Tipos de Exemplos Exercícios Em linguagens imperativas e estruturadas,

Leia mais

Sistemas Inteligentes / Inteligência Artificial, Outros Métodos de Procura

Sistemas Inteligentes / Inteligência Artificial, Outros Métodos de Procura Sistemas Inteligentes / Inteligência Artificial, 14-15 1 Outros Métodos de Procura Sistemas Inteligentes / Inteligência Artificial, 14-15 2 Exemplos de Aplicações Jogo dos oito :-) Mundo dos blocos (ex:

Leia mais

ICET CURSO: Ciência da Computação e Sistemas de Informação (Estrutura de Dados) Estudos Disciplinares Campus: Data: / / Nome:

ICET CURSO: Ciência da Computação e Sistemas de Informação (Estrutura de Dados) Estudos Disciplinares Campus: Data: / / Nome: ICET CURSO: Ciência da Computação e Sistemas de Informação (Estrutura de Dados) Estudos Disciplinares Campus: Data: / / Nome: RA: Turma: Questão 1 (ENADE Computação 2005) No famoso jogo da Torre de Hanói,

Leia mais

Análise de Complexidade para algoritmos iterativos e recursivos

Aná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 mais

Paradigmas de Projetos de Algoritmos

Paradigmas 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 mais

Métodos de Ordenação Parte 3

Métodos de Ordenação Parte 3 Estrutura de Dados II Métodos de Ordenação Parte 3 Prof a Márcio Bueno ed2tarde@marciobueno.com / ed2noite@marciobueno.com Material baseado nos materiais do Prof. Robson Lins Classificação em Memória Primária

Leia mais

Análise de Problemas Recursivos. Algoritmos e Estruturas de Dados Flavio Figueiredo (

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

Leia mais

Usando uma Pilha. Esta apresentação mostra o uso de retrocesso (backtracking) para resolver o problema das N-Rainhas usando uma pilha

Usando uma Pilha. Esta apresentação mostra o uso de retrocesso (backtracking) para resolver o problema das N-Rainhas usando uma pilha Usando uma Pilha Esta apresentação mostra o uso de retrocesso (backtracking) para resolver o problema das N-Rainhas usando uma pilha Algoritmos e Estruturas de Dados I José Augusto Baranauskas Departamento

Leia mais

PROGRAMAÇÃO DE COMPUTADORES I BCC Aula Prática 15

PROGRAMAÇÃO DE COMPUTADORES I BCC Aula Prática 15 Exercício 1 PROGRAMAÇÃO DE COMPUTADORES I BCC701 2017-1 Aula Prática 15 No jogo Inventei, cada posição do tabuleiro é representada por suas coordenadas x e y e contém um número. O tabuleiro pode ser representado

Leia mais

SCC Capítulo 2 Recursão

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

Leia mais

Introdução Paradigmas

Introduçã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 mais

LERCI/LEIC TAGUSPARK INTELIGÊNCIA ARTIFICIAL 2005/06 PROCURA

LERCI/LEIC TAGUSPARK INTELIGÊNCIA ARTIFICIAL 2005/06 PROCURA LERI/LEI TGUSPRK INTELIGÊNI RTIFIIL 005/06 PROUR ) onsidere o espaço de estados definido pelo estado inicial,, e pela função que gera os sucessores de um estado, sucessores(n)={n, n+}. onsiderando o estado

Leia mais

Recursividade. Métodos iterativos. Prof. Cesar Augusto Tacla. Métodos iterativos utilizam estruturas de repetição

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

Leia mais

Teoria dos Grafos Aula 24

Teoria dos Grafos Aula 24 Teoria dos Grafos Aula 24 Aula passada Caminho mais curto entre todos os pares Algortimo de Floyd Warshall Programação dinâmica Aula de hoje Caminho mais curto em grafos Algoritmo de Bellman Ford Algoritmo

Leia mais

Introdução a Algoritmos Parte 08

Introduçã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 mais

6. Pesquisa e Ordenação

6. Pesquisa e Ordenação 6. Pesquisa e Ordenação Fernando Silva DCC-FCUP Estruturas de Dados Fernando Silva (DCC-FCUP) 6. Pesquisa e Ordenação Estruturas de Dados 1 / 30 Pesquisa de Informação A pesquisa eficiente de informação

Leia mais

Oficina cognição e lógica

Oficina 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 mais

7. Introdução à Complexidade de Algoritmos

7. Introdução à Complexidade de Algoritmos 7. Introdução à Complexidade de Algoritmos Fernando Silva DCC-FCUP Estruturas de Dados Fernando Silva (DCC-FCUP) 7. Introdução à Complexidade de Algoritmos Estruturas de Dados 1 / 1 Análise de Algoritmos

Leia mais

Python: Recursão. Claudio Esperança

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

Leia mais

Projeto 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 ( ) 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 mais

Relatório de Inteligência Artificial

Relatório de Inteligência Artificial Relatório de Inteligência Artificial Hidato Grupo 4 Diogo Simões - 63558 Inês Almeida - 63556 Miguel Diogo - 63567 Introdução O objectivo deste projecto é resolver automaticamente um tabuleiro de Hidato

Leia mais

Divisão-e-Conquista ( ) CAL ( ) MIEIC/FEUP. ./rr (1) Técnicas de Concepção de Algoritmos

Divisã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 mais

Backtracking. Túlio Toffolo Marco Antônio Carvalho BCC402 Aula 10 Algoritmos e Programação Avançada

Backtracking. Túlio Toffolo  Marco Antônio Carvalho BCC402 Aula 10 Algoritmos e Programação Avançada Backtracking Túlio Toffolo www.toffolo.com.br Marco Antônio Carvalho marco.opt@gmail.com BCC402 Aula 10 Algoritmos e Programação Avançada Backtracking Backtracking é um refinamento do algoritmo de busca

Leia mais

Arquitecturas Paralelas I Computação Paralela em Larga Escala LESI - 4º Ano. Desenvolvimento de Aplicações Paralelas

Arquitecturas Paralelas I Computação Paralela em Larga Escala LESI - 4º Ano. Desenvolvimento de Aplicações Paralelas Arquitecturas Paralelas I Computação Paralela em Larga Escala LESI - 4º Ano Desenvolvimento de Aplicações Paralelas (gec.di.uminho.pt/lesi/ap10203/aula06aplicaçõespar.pdf) João Luís Ferreira Sobral Departamento

Leia mais

PLANO DE DISCIPLINA DISCIPLINA: Estrutura de Dados 2

PLANO DE DISCIPLINA DISCIPLINA: Estrutura de Dados 2 UNIVERSIDADE FEDERAL DE UBERLÂNDIA FACULDADE DE COMPUTAÇÃO BACHARELADO EM SISTEMAS DE INFORMAÇÃO PLANO DE DISCIPLINA DISCIPLINA: Estrutura de Dados 2 ( X ) SEMESTRAL - ( ) ANUAL CÓDIGO: GSI011 PERÍODO:

Leia mais

Introdução à Programação / Programação I

Introduçã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 mais

BCC Projeto e Análise de Algoritmos Aula 0: Apresentação

BCC Projeto e Análise de Algoritmos Aula 0: Apresentação 1 BCC 241 - Projeto e Análise de Algoritmos Aula 0: Apresentação DECOM/UFOP 5º. Período - 2012/02 Anderson Almeida Ferreira BCC 241/2012-2 2 Objetivos do curso Dados dois algoritmos, compará-los quanto

Leia mais

Estruturas de Informação Árvores B ÁRVORES B

Estruturas de Informação Árvores B ÁRVORES B ÁRVORES B Até agora manipulamos a estrutura árvore binária em memória principal. Também queremos no entanto guardar árvores em disco e carregar a informação do disco para a memória principal, quando precisamos

Leia mais

Algoritmos Computacionais

Algoritmos Computacionais UNIDADE 2 ALGORITMO E RESOLUÇÃO DE PROBLEMAS Noções de lógica para construção de algoritmos Construção de algoritmos sobre problemas do cotidiano O QUE É LÓGICA? Em termos usuais falamos de lógica no nosso

Leia mais

Algoritmos de retrocesso

Algoritmos de retrocesso Algoritmos de retrocesso Algoritmos em que se geram escolhas que vão sendo testadas e eventualmente refeitas Problemas para os quais não existem algoritmos eficientes: retrocesso é melhor que pesquisa

Leia mais

Modelos Universais de Computação

Modelos Universais de Computação Modelos Universais de Computação 1 Equivalência entre Variantes de TM TM s definem naturalmente uma classe. Toda variante razoável de TM define a mesma classe de linguagens. (reforça a Tese Church-Turing)

Leia mais

BCC Projeto e Análise de Algoritmos Aula 0: Apresentação

BCC Projeto e Análise de Algoritmos Aula 0: Apresentação 1 BCC 241 - Projeto e Análise de Algoritmos Aula 0: Apresentação DECOM/UFOP 5º. Período - 2013/01 Anderson Almeida Ferreira BCC 241/2012-2 2 Objetivos do curso Dados dois algoritmos, compará-los quanto

Leia mais

ESTRUTURA DE DADOS DCC013

ESTRUTURA DE DADOS DCC013 ESTRUTURA DE DADOS DCC013 1 o sem./2018 Professor: Itamar Leite de Oliveira itamar.leite@ufjf.edu.br Professor: Bernardo Martins Rocha bernardomartinsrocha@ice.ufjf.br Total de Créditos: 4 Turma: A Pré-requisitos:

Leia mais

Lista de Exercícios sobre Recursividade

Lista de Exercícios sobre Recursividade Lista de Exercícios sobre Recursividade 1) Dado os algoritmos recursivos abaixo, apresente suas funções de complexidade de tempo. a) void Pesquisa(int n) if (n > 1) Inspecione n*n*n elementos; // custo

Leia mais

Desenho e Análise de Algoritmos

Desenho e Análise de Algoritmos Desenho e Análise de Algoritmos Pedro Ribeiro DCC/FCUP 2014/2015 Pedro Ribeiro (DCC/FCUP) Desenho e Análise de Algoritmos 2014/2015 1 / 13 Informações Gerais Site: http://www.dcc.fc.up.pt/~pribeiro/aulas/daa1415/

Leia mais

XADREZ REGRAS BÁSICAS INTRODUÇÃO O xadrez, diferentemente de muitos jogos, não depende de sorte. O desenvolver do jogo não depende do resultado de

XADREZ REGRAS BÁSICAS INTRODUÇÃO O xadrez, diferentemente de muitos jogos, não depende de sorte. O desenvolver do jogo não depende do resultado de XADREZ REGRAS BÁSICAS INTRODUÇÃO O xadrez, diferentemente de muitos jogos, não depende de sorte. O desenvolver do jogo não depende do resultado de dados ou das cartas que são tiradas do baralho. O resultado

Leia mais