Prof. Alessandro Gonçalves

Slides:



Advertisements
Apresentações semelhantes
Programação em Java Prof. Maurício Braga
Advertisements

Estruturas de Dados Marcio Gonçalves.
Marco Antonio Montebello Júnior
Linguagem de Programação IX Métodos de Ordenação
Algoritmos de Ordenação
Algoritmos de Busca CONTEÚDO (1) Motivação (2) Busca Linear
Recursividade Prof. Rosana Palazon.
Algoritmos de Ordenação
Classificação de Dados
Recursividade e Iteração Factorial, Fibonacci e Maior Divisor Comum
2 de Junho de 2005Conclusão1 Pedro Barahona DI/FCT/UNL Junho 2005.
1 Conclusão DI/FCT/UNL 1º Semestre 2004/ Ciclos de Simulação A técnica usada no exemplo da queda livre pode ser utilizada para trajectórias a duas.
Introdução aos Computadores e à Programação
Introdução a Algoritmos Seqüenciais
Recursividade Prof. Alex F. V. Machado
Análise Projeto de Algoritmos
Árvores.
1 MergeSort Seja uma lista A de n elementos. O algoritmo consiste das seguintes fases Dividir A em 2 sub-listas de tamanho n/2 Conquistar: ordenar cada.
David Menotti Algoritmos e Estruturas de Dados I DECOM – UFOP
Medida do Tempo de Execução de um Programa
Medida do Tempo de Execução de um Programa
David Menotti Estruturas de Dados I DECOM – UFOP
Recursividade Conceitos e Aplicações.
FACENS – Engenharia da Computação Lógica Computacional II
Ordenação Facilitar e aumentar a eficiência das operações de pesquisa sobre esses dados Pode ser crescente ou decrescente A seqüência de entrada, normalmente,
Ordenação Facilitar e aumentar a eficiência das operações de pesquisa sobre esses dados Pode ser crescente ou decrescente A seqüência de entrada, normalmente,
Algoritmos Escher.
Classificação de dados por Troca: QuickSort
Classificação de dados por Intercalação: MergeSort
SISTEMAS LINEARES I Prof. Marlon.
Análise Léxica Supondo o trecho de programa abaixo:
Algoritmos de Ordenação
Buscas em Grafos Prof. André Renato 1º Semestre/2012
Algoritmos de Ordenação
Insertion Sort.
Algoritmos e Estruturas de Dados I – Estruturas de Controle de Fluxo
Meta - heurísticas Prof. Aurora
Análise do Lugar das Raízes
T ÓPICOS DE I.A. Métodos de Busca Busca em Espaços de Estado Prof. Mário Dantas.
Informática Teórica Engenharia da Computação
Introdução à Programação
Desempenho, Método de Shell, Quicksort
Complexidade de algoritmos e Classificação (Ordenação) de dados
Introdução e Busca Cega
Algoritmos e Estruturas de Dados I – Recursão
MERGE SORT DANIEL C. MERODE NAIROBI S. DE OLIVEIRA SEGURANÇA DA INFORMAÇÃO - ESTRUTURA DE DADOS C++
Ceça Moraes – Introdução à Programação SI1
Algoritmos e Estruturas de Dados I – Recursão
Algoritmos de Ordenação
Algoritmos e Estruturas de Dados RECURSIVIDADE. O que é recursividade? Recursividade significa algo ser definido em termos de sí próprio. Em termos de.
© 2011 Pearson Prentice Hall. Todos os direitos reservados.slide 1 © 2011 Pearson Prentice Hall. Todos os direitos reservados.slide 1 © 2011 Pearson Prentice.
Introdução à complexidade de algoritmos Luiz Gonzaga da Silveira Junior.
Programação Dinâmica.
Métodos de Ordenação.
Recursividade Profs. De Prog2 e Lab2.
Prof. Edison Oliveira de Jesus
Geometria Computacional Fecho Convexo
CLASSIFICAÇÃO DE DADOS
Divisores de um Número.
Segurança de Redes de Computadores Prof. Paulo Fernando da Silva.
Recursividade Aula I – ALG II CPAN – UFMS. Recursividade A recursão é uma técnica pela qual uma rotina estruturada faz chamadas a ela mesma, com o objetivo.
Classificação Ordenação de Dados
Programação II Laboratório II Prof. Mateus Raeder Universidade do Vale do Rio dos Sinos - São Leopoldo - Transparências baseadas nos originais da Prof.
Métodos de Pesquisa: Sequencial e Binária
Classificação (Ordenação) de dados
Arrays Outline 7.1 Introdução 7.2 Arrays 7.3 Declarando e Criando Arrays 7.4 Exemplos usando arrays 7.5 Ordenando arrays 7.6 Procurando em.
USP – ICMC – SSC SSC0300 2º Semestre 2015
Campus Pau dos Ferros Disciplina de Algoritmos Prof. Demétrios Coutinho INFORMÁTICA BÁSICA Algoritmos de Ordenação.
Recursividade e análise Cristiano Arbex Valle Vinicius Fernandes dos Santos
Transcrição da apresentação:

Prof. Alessandro Gonçalves UNDB ESTRUTURAS DE DADOS Prof. Alessandro Gonçalves Alessandro.inovacao@gmail.com 1 1 1

Lista encadeada circular Uma lista normal mas o último elemento aponta para o primeiro 5 1 3 Aplicação: loop infinito com elementos sendo adicionados a todo momento Ex: lista de processamento de cartões de crédito (e-commerce), transmissão de dados via rede... 2 2 2

Lista duplamente encadeada circular Uma lista normal mas o último elemento aponta para o primeiro Une a maleabilidade da lista duplamente encadeada com outra facilidade: é circular também. A de mais difícil implementação 5 1 3 3 3 3

Recursividade Cálculo de fatorial Progressão geométrica Quando uma função A chama a si própria (recursão direta) OU Quando uma função A chama B e esta chama A (recursão indireta) Exemplos ? Cálculo de fatorial Progressão geométrica Série de Fibonacci 4 4 4

Recursividade Características: Algoritmos mais elegantes Pode exigir muito poder computacional Muito utilizada por programadores profissionais 5 5 5

Recursividade Implantação de recursividade com Fatorial Como seria o algoritmo ? 6 6 6

Recursividade Implemente um algoritmo recursivo para mostrar todos os números pares de 0 até n. 7

Recursividade Implemente um programa recursivo para calcular o mdc de dois números. CÁLCULO DO M.D.C. PELO PROCESSO DAS DIVISÕES SUCESSIVAS Nesse processo efetuamos várias divisões até chegar a uma divisão exata. O divisor desta divisão é o m.d.c. Acompanhe o cálculo do m.d.c.(48,30). Regra prática: 1º) dividimos o número maior pelo número menor; 48 / 30 = 1 (com resto 18) 2º) dividimos o divisor 30, que é divisor da divisão anterior, por 18, que é o resto da divisão anterior, e assim sucessivamente; 30 / 18 = 1 (com resto 12) 18 / 12 = 1 (com resto 6) 12 / 6 = 2 (com resto zero - divisão exata) 3º) O divisor da divisão exata é 6. Então m.d.c.(48,30) = 6. 8

Recursividade Escreva uma função recursiva que recebe como parâmetros um número real X e um inteiro N e retorna o valor de XN. 9

Recursividade Série de Fibonacci 0,1,1,2,3,5,8,13,21... 10

Série de Fibonacci – curiosidades Recursividade Série de Fibonacci – curiosidades Yupana (instrumento de contagem Inca) Nautilus – concha segue a série Outros exemplos: disposição de folhas em plantas, dentição humana... 11

Ordenação dos dados Por que classificar os dados ? Como classificar os dados ? 12

Bubble Sort – Ordenação bolha Lembra a fervura de água, com bolhas maiores para cima Compara o 1º elemento com o 2º, 3º... último e troca se for o caso Compara o 2º elemento com o 3º, 4º... último e troca se for o caso Exemplo em C 13

Bubble Sort – Ordenação bolha Desempenho ? Executa aproximadamente n2 iterações, sempre Não é muito eficiente 14

Ordenação por seleção Descobre o menor elemento da lista e troca com o 1º. A partir do 2º elemento, descobre o menor elemento e troca com este. Exemplo em C 15

Ordenação por seleção Desempenho ? Executa aproximadamente n2 iterações, sempre Não é muito eficiente 16

Ordenação por inserção A principal característica deste método consiste em ordenar um conjunto de elementos, utilizando um subconjunto ordenado localizado em seu inicio, e em cada iteração, acrescentamos a este subconjunto mais um elemento, até que atingimos o último elemento do conjunto assim com que ele se torne ordenado. Exemplo em C 17

Ordenação por inserção Exemplo em C 18

Ordenação por inserção Desempenho ? Executa aproximadamente entre n a n2 iterações É mais eficiente que os anteriores 19

Ordenação por Shell Sort Criado por Donald Shell, em 1959 Ele separa o arrays em subarrays, ordena estes a partir do método de inserção direta. Existe a figura do salto ou distância (h), não comparando itens de dados adjacentes, mas sim com distância “h” Obtido com uma fórmula, chamada número de Knuth. 20

Ordenação por Shell Sort 1 2 3 4 5 Passo Compara 3 com 1 (h=2) Troca 1 com 3 Compara 3 com 5 (h=2) Compara 1 com 5 O segmento com h=2 está ordenado. Divide-se h por 3. Com h=1, é ordenação por inserção. Compara 1 com 2. Depois (1-2). Depois (1-2-3) com 4 ... 24 32 11 60 3 1 2 3 4 5 11 32 24 60 3 1 2 3 4 5 3 32 11 60 24 1 2 3 4 5 3 11 32 60 24

Video “ordenação por shell sort”

Ordenação por shell sort Desempenho ? É mais eficiente que os anteriores Entre n*(log n)2) e n1.5 23

Ordenação por Quick Sort Criado por C.A.R., em 1960. Modelo de “dividir para conquistar” Divisão: divide-se os dados de entrada em conjuntos disjuntos (separados); Recursão: soluciona-se os problemas associados aos subconjuntos recursivamente; Conquista: obtém-se as soluções dos subproblemas e junta-se as mesmas em uma única solução. 24

Ordenação por Quick Sort 1 – escolhe-se um pivôt, dividindo-se à esquerda o grupo de elementos MENORES e à direita o grupo de elementos MAIORES. 2 – Faça o passo 1 recursivamente em cada sugrupo, até que haja apenas 1 elemento em cada. 3 – junte os grupos, de forma ordenada 25

Ordenação por Quick Sort (b) Fase de Conquista (a) Fase de Divisão 26

Ordenação por Quick Sort Desempenho ? Como o próprio nome diz, é mais eficiente que os anteriores nas mais diversas situações (lista já ordenada, lista invertida, lista misturada...) devendo ser utilizado para ganhos de performance 27

Ordenação por Merge Sort Também usa a estratégia dividir para conquistar 1. Divida a lista por 2, gerando 2 novos vetores a cada passo 2. Recursivamente, faça o passo 1, até chegar a um elemento por vetor 3. Reconstrua cada vetor, de forma ordenada agrupando com o vetor acima 28

Ordenação por Merge Sort Divisão 2 7 4 1 9 6 2 7 4 1 9 6 1 9 6 2 7 4 2 7 4 1 9 6 29

Ordenação por Merge Sort Conquista 1 2 4 6 7 9 2 4 7 1 6 9 1 9 6 2 7 4 2 7 4 1 9 6 30

Hash A partir de uma grande quantidade de informações, gera uma pequena informação A ideia é gerar um número único. A função é de uma via só, sem volta. Aplicações: ordenação, bancos de dados (índices), criptografia. 31

Hash Considere a função definida abaixo Considere o vetor 1, se valor <20 F(valor) = 2, se 20 >= valor < 40 3, se valor >= 40 Considere o vetor (24, 32, 11, 60, 3) Aplicando o “hash” acima, gero uma lista ordenada 1 2 3 3 11 * 24 32 * 60 * 32

Hash Alguns algoritmos de criptografia famosos, baseados em hash: MD5 – Multi Digest 5 – Desenvolvido pela RSA Security. Usado em P2P e criptografia em Bancos de dados SHA1 – Security Hash Algorithm, desenvolvido pela NSA Whirlpool1 – Desenvolvida por Paulo Barreto e Vincent Rijmen. Adotada pelo ISO 10118-3 33

Hash MD5 (“UNDB”) b32a9969a791e4547296cc8391ca6587 MD5 (“UNDB.”) 531b56f5e2d7e1bc98d3f7790e6691ab sha1 (“UNDB”) 378e4d5f0c0a2b019ba407ef0d4aaac3c0447e48 sha1 (“UNDB.”) aef0529209015c45c90606f710ad8c1ae258135b 34

Prof. Alessandro Gonçalves UNDB ESTRUTURAS DE DADOS Prof. Alessandro Gonçalves Alessandro.inovacao@gmail.com 35 35 35