Princípio da Multiplicação. > Corretude de Algoritmos Princípios de Contagem e Enumeração Computacional 0/18

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

Download "Princípio da Multiplicação. > Corretude de Algoritmos Princípios de Contagem e Enumeração Computacional 0/18"

Transcrição

1 Conteúdo 1 Corretude de Algoritmos 2 Princípios de Contagem e Enumeração Computacional Princípio da Multiplicação > Corretude de Algoritmos Princípios de Contagem e Enumeração Computacional 0/18

2 Corretude de Algoritmos Exemplo (Calculando o fatorial) Consider o código abaixo. Fatorial input: n (inteiro positivo) Função Fat(n) Se n 1 Return n Senão Return n Fat(n 1) Fim Função. Mostre que a saída de Fat(n) é n!, para todo n 1. > Corretude de Algoritmos Princípios de Contagem e Enumeração Computacional 1/18

3 Corretude de Algoritmos Prova: Caso Base. Para n = 1, Fat(1) = 1 = 1!. Hipotese Inductiva. P(k) : Fat(k) devolve k! Passo Indutivo. Pelo código temos que Fat(k + 1) devolve (k + 1) Fat(k). Entretanto, por hipótese de indução Fat(k) = k!. Segue que Fat(k + 1) devolve (k + 1) (k)! = (k + 1)! > Corretude de Algoritmos Princípios de Contagem e Enumeração Computacional 2/18

4 Corretude de Algoritmos Exemplo (Quicksort) Quicksort(A,p,r) input: subvetor de A que começa na posição p e termina na posição r output: subvetor de A ordenado Se p < r então q Partition(A,p,r) Quicksort(A,p,q-1) Quicksort(A,q+1,r) Fim Se Partition(A,p,r) é uma rotina de pivoteamento que funciona da seguinte maneira: seja X = A[p] e seja j o número de elementos menores que x no subvetor A[p, r]. Partition coloca o elemento x na posição q = p + j, os elementos de A[p, r] menores que x nas posições A[p],..., A[q 1] e os maiores a x nas posições A[q + 1],..., A[r]. Assumindo que a rotina Partition funciona da maneira especificada, mostre que Quicksort(A,1,n) ordena o vetor A[1, n]. > Corretude de Algoritmos Princípios de Contagem e Enumeração Computacional 3/18

5 Corretude de Algoritmos Solução. Base: Se o vetor tem tamanho 1 ou é vazio, ou seja, p r, o Quicksort não faz nada já que todo vetor de tamanho 1 é ordenado. Hipótese Indutiva (Forte). Assuma que P(r) é verdadeira para todo r {1,..., k}: P(r): Quicksort funciona corretamente para um vetor de tamanho r. > Corretude de Algoritmos Princípios de Contagem e Enumeração Computacional 4/18

6 Corretude de Algoritmos Prova do Passo Indutivo Assuma que r p + 1 = k + 1. Primeiramente, Partition coloca o elemento x = A[p] na posição correta. Após, ele chama Quicksort(A,p,q-1) e Quicksort(A,q+1,r) para ordenar os subvetores A[p, q 1] e A[q + 1, r]. O funcionamento de Partition garante que A[p, q 1] contém os elementos de A[p, r] menores que x enquanto A[q + 1, r] contem os maiores ou iguais a x. Como os subvetores A[p, q 1] e A[q + 1, r] tem menos do que k + 1 elementos, a hipótese garante que o Quicksort ordena eles corretamente. Portanto, ao término da chamada Quicksort(A,p,r), x é colocado na posição correta em A[p, r] e os subvetores A[p, q 1] e A[q + 1, r] estão ordenados. Logo, podemos concluir que A[p, r] esta ordenado. > Corretude de Algoritmos Princípios de Contagem e Enumeração Computacional 5/18

7 Corretude de Algoritmos Exemplo (Conversor Decimal-Binário) input: n (inteiro positivo) output: b (array de bits com a representação binária de n, começando com o byte menos significativo) Função Converte(n) t n k 0 zere todos os bits de b Enquanto t > 0 faça k k + 1 b[k] t mod 2 t t div 2 Fim Enquanto; Fim Função. Mostre que o algoritmo retorna a representação binária de um número natural n. > Corretude de Algoritmos Princípios de Contagem e Enumeração Computacional 6/18

8 Corretude de Algoritmos Como exemplo, considere a execução do algoritmo quando n = 57 : t b k Início Loop Loop Loop Loop Loop Loop Table : Execução do Algoritmo para n=57. > Corretude de Algoritmos Princípios de Contagem e Enumeração Computacional 7/18

9 Corretude de Algoritmos Para provar que o algoritmo funciona, considere a seguinte proposição: Proposição Sejam m k o inteiro representado pelo vetor binário b t k o valor de t ao final do k-ésimo loop Então, n = t k.2 k + m k, k Questão 1. Mostre que essa proposição implica na corretude do algoritmo Questão 2. Prove essa proposição. > Corretude de Algoritmos Princípios de Contagem e Enumeração Computacional 8/18

10 Corretude de Algoritmos Base. k = 0, t = n m = 0 Hipótese Indutiva. P(k) : A proposição vale ao término do laço k. Prova do Passo Indutivo Caso 1) t k é par No final do loop k + 1, temos t k+1 = t k 2 m k+1 = m k. Logo, e t k+1.2 k+1 + m k+1 = t k.2 k + m }{{ k = n } hip indutiva Caso 2) t k é ímpar O valor de t k+1 é t k 1 2 e m k+1 = m k + 2 k, já que um bit 1 é acrescido na posição k + 1 de b. t k+1.2 k+1 + m k+1 = t k 1.2 k+1 + m k + 2 k = t k.2 k + m k = n 2 }{{} hip indutiva > Corretude de Algoritmos Princípios de Contagem e Enumeração Computacional 9/18

11 Conteúdo 1 Corretude de Algoritmos 2 Princípios de Contagem e Enumeração Computacional Princípio da Multiplicação > Corretude de Algoritmos Princípios de Contagem e Enumeração Computacional 9/18

12 Objetivos Contar/listar o número de elementos de conjuntos finitos Aplicações Determinar o número de operações realizadas por um algoritmo para determinar sua eficiência Ferramenta utilizada para resolver problemas estatísticos Desenvolver o raciocínio dos alunos de ED > Corretude de Algoritmos Princípios de Contagem e Enumeração Computacional 10/18

13 Objetivos Por que estudar problemas do tipo: 1 De quantas maneiras é possível dispor os alunos de uma turma em fila, sem que alunos com nomes consecutivos na ordem alfabética fiquem juntos? 2 Quantas permutações distintas tem a palavra MISSISSIPI? Duas justificativas: 1 Estes problemas são fáceis de formular; 2 As técnicas envolvidas na solução destes problemas podem ser aplicadas na resolução de problemas práticos > Corretude de Algoritmos Princípios de Contagem e Enumeração Computacional 11/18

14 Objetivos Em algumas situações estamos interessados em calcular o número de elementos de um conjunto, enquanto que em outras desejamos listar todos os elementos de um conjunto. Exemplo Seja S o conjunto de todos os números de três algarismos que satisfazem as seguintes propriedades (i) todo algarismo pertence ao conjunto {2, 3, 6} (ii) nenhum algarismo pode repetir no mesmo número P1) Quantos elementos possui S? P2) Quem são os elementos de S? > Corretude de Algoritmos Princípios de Contagem e Enumeração Computacional 12/18

15 Objetivos Exemplo Considere um caminhão que necessita entregar mercadorias em 12 localidades {L 1,..., L 12 } ao longo de um dia. Sabe-se que o consumo médio para ir da localidade L i para localidade L j é c ij, e que o caminhão deve partir de sua garagem e retornar para mesma. Considere que L 0 identifica a garagem. P1) Quantos trajetos distintos o caminhão pode percorrer? P2) Qual o trajeto que minimiza o consumo do caminhão? > Corretude de Algoritmos Princípios de Contagem e Enumeração Computacional 13/18

16 Princípio da Multiplicação Uma das técnicas mais elementares de contagem é conhecida como princípio da multiplicação. Sejam os eventos E 1, E 2,..., E k. Se o evento E i, i = 1,..., k, pode ocorrer de n i formas diferentes e a forma com que o evento E i ocorre não influencia no número de formas que o evento E j pode ocorrer, i j, então a sequência de eventos E 1 E 2 E 3... E k pode ocorrer de n 1 n 2 n 3... n k formas diferentes. Exemplo Em uma placa de carro, as três primeiras posições são letras e as quatro restantes são dígitos. Quantas placas distintas são possíveis? > Corretude de Algoritmos Princípios de Contagem e Enumeração Computacional 14/18

17 Princípio da Multiplicação O evento E i, i = 1, 2, 3, consiste em atribuir uma letra a i-ésima posição, enquanto que os eventos E 4, E 5, E 6, E 7 consistem em atribuir dígitos as posições 4, 5, 6 e 7 respectivamente. Logo temos, E i = 26, para i = 1, 2, 3 e E i = 10, para i = 4,..., 7. Segue do princípio da multiplicação que o número de placas é > Corretude de Algoritmos Princípios de Contagem e Enumeração Computacional 15/18

18 Princípio da Multiplicação Exemplo Quantas placas são possíveis de modo que nenhuma letra e nenhum dígito apareçam repetidos? > Corretude de Algoritmos Princípios de Contagem e Enumeração Computacional 16/18

19 Princípio da Multiplicação Exemplo Seja S o conjunto dos números de telefone com as seguintes propriedades: (i) o número é formado de 8 dígitos (ii) o primeiro dígito pertence a {2,3,5,7} (iii) deve haver pelo menos um número repetido dentre os quatro últimos dígitos. Quantos elementos possui S? > Corretude de Algoritmos Princípios de Contagem e Enumeração Computacional 17/18

20 Princípio da Multiplicação Exemplo Considere o trecho de código abaixo Para i=1,...l Para j=1,...m Para k=1,...n PRINT( OI ) Determine em função de m, n e l o número de vezes que o trecho de código imprime OI > Corretude de Algoritmos Princípios de Contagem e Enumeração Computacional 18/18

2 Erro comum da indução. 3 Corretude de Algoritmos. > Indução Forte X Indução Fraca Erro comum da indução Corretude de Algoritmos 0/17

2 Erro comum da indução. 3 Corretude de Algoritmos. > Indução Forte X Indução Fraca Erro comum da indução Corretude de Algoritmos 0/17 Conteúdo 1 Indução Forte X Indução Fraca 2 Erro comum da indução 3 Corretude de Algoritmos > Indução Forte X Indução Fraca Erro comum da indução Corretude de Algoritmos 0/17 Indução Forte X Indução Fraca

Leia mais

Princípio da Multiplicação Gerando todas as palavras de um alfabeto. > Princípios de Contagem e Enumeração Computacional 0/18

Princípio da Multiplicação Gerando todas as palavras de um alfabeto. > Princípios de Contagem e Enumeração Computacional 0/18 Conteúdo 1 Princípios de Contagem e Enumeração Computacional Princípio da Multiplicação Gerando todas as palavras de um alfabeto Permutações > Princípios de Contagem e Enumeração Computacional 0/18 Objetivos

Leia mais

> Princípios de Contagem e Enumeração Computacional 1/13

> Princípios de Contagem e Enumeração Computacional 1/13 Princípios de Contagem e Enumeração Computacional > Princípios de Contagem e Enumeração Computacional 1/13 Objetivos Contar/listar o número de elementos de conjuntos finitos Aplicações > Princípios de

Leia mais

Estruturas Discretas

Estruturas Discretas Estruturas Discretas 2017.2 Marco Molinaro > Indução Forte Corretude de Algoritmos 1/20 Indução Forte > Indução Forte Corretude de Algoritmos 2/20 Indução Forte X Indução Fraca Para provar Propriedade

Leia mais

> Princípios de Contagem e Enumeração Computacional 0/19

> Princípios de Contagem e Enumeração Computacional 0/19 Conteúdo 1 Princípios de Contagem e Enumeração Computacional Permutações Combinações > Princípios de Contagem e Enumeração Computacional 0/19 Permutações Utilizamos P(n, r) para denotar o número de sequências

Leia mais

Apostila de Estuturas Discretas Parte I. Eduardo Sany Laber

Apostila de Estuturas Discretas Parte I. Eduardo Sany Laber Apostila de Estuturas Discretas Parte I Eduardo Sany Laber 26 de novembro de 2012 Sumário 1 Técnicas de Demonstração 3 1.1 O que é uma demonstração................... 3 1.2 Conceitos Básicos.........................

Leia mais

Apostila de Estruturas Discretas Parte I. Eduardo Sany Laber

Apostila de Estruturas Discretas Parte I. Eduardo Sany Laber Apostila de Estruturas Discretas Parte I Eduardo Sany Laber 10 de junho de 2013 Sumário 1 Técnicas de Demonstração 3 1.1 O que é uma demonstração................... 3 1.2 Conceitos Básicos.........................

Leia mais

Ordenação em Tempo Linear. Leitura: Cormen Capítulo 8

Ordenação em Tempo Linear. Leitura: Cormen Capítulo 8 Ordenação em Tempo Linear Leitura: Cormen Capítulo 8 Revisão Insertion sort: Vantagens Fácil de implementar Rápido em entradas com menos de 50 elementos. Rápido em entradas aproximadamente ordenadas. Desvantagens

Leia mais

MC102 Aula 26. Instituto de Computação Unicamp. 17 de Novembro de 2016

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

Leia mais

Lista de exercícios sobre contagem de operações Prof. João B. Oliveira

Lista de exercícios sobre contagem de operações Prof. João B. Oliveira Lista de exercícios sobre contagem de operações Prof. João B. Oliveira 1. metodo m ( Vetor V ) int i, res = 0; para i de 1 a V.size res = res + V[i]; return res; Soma de elementos de um vetor, O( ). 2.

Leia mais

Introdução à Ciência da Computação

Introdução à Ciência da Computação Introdução à Ciência da Computação Estruturas de Controle Parte II Prof. Ricardo J. G. B. Campello Créditos Parte dos slides a seguir foram adaptados dos originais de A. L. V. Forbellone e H. F. Eberspächer

Leia mais

Lista 1 - PMR2300. Fabio G. Cozman 3 de abril de 2013

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

Leia mais

AULA 13. Algoritmos p.526/582

AULA 13. Algoritmos p.526/582 AULA 13 Algoritmos p.526/582 Ordenação em tempo linear CLRS 8.2 8.3 Algoritmos p.527/582 Ordenação por contagem Recebe vetores A[1.. n] e B[1.. n] e devolve no vetor B[1.. n] os elementos de A[1.. n] em

Leia mais

> Princípios de Contagem e Enumeração Computacional 1/10

> Princípios de Contagem e Enumeração Computacional 1/10 Princípios de Contagem e Enumeração Computacional > Princípios de Contagem e Enumeração Computacional 1/10 De quantas maneiras podemos selecionar um subconjunto de r objetos de um conjunto de n objetos?

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

Bucketsort. CLRS sec 8.4. Algoritmos p. 1

Bucketsort. CLRS sec 8.4. Algoritmos p. 1 Bucketsort CLRS sec 8.4 Algoritmos p. 1 Bucket Sort Recebe um inteiro n e um vetor A[1..n] onde cada elemento é um número no intervalo [0, 1). Algoritmos p. 2 Bucket Sort Recebe um inteiro n e um vetor

Leia mais

11º ano - Indução matemática

11º ano - Indução matemática 1 O conjunto dos números racionais Q é enumerável, ou seja, é possível atribuir (associar) a cada número racional um número natural Abaixo, os números racionais positivos estão representados na forma de

Leia mais

QuickSort CI/2015. Análise e Projeto de Algoritmos. - Prof. Lucídio A. F. Cabral

QuickSort CI/2015. Análise e Projeto de Algoritmos. - Prof. Lucídio A. F. Cabral QuickSort 1 Quicksort A[p q] A[q+1 r] Ordena um vetor A[p r] Divisão Particiona um vetor A em 2 subvetores A[p..q] e A[q+1..r], de tal modo que cada elemento de A[p..q] seja menor ou igual a cada elemento

Leia mais

Análise e Complexidade de Algoritmos

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

Leia mais

Lista 2 - PMR2300/3200

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

Algoritmos e Programação I

Algoritmos e Programação I Algoritmos e Programação I Estruturas de Controle e Repetição Prof. Fernando Maia da Mota mota.fernandomaia@gmail.com CPCX/UFMS Fernando Maia da Mota 1 Estruturas de Controle Uma vez que a expressão condicional

Leia mais

Complexidade de Algoritmos

Complexidade de Algoritmos Complexidade de Algoritmos O que é um algoritmo? Sequência bem definida e finita de cálculos que, para um dado valor de entrada, retorna uma saída desejada/esperada. Na computação: Uma descrição de como

Leia mais

Projeto de Algoritmos e Indução Matemática

Projeto de Algoritmos e Indução Matemática Capítulo 3 Projeto de Algoritmos e Indução Matemática Um algoritmo é uma descrição precisa de um método para a resolução de determinado problema. Este capítulo apresenta a relação entre a prova de teoremas

Leia mais

CI811 Tópicos em Algoritmos

CI811 Tópicos em Algoritmos CI811 Tópicos em Algoritmos Problemas 15 de junho de 2016 Aqui segue uma lista com alguns problemas computacionais para serem trabalhados pelos alunos da disciplina de Tópicos em Algoritmos (CI811) do

Leia mais

CONTEÚDOS DO PRIMEIRO PERÍODO EXERCÍCIOS DE RECUPERAÇÃO DO PRIMEIRO PERÍODO

CONTEÚDOS DO PRIMEIRO PERÍODO EXERCÍCIOS DE RECUPERAÇÃO DO PRIMEIRO PERÍODO Aluno(: Nº Comp. Curricular: Estatística Data: 16/04/2012 1º Período Ensino Médio Comércio Exterior Turma: 5 3MC1/ 2 Professor: José Manuel Análise Combinatória: CONTEÚDOS DO PRIMEIRO PERÍODO 1) Fatorial

Leia mais

Exercícios: Recursão

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

DCC001 - Programação de Computadores. Lista de Exercícios 02 - Estruturas de Dados Homogêneas (Vetores).

DCC001 - Programação de Computadores. Lista de Exercícios 02 - Estruturas de Dados Homogêneas (Vetores). DCC-UFMG 1 semestre de 2007 DCC001 - Programação de Computadores Prof. Martín Gómez Ravetti Lista de Exercícios 02 - Estruturas de Dados Homogêneas (Vetores). Valor: 5 pontos 1. Escreva um algoritmo em

Leia mais

Análise Combinatória

Análise Combinatória Introdução Análise combinatória PROBLEMAS DE CONTAGEM Princípio Fundamental da Contagem Exemplo: Um número de telefone é uma seqüência de 8 dígitos, mas o primeiro dígito deve ser diferente de 0 ou 1.

Leia mais

Oi, Ficou curioso? Então conheça nosso universo.

Oi, Ficou curioso? Então conheça nosso universo. Oi, Somos do curso de Matemática da Universidade Franciscana, e esse ebook é um produto exclusivo criado pra você. Nele, você pode ter um gostinho de como é uma das primeiras aulas do seu futuro curso.

Leia mais

Algoritmos e Estrutura de Dados Aula 02 Listas em Python

Algoritmos e Estrutura de Dados Aula 02 Listas em Python Algoritmos e Estrutura de Dados Aula 02 Listas em Python Profa. Alana Oliveira e Prof. Davi Viana alanaslz@gmail.com e davi.viana@lsdi.ufma.br Se não entender, pergunte! 2 1 Dados e Tipos de Dados Um dado

Leia mais

Modelagem com relações de recorrência. Exemplo: Determinada população dobra a cada ano; população inicial = 5 a n = população depois de n anos

Modelagem com relações de recorrência. Exemplo: Determinada população dobra a cada ano; população inicial = 5 a n = população depois de n anos Relações de recorrência 8. RELAÇÕES DE RECORRÊNCIA Introdução a relações de recorrência Modelagem com relações de recorrência Solução de relações de recorrência Exemplos e aplicações Relações de recorrência

Leia mais

ESTRUTURAS DE REPETIÇÃO - PARTE 1

ESTRUTURAS DE REPETIÇÃO - PARTE 1 AULA 15 ESTRUTURAS DE REPETIÇÃO - PARTE 1 15.1 O comando enquanto-faca- Considere o problema de escrever um algoritmo para ler um número inteiro positivo, n, e escrever todos os números inteiros de 1 a

Leia mais

Luís Fernando Schultz Xavier da Silveira. 12 de maio de 2010

Luís Fernando Schultz Xavier da Silveira. 12 de maio de 2010 Monóides e o Algoritmo de Exponenciação Luís Fernando Schultz Xavier da Silveira Departamento de Informática e Estatística - INE - CTC - UFSC 12 de maio de 2010 Conteúdo 1 Monóides Definição Propriedades

Leia mais

Estruturas de Dados 2

Estruturas de Dados 2 Estruturas de Dados 2 Algoritmos de Ordenação em Tempo Linear IF64C Estruturas de Dados 2 Engenharia da Computação Prof. João Alberto Fabro - Slide 1/38 Algoritmos de Ordenação em Tempo Linear Limite Assintótico

Leia mais

Tópico 5 Algoritmos de Ordenação. Parte II - métodos de ordenação: counting sort, radix sort e bucket sort.

Tópico 5 Algoritmos de Ordenação. Parte II - métodos de ordenação: counting sort, radix sort e bucket sort. Tópico 5 Algoritmos de Ordenação Parte II - métodos de ordenação: counting sort, radix sort e bucket sort. 1 Árvore de Decisão Todos os algoritmos descritos anteriormente utilizam comparações para determinar

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

Algoritmos para Gerar Permutações e Combinações em Ordem Lexicográfica

Algoritmos para Gerar Permutações e Combinações em Ordem Lexicográfica Matemática Discreta ESTiG\IPB Cap3. Princípios Elementares de Contagem pg 76 Algoritmos para Gerar Permutações e Combinações em Ordem Lexicográfica Algoritmo: conjunto de instruções cuja execução, numa

Leia mais

Universidade Federal do ABC Programação Estruturada Fabrício Olivetti França Lista de Exercícios 01

Universidade Federal do ABC Programação Estruturada Fabrício Olivetti França Lista de Exercícios 01 1 Objetivos da lista Universidade Federal do ABC Programação Estruturada Fabrício Olivetti França Lista de Exercícios 01 Esta lista de exercícios tem como objetivo introduzir os conceitos básicos da linguagem

Leia mais

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

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

Algoritmos e Estruturas de Dados II Lista de Exercícios de Listas Lineares

Algoritmos e Estruturas de Dados II Lista de Exercícios de Listas Lineares Algoritmos e Estruturas de Dados II Lista de Exercícios de Listas Lineares Bacharelado em Análise de Sistemas, DCT UFMS, 20/4/2005 1 Listas lineares em alocação seqüencial 1. Descreva os algoritmos de

Leia mais

Exercícios: Vetores e Matrizes

Exercícios: Vetores e Matrizes Universidade Federal de Uberlândia - UFU Faculdade de Computação - FACOM Lista de exercícios de programação em linguagem C Exercícios: Vetores e Matrizes 1 Vetores 1. Faça um programa que possua um vetor

Leia mais

Paradigmas de programação

Paradigmas de programação Paradigmas de programação 1 Paradigma? Um paradigma é algo que serve de exemplo ou modelo. Sinônimos: Padrão Prototipo 2 Paradigma de programação? É uma proposta tecnológica. Fornece uma visão do programador

Leia mais

O Problema da Ordenação Métodos de Ordenação Parte 1

O Problema da Ordenação Métodos de Ordenação Parte 1 Métodos de Ordenação Parte 1 SCC-201 Introdução à Ciência da Computação II Rosane Minghim 2010 Ordenação (ou classificação) é largamente utilizada Listas telefônicas e dicionários Grandes sistemas de BD

Leia mais

Análise Combinatória AULA 1. Métodos Simples de Contagem

Análise Combinatória AULA 1. Métodos Simples de Contagem Análise Combinatória AULA 1 Métodos Simples de Contagem Tales Augusto de Almeida 1. Introdução A primeira ideia que surge no imaginário de qualquer estudante quando ele ouve a palavra contagem seria exatamente

Leia mais

Tópicos em Algoritmos. André Guedes

Tópicos em Algoritmos. André Guedes Tópicos em Algoritmos André Guedes 31 de agosto de 2017 Sumário 1 Aulas 1 2 Introdução 2 3 Problemas Computacionais e Algoritmos 4 3.1 Definições............................. 4 3.2 Correção e eficiência.......................

Leia mais

Universidade Estadual de Mato Grosso do Sul Bacharelado em Ciência da Computação Algoritmos e Estruturas de Dados II Prof. Fabrício Sérgio de Paula

Universidade Estadual de Mato Grosso do Sul Bacharelado em Ciência da Computação Algoritmos e Estruturas de Dados II Prof. Fabrício Sérgio de Paula Universidade Estadual de Mato Grosso do Sul Bacharelado em Ciência da Computação Algoritmos e Estruturas de Dados II Prof. Fabrício Sérgio de Paula Tópicos Introdução Ordenação por bolha (bubble sort)

Leia mais

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO MARANHÃO - CAMPUS CAXIAS. Aluno (s): 01 ATIVIDADE. Revisão de Conteúdo

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO MARANHÃO - CAMPUS CAXIAS. Aluno (s): 01 ATIVIDADE. Revisão de Conteúdo INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO MARANHÃO - CAMPUS CAXIAS DISCIPLINA: Lab. de Programação PROF: MSc. Flávio Barros PERÍODO: 2 DATA: Aluno (s): 01 ATIVIDADE / / Revisão de Conteúdo

Leia mais

ESTRUTURAS DE REPETIÇÃO - PARTE 2

ESTRUTURAS DE REPETIÇÃO - PARTE 2 AULA 16 ESTRUTURAS DE REPETIÇÃO - PARTE 2 16.1 A seqüência de Fibonacci Um problema parecido, mas ligeiramente mais complicado do que o do cálculo do fatorial (veja as notas da Aula 14), é o do cálculo

Leia mais

Estruturas de Dados. Revisão de Funções e Recursão. Agradecimentos

Estruturas de Dados. Revisão de Funções e Recursão. Agradecimentos Estruturas de Dados Revisão de Funções e 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

Leia mais

Recursão. Definição. Características. Recursividade 31/08/2010

Recursão. Definição. Características. Recursividade 31/08/2010 Recursão Introdução à Ciência da Computação II (009) Rosane Minghim Apoio na confecção: Rogério Eduardo Garcia Danilo Medeiros Eler Definição Um objeto é dito ser recursivo se ele é definido parcialmente

Leia mais

Universidade Federal do ABC Programação Estruturada Fabrício Olivetti França Lista de Exercícios 02

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

HeapSort. Estrutura de Dados II Jairo Francisco de Souza

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

Recursão. Introdução à Ciência da Computação II(2009/2010) Rosane Minghim. Apoio na confecção: Rogério Eduardo Garcia Danilo Medeiros Eler

Recursão. Introdução à Ciência da Computação II(2009/2010) Rosane Minghim. Apoio na confecção: Rogério Eduardo Garcia Danilo Medeiros Eler Recursão Introdução à Ciência da Computação II(2009/2010) Rosane Minghim Apoio na confecção: Rogério Eduardo Garcia Danilo Medeiros Eler Definição Um objeto é dito ser recursivo se ele é definido parcialmente

Leia mais

CONTROLE DE FLUXO DE EXECUÇÃO

CONTROLE DE FLUXO DE EXECUÇÃO CONTROLE DE FLUXO DE EXECUÇÃO Controle de fluxo de execução É a sequência em que as instruções são executadas num algoritmo. Como podemos implementar o controle de fluxo Instrução composta É um conjunto

Leia mais

Algoritmos de Ordenação

Algoritmos de Ordenação Algoritmos de Ordenação! Problema: encontrar um número de telefone em uma lista telefônica! simplificado pelo fato dos nomes estarem em ordem alfabética! e se estivesse sem uma ordem?! Problema: busca

Leia mais

Árvores. SCC-214 Projeto de Algoritmos. Thiago A. S. Pardo. Um nó após o outro, adjacentes Sem relações hierárquicas entre os nós, em geral

Árvores. SCC-214 Projeto de Algoritmos. Thiago A. S. Pardo. Um nó após o outro, adjacentes Sem relações hierárquicas entre os nós, em geral SCC-214 Projeto de Algoritmos Thiago A. S. Pardo Listas e árvores Listas lineares Um nó após o outro, adjacentes Sem relações hierárquicas entre os nós, em geral Diversas aplicações necessitam de estruturas

Leia mais

Álgebra A - Aula 02 Teorema da fatoração única, Propriedade fundamental dos primos, números primos

Álgebra A - Aula 02 Teorema da fatoração única, Propriedade fundamental dos primos, números primos Álgebra A - Aula 02 Teorema da fatoração única, Propriedade fundamental dos primos, números primos Elaine Pimentel Departamento de Matemática, UFMG, Brazil 2 o Semestre - 2010 Teorema da fatoração única

Leia mais

Aula 05: - Recursão (parte 1)

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

Leia mais

AED2 - Aula 11 Problema da separação e quicksort

AED2 - Aula 11 Problema da separação e quicksort AED2 - Aula 11 Problema da separação e quicksort Projeto de algoritmos por divisão e conquista Dividir: o problema é dividido em subproblemas menores do mesmo tipo. Conquistar: os subproblemas são resolvidos

Leia mais

Busca em Memória Primária Estrutura de Dados II

Busca em Memória Primária Estrutura de Dados II Centro de Ciências Exatas, Naturais e de Saúde Departamento de Computação Busca em Memória Primária Estrutura de Dados II Estrutura de Dados II COM10078 2017-I Prof. Marcelo Otone Aguiar marcelo.aguiar@ufes.br

Leia mais

Busca em Memória Primária Estrutura de Dados II

Busca em Memória Primária Estrutura de Dados II Centro de Ciências Exatas, Naturais e de Saúde Departamento de Computação Busca em Memória Primária Estrutura de Dados II COM10078 Estrutura de Dados II Prof. Marcelo Otone Aguiar marcelo.aguiar@ufes.br

Leia mais

Algoritmos e Estruturas de Dados I Linguagem C

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

MATRIZES - PARTE Mais exemplos Multiplicação de duas matrizes AULA 26

MATRIZES - PARTE Mais exemplos Multiplicação de duas matrizes AULA 26 AULA 26 MATRIZES - PARTE 2 26. Mais exemplos Nesta aula, veremos mais dois algoritmos envolvendo matrizes. O primeiro deles calcula a matriz resultante da multiplicação de duas matrizes e utiliza três

Leia mais

Elementos de Matemática

Elementos de Matemática Elementos de Matemática Exercícios de Análise Combinatória - Atividades de 2007 Versão compilada no dia 11 de Setembro de 2007. Departamento de Matemática - UEL Prof. Ulysses Sodré: ulysses(a)uel(pt)br

Leia mais

Algoritmos I Edézio 1

Algoritmos I Edézio 1 Algoritmos I Edézio 1 Algoritmo Conjunto de regras e operações bem definidas e ordenadas, destinadas à solução de um problema, ou de uma classe de problemas, em um número finito de etapas. Exemplos: As

Leia mais

Métodos de Ordenação Parte I

Métodos de Ordenação Parte I Estrutura de Dados II Métodos de Ordenação Parte I Prof a Márcio Bueno ed2tarde@marciobueno.com / ed2noite@marciobueno.com Material baseado nos materiais da Prof a Ana Eliza e Prof. Robson Lins Rearranjar

Leia mais

Encontro 5: Permutação e resolução de exercícios de contagem

Encontro 5: Permutação e resolução de exercícios de contagem Encontro 5: Permutação e resolução de exercícios de contagem Relembrando: Princípio Aditivo: Sejam e conjuntos disjuntos, isto é, conjuntos com interseção vazia. Se possui m elementos e se possui n elementos,

Leia mais

Aula 05: - Recursão (parte 1)

Aula 05: - Recursão (parte 1) MCTA028 Programação Estruturada Aula 05: - Recursão (parte 1) Prof. Jesús P. Mena-Chalco jesus.mena@ufabc.edu.br 3Q-20107 1 Recursão: Se você ainda não entendeu; Ver: "Recursão". Efeito Droste Anuncio

Leia mais

INE5403 FUNDAMENTOS DE MATEMÁTICA DISCRETA

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/30 3 - INDUÇÃO E RECURSÃO 3.1) Indução Matemática 3.2)

Leia mais

Estruturas de Dados 2

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

Leia mais

AULA 5 - Independência, Combinatória e

AULA 5 - Independência, Combinatória e AULA 5 - Independência, Combinatória e permutações Susan Schommer Introdução à Estatística Econômica - IE/UFRJ Independência Um importante caso particular da probabilidade condicional surge quando a ocorrˆncia

Leia mais

Contagem e Combinatória Elementar

Contagem e Combinatória Elementar Contagem e Combinatória Elementar Matemática Discreta I Rodrigo Ribeiro Departamento de Ciências Exatas e Aplicadas Universidade de Federal de Ouro Preto 11 de janeiro de 2013 Motivação (I) Combinatória

Leia mais

Curso: Ciência da Computação Turma: 4ª Série. Probabilidade e Estatística. Aula 2

Curso: Ciência da Computação Turma: 4ª Série. Probabilidade e Estatística. Aula 2 Curso: Ciência da Computação Turma: 4ª Série Aula 2 Análise Combinatória: Arranjo, Permutação, Combinação Simples e com Repetição Motivação Quantas ordenações são possíveis fazer com um baralho de 52 cartas?

Leia mais

Análise de Algoritmos

Análise de Algoritmos Análise de Algoritmos CLRS 2.3, 3.2, 4.1 e 4.2 Essas transparências foram adaptadas das transparências do Prof. Paulo Feofiloff e do Prof. José Coelho de Pina. Algoritmos p. 1 Número de inversões Problema:

Leia mais

Algoritmos de Ordenação: Tempo Linear

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 dbeder@usp.br 10/2008 Material

Leia mais

Pedro Ribeiro 2014/2015

Pedro Ribeiro 2014/2015 Ordenação Pedro Ribeiro DCC/FCUP 2014/2015 Pedro Ribeiro (DCC/FCUP) Ordenação 2014/2015 1 / 35 Ordenação A ordenação é um passo inicial para muitos outros algoritmos Ex: encontrar a mediana Quando não

Leia mais

Projeto e Análise de Algoritmos Análise de Complexidade. Prof. Luiz Chaimowicz

Projeto e Análise de Algoritmos Análise de Complexidade. Prof. Luiz Chaimowicz Projeto e Análise de Algoritmos Análise de Complexidade Prof. Luiz Chaimowicz AGENDA Modulo 1 Data Assunto Capítulos 05/03 Algoritmos / Invariantes / Intro Análise de Complexidade 07/03 Não Haverá Aula

Leia mais

Polo Olímpico de Treinamento Intensivo UFPR Curso de Combinatória, Nível 3 1 o semestre de 2019

Polo Olímpico de Treinamento Intensivo UFPR Curso de Combinatória, Nível 3 1 o semestre de 2019 Polo Olímpico de Treinamento Intensivo UFPR Curso de Combinatória, Nível 3 1 o semestre de 2019 Marcel Thadeu de Abreu e Souza Vitor Emanuel Gulisz Análise Combinatória: Introdução Vamos buscar contar

Leia mais

Algoritmos e Lógica de Programação. 6ª Lista de Exercícios Comandos de Repetição

Algoritmos e Lógica de Programação. 6ª Lista de Exercícios Comandos de Repetição Algoritmos e Lógica de Programação 6ª Lista de Exercícios Comandos de Repetição 1. Qual a saída do programa abaixo? int i; for (i = 0; i < 10; i += 2) printf("%d\n", i / 2); 2. Qual a saída do programa

Leia mais

Algoritmos de ordenação Quicksort

Algoritmos de ordenação Quicksort Algoritmos de ordenação Quicksort Sumário Introdução Descrição do quicksort Desempenho do quicksort Pior caso Melhor caso Particionamento balanceado Versão aleatória do quicksort Análise do quicksort Pior

Leia mais

MA21 (2015) - Teste - Gabarito comentado. Problema 1 (OBM 2005) Na sequência de números

MA21 (2015) - Teste - Gabarito comentado. Problema 1 (OBM 2005) Na sequência de números MA21 (2015) - Teste - Gabarito comentado Problema 1 (OBM 2005) Na sequência de números 1, a, 2, b, c, d,... dizemos que o primeiro termo é 1, o segundo é a, o terceiro é 2, o quarto é b, o quinto é c e

Leia mais

Noções de Probabilidade parte I

Noções de Probabilidade parte I Noções de Probabilidade parte I 5 de Março de 2012 Site: http://ericaestatistica.webnode.com.br/ e-mail: ericaa_casti@yahoo.com.br Referências: Probabilidae Aplicações à Estatística - Mayer (Capítulo 1)

Leia mais

a) Em quantas ordem quatro pessoas podem senta num sofá de 4 lugares?

a) Em quantas ordem quatro pessoas podem senta num sofá de 4 lugares? ANÁLISE COMBINATÓRIA 1. PRINCIPIO FUNDAMENTAL DA CONTAGEM A análise combinatória é um ramo da matemática que tem por objetivo resolver problemas que consistem, basicamente em escolher e agrupar os elementos

Leia mais

A única diferença entre o difícil e o impossível é que o último demora um pouco mais de tempo para ser alcançado..

A única diferença entre o difícil e o impossível é que o último demora um pouco mais de tempo para ser alcançado.. Técnicas de Programação em Engenharia Elétrica I - Engenharia de Sistemas Embarcados - Introdução aos Algoritmos A única diferença entre o difícil e o impossível é que o último demora um pouco mais de

Leia mais

BCC201 Introdução à Programação ( ) Prof. Reinaldo Silva Fortes. Prática 04 Estruturas de Dados Homogêneas Vetores

BCC201 Introdução à Programação ( ) Prof. Reinaldo Silva Fortes. Prática 04 Estruturas de Dados Homogêneas Vetores Professor David Menotti (menottid@gmail.com) BCC0 Introdução à Programação (0-0) Prof. Reinaldo Silva Fortes Prática 0 Estruturas de Dados Homogêneas Vetores ) Escreva um programa que armazene em um vetor

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

Lista de Exercícios de Algoritmos - 04 Para cada um dos exercícios abaixo, faça um programa (em laboratório) que teste a função.

Lista de Exercícios de Algoritmos - 04 Para cada um dos exercícios abaixo, faça um programa (em laboratório) que teste a função. Lista de Exercícios de Algoritmos - 04 Para cada um dos exercícios abaixo, faça um programa (em laboratório) que teste a função. Funções e estruturas básicas 1. Faça uma função que recebe a idade de uma

Leia mais

Funções. Material Didático Unificado. BCC701 Programação de Computadores I Universidade Federal de Ouro Preto Departamento de Ciência da Computação

Funções. Material Didático Unificado. BCC701 Programação de Computadores I Universidade Federal de Ouro Preto Departamento de Ciência da Computação Programação de Computadores I Universidade Federal de Ouro Preto Departamento de Ciência da Computação www.decom.ufop.br/bcc701 Funções. Material Didático Unificado. 1 Propósitos do Uso de Funções Modularizar

Leia mais

Funções. Material Didático Unificado. BCC701 Programação de Computadores I Universidade Federal de Ouro Preto Departamento de Ciência da Computação

Funções. Material Didático Unificado. BCC701 Programação de Computadores I Universidade Federal de Ouro Preto Departamento de Ciência da Computação Programação de Computadores I Universidade Federal de Ouro Preto Departamento de Ciência da Computação www.decom.ufop.br/bcc701 Funções. Material Didático Unificado. 1 Propósitos do Uso de Funções Modularizar

Leia mais

Análise Combinatória

Análise Combinatória Análise Combinatória PFC Princípio Fundamental da Contagem O princípio fundamental da contagem está diretamente ligado às situações que envolvem as possibilidades de um determinado evento ocorrer, por

Leia mais

Indução Matemática. George Darmiton da Cunha Cavalcanti CIn - UFPE

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

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

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

Programação de Computadores II TCC

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

Célia Borlido 07/09/2007 Encontro Nacional dos Novos Talentos em Matemática

Célia Borlido 07/09/2007 Encontro Nacional dos Novos Talentos em Matemática Sistemas de Numeração Célia Borlido 7/9/27 Encontro Nacional dos Novos Talentos em Matemática Alguma notação para começar Є representa a palavra vazia. Se é um alfabeto, isto é, um conjunto não vazio de

Leia mais