Compactação de Dadosprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/huffm… ·...

91
Compactação de Dados Letícia Rodrigues Bueno UFABC

Transcript of Compactação de Dadosprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/huffm… ·...

Page 1: Compactação de Dadosprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/huffm… · Algoritmo de Huffman Conjunto de símbolos: S = fs1;s2;:::;sng, n > 1; fi é frequência

Compactação de Dados

Letícia Rodrigues Bueno

UFABC

Page 2: Compactação de Dadosprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/huffm… · Algoritmo de Huffman Conjunto de símbolos: S = fs1;s2;:::;sng, n > 1; fi é frequência

Compactação de Dados: Introdução

• Objetivo:1. minimizar espaço de memória utilizado;2. minimizar custo da transmissão dos arquivos na rede ou

tempo de leitura do arquivo no disco;3. minimizar tempo de pesquisa no arquivo.

Page 3: Compactação de Dadosprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/huffm… · Algoritmo de Huffman Conjunto de símbolos: S = fs1;s2;:::;sng, n > 1; fi é frequência

Compactação de Dados: Introdução

• Objetivo:

1. minimizar espaço de memória utilizado;2. minimizar custo da transmissão dos arquivos na rede ou

tempo de leitura do arquivo no disco;3. minimizar tempo de pesquisa no arquivo.

Page 4: Compactação de Dadosprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/huffm… · Algoritmo de Huffman Conjunto de símbolos: S = fs1;s2;:::;sng, n > 1; fi é frequência

Compactação de Dados: Introdução

• Objetivo:1. minimizar espaço de memória utilizado;

2. minimizar custo da transmissão dos arquivos na rede outempo de leitura do arquivo no disco;

3. minimizar tempo de pesquisa no arquivo.

Page 5: Compactação de Dadosprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/huffm… · Algoritmo de Huffman Conjunto de símbolos: S = fs1;s2;:::;sng, n > 1; fi é frequência

Compactação de Dados: Introdução

• Objetivo:1. minimizar espaço de memória utilizado;2. minimizar custo da transmissão dos arquivos na rede ou

tempo de leitura do arquivo no disco;

3. minimizar tempo de pesquisa no arquivo.

Page 6: Compactação de Dadosprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/huffm… · Algoritmo de Huffman Conjunto de símbolos: S = fs1;s2;:::;sng, n > 1; fi é frequência

Compactação de Dados: Introdução

• Objetivo:1. minimizar espaço de memória utilizado;2. minimizar custo da transmissão dos arquivos na rede ou

tempo de leitura do arquivo no disco;3. minimizar tempo de pesquisa no arquivo.

Page 7: Compactação de Dadosprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/huffm… · Algoritmo de Huffman Conjunto de símbolos: S = fs1;s2;:::;sng, n > 1; fi é frequência

Compactação de Dados: Introdução

• Possível solução: substituir símbolos do texto por outroscom menor número de bits ou bytes (codificação demensagens);

1. Dada uma cadeia de caracteres (mensagem);2. problema: codificar mensagem através de atribuição de

códigos a símbolos;3. tabela de códigos armazenada para decodificação;

Page 8: Compactação de Dadosprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/huffm… · Algoritmo de Huffman Conjunto de símbolos: S = fs1;s2;:::;sng, n > 1; fi é frequência

Compactação de Dados: Introdução

• Possível solução: substituir símbolos do texto por outroscom menor número de bits ou bytes

(codificação demensagens);

1. Dada uma cadeia de caracteres (mensagem);2. problema: codificar mensagem através de atribuição de

códigos a símbolos;3. tabela de códigos armazenada para decodificação;

Page 9: Compactação de Dadosprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/huffm… · Algoritmo de Huffman Conjunto de símbolos: S = fs1;s2;:::;sng, n > 1; fi é frequência

Compactação de Dados: Introdução

• Possível solução: substituir símbolos do texto por outroscom menor número de bits ou bytes (codificação demensagens);

1. Dada uma cadeia de caracteres (mensagem);2. problema: codificar mensagem através de atribuição de

códigos a símbolos;3. tabela de códigos armazenada para decodificação;

Page 10: Compactação de Dadosprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/huffm… · Algoritmo de Huffman Conjunto de símbolos: S = fs1;s2;:::;sng, n > 1; fi é frequência

Compactação de Dados: Introdução

• Possível solução: substituir símbolos do texto por outroscom menor número de bits ou bytes (codificação demensagens);

1. Dada uma cadeia de caracteres (mensagem);

2. problema: codificar mensagem através de atribuição decódigos a símbolos;

3. tabela de códigos armazenada para decodificação;

Page 11: Compactação de Dadosprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/huffm… · Algoritmo de Huffman Conjunto de símbolos: S = fs1;s2;:::;sng, n > 1; fi é frequência

Compactação de Dados: Introdução

• Possível solução: substituir símbolos do texto por outroscom menor número de bits ou bytes (codificação demensagens);

1. Dada uma cadeia de caracteres (mensagem);2. problema: codificar mensagem através de atribuição de

códigos a símbolos;

3. tabela de códigos armazenada para decodificação;

Page 12: Compactação de Dadosprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/huffm… · Algoritmo de Huffman Conjunto de símbolos: S = fs1;s2;:::;sng, n > 1; fi é frequência

Compactação de Dados: Introdução

• Possível solução: substituir símbolos do texto por outroscom menor número de bits ou bytes (codificação demensagens);

1. Dada uma cadeia de caracteres (mensagem);2. problema: codificar mensagem através de atribuição de

códigos a símbolos;3. tabela de códigos armazenada para decodificação;

Page 13: Compactação de Dadosprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/huffm… · Algoritmo de Huffman Conjunto de símbolos: S = fs1;s2;:::;sng, n > 1; fi é frequência

Algoritmo de Frequência de Caracteres

BBBEAAAAFFHHHHHCBMMALLLCDDBBBBBBBCC3B1E4A2F5H1C1B2M1A3L1C2D7B2C

3BE4A2F5HCB2MA3LC2D7B2C

• texto não pode ter caracteres numéricos;• pode-se utilizar uma representação para diferenciar

símbolos e frequências;

AAA33333BA6666888DDDDDDD99999999999AABBB3A5@3BA4@63@87D11@92A3B

Page 14: Compactação de Dadosprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/huffm… · Algoritmo de Huffman Conjunto de símbolos: S = fs1;s2;:::;sng, n > 1; fi é frequência

Algoritmo de Frequência de Caracteres

BBBEAAAAFFHHHHHCBMMALLLCDDBBBBBBBCC

3B1E4A2F5H1C1B2M1A3L1C2D7B2C3BE4A2F5HCB2MA3LC2D7B2C

• texto não pode ter caracteres numéricos;• pode-se utilizar uma representação para diferenciar

símbolos e frequências;

AAA33333BA6666888DDDDDDD99999999999AABBB3A5@3BA4@63@87D11@92A3B

Page 15: Compactação de Dadosprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/huffm… · Algoritmo de Huffman Conjunto de símbolos: S = fs1;s2;:::;sng, n > 1; fi é frequência

Algoritmo de Frequência de Caracteres

BBBEAAAAFFHHHHHCBMMALLLCDDBBBBBBBCC3B1E4A2F5H1C1B2M1A3L1C2D7B2C

3BE4A2F5HCB2MA3LC2D7B2C

• texto não pode ter caracteres numéricos;• pode-se utilizar uma representação para diferenciar

símbolos e frequências;

AAA33333BA6666888DDDDDDD99999999999AABBB3A5@3BA4@63@87D11@92A3B

Page 16: Compactação de Dadosprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/huffm… · Algoritmo de Huffman Conjunto de símbolos: S = fs1;s2;:::;sng, n > 1; fi é frequência

Algoritmo de Frequência de Caracteres

BBBEAAAAFFHHHHHCBMMALLLCDDBBBBBBBCC3B1E4A2F5H1C1B2M1A3L1C2D7B2C

3BE4A2F5HCB2MA3LC2D7B2C

• texto não pode ter caracteres numéricos;• pode-se utilizar uma representação para diferenciar

símbolos e frequências;

AAA33333BA6666888DDDDDDD99999999999AABBB3A5@3BA4@63@87D11@92A3B

Page 17: Compactação de Dadosprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/huffm… · Algoritmo de Huffman Conjunto de símbolos: S = fs1;s2;:::;sng, n > 1; fi é frequência

Algoritmo de Frequência de Caracteres

BBBEAAAAFFHHHHHCBMMALLLCDDBBBBBBBCC3B1E4A2F5H1C1B2M1A3L1C2D7B2C

3BE4A2F5HCB2MA3LC2D7B2C

• texto não pode ter caracteres numéricos;

• pode-se utilizar uma representação para diferenciarsímbolos e frequências;

AAA33333BA6666888DDDDDDD99999999999AABBB3A5@3BA4@63@87D11@92A3B

Page 18: Compactação de Dadosprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/huffm… · Algoritmo de Huffman Conjunto de símbolos: S = fs1;s2;:::;sng, n > 1; fi é frequência

Algoritmo de Frequência de Caracteres

BBBEAAAAFFHHHHHCBMMALLLCDDBBBBBBBCC3B1E4A2F5H1C1B2M1A3L1C2D7B2C

3BE4A2F5HCB2MA3LC2D7B2C

• texto não pode ter caracteres numéricos;• pode-se utilizar uma representação para diferenciar

símbolos e frequências;

AAA33333BA6666888DDDDDDD99999999999AABBB3A5@3BA4@63@87D11@92A3B

Page 19: Compactação de Dadosprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/huffm… · Algoritmo de Huffman Conjunto de símbolos: S = fs1;s2;:::;sng, n > 1; fi é frequência

Algoritmo de Frequência de Caracteres

BBBEAAAAFFHHHHHCBMMALLLCDDBBBBBBBCC3B1E4A2F5H1C1B2M1A3L1C2D7B2C

3BE4A2F5HCB2MA3LC2D7B2C

• texto não pode ter caracteres numéricos;• pode-se utilizar uma representação para diferenciar

símbolos e frequências;

AAA33333BA6666888DDDDDDD99999999999AABBB

3A5@3BA4@63@87D11@92A3B

Page 20: Compactação de Dadosprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/huffm… · Algoritmo de Huffman Conjunto de símbolos: S = fs1;s2;:::;sng, n > 1; fi é frequência

Algoritmo de Frequência de Caracteres

BBBEAAAAFFHHHHHCBMMALLLCDDBBBBBBBCC3B1E4A2F5H1C1B2M1A3L1C2D7B2C

3BE4A2F5HCB2MA3LC2D7B2C

• texto não pode ter caracteres numéricos;• pode-se utilizar uma representação para diferenciar

símbolos e frequências;

AAA33333BA6666888DDDDDDD99999999999AABBB3A5@3BA4@63@87D11@92A3B

Page 21: Compactação de Dadosprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/huffm… · Algoritmo de Huffman Conjunto de símbolos: S = fs1;s2;:::;sng, n > 1; fi é frequência

Algoritmo de Huffman

• proposto em 1952;

• ideia básica: atribuir códigos mais curtos a símbolos comfrequências altas;

• implementação tradicional: considera caractere comosímbolo (comprime texto em ≈ 25%);

• considerar palavras como símbolos comprime texto em≈ 60%;

Page 22: Compactação de Dadosprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/huffm… · Algoritmo de Huffman Conjunto de símbolos: S = fs1;s2;:::;sng, n > 1; fi é frequência

Algoritmo de Huffman

• proposto em 1952;• ideia básica: atribuir códigos mais curtos a símbolos com

frequências altas;

• implementação tradicional: considera caractere comosímbolo (comprime texto em ≈ 25%);

• considerar palavras como símbolos comprime texto em≈ 60%;

Page 23: Compactação de Dadosprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/huffm… · Algoritmo de Huffman Conjunto de símbolos: S = fs1;s2;:::;sng, n > 1; fi é frequência

Algoritmo de Huffman

• proposto em 1952;• ideia básica: atribuir códigos mais curtos a símbolos com

frequências altas;• implementação tradicional: considera caractere como

símbolo (comprime texto em ≈ 25%);

• considerar palavras como símbolos comprime texto em≈ 60%;

Page 24: Compactação de Dadosprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/huffm… · Algoritmo de Huffman Conjunto de símbolos: S = fs1;s2;:::;sng, n > 1; fi é frequência

Algoritmo de Huffman

• proposto em 1952;• ideia básica: atribuir códigos mais curtos a símbolos com

frequências altas;• implementação tradicional: considera caractere como

símbolo (comprime texto em ≈ 25%);• considerar palavras como símbolos comprime texto em≈ 60%;

Page 25: Compactação de Dadosprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/huffm… · Algoritmo de Huffman Conjunto de símbolos: S = fs1;s2;:::;sng, n > 1; fi é frequência

Algoritmo de Huffman

• Conjunto de símbolos: S = {s1, s2, . . . , sn}, n > 1;

• fi é frequência de si no texto, para 1 ≤ i ≤ n;• Queremos atribuir um código a cada símbolo para

compactar o texto todo;• Nenhum código deve ser prefixo de outro: árvore binária

de prefixo;• Cada símbolo si é associado a uma folha da árvore;• Códigos dos símbolos são sequências binárias;• Vantagem de utilizar código de prefixo: facilidade para

codificação e decodificação;

Page 26: Compactação de Dadosprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/huffm… · Algoritmo de Huffman Conjunto de símbolos: S = fs1;s2;:::;sng, n > 1; fi é frequência

Algoritmo de Huffman

• Conjunto de símbolos: S = {s1, s2, . . . , sn}, n > 1;• fi é frequência de si no texto, para 1 ≤ i ≤ n;

• Queremos atribuir um código a cada símbolo paracompactar o texto todo;

• Nenhum código deve ser prefixo de outro: árvore bináriade prefixo;

• Cada símbolo si é associado a uma folha da árvore;• Códigos dos símbolos são sequências binárias;• Vantagem de utilizar código de prefixo: facilidade para

codificação e decodificação;

Page 27: Compactação de Dadosprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/huffm… · Algoritmo de Huffman Conjunto de símbolos: S = fs1;s2;:::;sng, n > 1; fi é frequência

Algoritmo de Huffman

• Conjunto de símbolos: S = {s1, s2, . . . , sn}, n > 1;• fi é frequência de si no texto, para 1 ≤ i ≤ n;• Queremos atribuir um código a cada símbolo para

compactar o texto todo;

• Nenhum código deve ser prefixo de outro: árvore bináriade prefixo;

• Cada símbolo si é associado a uma folha da árvore;• Códigos dos símbolos são sequências binárias;• Vantagem de utilizar código de prefixo: facilidade para

codificação e decodificação;

Page 28: Compactação de Dadosprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/huffm… · Algoritmo de Huffman Conjunto de símbolos: S = fs1;s2;:::;sng, n > 1; fi é frequência

Algoritmo de Huffman

• Conjunto de símbolos: S = {s1, s2, . . . , sn}, n > 1;• fi é frequência de si no texto, para 1 ≤ i ≤ n;• Queremos atribuir um código a cada símbolo para

compactar o texto todo;• Nenhum código deve ser prefixo de outro: árvore binária

de prefixo;

• Cada símbolo si é associado a uma folha da árvore;• Códigos dos símbolos são sequências binárias;• Vantagem de utilizar código de prefixo: facilidade para

codificação e decodificação;

Page 29: Compactação de Dadosprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/huffm… · Algoritmo de Huffman Conjunto de símbolos: S = fs1;s2;:::;sng, n > 1; fi é frequência

Algoritmo de Huffman

• Conjunto de símbolos: S = {s1, s2, . . . , sn}, n > 1;• fi é frequência de si no texto, para 1 ≤ i ≤ n;• Queremos atribuir um código a cada símbolo para

compactar o texto todo;• Nenhum código deve ser prefixo de outro: árvore binária

de prefixo;• Cada símbolo si é associado a uma folha da árvore;

• Códigos dos símbolos são sequências binárias;• Vantagem de utilizar código de prefixo: facilidade para

codificação e decodificação;

Page 30: Compactação de Dadosprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/huffm… · Algoritmo de Huffman Conjunto de símbolos: S = fs1;s2;:::;sng, n > 1; fi é frequência

Algoritmo de Huffman

• Conjunto de símbolos: S = {s1, s2, . . . , sn}, n > 1;• fi é frequência de si no texto, para 1 ≤ i ≤ n;• Queremos atribuir um código a cada símbolo para

compactar o texto todo;• Nenhum código deve ser prefixo de outro: árvore binária

de prefixo;• Cada símbolo si é associado a uma folha da árvore;• Códigos dos símbolos são sequências binárias;

• Vantagem de utilizar código de prefixo: facilidade paracodificação e decodificação;

Page 31: Compactação de Dadosprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/huffm… · Algoritmo de Huffman Conjunto de símbolos: S = fs1;s2;:::;sng, n > 1; fi é frequência

Algoritmo de Huffman

• Conjunto de símbolos: S = {s1, s2, . . . , sn}, n > 1;• fi é frequência de si no texto, para 1 ≤ i ≤ n;• Queremos atribuir um código a cada símbolo para

compactar o texto todo;• Nenhum código deve ser prefixo de outro: árvore binária

de prefixo;• Cada símbolo si é associado a uma folha da árvore;• Códigos dos símbolos são sequências binárias;• Vantagem de utilizar código de prefixo: facilidade para

codificação e decodificação;

Page 32: Compactação de Dadosprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/huffm… · Algoritmo de Huffman Conjunto de símbolos: S = fs1;s2;:::;sng, n > 1; fi é frequência

Algoritmo de Huffman: (de)codificação

s4s3s3s1s3s1s4s5s1s3s3s3s3s3s2s3s5s2s2s2s4

0

0 1

1

0 1

0 1

s1

s5

s4

s2 s3

s1:00

s2:0100

s3:0101

s4:011

s5:1

011 0101 0101 00 0101 00 011 1 00 0101 0101 0101 01010101 0100 0101 1 0100 0100 0100 011

Page 33: Compactação de Dadosprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/huffm… · Algoritmo de Huffman Conjunto de símbolos: S = fs1;s2;:::;sng, n > 1; fi é frequência

Algoritmo de Huffman: (de)codificação

s4s3s3s1s3s1s4s5s1s3s3s3s3s3s2s3s5s2s2s2s4

0

0 1

1

0 1

0 1

s1

s5

s4

s2 s3

s1:00

s2:0100

s3:0101

s4:011

s5:1

011 0101 0101 00 0101 00 011 1 00 0101 0101 0101 01010101 0100 0101 1 0100 0100 0100 011

Page 34: Compactação de Dadosprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/huffm… · Algoritmo de Huffman Conjunto de símbolos: S = fs1;s2;:::;sng, n > 1; fi é frequência

Algoritmo de Huffman: (de)codificação

s4s3s3s1s3s1s4s5s1s3s3s3s3s3s2s3s5s2s2s2s4

0

0 1

1

0 1

0 1

s1

s5

s4

s2 s3

s1:00

s2:0100

s3:0101

s4:011

s5:1

011 0101 0101 00 0101 00 011 1 00 0101 0101 0101 01010101 0100 0101 1 0100 0100 0100 011

Page 35: Compactação de Dadosprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/huffm… · Algoritmo de Huffman Conjunto de símbolos: S = fs1;s2;:::;sng, n > 1; fi é frequência

Algoritmo de Huffman: (de)codificação

s4s3s3s1s3s1s4s5s1s3s3s3s3s3s2s3s5s2s2s2s4

0

0 1

1

0 1

0 1

s1

s5

s4

s2 s3

s1:00

s2:0100

s3:0101

s4:011

s5:1

011

0101 0101 00 0101 00 011 1 00 0101 0101 0101 01010101 0100 0101 1 0100 0100 0100 011

Page 36: Compactação de Dadosprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/huffm… · Algoritmo de Huffman Conjunto de símbolos: S = fs1;s2;:::;sng, n > 1; fi é frequência

Algoritmo de Huffman: (de)codificação

s4s3s3s1s3s1s4s5s1s3s3s3s3s3s2s3s5s2s2s2s4

0

0 1

1

0 1

0 1

s1

s5

s4

s2 s3

s1:00

s2:0100

s3:0101

s4:011

s5:1

011 0101

0101 00 0101 00 011 1 00 0101 0101 0101 01010101 0100 0101 1 0100 0100 0100 011

Page 37: Compactação de Dadosprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/huffm… · Algoritmo de Huffman Conjunto de símbolos: S = fs1;s2;:::;sng, n > 1; fi é frequência

Algoritmo de Huffman: (de)codificação

s4s3s3s1s3s1s4s5s1s3s3s3s3s3s2s3s5s2s2s2s4

0

0 1

1

0 1

0 1

s1

s5

s4

s2 s3

s1:00

s2:0100

s3:0101

s4:011

s5:1

011 0101 0101

00 0101 00 011 1 00 0101 0101 0101 01010101 0100 0101 1 0100 0100 0100 011

Page 38: Compactação de Dadosprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/huffm… · Algoritmo de Huffman Conjunto de símbolos: S = fs1;s2;:::;sng, n > 1; fi é frequência

Algoritmo de Huffman: (de)codificação

s4s3s3s1s3s1s4s5s1s3s3s3s3s3s2s3s5s2s2s2s4

0

0 1

1

0 1

0 1

s1

s5

s4

s2 s3

s1:00

s2:0100

s3:0101

s4:011

s5:1

011 0101 0101 00

0101 00 011 1 00 0101 0101 0101 01010101 0100 0101 1 0100 0100 0100 011

Page 39: Compactação de Dadosprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/huffm… · Algoritmo de Huffman Conjunto de símbolos: S = fs1;s2;:::;sng, n > 1; fi é frequência

Algoritmo de Huffman: (de)codificação

s4s3s3s1s3s1s4s5s1s3s3s3s3s3s2s3s5s2s2s2s4

0

0 1

1

0 1

0 1

s1

s5

s4

s2 s3

s1:00

s2:0100

s3:0101

s4:011

s5:1

011 0101 0101 00 0101

00 011 1 00 0101 0101 0101 01010101 0100 0101 1 0100 0100 0100 011

Page 40: Compactação de Dadosprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/huffm… · Algoritmo de Huffman Conjunto de símbolos: S = fs1;s2;:::;sng, n > 1; fi é frequência

Algoritmo de Huffman: (de)codificação

s4s3s3s1s3s1s4s5s1s3s3s3s3s3s2s3s5s2s2s2s4

0

0 1

1

0 1

0 1

s1

s5

s4

s2 s3

s1:00

s2:0100

s3:0101

s4:011

s5:1

011 0101 0101 00 0101 00

011 1 00 0101 0101 0101 01010101 0100 0101 1 0100 0100 0100 011

Page 41: Compactação de Dadosprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/huffm… · Algoritmo de Huffman Conjunto de símbolos: S = fs1;s2;:::;sng, n > 1; fi é frequência

Algoritmo de Huffman: (de)codificação

s4s3s3s1s3s1s4s5s1s3s3s3s3s3s2s3s5s2s2s2s4

0

0 1

1

0 1

0 1

s1

s5

s4

s2 s3

s1:00

s2:0100

s3:0101

s4:011

s5:1

011 0101 0101 00 0101 00 011

1 00 0101 0101 0101 01010101 0100 0101 1 0100 0100 0100 011

Page 42: Compactação de Dadosprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/huffm… · Algoritmo de Huffman Conjunto de símbolos: S = fs1;s2;:::;sng, n > 1; fi é frequência

Algoritmo de Huffman: (de)codificação

s4s3s3s1s3s1s4s5s1s3s3s3s3s3s2s3s5s2s2s2s4

0

0 1

1

0 1

0 1

s1

s5

s4

s2 s3

s1:00

s2:0100

s3:0101

s4:011

s5:1

011 0101 0101 00 0101 00 011 1

00 0101 0101 0101 01010101 0100 0101 1 0100 0100 0100 011

Page 43: Compactação de Dadosprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/huffm… · Algoritmo de Huffman Conjunto de símbolos: S = fs1;s2;:::;sng, n > 1; fi é frequência

Algoritmo de Huffman: (de)codificação

s4s3s3s1s3s1s4s5s1s3s3s3s3s3s2s3s5s2s2s2s4

0

0 1

1

0 1

0 1

s1

s5

s4

s2 s3

s1:00

s2:0100

s3:0101

s4:011

s5:1

011 0101 0101 00 0101 00 011 1 00

0101 0101 0101 01010101 0100 0101 1 0100 0100 0100 011

Page 44: Compactação de Dadosprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/huffm… · Algoritmo de Huffman Conjunto de símbolos: S = fs1;s2;:::;sng, n > 1; fi é frequência

Algoritmo de Huffman: (de)codificação

s4s3s3s1s3s1s4s5s1s3s3s3s3s3s2s3s5s2s2s2s4

0

0 1

1

0 1

0 1

s1

s5

s4

s2 s3

s1:00

s2:0100

s3:0101

s4:011

s5:1

011 0101 0101 00 0101 00 011 1 00 0101

0101 0101 01010101 0100 0101 1 0100 0100 0100 011

Page 45: Compactação de Dadosprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/huffm… · Algoritmo de Huffman Conjunto de símbolos: S = fs1;s2;:::;sng, n > 1; fi é frequência

Algoritmo de Huffman: (de)codificação

s4s3s3s1s3s1s4s5s1s3s3s3s3s3s2s3s5s2s2s2s4

0

0 1

1

0 1

0 1

s1

s5

s4

s2 s3

s1:00

s2:0100

s3:0101

s4:011

s5:1

011 0101 0101 00 0101 00 011 1 00 0101 0101

0101 01010101 0100 0101 1 0100 0100 0100 011

Page 46: Compactação de Dadosprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/huffm… · Algoritmo de Huffman Conjunto de símbolos: S = fs1;s2;:::;sng, n > 1; fi é frequência

Algoritmo de Huffman: (de)codificação

s4s3s3s1s3s1s4s5s1s3s3s3s3s3s2s3s5s2s2s2s4

0

0 1

1

0 1

0 1

s1

s5

s4

s2 s3

s1:00

s2:0100

s3:0101

s4:011

s5:1

011 0101 0101 00 0101 00 011 1 00 0101 0101 0101

01010101 0100 0101 1 0100 0100 0100 011

Page 47: Compactação de Dadosprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/huffm… · Algoritmo de Huffman Conjunto de símbolos: S = fs1;s2;:::;sng, n > 1; fi é frequência

Algoritmo de Huffman: (de)codificação

s4s3s3s1s3s1s4s5s1s3s3s3s3s3s2s3s5s2s2s2s4

0

0 1

1

0 1

0 1

s1

s5

s4

s2 s3

s1:00

s2:0100

s3:0101

s4:011

s5:1

011 0101 0101 00 0101 00 011 1 00 0101 0101 0101 0101

0101 0100 0101 1 0100 0100 0100 011

Page 48: Compactação de Dadosprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/huffm… · Algoritmo de Huffman Conjunto de símbolos: S = fs1;s2;:::;sng, n > 1; fi é frequência

Algoritmo de Huffman: (de)codificação

s4s3s3s1s3s1s4s5s1s3s3s3s3s3s2s3s5s2s2s2s4

0

0 1

1

0 1

0 1

s1

s5

s4

s2 s3

s1:00

s2:0100

s3:0101

s4:011

s5:1

011 0101 0101 00 0101 00 011 1 00 0101 0101 0101 01010101

0100 0101 1 0100 0100 0100 011

Page 49: Compactação de Dadosprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/huffm… · Algoritmo de Huffman Conjunto de símbolos: S = fs1;s2;:::;sng, n > 1; fi é frequência

Algoritmo de Huffman: (de)codificação

s4s3s3s1s3s1s4s5s1s3s3s3s3s3s2s3s5s2s2s2s4

0

0 1

1

0 1

0 1

s1

s5

s4

s2 s3

s1:00

s2:0100

s3:0101

s4:011

s5:1

011 0101 0101 00 0101 00 011 1 00 0101 0101 0101 01010101 0100

0101 1 0100 0100 0100 011

Page 50: Compactação de Dadosprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/huffm… · Algoritmo de Huffman Conjunto de símbolos: S = fs1;s2;:::;sng, n > 1; fi é frequência

Algoritmo de Huffman: (de)codificação

s4s3s3s1s3s1s4s5s1s3s3s3s3s3s2s3s5s2s2s2s4

0

0 1

1

0 1

0 1

s1

s5

s4

s2 s3

s1:00

s2:0100

s3:0101

s4:011

s5:1

011 0101 0101 00 0101 00 011 1 00 0101 0101 0101 01010101 0100 0101

1 0100 0100 0100 011

Page 51: Compactação de Dadosprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/huffm… · Algoritmo de Huffman Conjunto de símbolos: S = fs1;s2;:::;sng, n > 1; fi é frequência

Algoritmo de Huffman: (de)codificação

s4s3s3s1s3s1s4s5s1s3s3s3s3s3s2s3s5s2s2s2s4

0

0 1

1

0 1

0 1

s1

s5

s4

s2 s3

s1:00

s2:0100

s3:0101

s4:011

s5:1

011 0101 0101 00 0101 00 011 1 00 0101 0101 0101 01010101 0100 0101 1

0100 0100 0100 011

Page 52: Compactação de Dadosprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/huffm… · Algoritmo de Huffman Conjunto de símbolos: S = fs1;s2;:::;sng, n > 1; fi é frequência

Algoritmo de Huffman: (de)codificação

s4s3s3s1s3s1s4s5s1s3s3s3s3s3s2s3s5s2s2s2s4

0

0 1

1

0 1

0 1

s1

s5

s4

s2 s3

s1:00

s2:0100

s3:0101

s4:011

s5:1

011 0101 0101 00 0101 00 011 1 00 0101 0101 0101 01010101 0100 0101 1 0100

0100 0100 011

Page 53: Compactação de Dadosprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/huffm… · Algoritmo de Huffman Conjunto de símbolos: S = fs1;s2;:::;sng, n > 1; fi é frequência

Algoritmo de Huffman: (de)codificação

s4s3s3s1s3s1s4s5s1s3s3s3s3s3s2s3s5s2s2s2s4

0

0 1

1

0 1

0 1

s1

s5

s4

s2 s3

s1:00

s2:0100

s3:0101

s4:011

s5:1

011 0101 0101 00 0101 00 011 1 00 0101 0101 0101 01010101 0100 0101 1 0100 0100

0100 011

Page 54: Compactação de Dadosprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/huffm… · Algoritmo de Huffman Conjunto de símbolos: S = fs1;s2;:::;sng, n > 1; fi é frequência

Algoritmo de Huffman: (de)codificação

s4s3s3s1s3s1s4s5s1s3s3s3s3s3s2s3s5s2s2s2s4

0

0 1

1

0 1

0 1

s1

s5

s4

s2 s3

s1:00

s2:0100

s3:0101

s4:011

s5:1

011 0101 0101 00 0101 00 011 1 00 0101 0101 0101 01010101 0100 0101 1 0100 0100 0100

011

Page 55: Compactação de Dadosprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/huffm… · Algoritmo de Huffman Conjunto de símbolos: S = fs1;s2;:::;sng, n > 1; fi é frequência

Algoritmo de Huffman: (de)codificação

s4s3s3s1s3s1s4s5s1s3s3s3s3s3s2s3s5s2s2s2s4

0

0 1

1

0 1

0 1

s1

s5

s4

s2 s3

s1:00

s2:0100

s3:0101

s4:011

s5:1

011 0101 0101 00 0101 00 011 1 00 0101 0101 0101 01010101 0100 0101 1 0100 0100 0100 011

Page 56: Compactação de Dadosprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/huffm… · Algoritmo de Huffman Conjunto de símbolos: S = fs1;s2;:::;sng, n > 1; fi é frequência

Algoritmo de Huffman

• Se árvore de prefixo T é conhecida, (de)codificação é feitaem O(m) onde m é o tamanho da sequência bináriacodificada;

• Para 011010101010001010001110001010101010101010101010001011010001000100011, custo c(T ) = 69;

• É necessário minimizar c(T );• Árvore mínima ou árvore de Huffman: árvore de prefixo

T com c(T ) mínimo;

Page 57: Compactação de Dadosprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/huffm… · Algoritmo de Huffman Conjunto de símbolos: S = fs1;s2;:::;sng, n > 1; fi é frequência

Algoritmo de Huffman

• Se árvore de prefixo T é conhecida, (de)codificação é feitaem O(m) onde m é o tamanho da sequência bináriacodificada;

• Para 011010101010001010001110001010101010101010101010001011010001000100011, custo c(T ) = 69;

• É necessário minimizar c(T );• Árvore mínima ou árvore de Huffman: árvore de prefixo

T com c(T ) mínimo;

Page 58: Compactação de Dadosprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/huffm… · Algoritmo de Huffman Conjunto de símbolos: S = fs1;s2;:::;sng, n > 1; fi é frequência

Algoritmo de Huffman

• Se árvore de prefixo T é conhecida, (de)codificação é feitaem O(m) onde m é o tamanho da sequência bináriacodificada;

• Para 011010101010001010001110001010101010101010101010001011010001000100011, custo c(T ) = 69;

• É necessário minimizar c(T );

• Árvore mínima ou árvore de Huffman: árvore de prefixoT com c(T ) mínimo;

Page 59: Compactação de Dadosprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/huffm… · Algoritmo de Huffman Conjunto de símbolos: S = fs1;s2;:::;sng, n > 1; fi é frequência

Algoritmo de Huffman

• Se árvore de prefixo T é conhecida, (de)codificação é feitaem O(m) onde m é o tamanho da sequência bináriacodificada;

• Para 011010101010001010001110001010101010101010101010001011010001000100011, custo c(T ) = 69;

• É necessário minimizar c(T );• Árvore mínima ou árvore de Huffman: árvore de prefixo

T com c(T ) mínimo;

Page 60: Compactação de Dadosprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/huffm… · Algoritmo de Huffman Conjunto de símbolos: S = fs1;s2;:::;sng, n > 1; fi é frequência

Algoritmo de Huffman

0

0 1

1

0 10 1

s1s5 s4 s2

s3

21

12

5 7

f1:3

f2:4

f3:9

f4:3

f5:2

s1:101

s2:111

s3:0

s4:110

s5:100

s4s3s3s1s3s1s4s5s1s3s3s3s3s3s2s3s5s2s2s2s4 produz110001010101110100101000001110100111111111110

que tem c(T ) = 45 e que é mínima.

Page 61: Compactação de Dadosprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/huffm… · Algoritmo de Huffman Conjunto de símbolos: S = fs1;s2;:::;sng, n > 1; fi é frequência

Algoritmo de Huffman

0

0 1

1

0 10 1

s1s5 s4 s2

s3

21

12

5 7

f1:3

f2:4

f3:9

f4:3

f5:2

s1:101

s2:111

s3:0

s4:110

s5:100

s4s3s3s1s3s1s4s5s1s3s3s3s3s3s2s3s5s2s2s2s4 produz110001010101110100101000001110100111111111110

que tem c(T ) = 45 e que é mínima.

Page 62: Compactação de Dadosprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/huffm… · Algoritmo de Huffman Conjunto de símbolos: S = fs1;s2;:::;sng, n > 1; fi é frequência

Algoritmo de Huffman

0

0 1

1

0 10 1

s1s5 s4 s2

s3

21

12

5 7

f1:3

f2:4

f3:9

f4:3

f5:2

s1:101

s2:111

s3:0

s4:110

s5:100

s4s3s3s1s3s1s4s5s1s3s3s3s3s3s2s3s5s2s2s2s4 produz

110001010101110100101000001110100111111111110que tem c(T ) = 45 e que é mínima.

Page 63: Compactação de Dadosprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/huffm… · Algoritmo de Huffman Conjunto de símbolos: S = fs1;s2;:::;sng, n > 1; fi é frequência

Algoritmo de Huffman

0

0 1

1

0 10 1

s1s5 s4 s2

s3

21

12

5 7

f1:3

f2:4

f3:9

f4:3

f5:2

s1:101

s2:111

s3:0

s4:110

s5:100

s4s3s3s1s3s1s4s5s1s3s3s3s3s3s2s3s5s2s2s2s4 produz110001010101110100101000001110100111111111110

que tem c(T ) = 45 e que é mínima.

Page 64: Compactação de Dadosprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/huffm… · Algoritmo de Huffman Conjunto de símbolos: S = fs1;s2;:::;sng, n > 1; fi é frequência

Algoritmo de Huffman

0

0 1

1

0 10 1

s1s5 s4 s2

s3

21

12

5 7

f1:3

f2:4

f3:9

f4:3

f5:2

s1:101

s2:111

s3:0

s4:110

s5:100

s4s3s3s1s3s1s4s5s1s3s3s3s3s3s2s3s5s2s2s2s4 produz110001010101110100101000001110100111111111110

que tem c(T ) = 45 e que é mínima.

Page 65: Compactação de Dadosprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/huffm… · Algoritmo de Huffman Conjunto de símbolos: S = fs1;s2;:::;sng, n > 1; fi é frequência

Ideia do Algoritmo de Huffman

Page 66: Compactação de Dadosprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/huffm… · Algoritmo de Huffman Conjunto de símbolos: S = fs1;s2;:::;sng, n > 1; fi é frequência

Ideia do Algoritmo de Huffman

⊕T’T"

f(T’)f(T")

Page 67: Compactação de Dadosprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/huffm… · Algoritmo de Huffman Conjunto de símbolos: S = fs1;s2;:::;sng, n > 1; fi é frequência

Ideia do Algoritmo de Huffman

⊕T’T"

f(T’)f(T")

=⇒T’

T"

f(T’)+f(T")

Page 68: Compactação de Dadosprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/huffm… · Algoritmo de Huffman Conjunto de símbolos: S = fs1;s2;:::;sng, n > 1; fi é frequência

Construção da Árvore de Huffman

s1 s3 s5s4s2

s1

s3

s5

s4s25

0 1

s1

s3

s5 s4 s2

5

0 1

7

0 1

Page 69: Compactação de Dadosprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/huffm… · Algoritmo de Huffman Conjunto de símbolos: S = fs1;s2;:::;sng, n > 1; fi é frequência

Construção da Árvore de Huffman

s1 s3 s5s4s2

s1

s3

s5

s4s25

0 1

s1

s3

s5 s4 s2

5

0 1

7

0 1

Page 70: Compactação de Dadosprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/huffm… · Algoritmo de Huffman Conjunto de símbolos: S = fs1;s2;:::;sng, n > 1; fi é frequência

Construção da Árvore de Huffman

s1 s3 s5s4s2

s1

s3

s5

s4s25

0 1

s1

s3

s5 s4 s2

5

0 1

7

0 1

Page 71: Compactação de Dadosprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/huffm… · Algoritmo de Huffman Conjunto de símbolos: S = fs1;s2;:::;sng, n > 1; fi é frequência

Construção da Árvore de Huffman

s1 s3 s5s4s2

s1

s3

s5

s4s25

0 1

s1

s3

s5 s4 s2

5

0 1

7

0 1

Page 72: Compactação de Dadosprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/huffm… · Algoritmo de Huffman Conjunto de símbolos: S = fs1;s2;:::;sng, n > 1; fi é frequência

Construção da Árvore de Huffman

s1

s3

s5 s4 s2

5

0 1

7

0 1

s1

s3

s5 s4 s2

5

0 1

7

0 1

120 1

Page 73: Compactação de Dadosprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/huffm… · Algoritmo de Huffman Conjunto de símbolos: S = fs1;s2;:::;sng, n > 1; fi é frequência

Construção da Árvore de Huffman

s1

s3

s5 s4 s2

5

0 1

7

0 1

s1

s3

s5 s4 s2

5

0 1

7

0 1

120 1

Page 74: Compactação de Dadosprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/huffm… · Algoritmo de Huffman Conjunto de símbolos: S = fs1;s2;:::;sng, n > 1; fi é frequência

Construção da Árvore de Huffman

s1

s3

s5 s4 s2

5

0 1

7

0 1

120 1

s1

s3

s5 s4 s2

5

0 1

7

0 1

120 1

21

0 1

Page 75: Compactação de Dadosprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/huffm… · Algoritmo de Huffman Conjunto de símbolos: S = fs1;s2;:::;sng, n > 1; fi é frequência

Construção da Árvore de Huffman

s1

s3

s5 s4 s2

5

0 1

7

0 1

120 1

s1

s3

s5 s4 s2

5

0 1

7

0 1

120 1

21

0 1

Page 76: Compactação de Dadosprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/huffm… · Algoritmo de Huffman Conjunto de símbolos: S = fs1;s2;:::;sng, n > 1; fi é frequência

Algoritmo de Huffman: inserção em lista de prioridades

1 inserir(T , f ,F ):2 F [n + 1]← T3 n++4 subir(n)

1 subir(i):2 j = bi/2c3 se j ≥ 1 então4 se T [i] < T [j] então5 T [i]⇔ T [j]6 subir(j)

• inserir(T , f ,F ) esubir(i): métodos delista de prioridadesimplementada porheap;

Page 77: Compactação de Dadosprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/huffm… · Algoritmo de Huffman Conjunto de símbolos: S = fs1;s2;:::;sng, n > 1; fi é frequência

Algoritmo de Huffman: inserção em lista de prioridades

1 inserir(T , f ,F ):2 F [n + 1]← T3 n++4 subir(n)

1 subir(i):2 j = bi/2c3 se j ≥ 1 então4 se T [i] < T [j] então5 T [i]⇔ T [j]6 subir(j)

• inserir(T , f ,F ) esubir(i): métodos delista de prioridadesimplementada porheap;

Page 78: Compactação de Dadosprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/huffm… · Algoritmo de Huffman Conjunto de símbolos: S = fs1;s2;:::;sng, n > 1; fi é frequência

Algoritmo de Huffman: inserção em lista de prioridades

1 inserir(T , f ,F ):2 F [n + 1]← T3 n++4 subir(n)

1 subir(i):2 j = bi/2c3 se j ≥ 1 então4 se T [i] < T [j] então5 T [i]⇔ T [j]6 subir(j)

• inserir(T , f ,F ) esubir(i): métodos delista de prioridadesimplementada porheap;

Page 79: Compactação de Dadosprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/huffm… · Algoritmo de Huffman Conjunto de símbolos: S = fs1;s2;:::;sng, n > 1; fi é frequência

Algoritmo de Huffman: inserção em lista de prioridades

1 inserir(T , f ,F ):2 F [n + 1]← T3 n++4 subir(n)

1 subir(i):2 j = bi/2c3 se j ≥ 1 então4 se T [i] < T [j] então5 T [i]⇔ T [j]6 subir(j)

• inserir(T , f ,F ) esubir(i): métodos delista de prioridadesimplementada porheap;

Page 80: Compactação de Dadosprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/huffm… · Algoritmo de Huffman Conjunto de símbolos: S = fs1;s2;:::;sng, n > 1; fi é frequência

Algoritmo de Huffman: remoção de lista de prioridades

1 minimo(T , f ,F ):2 se n 6= 0 então3 remove T [1]4 T [1]← T [n]5 n- -6 descer(1,n)

1 descer(i , n):2 j = 2 ∗ i3 se j ≤ n então4 se j < n então5 se T [j + 1] < T [j] então6 j = j + 17 se T [i] > T [j] então8 T [i]⇔ T [j]9 descer(j , n)

• minimo(T , f ,F ) edescer(1,n): métodosde lista de prioridadesimplementada porheap;

Page 81: Compactação de Dadosprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/huffm… · Algoritmo de Huffman Conjunto de símbolos: S = fs1;s2;:::;sng, n > 1; fi é frequência

Algoritmo de Huffman: remoção de lista de prioridades

1 minimo(T , f ,F ):2 se n 6= 0 então3 remove T [1]4 T [1]← T [n]5 n- -6 descer(1,n)

1 descer(i , n):2 j = 2 ∗ i3 se j ≤ n então4 se j < n então5 se T [j + 1] < T [j] então6 j = j + 17 se T [i] > T [j] então8 T [i]⇔ T [j]9 descer(j , n)

• minimo(T , f ,F ) edescer(1,n): métodosde lista de prioridadesimplementada porheap;

Page 82: Compactação de Dadosprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/huffm… · Algoritmo de Huffman Conjunto de símbolos: S = fs1;s2;:::;sng, n > 1; fi é frequência

Algoritmo de Huffman: remoção de lista de prioridades

1 minimo(T , f ,F ):2 se n 6= 0 então3 remove T [1]4 T [1]← T [n]5 n- -6 descer(1,n)

1 descer(i , n):2 j = 2 ∗ i3 se j ≤ n então4 se j < n então5 se T [j + 1] < T [j] então6 j = j + 17 se T [i] > T [j] então8 T [i]⇔ T [j]9 descer(j , n)

• minimo(T , f ,F ) edescer(1,n): métodosde lista de prioridadesimplementada porheap;

Page 83: Compactação de Dadosprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/huffm… · Algoritmo de Huffman Conjunto de símbolos: S = fs1;s2;:::;sng, n > 1; fi é frequência

Algoritmo de Huffman: remoção de lista de prioridades

1 minimo(T , f ,F ):2 se n 6= 0 então3 remove T [1]4 T [1]← T [n]5 n- -6 descer(1,n)

1 descer(i , n):2 j = 2 ∗ i3 se j ≤ n então4 se j < n então5 se T [j + 1] < T [j] então6 j = j + 17 se T [i] > T [j] então8 T [i]⇔ T [j]9 descer(j , n)

• minimo(T , f ,F ) edescer(1,n): métodosde lista de prioridadesimplementada porheap;

Page 84: Compactação de Dadosprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/huffm… · Algoritmo de Huffman Conjunto de símbolos: S = fs1;s2;:::;sng, n > 1; fi é frequência

Algoritmo de Huffman

1 huffman():2 para i ← 1 até n − 1 faça3 minimo(T ′, f ,F );4 minimo(T ′′, f ,F );5 T ← T ′ ⊕ T ′′;6 f (T )← f (T ′)⊕ f (T ′′);7 inserir(T , f ,F );

• Operação deminimização ouinclusão na lista deprioridades: O(log n);

• operação ⊕ requernúmero constante depassos;

• Total de n − 1iterações;

• Complexidade:O(n log n);

Page 85: Compactação de Dadosprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/huffm… · Algoritmo de Huffman Conjunto de símbolos: S = fs1;s2;:::;sng, n > 1; fi é frequência

Algoritmo de Huffman

1 huffman():2 para i ← 1 até n − 1 faça3 minimo(T ′, f ,F );4 minimo(T ′′, f ,F );5 T ← T ′ ⊕ T ′′;6 f (T )← f (T ′)⊕ f (T ′′);7 inserir(T , f ,F );

• Operação deminimização ouinclusão na lista deprioridades: O(log n);

• operação ⊕ requernúmero constante depassos;

• Total de n − 1iterações;

• Complexidade:O(n log n);

Page 86: Compactação de Dadosprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/huffm… · Algoritmo de Huffman Conjunto de símbolos: S = fs1;s2;:::;sng, n > 1; fi é frequência

Algoritmo de Huffman

1 huffman():2 para i ← 1 até n − 1 faça3 minimo(T ′, f ,F );4 minimo(T ′′, f ,F );5 T ← T ′ ⊕ T ′′;6 f (T )← f (T ′)⊕ f (T ′′);7 inserir(T , f ,F );

• Operação deminimização ouinclusão na lista deprioridades: O(log n);

• operação ⊕ requernúmero constante depassos;

• Total de n − 1iterações;

• Complexidade:O(n log n);

Page 87: Compactação de Dadosprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/huffm… · Algoritmo de Huffman Conjunto de símbolos: S = fs1;s2;:::;sng, n > 1; fi é frequência

Algoritmo de Huffman

1 huffman():2 para i ← 1 até n − 1 faça3 minimo(T ′, f ,F );4 minimo(T ′′, f ,F );5 T ← T ′ ⊕ T ′′;6 f (T )← f (T ′)⊕ f (T ′′);7 inserir(T , f ,F );

• Operação deminimização ouinclusão na lista deprioridades: O(log n);

• operação ⊕ requernúmero constante depassos;

• Total de n − 1iterações;

• Complexidade:O(n log n);

Page 88: Compactação de Dadosprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/huffm… · Algoritmo de Huffman Conjunto de símbolos: S = fs1;s2;:::;sng, n > 1; fi é frequência

Algoritmo de Huffman

1 huffman():2 para i ← 1 até n − 1 faça3 minimo(T ′, f ,F );4 minimo(T ′′, f ,F );5 T ← T ′ ⊕ T ′′;6 f (T )← f (T ′)⊕ f (T ′′);7 inserir(T , f ,F );

• Operação deminimização ouinclusão na lista deprioridades: O(log n);

• operação ⊕ requernúmero constante depassos;

• Total de n − 1iterações;

• Complexidade:O(n log n);

Page 89: Compactação de Dadosprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/huffm… · Algoritmo de Huffman Conjunto de símbolos: S = fs1;s2;:::;sng, n > 1; fi é frequência

Exercícios

1. Desenhar a árvore de Huffman para o seguinte conjuntode chaves e frequências, respectivamente na primeira esegunda linhas da tabela:s1 s2 s3 s4 s5 s6 s7 s81 6 2 1 1 9 2 3

2. A árvore fornecida pelo algoritmo de Huffman é única, ouseja, o algoritmo sempre fornecerá a mesma árvore?

Page 90: Compactação de Dadosprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/huffm… · Algoritmo de Huffman Conjunto de símbolos: S = fs1;s2;:::;sng, n > 1; fi é frequência

Bibliografia

SZWARCFITER, J. L. e MARKENZON, L. Estruturas de Dados eseus Algoritmos, LTC, 1994.

ZIVIANI, N. Projeto de Algoritmos: com implementações em Java eC++, 1a edição, Cengage Learning, 2009.

Page 91: Compactação de Dadosprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/huffm… · Algoritmo de Huffman Conjunto de símbolos: S = fs1;s2;:::;sng, n > 1; fi é frequência

Perguntas?