Можно ли построить алгоритм Хаффмана с символами «0» и «1»? - PullRequest
0 голосов
/ 28 декабря 2018

У меня есть массив с этим форматом:

P1
5 5
0 0 0 0 0
0 1 0 1 0
1 0 1 0 1
1 1 1 1 1
0 0 0 1 1

, и я хочу сжать этот массив по порядку, используя huffman.У меня вопрос, возможно ли это, потому что, когда я ищу по алгоритму Хаффмана, я нахожу только несколько символов и ничего подобного не делал.

Если это возможно, как бы я это сделал?

Я пробовал это:

def getBitString(file):
   file = open(ficheiro, "rb").read()
   string = ""
   for byte in file:
     print(byte)
     string+=format(byte,'08b')

   return string

Я только преобразовал файл в двоичный файл.Я думаю о проблеме, чтобы прогрессировать, но я застрял, мне нужна помощь

1 Ответ

0 голосов
/ 28 декабря 2018

Кодировка Хаффмана использует вероятность символов из алфавита внутри текста в безопасном месте при кодировании.Чтобы он работал, вам нужно иметь алфавит из более чем двух символов.Для двух символов потребуется 1 бит для хранения и 1 бит при кодировании.Это ничего не защитит.

С вашими примерами вы можете видеть каждую строку в виде символов.Но для кодирования Хаффмана есть и другое требование: персонажи должны повторяться, чем больше, тем лучше.Было бы только 5 неповторяющихся символов.

В вашем простом случае кодирования 25 битов кодирование Хаффмана не поможет.С гораздо большим количеством повторяющихся данных это может быть.

...