COMPACTAÇÃO DE DADOS COM DETEÇÃO DE ERROS

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

Download "COMPACTAÇÃO DE DADOS COM DETEÇÃO DE ERROS"

Transcrição

1 A pesquisa Operacional e os Recursos Renováveis 4 a 7 de novembro de 2003, Natal-RN COMPACTAÇÃO DE DADOS COM DETEÇÃO DE ERROS Paulo E. D. Pinto Universidade Estadual do Rio de Janeiro, RJ, Brasil. pauloedp@ime.uerj.br Fábio Protti IM e NCE, Universidade Federal do Rio de Janeiro, RJ, Brasil. Parcialmente financiado pelo CNPq e FAPERJ. fabiop@nce.ufrj.br Jayme L. Szwarcfiter IM, NCE e COPPE, Universidade Federal do Rio de Janeiro, RJ, Brasil. Parcialmente financiado pelo CNPq e FAPERJ. jayme@cos.ufrj.br Resumo. Hamming [3] propôs, em 1980, as Árvores Hamming Huffman, estruturas para compactação de dados, que integrassem as vantagens da compactação de Huffman com a proteção contra ruídos de Hamming. Essas estruturas teriam a propriedade de detetar erros de 1 bit introduzidos durante a transmissão de dados compactados. Este trabalho amplia essa proposta e discute as Árvores de Deteção Ímpar(ADI), cuja propriedade básica é poder detetar qualquer número ímpar de bits espúrios introduzidos em uma mensagem. É estudado o caso especial de frequências constantes e são caracterizadas todas as ADI ótimas para essa situação, evidenciando-se o baixo preço a pagar, em relação a Huffman, pela ampliação feita. É também discutido, sem detalhar, um algoritmo para o caso de frequências quaisquer. Keywords: Árvores Hamming Huffman, Árvores de Deteção Ímpar. Abstract. Hamming [3] proposed, in 1980, the Hamming Huffman Trees, structures for data compression, which can combine the Huffman encoding with the noise protection of Hamming encoding. Those structures can detect 1 bit-errors introduced during transmission of compressed data. This work extends that proposal and discusses the ODD Detection Tress (ODT), whose basic property is to detect any odd number of wrong bits introduced in a message. It is presented the special case where the frequencies are constant and the Optimum ODT are caracterized for this situation. It is highlighted the low cost for the addition of that feature, related to Huffman. It is also discussed one algorithm to the general case. Keywords: Hamming Huffman Trees, Odd Detection Trees Introdução A compactação de dados é uma área de interesse permanente na computação e, embora já tenha tido bons resultados desde a década de 1950 [4], continua a ter uma grande dinâmica, dado o surgimento de novos enfoques a problemas antigos e a novos problemas [1], especialmente no contexto da Internet, que lida com grandes volumes de dados e onde a compactação é um imperativo econômico [1]. O mais tradicional método de compactação é o método de Huffman, que é muito eficiente, baseado em estatísticas sobre a ocorrência de símbolos ou agregado de símbolos em um conjunto de dados. Este método constrói uma árvore binária para codificação/decodificação de símbolos e cada um destes ocupa uma folha da árvore, sendo sua

2 codificação dada pelo caminho da raiz até a folha, em termos de bits 0 ou 1. Não é de surpreender que se encontre na literatura um grande número de novas propostas e adaptações sobre este método [2]. Uma dessas propostas aparece no excelente livro de Richard Hamming, "Coding and Information Theory" [3]. Hamming é especialmente conhecido por seus estudos sobre métodos de deteção e correção de erros em transmissão de dados. Ele propõe no livro, sem chegar a desenvolver, uma nova estrutura de dados, as Árvores Hamming-Huffman, que integre as vantagens da compactação de dados de Huffman com a deteção de erros, tarefas hoje realizadas em etapas distintas nos processos de transmissão/recepção de dados em redes. O presente trabalho baseia-se nessa idéia, discute a estrutura proposta por Hamming e apresenta e discute uma alternativa, as Árvores de Deteção Ímpar (ADI). As Árvores Hamming Huffman As Árvores Hamming-Huffman (AHH) permitiriam ter-se os benefícios da compactação de Huffman com a proteção contra ruídos de Hamming. A idéia é que a própria codificação de dados contivesse redundâncias que permitissem a deteção de determinados tipos de erro. Na proposta de Hamming, bastante modesta, todos os erros de 1 bit nas codificações, introduzidos durante a transmissão, seriam detetados na recepção. A idéia é equivalente a de proibir certas codificações que, quando presentes na recepção, indicariam o erro. De forma análoga às Árvores de Huffman, as AHH seriam árvores estritamente binárias, contendo as codificações em folhas, mas haveria a introdução de folhas de erro tal que, para cada codificação, todas as trocas de 1 bit levem a folhas de erro, no processo de decodificação. Segue o exemplo apresentado no livro citado, onde supõe-se frequências de ocorrência constantes. A Tabela 1 mostra os dados com suas codificações respectivas e, a Figura 1, a AHH correspondente. Símbolo Codificação a 000 b 0110 c 1010 d 1100 e 1111 Tabela 1: Código Hamming Huffman a b c d Figura 1. Árvore Hamming Huffman e No exemplo mostrado, os prefixos 001, 010, 0111, 100, 1011, 1101 e 1110 são prefixos proibidos e, quando ocorrerem na decodificação, indicam troca de 1 bit em dada codificação. Aparentemente a idéia das AHH não foi explorada, pois não foram encontradas referências na literatura sobre a questão, muito importante, pelo menos do ponto de vista teórico. Este trabalho baseia-se na idéia apresentada, mas mostra uma alternativa, as Árvores de Deteção Ímpar (ADI), que ampliam a proposta inicial, visando detetar não apenas 1, mas todos os erros em número ímpar que tenham sido introduzidos em uma mensagem codificada. Inicialmente vamos caracterizar os Códigos de Deteção Ímpar. Códigos de Deteção Ímpar Seja S um alfabeto finito. Uma codificação para dado elemento s S, c, é uma sequência finita de 0's e 1's associada a s. Cada 0 ou 1 é um bit da codificacão. Os bits de uma codificacão são rotulados 1, 2, 3,..., da esquerda para a direita. Um Código de Deteção Ímpar (CDI) para S é um conjunto P de codificações distintas associadas aos elementos de S, com as seguintes propriedades: 2463

3 a. É um código de prefixos, isto é, nenhuma codificação é prefixo de qualquer outra. Isto é necessário para se evitar ambiguidade na decodificação de mensagens. b. Na recepção e decodificação de uma mensagem, permite a deteção de um número ímpar de bits espúrios (na mensagem codificada). As seguintes propriedades de um CDI são facilmente verificáveis: 1. Em um código CDI, P, para cada par de codificações distintas c i, c j P com c i c j, existe a seguinte propriedade: c i e o segmento inicial de c j, com comprimento c i são diferentes. Isso é decorrência direta do fato d e o Código ser de prefixos. 2. Codificações de mesmo tamanho têm mesma paridade (paridade de uma codificação é a paridade do número de 1's que contém). Isto é necessário para a deteção ímpar. Essas propriedades são necessárias, mas não suficientes para garantir que um código seja CDI. Entretanto, se restringimos a segunda propriedade, adotando apenas codificações com paridade par, elas passam a ser suficientes para garantir que um código seja CDI, conforme o seguinte teorema: Teorema 1: Se, em um código P existirem as seguinte propriedades: a) para cada par de codificações distintas c i, c j P com c i c j, c i e o segmento inicial de c j com tamanho c i são diferentes. b)todas as codificações têm paridade par então P é CDI. Prova: Seja P um código com as propriedades mencionadas. A primeira condição atesta que P é um código de prefixos. A segunda atesta que a mensagem terá, inicialmente, paridade par e que só haverá reconhecimento de um caracter durante a decodificação quando tivermos segmentos de paridade par. Após a troca de um númeroos ímpar de bits espúrios, a mensagem terá sua paridade trocada para ímpar. Então, na decodificação, ainda que alguns segmentos sejam decodificados erradamente, na pior das hipóteses o último segmento terá paridade ímpar e o erro será detetado. Logo, P deteta qualquer número ímpar de bits espúrios na mensagem e, portanto, P é CDI. Dado um código CDI, P, é fácil verificar que podemos encontrar um outro, P', equivalente (também CDI e existindo uma bijeção entre os elementos de P e P', tal que os elementos correspondentes tenham mesmo tamanho). Para encontrar P', basta ordenar as codificações por tamanho e fazer um procedimento em k etapas (k é o número de diferentes tamanhos de codificações), tomando a cada passo as codificações de comprimento d i e, caso as codificações com esse comprimento tenham paridade ímpar, troca-se o bit de ordem d i em todas as codificações com comprimento igual ou superior a d i. Como consequência dessa propriedade, pode-se utilizar apenas CDI com codificações de paridade par. O problema de compactação de dados, que é o de encontrar um CDI ótimo, busca minimizar o tamanho total de uma mensagem e pode ser assim definido: Entrada: Um alfabeto S = {s 1, s 2... s n }, n > 1, e um vetor (f 1, f 2... f n ) de frequências, onde f i é um inteiro não negativo, correspondente à frequência de s i. Saída: Um CDI P para S que minimiza a função objetivo f = Σ f i d i, 1 i n, onde d i é o tamanho da codificação atribuída a s i em P. CDI e Árvores de Deteção Ímpar Quando se trabalha com códigos de prefixo, estes podem ser representados em árvores binárias, o que permite deduzir propriedades dos códigos a partir das propriedades das árvores associadas. Esta associação e o estudo das árvores resultantes são mostrados a seguir, 2464

4 especialmente para se caracterizar os Códigos de Deteção Ímpar Ótimos. Todos os conceitos sobre árvores binárias aquí usados estão alinhados com Szwarcfiter & Markenzon [6]. Cada CDI pode ser representado por uma árvore estritamente binária enraizada, onde existem três tipos de nós: nós internos, folhas de codificação e folhas de erro. As folhas de codificação contêm os símbolos do alfabeto. O caminho da raiz para determinada folha é equivalente à codificação atribuída ao caracter representado por essa folha, onde cada bit 0 corresponde a uma aresta para a esquerda e cada 1 a uma aresta para a direita. Folhas de erro ocorrem sempre como irmãos de folhas de codificação do último nível da árvore e, eventualmente, como irmãos de folhas de codificação de outros níveis ou de nós internos. Um exemplo de uma ADI para 5 caracteres é mostrado nas Tabela 2 e Figura 2. Símbolo Codificação a 00 b 11 a c 011 c d 101 e e 1001 d Tabela 2: Código CDI p/ 5 caracteres Fig 2. ADI para o CDI da Tabela 2 b Denominamos Árvore de Deteção Ímpar tipo I (ADI), para n codificações, a uma árvore estritamente binária com n folhas com paridade par. As folhas com paridade oposta são folhas de erro. Uma Árvore de Deteção Ímpar tipo II (ADII), para n codificações, é uma árvore resultante da troca das subárvores esquerda e direita de uma ADI, o que resulta terem todas suas codificações paridade ímpar. A partir deste ponto passaremos a caracterizar as Árvores de Deteção Ímpar Ótimas, relacionadas aos CDIs ótimos. Uma Árvore de Deteção Ímpar Ótima tipo I, (ADIO), é uma ADI correspondente a um CDI ótimo. Uma Árvore de Deteção Ímpar Ótima tipo II, (ADIIO), é uma ADI resultante da troca das subárvores esquerda e direita de uma ADIO. A figura 2 mostra uma ADIO para 5 símbolos, com frequências constantes. O problema de determinar um CDI ótimo, pode ser reformulado em termos das ADIO. Dados n símbolos com suas frequências respectivas, o problema é encontrar uma ADI que tenha Caminho Externo de Codificações Ponderado(CECP) mínimo (parcela do caminho externo ponderado de uma ADI somente considerando as folhas de codificação). Vamos definir um tipo especial de ADI. Chamamos de ADI Equilibrada uma ADI que, quando temos n > 3, a subárvore esquerda é uma ADI equilibrada contendo n/2 folhas de codificação e, a subárvore direita, uma ADII equilibrada com n/2 codificações. Para n de 1 a 3, ela contém folhas com codificação {0}, {0, 11} e {0, 11, 101}, respectivamente. Uma ADII Equilibrada é uma ADII para uma ADI equilibrada. A ADI da Figura 2 é uma ADI equilibrada para 5 codificações. Inicialmente trataremos o caso especial de ADIO para frequências constantes. ADIO para codificações com frequências constantes Um princípio básico para a determinação de ADIO com frequências iguais, n codificações, é que, neste caso, as subárvores também apresentam a propriedade de otimalidade, apenas existindo pequenas especificidades a considerar. Isto permite desenvolver um algoritmo de Programação Dinâmica eficiente para o problema, baseado na recorrência do Teorema 2, a seguir. 2465

5 Teorema 2: Seja S(n) o CEC de uma ADIO para n codificações. Então S(n) = = 1, para n = 1; =3, para n = 2; = n + Min{S(n-1), Min{(S(i)+S(n-i)}}, 1< i < (n-1), para n > 2 Prova: Os resultados para n = 1 e 2 são facilmente verificáveis, correspondendo aos códigos {0} e {0, 11}, respectivamente. Para n > 2, a minimização mais externa refere-se a dois casos: a) a subárvore esquerda tem 1 codificação. Neste caso, a subárvore direita tem CEC equivalente ao da ADIO para (n-1) codificações, pois esta subárvore tem que ser ótima. Temos: S(n) = 1 + (n-1) + S(n-1) = n + S(n-1) já que, à 2466

6 n S K min K max n S K min K max n S K min K max n S K min K max Tabela 3: Dados de ADIO para frequências constantes O primeiro fato que pode ser comprovado é o de que as ADI equilibradas são uma solução ótima para a situação de frequências iguais. Vamos inicialmente mostrar uma fórmula fechada para S(n) quando a ADI é equilibrada e depois evidenciar que esse resultado vale para qualquer tipo de ADIO. No próximo teorema e no restante do trabalho, log n sempre refere-se à base 2. Teorema 3: Numa ADI equilibrada para n codificações, sendo S(n) o CEC, temos: S(n) = n.( log n/3 + 3) log n/3, se n > 2. Prova: A prova será feita por indução em n. Para n = 3, 4 e 5, os resultados da aplicação da fórmula coincidem com os da Tabela 3. Temos que analisar os casos em que n > 5. Hipótese de indução: A fórmula está correta para valores 2 < j < n. Passo de indução: Aplicando a definição e a hipótese de indução, temos: S(n) = n + S( n/2 )+ S( n/2 ) = n + n/2 ( log n/2 /3 + 3) log n/2 /3 log n/2 /3 + n/2 ( log n/2 /3 + 3) A análise pode se dividir em 2 casos: a) n é da forma n = 3.2 q Neste caso: log n/3 = q; log n/2 /3 = q-1; log n/2 /3 = q-2; n/2 = 3.2 q-2 ; Então: S(n) = n + n/2 (q ) q n/2 (q ) q - 1 = = n + ( n/2 + n/2 )(q )-3.2 q q q - 1 = n.(q + 3) q = n.( log n/3 + 3) log n/3. Ou seja, o resultado também vale para n. b) n não é da forma n = 3.2 q Neste caso: log n/3 = q; log n/2 /3 = q-1; log n/2 /3 = q-1; Então: S(n) = n + n/2 (q ) q n/2 (q ) q - 1 = = n + ( n/2 + n/2 )(q ) q q - 1 = n.(q + 3) q log n/3 = n.( log n/3 + 3) Ou seja, o resultado também vale para n. Em todos os casos, o resultado continua valendo para n, o que completa a prova por indução. Os dois próximos teoremas caracterizam totalmente as ADIO, no caso de frequências constantes. Nas caracterizações supõe-se que o número de folhas de codificação da subárvore esquerda nunca seja superior ao de folhas de codificação da subárvore direita. Entretanto, sempre que esse número for superior a 1, a ADI simétrica também é uma árvore ótima. Teorema 4: ADI equilibradas são ADIO, para freqüências constantes. A prova deste teorema é feita por indução no número de codificações, usando-se a recorrência básica para uma ADIO e a fórmula para o CEC de uma ADI Equilibrada. Mostra-se que a função para o CEC da ADIO, no caso de freqüências constantes, e considerando-se que suas subárvores sejam ADI Equilibradas, é uma função não crescente para i no intervalo [3, n/2 ], onde i é o número de codificações da subárvore esquerda. Consequentemente, a função é 2467

7 mínima para n/2, o que implica ser a árvore uma ADIO, finalizando, assim, a indução. Consequentemente, a solução da recorrência do Teorema 2 é dada pela fórmula fechada para uma ADI equilibrada. Teorema 5: Em uma ADIO para n codificações, n > 3, freqüências constantes, o número de folhas de codificação da subárvore esquerda varia entre i min e n/2, onde i min = 3.2 log n/3-1, quando n 9.2 log n/3-1. = n log n/3, quando n > 9.2 log n/3-1. A prova deste teorema decorre da prova do teorema anterior, verificando-se a partir de quais valores a mesma função usada na prova permanece constante e igual ao valor para n/2, o que possibilita determinar as expressões acima. Podemos ilustrar esses resultados apresentando a Tabela 4, para uma faixa de valores de 1 a 30, que mostra as configurações ótimas de número de codificações nas subárvores esquerda/direita de uma ADIO, para cada n. Note-se que, nesta tabela, sempre se colocou o número de codificações na subárvore esquerda como não superior ao da direita. Para a maioria dos casos é possível, também, a configuração simétrica. n Configurações ótimas n Configurações ótimas n Configurações ótimas 1 1/0 11 5/6 21 9/12 10/11 2 1/1 12 6/ /12 11/11 3 1/2 13 6/ /12 4 1/3 2/2 14 6/8 7/ /12 5 2/3 15 6/9 7/ /13 6 3/3 16 6/10 7/9 8/ /14 13/13 7 3/4 17 6/11 7/10 8/ /15 13/14 8 3/5 4/4 18 6/12 7/11 8/10 9/ /16 13/15 14/14 9 3/6 4/5 19 7/12 8/11 9/ /17 13/16 14/ /6 5/5 20 8/12 9/11 10/ /18 13/17 14/16 15/15 Tabela 4: Configurações ótimas para ADIO com frequências constantes Pode-se verificar, na tabela acima, que, para os números da forma n = 3.2 q, 3.2 q +1, 3.2 q -1, q > 0 inteiro, há apenas uma configuração ótima. Isto também ocorre para n = 1, 2 e 3 codificações. A seguir vamos caracterizar as profundidades máxima e mínima de uma ADIO para frequências constantes, n codificações. É bastante intuitivo que as ADIO de profundidade mínima e máxima podem ser obtidas a partir da seguinte idéia: a) As ADIO de profundidade mínima são construídas, de forma recorrente, utilizando subárvores esquerdas com o número máximo de codificações não superior ao da direita, o que corresponde às ADI equilibradas. b) As ADIO de profundidade máxima são construídas, também de forma recorrente, utilizando subárvores esquerdas com o mínimo de codificações. Sendo D min (n) a profundidade mínima de uma ADIO para frequências constantes, n codificações e D max (n) a profundidade máxima, temos as seguintes recorrências: a) D min (n)= 1, se n=1 1+ D min ( n/2 ), se n > 1. b) D max (n)= 1, se n = 1 1+ D max (n-n min ), se n > 1, n min = número mínimo de codificações na subárvore esquerda. A Tabela 5 foi construída com as recorrências acima e os dados da Tabela 3, para os valores de 1 a

8 n D min D max n D min D max n D min D max n D min D max Tabela 5: Profundidades mínima e máxima para ADIO com frequências constantes A seguir serão apresentadas fórmulas fechadas para D min e D max. Teorema 6: D min (n) = n, se n = 1; log n + 1, se n > 2. Prova: A prova será feita por indução em n. Usando a recorrência, obtemos: D min (1) = 1, D min (2) = 2, D min (3) = 3, o que concorda com os dados anteriores. Hipótese de indução: Para valores i inferiores a n e superiores a 1, temos D min (i) = log i + 1. Passo de indução: Então D min (n) = 1 + D min ( n/2 ) = 1 + log n/2 + 1, pois a árvore de profundidade mínima também tem que ter como subárvore direita uma subárvore de profundidade mínima e o valor usado, n/2, é o menor valor possível. Analisemos 2 possibilidades: a) n é par, n = 2k, k > 1, inteiro. Então: D min (n) = + log n/2 + 2 = log k + 2 = log 2k + 1 = log n + 1. b) n é ímpar, n = 2k+1, k > 1, inteiro. Então: D min (n) = log (2k+1)/2 + 2 = log (2k + 2)/2 + 2 = log (k+1) + 2 = log 2(k+1) + 1 = = log 2k = log n + 1. Portanto, em qualquer caso, o resultado também vale para n, o que finaliza a indução. Uma primeira comparação entre esse resultado e aquele para a árvore de Huffman, cuja profundidade é dada por DH min = log n, mostra a diferença de 1 que parece confirmar a intuição da necessidade de termos 1 bit a mais no caso das ADIO, devido à obrigação de paridade. Vejamos agora a fórmula fechada para a profundidade máxima. Teorema 7: D max (n) = n, se n 2; log n/3 + 3, se n > 2. Prova: A prova será feita por indução em n. Usando a recorrência, obtemos D max (1) = 1, D max (2) = 2, D max (3) = 3, D max (4) = 4, D max (5) = 4, o que concorda com os dados anteriores. Hipótese de indução: Para valores i inferiores a n e superiores a 5, temos D max (i) = log n/ Passo de indução: Então D max (n) = 1 + D max (n - n min ) onde (n - n min ), caracterizado anteriormente, é o número máximo de codificações que pode existir na subárvore direita e, consequentemente, a profundidade resultante é a maior possível. Analisemos 3 possibilidades, de acordo com o Teorema 5. a) n da forma n = 3.2 q < 9.2 log n/3-1, q inteiro. 2469

9 Neste caso n min é dado por n min = 3.2 log n/3-1, n - n min = n min = 3.2 log n/3-1, e D max (n) = 1 + log (3.2 q - 1 )/3 + 3 = log 2 q = q + 3 = log n/ b) n da forma n = 3.2 q-1 + p 9.2 log n/3-1, 1 p 3.2 q-2, p e q inteiros. Neste caso n min é dado por n min = 3.2 log n/3-1 = 3.2 q-2 ; n - n min = 3.2 q-2 + p, e D max (n) = 1 + log (3.2 q p)/3 + 3 = log (2 q p/3) + 4 = q = q + 3, dada a forma de p. Como log n/3 = q D max (n) = log n/ c) n é da forma n = 3.2 q-1 + p > 9.2 log n/3-1, 3.2 q-2 < p < 3.2 q-1, p e q inteiros. Neste caso n min é dado por n min = n log n/3 e n - n min = 3.2 log n/3. D max (n) = 1 + log (3.2 log n/3 )/3 + 3 = log 2 log n/3 + 4 = log n/3 + 4 = log n/ , dada a forma de n. D max (n) = log n/ Em todos os casos, o resultado continua válido para n, o que finaliza a indução. Podemos comparar, mais profundamente, as ADIO com as árvores de Huffman, no caso de frequências constantes. Sabemos que as árvores de Huffman são árvores estritamente binárias e completas. Considerando o Caminho Externo de uma árvore desse tipo, com n folhas, como o Caminho Externo de Codificação, também temos uma fórmula fechada, dada log n por CEC = n. log n - 2 [5]. A Tabela 6 apresenta dados de comparação entre as ADIO e as árvores de Huffman. São mostrados os CECs de cada uma delas, bem como o tamanho médio das codificações, dado por (CEC/n) e a diferença entre esses tamanhos médios, que é um parâmetro que mostra o custo adicional ao colocarmos a deteção de erros ímpares na árvore de Huffman. n CEC ADIO (a) a/n CEC Huffman(b) b/n Diferença ,8 34 3,4 0, ,67 0, , , ,67 0, , , , ,72 0, ,67 0, , ,98 0, , ,98 0, , ,36 0,41 Tabela 6. CEC ADIO x Huffman para frequências constantes Observando a tabela, constatamos que a diferença fica abaixo de 1, que seria o valor intuitivo esperado, já comentado. Vemos que, para os dados mostrados, a diferença situa-se no intervalo [0,33, 0,5]. A seguir vamos mostrar que esse é, de fato, o intervalo onde se situa essa diferença. Teorema 8: A diferença entre os tamanhos médios de codificação entre uma ADIO e uma árvore de Huffman, frequências constantes, ambas com n codificações, n > 1, varia no intervalo [1/3, 1/2], sendo mínima para n da forma n = 3. 2 k, k inteiro e máxima para n da forma n = 2 k. Prova: Consideremos 4 casos: a) n da forma n = 2 k, k > 1. Neste caso, temos: log n = k e log n/3 = log 2 k /3 = log 2 k-2.4/3 = (k-2) + log 4/3 = k - 1. Então, a diferença entre as codificações médias é: d = (n( log n/3 + 3) log n /3 - (n. log n - 2 log n ))/n = (2 k (k-1+3) k-1 - (2 k (k+1) - 2 k ))/2 k = (2 k.k +4.2 k k-1-2 k.k - 2 k + 2 k ))/2 k = 2 k-1 /2 k = 1/2. Este resultado também vale para n = 2. b) n da forma $n = 3.2 k, k

10 Neste caso, temos: log n = k + log 3 = k + 2 e log n/3 = log 3.2 k /3 = k. Então, a diferença entre as codificações médias é: d = (n( log n/3 + 3)-3.2 log n /3 -(n. log n - 2 log n ))/n = (3.2 k (k+3) k - (3.2 k (k+2+1) - 2 k+2 ))/3.2 k = (3.2 k.k +9.2 k k k.k k + 2 k+2 ))/3.2 k = (-3.2 k k )/3.2 k = 1/3. c) n da forma n = 2 k + p, 1 p < 2 k. Neste caso, temos: log n = k + 1, e log n/3 podendo ser = (k - 1) ou k, segundo a). c.1) Se log n/3 = (k - 1), temos: d = (n( log n/3 + 3) log n /3 - (n. log n - 2 log n ))/n = (n(k-1+3) k-1 - (n(k+1+1) - 2 k+1 ))/n = (n.k + 2n -3.2 k-1 - n.k - 2n + 2 k+1 ))/n = (-3.2 k k-1 )/n = 2 k-1 /(2 k + p) d < 1/2, pois p 1. c.2) Se log n/3 = k, temos: d = (n( log n/3 + 3) log n /3 - (n. log n - 2 log n ))/n = (n(k+3) k - (n(k+1+1) - 2 k+1 ))/n = (n.k + 3n -3.2 k - n.k - 2n + 2 k+1 ))/n = (n -3.2 k k )/n = (2 k +p - 2 k )/(2 k + p) = p/(2 k + p) d < 1/2, pois p < 2 k. Então, o valor máximo da diferença, para qualquer n > 1, é 1/2. d) n da forma n = 3. 2 k + p, 1 p < 3. 2 k. Neste caso, temos: log n pode ser (k+2) ou (k + 3), segundo b) e log n/3 = (k + 1). d.1) Se log n = (k+2), temos: d = (n( log n/3 + 3) log n /3 - (n. log n - 2 log n ))/n = (n(k+1+3) k+1 - (n(k+2+1) - 2 k+2 ))/n = (n.k + 4n -3.2 k+1 - n.k - 3n + 2 k+2 ))/n = (n -3.2 k k+1 )/n = (3.2 k +p-2 k+1 )/(3.2 k +p) = (2 k +p)/(3.2 k + p) = ((2 k +p/3)+ 2p/3)/(3.(2 k + p/3)) d > 1/3, pois p 1. d.2) Se log n = (k+3), temos: d = (n( log n/3 + 3) log n /3 - (n. log n - 2 log n ))/n = (n(k+1+3) k+1 - (n(k+3+1) - 2 k+3 ))/n = (n.k + 4n -3.2 k+1 - n.k - 4n + 2 k+3 ))/n = (-3.2 k k+1 )/n = 2 k+1 /(3.2 k +p) = (2.2 k )/(3.2 k + p) d > 1/3, pois p < 3.2 k. Então, a diferença mínima, para qualquer valor de n > 1, é 1/3. O Teorema 8 mostra que, no caso de frequências constantes, temos um resultado melhor do que a intuição sugere, pois a diferença no tamanho médio das codificações das duas árvores é limitada a 1/2, que se torna uma diferença desprezível para valores grandes de n. É, então, baixo o preço que se paga pelo acréscimo da funcionalidade de deteção de erros em número ímpar. Os resultados limites (1/3 e 1/2) podem ser explicados da seguinte forma, considerando ADI equilibradas: a) No caso de números de codificação da forma n = 2 k, a árvore de Huffman é uma árvore cheia, com todas as folhas tendo mesma profundidade log n. Já as ADIO, são constituídas por 2 k-1 subárvores equivalentes à ADIO para 2 codificações e, então, temos metade das folhas de codificação com a profundidade log n e metade com profundidade ( log n + 1), o que leva à diferença de 1/2. b) No caso de números de codificação da forma n = 3.2 k, a árvore de Huffman é uma árvore completa, com 2.2 k folhas com profundidade log n e 2 k com profundidade ( log n -1). Já as ADIO, são constituídas por 2 k subárvores equivalentes à ADIO para 3 codificações e, então, temos 2 k folhas de codificação com profundidade ( log n +1), 2 k com profundidade ( log n - 1), o que gera a diferença de 1/3. Para os demais valores de n, as árvores respectivas têm configurações intermediárias a essas configurações limite. 2471

11 ADIO para frequências quaisquer Embora não vá aquí ser discutido em detalhes o problema de determinar a ADIO para n codificações, frequências quaisquer, tal como foi feito para o caso de frequências constantes, vamos esboçar um limite superior para um algoritmo para esse problema. Esse limite pode ser obtido a partir de um lema, facilmente demonstrável: Lema 7: Dadas duas folhas de codificação de uma ADIO, c i e c j, com frequências de acesso respectivas f i e f j, e profundidades d i e d j, então se (f i f j ) (d i d j ). Esse princípio também é básico para as árvores de Huffman. Dele deriva um algoritmo de Programação Dinâmica, baseado em se procurar o melhor posicionamento da codificação de maior frequência, sabendo-se que, nesta configuração, a floresta induzida a partir do nível em que se encontra a referida chave, também é ótima, para as (n-1) codificações restantes. Muitos algoritmos desse tipo têm complexidade O(n 3 ), mas o desafio aquí é conseguir um algoritmo guloso. Bibliografia [1] R. Baeza e Y. Netto. Modern Information Retrieval. Addison Wesley, [2] M. J. Golin, C. Kenyon e N. E. Young. Huffman Coding with Unequal Letter Costs. Proceedings of the 34th Annual ACM Symposium of Theory of Computing, [3] R. W. Hamming. Coding and Information Theory. Prentice Hall, [4] D. A. Huffman. A Method for the Construction of Minimum Redundancy Codes. Proceedings of the IRE 40, (1951) [5] D. E. Knuth. The Art of Computer Programming Vol I. Addison Wesley, 2nd edition, [6] J. L. Szwarcfiter e L. Markenzon. Estruturas de Dados e Seus Algoritmos. LTC Editora,

Árvore Binária de Busca Ótima

Árvore Binária de Busca Ótima MAC 5710 - Estruturas de Dados - 2008 Referência bibliográfica Os slides sobre este assunto são parcialmente baseados nas seções sobre árvore binária de busca ótima do capítulo 4 do livro N. Wirth. Algorithms

Leia mais

Compactação de Dados. Fonte de consulta: Szwarcfiter, J.; Markezon, L. Estruturas de Dados e seus Algoritmos, 3a. ed. LTC. Seção 12.5 em diante.

Compactação de Dados. Fonte de consulta: Szwarcfiter, J.; Markezon, L. Estruturas de Dados e seus Algoritmos, 3a. ed. LTC. Seção 12.5 em diante. Compactação de Dados Fonte de consulta: Szwarcfiter, J.; Markezon, L. Estruturas de Dados e seus Algoritmos, 3a. ed. LTC. Seção 12.5 em diante. Compactação de Dados } Armazenar arquivos grandes (backup)

Leia mais

Método Guloso. Troco mínimo. Paulo Eustáquio Duarte Pinto (pauloedp arroba ime.uerj.br) junho/2012. Troco mínimo. Troco mínimo

Método Guloso. Troco mínimo. Paulo Eustáquio Duarte Pinto (pauloedp arroba ime.uerj.br) junho/2012. Troco mínimo. Troco mínimo Notas de aula da disciplina IME - ALGORITMOS E ESTRUTURAS DE DADOS II Paulo Eustáquio Duarte Pinto (pauloedp arroba ime.uerj.br) Troco mínimo Dados os tipos de moedas de um país, determinar o número mínimo

Leia mais

Compactação de Dados Letícia Rodrigues Bueno

Compactação de Dados Letícia Rodrigues Bueno Compactação de Dados Letícia Rodrigues Bueno UFABC Compactação de Dados: Introdução Objetivo: Compactação de Dados: Introdução Compactação de Dados: Introdução Objetivo: 1. minimizar espaço de memória

Leia mais

Compressão Sem Perdas: Codificações Huffman e Aritmética. Adelar da Silva Queiróz Marcelo Teixeira Thiago da Silva Sodré

Compressão Sem Perdas: Codificações Huffman e Aritmética. Adelar da Silva Queiróz Marcelo Teixeira Thiago da Silva Sodré Compressão Sem Perdas: Codificações Huffman e Aritmética Adelar da Silva Queiróz Marcelo Teixeira Thiago da Silva Sodré Compressão Sem Perdas (Lossless Data Compression) Refere-se a métodos de compressão

Leia mais

2 Teoria da Informação

2 Teoria da Informação 2 Teoria da Informação Neste capítulo apresentamos alguns conceitos básicos sobre Teoria da Informação que utilizaremos durante este trabalho. 2.1 Alfabeto, texto, letras e caracteres Um alfabeto Σ = (σ

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 Árvore digital Árvore digital binária

Leia mais

Árvores. Thiago Martins, Fabio Gagliardi Cozman. PMR2300 / PMR3201 Escola Politécnica da Universidade de São Paulo

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

Leia mais

Algoritmos em Strings (compressão de texto)

Algoritmos em Strings (compressão de texto) Algoritmos em Strings (compressão de texto) R. Rossetti, A.P. Rocha, A. Pereira, P.B. Silva, T. Fernandes FEUP, MIEIC, CAL, 2010/2011 1 Teoria da Informação O que é? É uma ferramenta matemática para determinar

Leia mais

EXPRESSÕES RELACIONAIS

EXPRESSÕES RELACIONAIS AULA 7 EXPRESSÕES RELACIONAIS 7.1 Operadores relacionais Uma expressão relacional, ou simplesmente relação, é uma comparação entre dois valores de um mesmo tipo. Esses valores são representados na relação

Leia mais

Códigos de bloco. Luis Henrique Assumpção Lolis. 1 de novembro de Luis Henrique Assumpção Lolis Códigos de bloco 1

Códigos de bloco. Luis Henrique Assumpção Lolis. 1 de novembro de Luis Henrique Assumpção Lolis Códigos de bloco 1 Códigos de bloco Luis Henrique Assumpção Lolis 1 de novembro de 2013 Luis Henrique Assumpção Lolis Códigos de bloco 1 Conteúdo 1 Códigos de bloco lineares 2 Códigos sistemáticos 3 Síndrome 4 Distância

Leia mais

Códigos Corretores de Erros e Cliques de Grafos

Códigos Corretores de Erros e Cliques de Grafos Códigos Corretores de Erros e Cliques de Grafos Natália Pedroza Jayme Szwarcfiter Paulo Eustáquio UFRJ/UERJ 2016 Natália Pedroza (UFRJ/UERJ) Códigos Corretores 2016 1 / 32 Apresentação Códigos corretores

Leia mais

Entropia, Entropia Relativa

Entropia, Entropia Relativa Entropia, Entropia Relativa e Informação Mútua Miguel Barão (mjsb@di.uevora.pt) Departamento de Informática Universidade de Évora 13 de Março de 2003 1 Introdução Suponhamos que uma fonte gera símbolos

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

Árvores Binárias. Disciplina de Algoritmos e Estrutura de Dados III. Prof. Marcos Antonio Schreiner 17/03/2015

Árvores Binárias. Disciplina de Algoritmos e Estrutura de Dados III. Prof. Marcos Antonio Schreiner 17/03/2015 Árvores Binárias Disciplina de Algoritmos e Estrutura de Dados III Prof. Marcos Antonio Schreiner 17/03/2015 1 Introdução Árvore binárias são estruturas importantes toda vez que uma decisão binária deve

Leia mais

Canais discretos sem memória e capacidade do canal

Canais discretos sem memória e capacidade do canal Canais discretos sem memória e capacidade do canal Luis Henrique Assumpção Lolis 17 de outubro de 2013 Luis Henrique Assumpção Lolis Canais discretos sem memória e capacidade do canal 1 Conteúdo 1 Canais

Leia mais

TEORIA: 60 LABORATÓRIO: 0

TEORIA: 60 LABORATÓRIO: 0 Universidade Federal do ABC Rua Santa Adélia, 166 - Bairro Bangu - Santo André - SP - Brasil CEP 09.210-170 - Telefone/Fax: +55 11 4996-3166 1. CÓDIGO E NOME DA DISCIPLINA: BC1435 - Análise de Algoritmos

Leia mais

Complexidade de Algoritmos

Complexidade de Algoritmos Complexidade de Algoritmos Prof. Diego Buchinger diego.buchinger@outlook.com diego.buchinger@udesc.br Prof. Cristiano Damiani Vasconcellos cristiano.vasconcellos@udesc.br Um pouco de Teoria dos Números

Leia mais

UFSM-CTISM. Comunicação de Dados Aula-17

UFSM-CTISM. Comunicação de Dados Aula-17 UFSM-CTISM Comunicação de Dados Aula-17 Professor: Andrei Piccinini Legg Santa Maria, 2012 Definição: Um código de Hamming adiciona um bloco de paridade a um bloco de dados, de forma a que, caso ocorram

Leia mais

Problema de escalonamento

Problema de escalonamento Problema de escalonamento Considere n tarefas indicadas pelos números 1,...,n Algoritmos p. 1 Problema de escalonamento Considere n tarefas indicadas pelos números 1,...,n t i : duração da tarefa i d i

Leia mais

Compressão de Textos. Introdução. Introdução. Introdução. O volume de informação textual disponível on-line é imenso:

Compressão de Textos. Introdução. Introdução. Introdução. O volume de informação textual disponível on-line é imenso: Compressão de Textos Estrutura de Dados II Prof. Guilherme Tavares de Assis Universidade Federal de Ouro Preto UFOP Instituto de Ciências Exatas e Biológicas ICEB Departamento de Computação DECOM O volume

Leia mais

PCC104 - Projeto e Análise de Algoritmos

PCC104 - Projeto e Análise de Algoritmos PCC104 - Projeto e Análise de Algoritmos Marco Antonio M. Carvalho Departamento de Computação Instituto de Ciências Exatas e Biológicas Universidade Federal de Ouro Preto 7 de outubro de 2016 Marco Antonio

Leia mais

Tarefa 06 Todos Subconjuntos

Tarefa 06 Todos Subconjuntos Tarefa 06 Todos Subconjuntos Disciplina: Estatística Básica para Bioinformática Discentes: Diego M Salvanha, Madeleine Ernst Enunciado da tarefa: Dado que o número de subconjuntos que podem ser feitos

Leia mais

Teoria da Informação

Teoria da Informação Charles Casimiro Cavalcante charles@gtel.ufc.br Grupo de Pesquisa em Telecomunicações Sem Fio GTEL Programa de Pós-Graduação em Engenharia de Teleinformática Universidade Federal do Ceará UFC http://www.gtel.ufc.br/

Leia mais

Capítulo 2: Procedimentos e algoritmos

Capítulo 2: Procedimentos e algoritmos Capítulo 2: Procedimentos e algoritmos Para estudar o processo de computação de um ponto de vista teórico, com a finalidade de caracterizar o que é ou não é computável, é necessário introduzir um modelo

Leia mais

Árvores B Parte III. Propriedades, Remoção & Inserção Revisitada. Adaptado e Estendido dos Originais de:

Árvores B Parte III. Propriedades, Remoção & Inserção Revisitada. Adaptado e Estendido dos Originais de: Estruturas de Dados Prof. Ricardo J. G. B. Campello Árvores B Parte III Propriedades, Remoção & Inserção Revisitada Adaptado e Estendido dos Originais de: Leandro C. Cintra Maria Cristina F. de Oliveira

Leia mais

Árvores Vermelho-Preto

Árvores Vermelho-Preto Árvores Vermelho-Preto SCC0202 - Algoritmos e Estruturas de Dados I Prof. Fernando V. Paulovich http://www.icmc.usp.br/~paulovic paulovic@icmc.usp.br Instituto de Ciências Matemáticas e de Computação (ICMC)

Leia mais

Códigos de bloco. Instituto Federal de Santa Catarina Curso superior de tecnologia em sistemas de telecomunicação Comunicações móveis 2

Códigos de bloco. Instituto Federal de Santa Catarina Curso superior de tecnologia em sistemas de telecomunicação Comunicações móveis 2 Instituto Federal de Santa Catarina Curso superior de tecnologia em sistemas de telecomunicação Comunicações móveis 2 Códigos de bloco Prof. Diego da Silva de Medeiros São José, maio de 2012 Codificação

Leia mais

Curvas Planas em Coordenadas Polares

Curvas Planas em Coordenadas Polares Curvas Planas em Coordenadas Polares Sumário. Coordenadas Polares.................... Relações entre coordenadas polares e coordenadas cartesianas...................... 6. Exercícios........................

Leia mais

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

Leia mais

ÁRVORES E ÁRVORE BINÁRIA DE BUSCA

ÁRVORES E ÁRVORE BINÁRIA DE BUSCA ÁRVORES E ÁRVORE BINÁRIA DE BUSCA Prof. André Backes Definição 2 Diversas aplicações necessitam que se represente um conjunto de objetos e as suas relações hierárquicas Uma árvore é uma abstração matemática

Leia mais

Aplicações de árvores/ Exercícios. 30/11 e 2/12 QuadTrees para representação de imagens e Algoritmo de Huffman para transmissão/compressão de dados

Aplicações de árvores/ Exercícios. 30/11 e 2/12 QuadTrees para representação de imagens e Algoritmo de Huffman para transmissão/compressão de dados Aplicações de árvores/ Exercícios 30/11 e 2/12 QuadTrees para representação de imagens e Algoritmo de Huffman para transmissão/compressão de dados Representação de Imagens Definição mais intuitiva para

Leia mais

INF1010 Lista de Exercícios 2

INF1010 Lista de Exercícios 2 INF00 Lista de Exercícios 2 Árvores. Construir algoritmo para dada uma árvore n-ária, transformá-la em uma árvore binária. 2. Qual a maior e menor quantidade de nós que podem existir em uma árvore binária

Leia mais

Hashing: conceitos. Hashing

Hashing: conceitos. Hashing Hashing: conceitos hashing é uma técnica conhecida como espalhamento, mapeamento ou randomização que tenta distribuir dados em posições aleatórias de uma tabela (array) associa cada objeto (de um determinado

Leia mais

INSTITUTO SUPERIOR TÉCNICO Análise e Síntese de Algoritmos. RESOLUÇÃO DO 2 o TESTE

INSTITUTO SUPERIOR TÉCNICO Análise e Síntese de Algoritmos. RESOLUÇÃO DO 2 o TESTE INSTITUTO SUPERIOR TÉCNICO Análise e Síntese de Algoritmos Ano Lectivo de 2006/2007 2 o Semestre RESOLUÇÃO DO 2 o TESTE I. (2,0+2,0+2,0 = 6,0 val.) 1) Calcule o valor óptimo da função objectivo e o respectivo

Leia mais

Aula 10: Tratabilidade

Aula 10: Tratabilidade Teoria da Computação DAINF-UTFPR Aula 10: Tratabilidade Prof. Ricardo Dutra da Silva Na aula anterior discutimos problemas que podem e que não podem ser computados. Nesta aula vamos considerar apenas problemas

Leia mais

INTRODUÇÃO À TEORIA DA INFORMAÇÃO

INTRODUÇÃO À TEORIA DA INFORMAÇÃO INTRODUÇÃO À TEORIA DA INFORMAÇÃO SISTEMA DE TRANSMISSÃO DIGITAL Oscodificadores defonte possuem a finalidade de casar a fonte de dados com o sistema levando em consideração a estatística de acontecimento

Leia mais

TRANSMISSÃO DE DADOS PROTEGIDOS POR CÓDIGOS CORRETORES DE ERRO

TRANSMISSÃO DE DADOS PROTEGIDOS POR CÓDIGOS CORRETORES DE ERRO TRANSMISSÃO DE DADOS PROTEGIDOS POR CÓDIGOS CORRETORES DE ERRO Aluno: Débora Almeida Oliveira Orientador: Weiler Alves Finamore 1.Introdução Este trabalho tem como objetivo demonstrar a utilização de códigos

Leia mais

1 bases numéricas. capítulo

1 bases numéricas. capítulo capítulo 1 bases numéricas Os números são representados no sistema decimal, mas os computadores utilizam o sistema binário. Embora empreguem símbolos distintos, os dois sistemas formam números a partir

Leia mais

Tópicos de Matemática Elementar

Tópicos de Matemática Elementar Tópicos de Matemática Elementar 2 a série de exercícios 2004/05. A seguinte prova por indução parece correcta, mas para n = 6 o lado esquerdo é igual a 2 + 6 + 2 + 20 + 30 = 5 6, enquanto o direito é igual

Leia mais

Teoria da Informação

Teoria da Informação Charles Casimiro Cavalcante charles@gtel.ufc.br Grupo de Pesquisa em Telecomunicações Sem Fio GTEL Programa de Pós-Graduação em Engenharia de Teleinformática Universidade Federal do Ceará UFC http://www.gtel.ufc.br/

Leia mais

Informações Importantes! INF TURMA A

Informações Importantes! INF TURMA A UNIVERSIDADE FEDERAL DO RIO GRANDE DO SUL INSTITUTO DE INFORMÁTICA DEPARTAMENTO DE INFORMÁTICA APLICADA DISCIPLINA: ESTRUTURAS DE DADOS CÓDIGO: INF01203 CURSOS/PRE-REQUISITO: o Engenharia da Computação

Leia mais

Grafo planar: Definição

Grafo planar: Definição Grafo planar Considere o problema de conectar três casas a cada uma de três infraestruturas (gás, água, energia) como mostrado na figura abaixo. É possível fazer essas ligações sem que elas se cruzem?

Leia mais

Definição. Árvores B Parte III. Propriedades Gerais. Propriedade (No. Mín. de Chaves) Leandro C. Cintra Maria Cristina F.

Definição. Árvores B Parte III. Propriedades Gerais. Propriedade (No. Mín. de Chaves) Leandro C. Cintra Maria Cristina F. Algoritmos e Estruturas de Dados II Prof. Ricardo J. G. B. Campello Árvores B Parte III Eliminação, Redistribuição & Concatenação Adaptado e Estendido dos Originais de: Leandro C. Cintra Maria Cristina

Leia mais

Pesquisa Linear. Adriano J. Holanda 15/3/2016

Pesquisa Linear. Adriano J. Holanda 15/3/2016 Pesquisa Linear Adriano J. Holanda 15/3/2016 Busca Linear em memória principal Introdução O dados estarão sempre armazenados na memória principal (DRAM 1 ): não há necessidade de acesso à memória secundária

Leia mais

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

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

Leia mais

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

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

Leia mais

Estudo e implementação de heurísticas para determinação do caminho de menor custo para atender a rotas pré estabelecidas. Por: Charles Pereira

Estudo e implementação de heurísticas para determinação do caminho de menor custo para atender a rotas pré estabelecidas. Por: Charles Pereira Estudo e implementação de heurísticas para determinação do caminho de menor custo para atender a rotas pré estabelecidas Por: Charles Pereira Objetivos Principal: - Criar, implementar e avaliar heurísticas

Leia mais

Textos de apoio às aulas práticas. Jaime Ramos, Francisco Miguel Dionísio

Textos de apoio às aulas práticas. Jaime Ramos, Francisco Miguel Dionísio Computação e Programação Textos de apoio às aulas práticas Jaime Ramos, Francisco Miguel Dionísio DMIST, Dezembro de 2010 Parte I MATLAB 1 Capítulo 1 Exercícios preliminares 1. Defina a função conta divisores

Leia mais

Algoritmos de Compressão sem Perdas

Algoritmos de Compressão sem Perdas Algoritmos de Compressão sem Perdas (continuação) Aula 08 Diogo Pinheiro Fernandes Pedrosa Universidade Federal Rural do Semiárido Departamento de Ciências Exatas e Naturais Curso de Ciência da Computação

Leia mais

Princípios Básicos de Teoria da Informação

Princípios Básicos de Teoria da Informação Princípios Básicos de Teoria da Informação Teorema da Codificação de Fonte Teorema Fundamental de Shannon Até que limite é possível comprimir um conjunto de dados? Qual a maior taxa de transmissão de informação

Leia mais

Aula 3 Propriedades de limites. Limites laterais.

Aula 3 Propriedades de limites. Limites laterais. Propriedades de ites. Limites laterais. MÓDULO - AULA 3 Aula 3 Propriedades de ites. Limites laterais. Objetivos Estudar propriedades elementares de ites, tais como: soma, produto, quociente e confronto.

Leia mais

Definição. Diremos que um número inteiro d é um divisor de outro inteiro a, se a é múltiplo de d; ou seja, se a = d c, para algum inteiro c.

Definição. Diremos que um número inteiro d é um divisor de outro inteiro a, se a é múltiplo de d; ou seja, se a = d c, para algum inteiro c. Divisores Definição. Diremos que um número inteiro d é um divisor de outro inteiro a, se a é múltiplo de d; ou seja, se a = d c, para algum inteiro c. Quando a é múltiplo de d dizemos também que a é divisível

Leia mais

Triangulação de Delauney

Triangulação de Delauney Triangulação de Delauney Um pedaço da superfície terrestre é chamado de terreno. Um terreno é uma superfície 2-dimensional em um espaço 3-dimensional com uma propriedade especial: cada linha vertical intercepta

Leia mais

COM29008 LISTA DE EXERCÍCIOS #

COM29008 LISTA DE EXERCÍCIOS # INSTITUTO FEDERAL DE SANTA CATARINA CAMPUS SÃO JOSÉ COORDENADORIA DE ÁREA DE TELECOMUNICAÇÕES ENGENHARIA DE TELECOMUNICAÇÕES COM29008 LISTA DE EXERCÍCIOS #1 2016.2 Exercícios 1. Verifique se os seguintes

Leia mais

BCC242. Auômato Finito Determinístico

BCC242. Auômato Finito Determinístico BCC242 Auômato Finito Determinístico Máquinas de Estados Finitos As máquinas de estados finitos são máquinas abstratas que capturam partes essenciais de algumas máquinas concretas. Tipos Tradutores máquinas

Leia mais

Compressão de Dados. Prof. Flávio Humberto Cabral Nunes

Compressão de Dados. Prof. Flávio Humberto Cabral Nunes Compressão de Dados Prof. Flávio Humberto Cabral Nunes Conteúdo 1. Introdução 2. Compressão Unária 3. Compressão Elias-Gama 4. Run Length Encoding 5. Huffman 6. LZ77, LZ78 e LZW Capítulo: 12 (POSTIL).

Leia mais

Redes de Telecomunicações (11382)

Redes de Telecomunicações (11382) Redes de Telecomunicações (11382) Ano Lectivo 2014/2015 * 1º Semestre Pós Graduação em Information and Communication Technologies for Cloud and Datacenter Aula 2 07/10/2014 1 Agenda A camada física ou

Leia mais

O limite de uma função

O limite de uma função Universidade de Brasília Departamento de Matemática Cálculo 1 O ite de uma função Se s(t) denota a posição de um carro no instante t > 0, então a velocidade instantânea v(t) pode ser obtida calculando-se

Leia mais

Árvores (ordenadas) Departamento de Ciência de Computadores da FCUP MC Aula 11 1

Árvores (ordenadas) Departamento de Ciência de Computadores da FCUP MC Aula 11 1 Árvores (ordenadas) Recordemos que, uma árvore é grafo (não dirigido) em que o número de vértices excede em 1 o número de arcos. Um vértice é acessível a todos os outros: a raiz. Os vértices que são acessíveis

Leia mais

5 Testes em Imagens. Figura 5.1: Esquema de proteção com detecção de erros LT Hamming. Imagem. Cod-Hamming SPIHT. Cod-LT. Canal.

5 Testes em Imagens. Figura 5.1: Esquema de proteção com detecção de erros LT Hamming. Imagem. Cod-Hamming SPIHT. Cod-LT. Canal. 5 Testes em Imagens Uma vez feito o estudo do desempenho do código LT quando é usado em um canal ruidoso, nosso objetivo agora, centra-se na análise de seu possível uso em um esquema para a transmissão

Leia mais

Teoria de Linguagens 2 o semestre de 2015 Professor: Newton José Vieira Primeira Lista de Exercícios Entrega: até 16:40h de 15/9.

Teoria de Linguagens 2 o semestre de 2015 Professor: Newton José Vieira Primeira Lista de Exercícios Entrega: até 16:40h de 15/9. Pós-Graduação em Ciência da Computação DCC/ICEx/UFMG Teoria de Linguagens 2 o semestre de 2015 Professor: Newton José Vieira Primeira Lista de Exercícios Entrega: até 16:40h de 15/9. Observações: Pontos

Leia mais

Cada questão da parte A vale 4 pontos e cada questão da parte B vale 10 pontos (total de pontos do nível III-fase de seleção = 60 pontos).

Cada questão da parte A vale 4 pontos e cada questão da parte B vale 10 pontos (total de pontos do nível III-fase de seleção = 60 pontos). III OLIMPÍADA REGIONAL DE MATEMÁTICA Nível III Ensino Médio DE RIEIRÃO PRETO FASE DE SELEÇÃO - 7 de setembro de 008 Cada questão da parte A vale 4 pontos e cada questão da parte vale 10 pontos (total de

Leia mais

Efeitos da filtragem sobre sinais de onda quadrada

Efeitos da filtragem sobre sinais de onda quadrada Efeitos da filtragem sobre sinais de onda quadrada Autores: Pedro Rodrigues e André F. Kohn Introdução O texto a seguir ilustra efeitos que diferentes sistemas lineares invariantes no tempo (SLIT) podem

Leia mais

Aula Distância entre duas retas paralelas no espaço. Definição 1. Exemplo 1

Aula Distância entre duas retas paralelas no espaço. Definição 1. Exemplo 1 Aula 1 Sejam r 1 = P 1 + t v 1 t R} e r 2 = P 2 + t v 2 t R} duas retas no espaço. Se r 1 r 2, sabemos que r 1 e r 2 são concorrentes (isto é r 1 r 2 ) ou não se intersectam. Quando a segunda possibilidade

Leia mais

3. Conteúdo de um vértice v é conteúdo dos filhos de v.

3. Conteúdo de um vértice v é conteúdo dos filhos de v. Árvore Hierárquica Em inglês é chamada de Heap. Representar: conjunto C de elementos com relação. Operações: Ins x,c (inserir x em C e ExMax C (extrair o máximo do conjunto). Chamado também de Fila de

Leia mais

Cálculo Numérico Noções básicas sobre erros

Cálculo Numérico Noções básicas sobre erros Cálculo Numérico Noções básicas sobre erros Profa. Vanessa Rolnik 1º semestre 2015 Fases da resolução de problemas através de métodos numéricos Problema real Levantamento de Dados Construção do modelo

Leia mais

OPERADORES LINEARES ESPECIAIS: CARACTERIZAÇÃO EM ESPAÇOS DE DIMENSÃO DOIS*

OPERADORES LINEARES ESPECIAIS: CARACTERIZAÇÃO EM ESPAÇOS DE DIMENSÃO DOIS* OPERADORES LINEARES ESPECIAIS: CARACTERIZAÇÃO EM ESPAÇOS DE DIMENSÃO DOIS* FABIANA BARBOSA DA SILVA, ALINE MOTA DE MESQUITA ASSIS, JOSÉ EDER SALVADOR DE VASCONCELOS Resumo: o objetivo deste artigo é apresentar

Leia mais

1 O esquema de Alamouti: Diversidade na transmissão

1 O esquema de Alamouti: Diversidade na transmissão 1 O esquema de Alamouti: Diversidade na transmissão 1.1 O Caso de uma antena receptora A Figura?? mostra a representação em banda básica do esquema de Alamouti com diversidade na transmissão. O esquema

Leia mais

BCC402 Algoritmos e Programação Avançada Prof. Marco Antonio M. Carvalho Prof. Túlio Ângelo M. Toffolo 2011/1

BCC402 Algoritmos e Programação Avançada Prof. Marco Antonio M. Carvalho Prof. Túlio Ângelo M. Toffolo 2011/1 BCC402 Algoritmos e Programação Avançada Prof. Marco Antonio M. Carvalho Prof. Túlio Ângelo M. Toffolo 2011/1 Na aula anterior Prova 2 Na aula de hoje Técnicas básicas de contagem; Tentativa e Erro; Recursividade.

Leia mais

Capítulo 3. A camada de enlace de dados

Capítulo 3. A camada de enlace de dados slide 1 Capítulo 3 A camada de enlace de dados slide 2 Onde vive o protocolo de camada de enlace? slide 3 Questões de projeto da camada de enlace Serviços de rede da camada de enlace Quadros Controle de

Leia mais

CÁLCULO I. 1 Concavidade. Objetivos da Aula. Aula n o 19: Concavidade. Teste da Segunda Derivada. Denir concavidade de uma função;

CÁLCULO I. 1 Concavidade. Objetivos da Aula. Aula n o 19: Concavidade. Teste da Segunda Derivada. Denir concavidade de uma função; CÁLCULO I Prof. Marcos Diniz Prof. Edilson Neri Júnior Prof. André Almeida Aula n o 19: Concavidade. Teste da Segunda Derivada. Objetivos da Aula Denir concavidade de uma função; Denir ponto de inexão;

Leia mais

SUMÁRIO. Fundamentos Árvores Binárias Árvores Binárias de Busca

SUMÁRIO. Fundamentos Árvores Binárias Árvores Binárias de Busca ÁRVORES SUMÁRIO Fundamentos Árvores Binárias Árvores Binárias de Busca 2 ÁRVORES Utilizadas em muitas aplicações Modelam uma hierarquia entre elementos árvore genealógica Diagrama hierárquico de uma organização

Leia mais

4 Casamento de Padrões

4 Casamento de Padrões 4 Casamento de Padrões O casamento de padrões é uma técnica que tem por objetivo localizar os elementos constituintes de uma seqüência em um conjunto de outras seqüências. Chamemos de padrão a seqüência

Leia mais

Acesso Sequencial Indexado

Acesso Sequencial Indexado Acesso Sequencial Indexado Utiliza o princípio da pesquisa seqüencial cada registro é lido seqüencialmente até encontrar uma chave maior ou igual a chave de pesquisa. Providências necessárias para aumentar

Leia mais

Análise de algoritmos

Análise de algoritmos Análise de algoritmos Recorrências Conteúdo Introdução O método mestre Referências Introdução O tempo de execução de um algoritmo recursivo pode frequentemente ser descrito por uma equação de recorrência.

Leia mais

Cálculo Diferencial e Integral I

Cálculo Diferencial e Integral I Cálculo Diferencial e Integral I Texto de apoio às aulas. Amélia Bastos, António Bravo Dezembro 2010 Capítulo 1 Números reais As propriedades do conjunto dos números reais têm por base um conjunto restrito

Leia mais

Acrescenta um bit 1 ou um bit 0 às mensagem para que o número total de bits 1 seja par

Acrescenta um bit 1 ou um bit 0 às mensagem para que o número total de bits 1 seja par Detecçã ção o de Erros Paridade Verificação de Paridade Esse tipo de detecção consiste em acrescentar um bit (de paridade) a cada conjunto de bits da mensagem (caractere) de modo a ter as seguintes características:

Leia mais

AULA A 6 ESTRUTURA DE DADOS. Compressão de dados

AULA A 6 ESTRUTURA DE DADOS. Compressão de dados AULA A 6 ESTRUTURA DE DADOS Compressão de dados Esperamos que, ao final desta aula, você seja capaz de: compreender a importância da compressão de dados; conhecer algoritmos de compressão de dados (freqüência

Leia mais

Equação algébrica Equação polinomial ou algébrica é toda equação na forma anxn + an 1 xn 1 + an 2 xn a 2 x 2 + a 1 x + a 0, sendo x

Equação algébrica Equação polinomial ou algébrica é toda equação na forma anxn + an 1 xn 1 + an 2 xn a 2 x 2 + a 1 x + a 0, sendo x EQUAÇÃO POLINOMIAL Equação algébrica Equação polinomial ou algébrica é toda equação na forma a n x n + a n 1 x n 1 + a n 2 x n 2 +... + a 2 x 2 + a 1 x + a 0, sendo x C a incógnita e a n, a n 1,..., a

Leia mais

Redes de Computadores

Redes de Computadores Redes de Computadores Prof. Marcelo Gonçalves Rubinstein Programa de Pós-Graduação em Engenharia Eletrônica Faculdade de Engenharia Universidade do Estado do Rio de Janeiro Ementa Introdução a Redes de

Leia mais

Anatomia do motor de um programa de xadrez. Hugo Vinicius M. D. Santana Orientador: José Coelho de Pina

Anatomia do motor de um programa de xadrez. Hugo Vinicius M. D. Santana Orientador: José Coelho de Pina Anatomia do motor de um programa de xadrez Hugo Vinicius M. D. Santana Orientador: José Coelho de Pina Conteúdo Objetivo O que é um motor de xadrez? Arquitetura Entrada e saída Representação do tabuleiro

Leia mais

BC-0504 Natureza da Informação

BC-0504 Natureza da Informação BC-0504 Natureza da Informação Aula 3 Transmissão serial e paralela da informação e medida da informação transmitida Equipe de professores de Natureza da Informação Parte 0 Sistemas de numeração Decimal

Leia mais

Cálculo Diferencial e Integral Química Notas de Aula

Cálculo Diferencial e Integral Química Notas de Aula Cálculo Diferencial e Integral Química Notas de Aula João Roberto Gerônimo 1 1 Professor Associado do Departamento de Matemática da UEM. E-mail: jrgeronimo@uem.br. ÍNDICE 1. INTRODUÇÃO Esta notas de aula

Leia mais

4º 20/10/2003. ÍNDICE

4º 20/10/2003. ÍNDICE Universidade Federal de Juiz de Fora UFJF. Departamento de Ciência da Computação DCC. Curso de Ciência da Computação. Análise e Projeto de Algoritmos 4º período. Filippe Jabour. Atualizado em 20/10/2003.

Leia mais

Para simplificar a notação, também usamos denotar uma sequência usando apenas a imagem de :

Para simplificar a notação, também usamos denotar uma sequência usando apenas a imagem de : Sequências Uma sequência é uma função f de em, ou seja. Para todo número natural i associamos um número real por meio de uma determinada regra de formação. A sequencia pode ser denotada por: Ou, por meio

Leia mais

Transformada de Discreta de Co senos DCT

Transformada de Discreta de Co senos DCT Transformada de Discreta de Co senos DCT O primeiro passo, na maioria dos sistemas de compressão de imagens e vídeo, é identificar a presença de redundância espacial (semelhança entre um pixel e os pixels

Leia mais

Universidade de Pernambuco Escola Politécnica de Pernambuco

Universidade de Pernambuco Escola Politécnica de Pernambuco Universidade de Pernambuco Escola Politécnica de Pernambuco TV Analógica e Digital Introdução Codificação de Canal Prof. Márcio Lima E-mail:marcio.lima@poli.br Introdução Visão Geral Introdução Motivação

Leia mais

(versão preliminar) exceto possivelmente para x = a. Dizemos que o limite de f(x) quando x tende para x = a é um numero L, e escrevemos

(versão preliminar) exceto possivelmente para x = a. Dizemos que o limite de f(x) quando x tende para x = a é um numero L, e escrevemos LIMITE DE FUNÇÕES REAIS JOSÉ ANTÔNIO G. MIRANDA versão preinar). Revisão: Limite e Funções Continuas Definição Limite de Seqüências). Dizemos que uma seqüência de números reais n convergente para um número

Leia mais

Capítulo Equações da reta no espaço. Sejam A e B dois pontos distintos no espaço e seja r a reta que os contém. Então, P r existe t R tal que

Capítulo Equações da reta no espaço. Sejam A e B dois pontos distintos no espaço e seja r a reta que os contém. Então, P r existe t R tal que Capítulo 11 1. Equações da reta no espaço Sejam A e B dois pontos distintos no espaço e seja r a reta que os contém. Então, P r existe t R tal que AP = t AB Fig. 1: Reta r passando por A e B. Como o ponto

Leia mais

Árvore Binária de Busca

Árvore Binária de Busca MAC 5710 - Estruturas de Dados - 2008 Referência bibliográfica Os slides sobre este assunto são parcialmente baseados nas seções sobre árvores binárias de busca do capítulo 4 do livro N. Wirth. Algorithms

Leia mais

Análise amortizada CLRS 17. Algoritmos p. 1

Análise amortizada CLRS 17. Algoritmos p. 1 Análise amortizada CLRS 17 Algoritmos p. 1 Análise amortizada Serve para analisar uma sequência de operações ou iterações onde o pior caso individual não reflete o pior caso da sequência. Em outras palavras,

Leia mais

Derivadas Parciais Capítulo 14

Derivadas Parciais Capítulo 14 Derivadas Parciais Capítulo 14 DERIVADAS PARCIAIS Como vimos no Capítulo 4, no Volume I, um dos principais usos da derivada ordinária é na determinação dos valores máximo e mínimo. DERIVADAS PARCIAIS 14.7

Leia mais

Capítulo 2. Conjuntos Infinitos

Capítulo 2. Conjuntos Infinitos Capítulo 2 Conjuntos Infinitos Não é raro encontrarmos exemplos equivocados de conjuntos infinitos, como a quantidade de grãos de areia na praia ou a quantidade de estrelas no céu. Acontece que essas quantidades,

Leia mais

Números Reais. Víctor Arturo Martínez León b + c ad + bc. b c

Números Reais. Víctor Arturo Martínez León b + c ad + bc. b c Números Reais Víctor Arturo Martínez León (victor.leon@unila.edu.br) 1 Os números racionais Os números racionais são os números da forma a, sendo a e b inteiros e b 0; o conjunto b dos números racionais

Leia mais

A inserção da chave 6 da árvore acima resulta na árvore abaixo.

A inserção da chave 6 da árvore acima resulta na árvore abaixo. 149 Árvores B+ As operações nas árvores B+ não são muito diferentes das operações das árvores B. Inserir uma chave em uma folha que ainda tenha algum espaço exige que se coloque as chaves desta folha em

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

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

MESTRADO PROFISSIONAL EM MATEMÁTICA EM REDE NACIONAL. ENQ Gabarito

MESTRADO PROFISSIONAL EM MATEMÁTICA EM REDE NACIONAL. ENQ Gabarito MESTRADO PROFISSIONAL EM MATEMÁTICA EM REDE NACIONAL ENQ 016. Gabarito Questão 01 [ 1,00 ] A secretaria de educação de um município recebeu uma certa quantidade de livros para distribuir entre as escolas

Leia mais

é uma proposição verdadeira. tal que: 2 n N k, Φ(n) = Φ(n + 1) é uma proposição verdadeira. com n N k, tal que:

é uma proposição verdadeira. tal que: 2 n N k, Φ(n) = Φ(n + 1) é uma proposição verdadeira. com n N k, tal que: Matemática Discreta 2008/09 Vítor Hugo Fernandes Departamento de Matemática FCT/UNL Axioma (Princípio da Boa Ordenação dos Números Naturais) O conjunto parcialmente (totalmente) ordenado (N, ), em que

Leia mais