Estruturas Discretas
|
|
|
- Mariana Covalski Gomes
- 7 Há anos
- Visualizações:
Transcrição
1 Estruturas Discretas Marco Molinaro > Indução Forte Corretude de Algoritmos 1/20
2 Indução Forte > Indução Forte Corretude de Algoritmos 2/20
3 Indução Forte X Indução Fraca Para provar Propriedade para todo inteiro n n 0 basta mostrar: Indução (fraca) (Caso base) Que Propriedade vale para n 0 (Passo indutivo) Assume que Propriedade vale para n, mostra que vale para n + 1 > Indução Forte Corretude de Algoritmos 3/20
4 Indução Forte X Indução Fraca Para provar Propriedade para todo inteiro n n 0 basta mostrar: Indução (fraca) (Caso base) Que Propriedade vale para n 0 (Passo indutivo) Assume que Propriedade vale para n, mostra que vale para n + 1 Na verdade, no passo indutivo podemos utilizar que a propriedade vale para todo caso menor ou igual a n para provar que vale para n + 1 > Indução Forte Corretude de Algoritmos 3/20
5 Indução Forte X Indução Fraca Para provar Propriedade para todo inteiro n n 0 basta mostrar: Indução (fraca) (Caso base) Que Propriedade vale para n 0 (Passo indutivo) Assume que Propriedade vale para n, mostra que vale para n + 1 Na verdade, no passo indutivo podemos utilizar que a propriedade vale para todo caso menor ou igual a n para provar que vale para n + 1 Indução forte (Caso base) Que Propriedade vale para n 0 (Passo indutivo) Assume que propriedade vale para todos os números {n 0, n 0 + 1,..., n}, mostra que vale para n + 1 > Indução Forte Corretude de Algoritmos 3/20
6 Exemplos Definição (Informal) Uma árvore binária enraizada é (i) um conjunto vazio ou (ii) um nó denominado raíz com uma subárvore a esquerda e outra a direita > Indução Forte Corretude de Algoritmos 4/20
7 Exemplos Definição (Informal) Uma árvore binária enraizada é (i) um conjunto vazio ou (ii) um nó denominado raíz com uma subárvore a esquerda e outra a direita > Indução Forte Corretude de Algoritmos 5/20
8 Exemplos Definição (Informal) Uma árvore binária enraizada é (i) um conjunto vazio ou (ii) um nó denominado raíz com uma subárvore a esquerda e outra a direita > Indução Forte Corretude de Algoritmos 6/20
9 Definição (Informal) Dada uma árvore binária enraizada: Uma folha é um nó com 0 filhos Um nó interno é um nó com pelo menos um filho > Indução Forte Corretude de Algoritmos 7/20
10 Definição (Informal) Dada uma árvore binária enraizada: Uma folha é um nó com 0 filhos Um nó interno é um nó com pelo menos um filho Definição Uma árvore é dita estritamente binária se todo nó possui 0 ou 2 filhos > Indução Forte Corretude de Algoritmos 7/20
11 Exemplos Exemplo Prove por indução no número de nós internos que para toda árvore estritamente binária T temos onde folhas(t ) internos(t ) = 1, folhas(t ) = número de folhas internos(t ) = número de nós internos > Indução Forte Corretude de Algoritmos 8/20
12 Corretude de Algoritmos > Indução Forte Corretude de Algoritmos 9/20
13 Corretude de Algoritmos Lembre a definição de fatorial: n! = n (n 1) (n 2) Exemplo (Calculando o fatorial) Considere o código abaixo. Fatorial Entrada: n (inteiro positivo) Função Fat(n) If n 1 Return n End if Return n Fat(n 1) Fim Função Mostre que a saída de Fat(n) é n!, para todo n 1. > Indução Forte Corretude de Algoritmos 10/20
14 Corretude de Algoritmos Prova: (por indução fraca) Caso Base: n = 1. Por causa do If, Fat(1) = 1 = 1! > Indução Forte Corretude de Algoritmos 11/20
15 Corretude de Algoritmos Prova: (por indução fraca) Caso Base: n = 1. Por causa do If, Fat(1) = 1 = 1! Passo Indutivo. Suponha que a propriedade valha para n, ou seja Fat(n) = n!. Precisamos provar que vale para n + 1 > Indução Forte Corretude de Algoritmos 11/20
16 Corretude de Algoritmos Prova: (por indução fraca) Caso Base: n = 1. Por causa do If, Fat(1) = 1 = 1! Passo Indutivo. Suponha que a propriedade valha para n, ou seja Fat(n) = n!. Precisamos provar que vale para n + 1 Pelo código, Fat(n + 1) = (n + 1) Fat(n) > Indução Forte Corretude de Algoritmos 11/20
17 Corretude de Algoritmos Prova: (por indução fraca) Caso Base: n = 1. Por causa do If, Fat(1) = 1 = 1! Passo Indutivo. Suponha que a propriedade valha para n, ou seja Fat(n) = n!. Precisamos provar que vale para n + 1 Pelo código, Fat(n + 1) = (n + 1) Fat(n) Pela hipótese indutiva Fat(n) = n!, então > Indução Forte Corretude de Algoritmos 11/20
18 Corretude de Algoritmos Prova: (por indução fraca) Caso Base: n = 1. Por causa do If, Fat(1) = 1 = 1! Passo Indutivo. Suponha que a propriedade valha para n, ou seja Fat(n) = n!. Precisamos provar que vale para n + 1 Pelo código, Fat(n + 1) = (n + 1) Fat(n) Pela hipótese indutiva Fat(n) = n!, então Fat(n + 1) = (n + 1) Fat(n) = (n + 1) n! = (n + 1) n (n 1) (Pela definição de n!) = (n + 1)! > Indução Forte Corretude de Algoritmos 11/20
19 Corretude de Algoritmos Prova: (por indução fraca) Caso Base: n = 1. Por causa do If, Fat(1) = 1 = 1! Passo Indutivo. Suponha que a propriedade valha para n, ou seja Fat(n) = n!. Precisamos provar que vale para n + 1 Pelo código, Fat(n + 1) = (n + 1) Fat(n) Pela hipótese indutiva Fat(n) = n!, então Fat(n + 1) = (n + 1) Fat(n) = (n + 1) n! = (n + 1) n (n 1) (Pela definição de n!) = (n + 1)! Isso conclui o paso indutivo. Fim de prova. > Indução Forte Corretude de Algoritmos 11/20
20 Corretude de Algoritmos Vamos agora considerar o problema de ordenação de uma lista A de números > Indução Forte Corretude de Algoritmos 12/20
21 Corretude de Algoritmos Vamos agora considerar o problema de ordenação de uma lista A de números Vamos provar a corretude do algoritmo Quicksort > Indução Forte Corretude de Algoritmos 12/20
22 Corretude de Algoritmos Vamos agora considerar o problema de ordenação de uma lista A de números Vamos provar a corretude do algoritmo Quicksort Para simplificar, vamos assumir que os números na lista A são distintos > Indução Forte Corretude de Algoritmos 12/20
23 Quicksort(A,p,r) Entrada: vetor A, posição de início p posição de termino r Saída: vetor A com posições A[p], A[p + 1],..., A[r] ordenadas Se p < r então q Partition(A,p,r) Quicksort(A,p,q-1) Quicksort(A,q+1,r) Fim Se > Indução Forte Corretude de Algoritmos 13/20
24 Quicksort(A,p,r) Entrada: vetor A, posição de início p posição de termino r Saída: vetor A com posições A[p], A[p + 1],..., A[r] ordenadas 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 particionamento que funciona da seguinte maneira: Seja j o número de elementos no subvetor A[p, r] menores ou iguais ao valor x = A[p] > Indução Forte Corretude de Algoritmos 13/20
25 Quicksort(A,p,r) Entrada: vetor A, posição de início p posição de termino r Saída: vetor A com posições A[p], A[p + 1],..., A[r] ordenadas 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 particionamento que funciona da seguinte maneira: Seja j o número de elementos no subvetor A[p, r] menores ou iguais ao valor x = A[p] Partition coloca os elementos de A[p, r] menores a x no início, ou seja, nas posições A[p],..., A[p + j 1] (em qualquer ordem) > Indução Forte Corretude de Algoritmos 13/20
26 Quicksort(A,p,r) Entrada: vetor A, posição de início p posição de termino r Saída: vetor A com posições A[p], A[p + 1],..., A[r] ordenadas 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 particionamento que funciona da seguinte maneira: Seja j o número de elementos no subvetor A[p, r] menores ou iguais ao valor x = A[p] Partition coloca os elementos de A[p, r] menores a x no início, ou seja, nas posições A[p],..., A[p + j 1] (em qualquer ordem) coloca valor x logo após, na posição A[p + j ] > Indução Forte Corretude de Algoritmos 13/20
27 Quicksort(A,p,r) Entrada: vetor A, posição de início p posição de termino r Saída: vetor A com posições A[p], A[p + 1],..., A[r] ordenadas 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 particionamento que funciona da seguinte maneira: Seja j o número de elementos no subvetor A[p, r] menores ou iguais ao valor x = A[p] Partition coloca os elementos de A[p, r] menores a x no início, ou seja, nas posições A[p],..., A[p + j 1] (em qualquer ordem) coloca valor x logo após, na posição A[p + j ] coloca elementos maiores que x nas outras posições, ou seja A[p + j + 1],..., A[r] > Indução Forte Corretude de Algoritmos 13/20
28 Quicksort(A,p,r) Entrada: vetor A, posição de início p posição de termino r Saída: vetor A com posições A[p], A[p + 1],..., A[r] ordenadas 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 particionamento que funciona da seguinte maneira: Seja j o número de elementos no subvetor A[p, r] menores ou iguais ao valor x = A[p] Partition coloca os elementos de A[p, r] menores a x no início, ou seja, nas posições A[p],..., A[p + j 1] (em qualquer ordem) coloca valor x logo após, na posição A[p + j ] coloca elementos maiores que x nas outras posições, ou seja A[p + j + 1],..., A[r] e retorna posição do x, ou seja, p + j > Indução Forte Corretude de Algoritmos 13/20
29 Exemplo de Quicksort(A,2,5) > Indução Forte Corretude de Algoritmos 14/20
30 Exemplo (Quicksort) Assumindo que a rotina Partition funciona da maneira especificada, mostre que Quicksort(A,1,n) ordena o vetor A[1, n]. > Indução Forte Corretude de Algoritmos 15/20
31 Exemplo (Quicksort) Assumindo que a rotina Partition funciona da maneira especificada, mostre que Quicksort(A,1,n) ordena o vetor A[1, n]. Prova: Vamos provar que pra todo p r, Quicksort(A, p,r) ordena A[p, r] > Indução Forte Corretude de Algoritmos 15/20
32 Exemplo (Quicksort) Assumindo que a rotina Partition funciona da maneira especificada, mostre que Quicksort(A,1,n) ordena o vetor A[1, n]. Prova: Vamos provar que pra todo p r, Quicksort(A, p,r) ordena A[p, r] Prova por indução forte em n = p r + 1 (tamanho to subvetor que queremos ordenar) > Indução Forte Corretude de Algoritmos 15/20
33 Exemplo (Quicksort) Assumindo que a rotina Partition funciona da maneira especificada, mostre que Quicksort(A,1,n) ordena o vetor A[1, n]. Prova: Vamos provar que pra todo p r, Quicksort(A, p,r) ordena A[p, r] Prova por indução forte em n = p r + 1 (tamanho to subvetor que queremos ordenar) Casos base: p r + 1 = 0 e p r + 1 = 1. Em ambos os casos Quicksort(A,p,r) não faz nada > Indução Forte Corretude de Algoritmos 15/20
34 Exemplo (Quicksort) Assumindo que a rotina Partition funciona da maneira especificada, mostre que Quicksort(A,1,n) ordena o vetor A[1, n]. Prova: Vamos provar que pra todo p r, Quicksort(A, p,r) ordena A[p, r] Prova por indução forte em n = p r + 1 (tamanho to subvetor que queremos ordenar) Casos base: p r + 1 = 0 e p r + 1 = 1. Em ambos os casos Quicksort(A,p,r) não faz nada Ok, pois todo subvetor de tamanho 0 ou 1 já está ordenado > Indução Forte Corretude de Algoritmos 15/20
35 Passo indutivo. Suponha que a Quicksort retorna A[p, r] ordenato desde que p r + 1 n (indução forte) > Indução Forte Corretude de Algoritmos 16/20
36 Passo indutivo. Suponha que a Quicksort retorna A[p, r] ordenato desde que p r + 1 n (indução forte) Precisamos provar que vale quando p r + 1 = n + 1 > Indução Forte Corretude de Algoritmos 16/20
37 Passo indutivo. Suponha que a Quicksort retorna A[p, r] ordenato desde que p r + 1 n (indução forte) Precisamos provar que vale quando p r + 1 = n + 1 Primeiro, Quicksort(A,p,r) executa Partition(A,p,r) > Indução Forte Corretude de Algoritmos 16/20
38 Passo indutivo. Suponha que a Quicksort retorna A[p, r] ordenato desde que p r + 1 n (indução forte) Precisamos provar que vale quando p r + 1 = n + 1 Primeiro, Quicksort(A,p,r) executa Partition(A,p,r) Partition coloca todos os elementos menores que valor x = A[p] à esquerda, e os maiores a direita só falta ordenar os subvetores a esquerda e a direita do valor x > Indução Forte Corretude de Algoritmos 16/20
39 Depois, Quicksort executa a recursão Quicksort(A,p,q-1) (subvetor a esquerda de x) > Indução Forte Corretude de Algoritmos 17/20
40 Depois, Quicksort executa a recursão Quicksort(A,p,q-1) (subvetor a esquerda de x) Essa recursão opera em subvetor de tamanho r (q 1) + 1 = r q, estritamente menor que r p + 1 = n + 1 > Indução Forte Corretude de Algoritmos 17/20
41 Depois, Quicksort executa a recursão Quicksort(A,p,q-1) (subvetor a esquerda de x) Essa recursão opera em subvetor de tamanho r (q 1) + 1 = r q, estritamente menor que r p + 1 = n + 1 tamanho do subvetor é n > Indução Forte Corretude de Algoritmos 17/20
42 Depois, Quicksort executa a recursão Quicksort(A,p,q-1) (subvetor a esquerda de x) Essa recursão opera em subvetor de tamanho r (q 1) + 1 = r q, estritamente menor que r p + 1 = n + 1 tamanho do subvetor é n Pela hipótese indutiva essa chamada recursiva ordena o subvetor esquerdo A[p, q 1] de forma correta > Indução Forte Corretude de Algoritmos 17/20
43 Finalmente, Quicksort executa a recursão Quicksort(A,q+1,r) (subvetor a direita de x) > Indução Forte Corretude de Algoritmos 18/20
44 Finalmente, Quicksort executa a recursão Quicksort(A,q+1,r) (subvetor a direita de x) Essa recursão opera em subvetor de tamanho r (q + 1) + 1 = r q, estritamente menor que r p + 1 = n + 1 > Indução Forte Corretude de Algoritmos 18/20
45 Finalmente, Quicksort executa a recursão Quicksort(A,q+1,r) (subvetor a direita de x) Essa recursão opera em subvetor de tamanho r (q + 1) + 1 = r q, estritamente menor que r p + 1 = n + 1 tamanho do subvetor é n > Indução Forte Corretude de Algoritmos 18/20
46 Finalmente, Quicksort executa a recursão Quicksort(A,q+1,r) (subvetor a direita de x) Essa recursão opera em subvetor de tamanho r (q + 1) + 1 = r q, estritamente menor que r p + 1 = n + 1 tamanho do subvetor é n Pela hipótese indutiva essa chamada recursiva ordena o subvetor direito A[q + 1, r] de forma correta > Indução Forte Corretude de Algoritmos 18/20
47 Finalmente, Quicksort executa a recursão Quicksort(A,q+1,r) (subvetor a direita de x) Essa recursão opera em subvetor de tamanho r (q + 1) + 1 = r q, estritamente menor que r p + 1 = n + 1 tamanho do subvetor é n Pela hipótese indutiva essa chamada recursiva ordena o subvetor direito A[q + 1, r] de forma correta Quicksort retorna. Note que vetor A[p, r] está ordenado > Indução Forte Corretude de Algoritmos 18/20
48 Exercicios Exercicio: Considere o seguinte procedimento Prog2(int n) If n < 3 Imprima( Oi ) 4 vezes Return Else Prog2(n-1) Prog2(n-2) End if Seja T (n) o número de vezes que a palavra OI é impressa quando Prog2 é chamado com parâmetro n Prove por indução (forte) que T (n) 4 (7/4) n pra todo n 1 > Indução Forte Corretude de Algoritmos 19/20
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
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
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
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
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
Algoritmos de Ordenação: QuickSort
Algoritmos de Ordenação: QuickSort ACH2002 - Introdução à Ciência da Computação II Delano M. Beder Escola de Artes, Ciências e Humanidades (EACH) Universidade de São Paulo [email protected] 10/2008 Material
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
DAINF - Departamento de Informática
DAINF - Departamento de Informática Algoritmos 2 - Árvore binária de busca Prof. Alex Kutzke ( http://alex.kutzke.com.br/courses ) 30 de Novembro de 2015 Slides adaptados do material produzido pelo Prof.
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
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
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)
Árvores Árvores Geradoras de Custo Mínimo 0/16
Conteúdo 1 Árvores 2 Árvores Geradoras de Custo Mínimo Árvores Árvores Geradoras de Custo Mínimo 0/16 Árvores Definição (Grafo Acíclico) Um grafo acíclico é um grafo que não contém ciclos. Árvores Árvores
Ordenação: QuickSort. Prof. Túlio Toffolo BCC202 Aula 15 Algoritmos e Estruturas de Dados I
Ordenação: QuickSort Prof. Túlio Toffolo http://www.toffolo.com.br BCC202 Aula 15 Algoritmos e Estruturas de Dados I QuickSort Proposto por Hoare em 1960 e publicado em 1962. É o algoritmo de ordenação
Relações de recorrência
Relações de recorrência Sequências. Relações de recorrência. Equação caraterística. Relações de recorrência de 2ª ordem não homogéneas. Referência: Capítulo: 4 Discrete Mathematics with Graph Theory Edgar
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/10 3 - INDUÇÃO E RECURSÃO 3.1) Indução Matemática 3.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
Edital de Seleção 032/2016 PROPESP/UFAM. Prova de Conhecimento. Caderno de Questões
Edital de Seleção 032/2016 PROPESP/UFAM Prova de Conhecimento Caderno de Questões CANDIDATO: INSCRIÇÃO: Assinatura conforme identidade INSTRUÇÕES PARA O CANDIDATO: Verifique o seu nome e o número da sua
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/26 3 - INDUÇÃO E RECURSÃO 3.1) Indução Matemática 3.2)
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
ALGORITMOS DE ORDENAÇÃO RECURSIVOS
1/14 ALGORITMOS DE ORDENAÇÃO RECURSIVOS Ordenação rápida ( Quicksort ) 2/14 Ordenação rápida ( Quicksort ) Ideia - Baseia-se num princípio muito simples que, quando aplicado recursivamente, acaba por ordenar
Algoritmos de pesquisa
Define-se pesquisa como a operação que permite encontrar ou concluir que não existe, um dado elemento num dado conjunto. A pesquisa de um elemento pode ser feita num conjunto ordenado ou não. Quando o
Mergesort. Aula 04. Algoritmo Mergesort. Divisão e Conquista. Divisão e Conquista- MergeSort
Mergesort Aula 0 Divisão e Conquista- MergeSort Prof. Marco Aurélio Stefanes marco em dct.ufms.br www.dct.ufms.br/ marco Mergesort é um algoritmo de ordenação recursivo Ele recursivamente ordena as duas
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
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/20 3 - INDUÇÃO E RECURSÃO 3.1) Indução Matemática 3.2)
Busca Binária. Aula 05. Busca em um vetor ordenado. Análise do Busca Binária. Equações com Recorrência
Busca Binária Aula 05 Equações com Recorrência Prof. Marco Aurélio Stefanes marco em dct.ufms.br www.dct.ufms.br/ marco Idéia: Divisão e Conquista Busca_Binária(A[l...r],k) 1:if r < lthen 2: index = 1
Edital de Seleção 053/2016 PROPESP/UFAM. Prova de Conhecimento. Caderno de Questões
Edital de Seleção 053/2016 PROPESP/UFAM Prova de Conhecimento Caderno de Questões CANDIDATO: INSCRIÇÃO: Assinatura conforme identidade INSTRUÇÕES PARA O CANDIDATO: Verifique o seu nome e o número da sua
INE5403 FUNDAMENTOS DE MATEMÁTICA DISCRETA
INE5403 FUNDAMENTOS DE MATEMÁTICA DISCRETA PARA A COMPUTAÇÃO PROF. DANIEL S. FREITAS UFSC - CTC - INE Prof. Daniel S. Freitas - UFSC/CTC/INE/2007 p.1/14 3 - INDUÇÃO E RECURSÃO 3.1) Indução Matemática 3.2)
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
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
Estrutura de Dados. Algoritmos de Ordenação. Prof. Othon M. N. Batista Mestre em Informática
Estrutura de Dados Algoritmos de Ordenação Prof. Othon M. N. Batista Mestre em Informática Roteiro Introdução Ordenação por Inserção Insertion Sort Ordenação por Seleção Selection Sort Ordenação por Bolha
ESTRUTURA DE DADOS E ALGORITMOS. Árvores Binárias de Busca. Cristina Boeres
ESTRUTURA DE DADOS E ALGORITMOS Árvores Binárias de Busca Cristina Boeres Árvore Binária de Busca 30! construída de tal forma que, para cada nó: nós com chaves menores estão na sub-árvore esquerda nós
Ordenação de Dados (III) HeapSort
UFSC-CTC-INE INE53 - Estruturas de Dados Ordenação de Dados (III) Prof. Ronaldo S. Mello 00/ HeapSort HeapSort também é um método de seleção ordena através de sucessivas seleções do elemento correto a
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
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)
ÁRVORES BINÁRIAS DE BUSCA. Vanessa Braganholo Estruturas de Dados e Seus Algoritmos
ÁRVORES BINÁRIAS DE BUSCA Vanessa Braganholo Estruturas de Dados e Seus Algoritmos REFERÊNCIA Szwarcfiter, J.; Markezon, L. Estruturas de Dados e seus Algoritmos, 3a. ed. LTC. Cap. 4 INSTITUTO DE COMPUTAÇÃO
UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO. Prof.ª Danielle Casillo
UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO TEORIA DA COMPUTAÇÃO Aula 04 Programa Recursivo e Máquinas Prof.ª Danielle Casillo Funções recursivas Alguma função é recursiva quando
Divisão e Conquista. Norton T. Roman. Apostila baseada nos trabalhos de Cid de Souza, Cândida da Silva e Delano M. Beder
Divisão e Conquista Norton T. Roman Apostila baseada nos trabalhos de Cid de Souza, Cândida da Silva e Delano M. Beder Divisão e Conquista Construção incremental Ex: Consiste em, inicialmente, resolver
Árvores. Fabio Gagliardi Cozman. PMR2300 Escola Politécnica da Universidade de São Paulo
PMR2300 Escola Politécnica da Universidade de São Paulo Árvore: estrutura composta por nós e arestas entre nós. As arestas são direcionadas ( setas ) e: um nó (e apenas um) é a raiz; todo nó (exceto a
Algoritmos de ordenação Ordenação rápida ( Quicksort )
Ordenação rápida ( Quicksort ) Baseia-se num princípio muito simples que, quando aplicado recursivamente, acaba por ordenar o vector. Este princípio é composto por 2 passos essenciais: 1. Escolher um elemento
ALGORITMOS E ESTRUTURAS DE DADOS CES-11 Prof. Paulo André Castro Sala 110 Prédio da Computação IECE - ITA
ALGORITMOS E ESTRUTURAS DE DADOS CES-11 Prof. Paulo André Castro [email protected] Sala 110 Prédio da Computação www.comp.ita.br/~pauloac IECE - ITA MÉTODOS MAIS EFICIENTES QUE O(N 2 ) Método Quicksort Método
Árvores. Thiago Martins, Fabio Gagliardi Cozman. PMR2300 / PMR3201 Escola Politécnica da Universidade de São Paulo
PMR2300 / PMR3201 Escola Politécnica da Universidade de São Paulo Árvore: estrutura composta por nós e arestas entre nós. As arestas são direcionadas ( setas ) e: um nó (e apenas um) é a raiz; todo nó
Relações de recorrência
Relações de recorrência Sequências. Relações de recorrência. Equação caraterística. Relações de recorrência de ª ordem não homogéneas. Referência: Capítulo: 4 Discrete Mathematics with Graph Theory Edgar
ÁRVORE BINÁRIA DE BUSCA
ÁRVORE BINÁRIA DE BUSCA Introdução O algoritmo de busca binária em vetores tem bom desempenho e deve ser usado quando temos os dados já ordenados. No entanto, se precisarmos inserir e remover elementos
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
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
PAA-DCC-UFAM. Árvores. Universidade Federal do Amazonas Departamento de Eletrônica e Computação
Árvores Universidade Federal do Amazonas Departamento de Eletrônica e Computação Árvores Árvores são conjuntos cujos elementos guardam uma relação hierarquica entre eles Terminologia (1) A é o nodo raiz.
Ordenação: Heapsort. Algoritmos e Estruturas de Dados II
Ordenação: Heapsort Algoritmos e Estruturas de Dados II Introdução Possui o mesmo princípio de funcionamento da ordenação por seleção Selecione o menor item do vetor Troque-o pelo item da primeira posição
Quicksort. David Menotti Algoritmos e Estruturas de Dados II DInf UFPR
Quicksort David Menotti Algoritmos e Estruturas de Dados II DInf UFPR Quicksort Proposto por Hoare em 1960 e publicado em 1962. É o algoritmo de ordenação interna mais rápido que se conhece para uma ampla
Quick Sort. Considerações Sobre Algoritmos de Ordenação. Estagiário PAE: Jesimar da S. Arantes Professor: ClaudioQuick F. M.
Quick Sort Considerações Sobre Algoritmos de Ordenação Estagiário PAE: Jesimar da S. Arantes Professor: Claudio F. M. Toledo 27 de Setembro de 2017 Estagiário PAE: Jesimar da S. Arantes Professor: ClaudioQuick
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.........................
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
LISTA DE EXERCÍCIOS. Humberto José Bortolossi
GMA DEPARTAMENTO DE MATEMÁTICA APLICADA LISTA DE EXERCÍCIOS Matemática Básica Humberto José Bortolossi http://www.professores.uff.br/hjbortol/ 06 O Princípio da Indução Finita e Aplicações [01] Usando
Algoritmos de Ordenação
Algoritmos de Ordenação Introdução à Ciência da Computação Prof. Edison Ishikawa Objetivo Apresentar diferentes algoritmos de ordenação de dados Mostrar como analisar os algoritmos em termos de tempo de
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
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
Árvores Binárias. SCC Algoritmos e Estruturas de Dados I. Prof. Fernando V. Paulovich
Árvores Binárias SCC0202 - Algoritmos e Estruturas de Dados I Prof. Fernando V. Paulovich *Baseado no material do Prof. Gustavo Batista. Figuras editadas por Isadora Maria Mendes http://www.icmc.usp.br/~paulovic
Universidade da Madeira. 1. Recursão. 3. Busca. Profa. Dra. Laura Rodríguez Estruturas de dados e algoritmos 2
Profa. Dra. Laura Rodríguez E-mail: [email protected] Universidade da Madeira 1. Recursão 2. Ordenação 3. Busca Profa. Dra. Laura Rodríguez Estruturas de dados e algoritmos 2 1 1. Recursão 2. Ordenação 3.
Técnicas de projeto de algoritmos: Indução
Técnicas de projeto de algoritmos: Indução ACH2002 - Introdução à Ciência da Computação II Delano M. Beder Escola de Artes, Ciências e Humanidades (EACH) Universidade de São Paulo [email protected] 08/2008
Pedro Vasconcelos DCC/FCUP. Programação Funcional 5 a Aula Definições recursivas
Programação Funcional 5 a Aula Definições recursivas Pedro Vasconcelos DCC/FCUP 2014 Definições usando outras funções Podemos definir funções usando outras previamente definidas (e.g. do prelúdio-padrão).
Pesquisa 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
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
MAC121 ALGORITMOS E ESTRUTURAS DE DADOS I 2O. SEMESTRE DE 2017
PROVA 1 MAC121 ALGORITMOS E ESTRUTURAS DE DADOS I 2O. SEMESTRE DE 2017 Nome: Número USP: Instruções: (1 ) Esta prova é individual. (2 ) Não destaque as folhas deste caderno. (3 ) A prova consiste de 6
> 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
Á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
Classificação por Seleção - selection sort
Classificação por Seleção - selection sort Outro método também simples de ordenação é a ordenação por seleção. Princípio de funcionamento: 1. Selecione o menor item do vetor (ou o maior). 2. Troque-o com
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
SCC-601 Introdução à Ciência da Computação II. Ordenação e Complexidade Parte 3. Lucas Antiqueira
SCC-60 Introdução à Ciência da Computação II Ordenação e Complexidade Parte 3 Lucas Antiqueira Ordenação: Utiliza uma estrutura de dados chamada heap para ordenar. Um heap é um vetor (array) que representa
Árvores. Thiago Martins, Fabio Gagliardi Cozman. PMR2300 / PMR3201 Escola Politécnica da Universidade de São Paulo
PMR2300 / PMR3201 Escola Politécnica da Universidade de São Paulo Árvore: estrutura composta por nós e arestas entre nós. As arestas são direcionadas ( setas ) e: um nó (e apenas um) é a raiz; todo nó
QuickSort. Estrutura de Dados II Jairo Francisco de Souza
QuickSort Estrutura de Dados II Jairo Francisco de Souza Particionamento Mecanismo principal dentro do algoritmo do QuickSort Para particionar um determinado conjunto de dados, separamos de um lado todos
Projeto e Análise de Algoritmos
Projeto e Análise de Algoritmos A. G. Silva Baseado nos materiais de Souza, Silva, Lee, Rezende, Miyazawa Unicamp Ribeiro FCUP Manber, Introduction to Algorithms (989) Livro de abril de 08 Conteúdo programático
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.........................
Técnicas de projeto de algoritmos: Indução
Técnicas de projeto de algoritmos: Indução ACH2002 - Introdução à Ciência da Computação II Delano M. Beder Escola de Artes, Ciências e Humanidades (EACH) Universidade de São Paulo [email protected] 08/2008
Algoritmos de Ordenação: MergeSort
Algoritmos de Ordenação: MergeSort ACH2002 - Introdução à Ciência da Computação II Delano M. Beder Escola de Artes, Ciências e Humanidades (EACH) Universidade de São Paulo [email protected] 10/2008 Material
Árvores Estrutura de Dados. Universidade Federal de Juiz de Fora Departamento de Ciência da Computação
1 Árvores Estrutura de Dados Universidade Federal de Juiz de Fora Departamento de Ciência da Computação 2 Árvore Binária de Busca Definição: uma árvore binária de busca (ABB) é uma árvore binária na qual
Árvores Binária de Busca. Prof. César Melo DCC/ICE/UFAM
Árvores Binária de Busca Prof. César Melo DCC/ICE/UFAM Introdução O algoritmo de busca binária em vetores tem bom desempenho e deve ser usado quando temos os dados já ordenados. No entanto, se precisarmos
