A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Algoritmos e Estruturas de Dados Tópicos diversos.

Apresentações semelhantes


Apresentação em tema: "Algoritmos e Estruturas de Dados Tópicos diversos."— Transcrição da apresentação:

1 Algoritmos e Estruturas de Dados Tópicos diversos

2 Classes P, NP e NP-Completo Classe P –Problemas que podem ser resolvidos em tempo polinomial, isto é, O ( n k ) onde n é o tamanho da entrada e k é alguma constante Classe NP –NP significa não deterministicamente polinomial Assume a existência de um computador hipotético não determinístico: toma sempre a decisão certa –Problemas que são verificáveis em tempo polinomial –Dada uma entrada E para um problema e uma saída S, verificação significa determinar se S é solução do problema S é chamada de certificado

3 Classes P, NP e NP-Completo Classe NP (cont.) –Exemplo: ciclo hamiltoniano de um grafo Certificado é uma seqüência Claramente, determinar a correção do certificado pode ser feito em tempo polinomial –P NP Todo problema solúvel em tempo polinomial é verificável em tempo polinomial –P NP ? Seria de se esperar que existem problemas que são NP mas cuja solução requer tempo não polinomial Neste caso o computador não determinístico seria um grande avanço da tecnologia Até agora, não foram encontradas provas desta afirmativa

4 NP-Completude Um problema é NP-completo se ele é NP e pode ser reduzido a um outro problema NP-completo –Definição recursiva? Problema original é o de satisfatibilidade (Cook) –Dada uma expressão booleana com n termos variáveis, dar um valor a cada variável de tal forma que o resultado seja True –Cook provou que o problema pode ser resolvido por computador não determinístico –Redução Mapeamento entre um problema e outro Exemplo: O problema do caixeiro viajante pode ser reduzido ao problema do ciclo hamiltoniano

5 NP-Completude Problema do caixeiro viajante –Num grafo valorado totalmente conexo existe algum ciclo com peso total <= K ? –Problema do ciclo hamiltoniano em um grafo G pode ser reduzido a este bastando criar um grafo valorado G onde a aresta E tem peso 1 se pertence a G ou 2 caso contrário

6 NP-Completude Problemas NP-Completos são intratáveis e existem muitos deles Quando um problema se mostra difícil de resolver, provar que ele é NP-completo pode ser de grande valia –Prova-se que ele é NP (certificado pode ser testado em tempo polinomial) –Prova-se que ele é redutível a outro problema NP- completo Na prática, costuma-se fazer a segunda melhor coisa –Resolver um subcaso importante –Achar soluções aproximadas

7 Heaps Binomiais Heap que suporta união em tempo O (log n + m ) ao invés de O ( n + m ) como a heap comum Em compensação o tempo de consultar o menor elemento é O (log n ) ao invés de O (1) Existe ainda um tipo de heap chamada de heap de Fibonacci que tem tempos ótimos amortizados (não pior caso): –Inserção, remoção e mínimo em tempo amortizado O(1) Uma heap binomial é uma floresta de árvores binomiais

8 Árvores Binomiais Uma árvore binomial B k é uma árvore ordenada –Se k = 0 então consiste de um único nó –Senão, consiste de duas árvores binomiais B k -1 ligadas de tal forma que o filho mais à esquerda de uma é a raiz da outra

9 Árvores Binomiais Propriedades de B k : –Tem 2 k nós, –Tem altura k –Tem nós de altura i –A raiz tem grau k, que é maior que o de qualquer outro nó –Corolário: Se uma árvore binomial tem n nós, então sua altura máxima e o grau máximo de qualquer nó é lg n

10 Heaps Binomiais Uma heap binomial H é uma floresta de árvores binomiais onde –Cada árvore é ordenada como uma heap mínima, isto é, todos os nós internos são menores que seus filhos A raiz de cada árvore contém o mínimo elemento –Todas as raízes de todas as árvores têm graus distintos Se H tem n nós, então ela contém no máximo lg n + 1 árvores binomiais Observe que, em binário, n tem lg n + 1 bits. Como cada árvore binomial de ordem k tem 2 k nós, teríamos uma árvore para cada bit de n que fosse igual a 1

11 Heaps Binomiais Heaps são representadas como listas ordenadas (por grau/altura) de árvores binomiais Exemplo: Uma heap binomial com 13 (=1011 B ) nós

12 União de Heaps Binomiais Faz-se o merge por grau das duas heaps numa única lista ordenada –O resultado pode ter apenas 2 árvores de cada grau Para cada par de árvores A e B de mesmo grau, gera-se uma árvore C que é resultante de inserir A como filho mais à esquerda de B ou vice-versa –Depende de quem é a menor das duas raízes O resultado da fusão de duas árvores de grau k é uma árvore de grau k +1 –Podemos então ter três árvores de mesmo grau na lista –Se isso acontecer, fundimos apenas as duas últimas

13 Exemplo de União de Heaps Binomiais

14

15 Consulta e Inclusão em Heaps Binomiais A consulta do valor mínimo se faz com uma procura seqüencial das raízes das árvores em tempo O (lg n ) A inclusão de um valor v numa heap binomial H é feita criando-se uma heap binomial unitária H contendo apenas v e computando-se sua união com H

16 Remoção do Mínimo em Heaps Binomiais A árvore A contendo a menor raiz é removida da lista de H A raiz x de A é removida, gerando assim uma lista das sub-árvores filhas: A, A, A etc Uma nova heap H é construída com a lista de filhas de A em ordem inversa É computada a união entre H e H A operação total é feita em tempo O (lg n )

17 Exemplo de Remoção em Heaps Binomiais

18 Tries Ao contrário de árvores de busca, que podem ser consideradas estruturas que organizam dados entre si, as tries organizam o espaço em que os dados estão imersos Bastante usadas em estruturas de dados espaciais –As quadtrees, por exemplo, seriam mais bem denominadas quadtries Em uma dimensão, são mais usadas para organizar cadeias de texto –O espaço é unidimensional porque podemos pensar numa ordem total entre todas as cadeias (ordem alfabética)

19 Exemplo de Trie

20 Compressão de Dados Objetivos –Reduzir espaço de armazenagem –Reduzir tempo de transmissão Muito importante –Informação (e dados) tende a crescer de forma exponencial Exemplos: –Compressão de arquivos em geral ZIP, GZIP, BZIP, BOA. –Sistemas de arquivos: NTFS. –Multimedia. Imagens: GIF, JPEG Som: MP3. Vídeo: MPEG, DivX, HDTV. –Comunicação Modems Faxes

21 Codificação e Decodificação Seja M a mensagem que desejamos armazenar/transmitir –Codificação: Gerar uma representação comprimida C ( M ) que, espera-se, utilize menos bits –Decodificação: Reconstrução da mensagem original ou alguma aproximação M Razão de Compressão: bits de C ( M ) / bits de M Compressão sem perda: M = M –Texto, programas fonte, executáveis etc –RC: 50-75% ou menos Compressão com perda: M ~ M –Imagens, som, vídeo –Idéia é descartar informação não perceptível pelos sentidos –RC: 10% ou mais, dependendo do fator de qualidade

22 Codificação por Seqüências Repetidas Conhecida como Run-length encoding (RLE). Idéia é explorar longas seqüências da caracteres repetidos –Substituir seqüência pelo número de repetições seguido do caractere repetido –Se seqüência é tem menos de 3 caracteres, ignorar regra Exemplo: –AAAABBBAABBBBBCCCCCCCCDABCBAAABBBBCCCD 4A3BAA5B8CDABCB3A4B3CD Como representar o número de repetições? –Alguns esquemas + ou – complicados –Pode levar à inflação de um arquivo se as seqüências são curtas Se o arquivo é binário, saída consiste apenas de contagens de repetições Aplicações –Imagens preto e branco Compressão aumenta com a resolução

23 Codificação de Huffman Idéia é usar caracteres (símbolos) com número variável de bits –Caracteres mais comuns na mensagem são codificados com menos bits e caracteres menos comuns com mais Árvore de Prefixos de Huffman –Dada uma mensagem, encontra a melhor (menor) codificação para os caracteres –Algoritmo: Tabular freqüências dos símbolos Montar uma floresta de tries unitários com todos os símbolos e suas freqüências Repetir –Localizar os dois tries com menor freqüência F i e F j –Uní-los num trie único com freqüência F i + F j

24 Exemplo de Codificação de Huffman Freqüências dos caracteres 125 Freq E Char T A O I N R H L D C U 65S

25 Exemplo de Codificação de Huffman RSNI E H CU T DL AO 8076

26 Exemplo de Codificação de Huffman RSNI E H CU 58 DL AOT

27 Exemplo de Codificação de Huffman RSNI E H CU 58 DL 81 AOT

28 Exemplo de Codificação de Huffman RSNI E H CU DL 81 AOT

29 Exemplo de Codificação de Huffman RSNI E H CU DL 81 AOT

30 Exemplo de Codificação de Huffman RSNI E H CU DL 81 AOT

31 Exemplo de Codificação de Huffman RSNI E H CU DL AOT

32 Exemplo de Codificação de Huffman RSNI E H CU DL AOT

33 Exemplo de Codificação de Huffman RSNI E H CU T DL AO

34 Exemplo de Codificação de Huffman RSNI E H CU T DL AO

35 Exemplo de Codificação de Huffman RSNI E H CU T DL AO

36 Exemplo de Codificação de Huffman RSNI E H CU T DL AO

37 Exemplo de Codificação de Huffman RSNI E H CU T DL AO

38 Exemplo de Codificação de Huffman 125 Freq E Char T A O I N R H L D C U 65S 0000 Fixo Huff Total

39 Codificação de Huffman Implementação. –Dois passos Tabular freqüências e construir o trie Codificar mensagem percorrendo o trie –Usar uma fila de prioridades (heap) Complexidade O ( M + N log N ) – M é o comprimento da mensagem – N é o número de caracteres distintos Dificuldades –Transmissão do trie Pode ser resolvido com variante progressiva ( Knuth ): Trie é construído simultaneamente pelo codificador e decodificador –Não é ótimo Número de bits por caractere é inteiro Codificação aritmética: permite número fracionáriode bits por caractere


Carregar ppt "Algoritmos e Estruturas de Dados Tópicos diversos."

Apresentações semelhantes


Anúncios Google