/huffman

Repositório para o Projeto da Disciplina de Estruturas de Dados - Algoritmo de Huffman

Primary LanguageC

Projeto da disciplina de Estrutura de Dados 🎲 (2019.2) - Engenharia de Computação - UFAL

O projeto se divide em 4 módulos, sendo obrigatório o uso de Git.

  1. Seminário de um algoritmo ou estrutura de dados não vista em sala. Escolha do grupo: TRIE;
  2. Implementação do algoritmo de Huffman;
  3. Contagem e plotagem de comparações de duas estruturas vistas no curso. Escolha do grupo: Árvore desbalanceada vs AVL;
  4. Escrever Casos de Testes Unitários para TODAS as Estrutura de Dados do Huffman;

Seminário sobre Trie

  • Todo o conteúdo referente ao seminário encontra-se no repositório, mas também encontra-se hospedado no Google Docs

Codificação de Huffman

  • Programa em linguagem C para compressão e descompressão de arquivos, baseado no método da Codificação de Huffman

Configurações iniciais

  • Abra o CMD e encaminhe-se até o diretório onde se encontra o projeto.

    • $ cd .../.../huffman/2 - Huffman/
  • Digite o seguinte comando:

    • $ make
  • O programa será compilado e estará pronto para uso.

Execução do programa

  • Opções de comandos:

    • -c caminho do arquivo para comprimir.
    • -d caminho do arquivo para descomprimir.
    • -o caminho do arquivo após o -c ou -d, para escolher o local onde vai ser salvo o arquivo. (Opcional)
    • -h para informações.
  • Exemplo de comandos:

    • Geral:
      • $ ./huffman -opção caminho do arquivo opção caminho do arquivo
    • Informações:
      • $ ./huffman -h
Compressão Arquivo de saída Descompressão Arquivo de saída
$ ./huffman -c original.ṕng original.png.huff $ ./huffman -d original.png.huff original.png
$ ./huffman -c original.png -o compressed.huff compressed.huff ./huffman -d compressed.huff -o descompressed.png descompressed.png

Comparação das Estruturas

  • 👊 BST vs AVL 👊

Links úteis:

Configurações para testes

  • Clone o repositório para uma pasta local do seu computador.

  • Instale o Python.

    • Lembre-se de marcar a opção:
      • Add Python 3.X to PATH
  • Para a instalação das bibliotecas, digite o seguinte comando:

    • $ pip install numpy matplotlib
  • Abra o CMD e encaminhe-se até o diretório onde se encontra o projeto.

    • PS: Lembre-se de escolher um tipo de comparação (encaminhando-se até a pasta), por número ou por tamanho.
    • $ cd .../.../huffman/3 - Comparação Estruturas/
  • Para rodar os testes, e em seguida plotar o resultado, digite o seguinte comando:

    • $ bash ./compare_plot.sh

Testes Unitários para as Estrutura de Dados do Huffman

Configurações iniciais

  • A biblioteca CUnit deve ser instalada, para isso, digite o seguinte comando:

    • $ sudo apt-get install libcunit1 libcunit1-doc libcunit1-dev
  • Abra o CMD e encaminhe-se até o diretório onde se encontra o projeto.

    • $ cd .../.../huffman/4 - Testes/
  • Digite o seguinte comando para compilar o programa:

    • $ make
  • E por último, para executar os testes:

    • $ ./test