Кодирование информации по Алгоритму Хаффмана (Huffman) C# Visual Studio

Учебная программа по алгоритму сжатия и восстановления информации (кодирования и декодирования данных) без потерь на C#.

Суть Алгоритма Хаффмана можно изложить так:
Считаем частоты символов – т.е. количество вхождений каждого символа в исходный текст. Для наиболее часто встречающихся символов назначаем сочетание бит (код) меньшего размера, а по мере уменьшения частот символов в тексте их код будет более длинным.

Для автоматизации подсчета частот символов и назначения кода оптимальной длины используется специальный математический аппарат:

  • создание очереди символов (сортированного списка)
  • создание очереди узлов дерева (каждый символ - это листок, т.е. конечный узел)
  • создание дерева Хаффмана
  • создание таблицы Хаффмана

Для выполнения задачи кодирования используется таблица Хаффмана, а для декодирования - дерево Хаффмана.

Задание:

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

Решение:

C# - работа алгоритма Хаффмана (Huffman) сжатия (кодирования) данных

По органам управления на форме все понятно. Одна кнопка вызывает «метод сжатия» Encode , а вторая обратный метод Decode (восстановление первоначального текста из архива).

Вот так выглядит обработчик события нажатия кнопки «Создание таблицы»:

private void button1_Click(object sender, EventArgs e) //создание таблицы
{
if(textBox1.Text!=""){
    //Строим дерево по строке для кодирования
    codeTree = new hTree(textBox1.Text);

    //Строим таблицу Хаффмана по этому дереву
    codeTable = new hTable(codeTree);   

    //заполнение textBox2 для наглядности
    textBox2.Text="";
foreach(tableNode tn in codeTable){
textBox2.Text=" '"+tn.symbol+"' - "+tn.code+"\r\n"+textBox2.Text;
}       
    }
    else {    MessageBox.Show( "Отсутствует строка для кодирования",    "Внимание!!!", MessageBoxButtons.OK, MessageBoxIcon.Error);
            textBox2.Text="";
        }
}

В файлах hQueue.cs, hTable.cs, hTree.cs содержатся все необходимые функции для обеспечения работы алгоритма.

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

скачать exe-файл для тестирования (C#)

Имеется проект с точно таким же интерфейсом, но на C++ Visual Studio .






Другие примеры на тему «Шифрование, Кодирование и/или Сжатие Информации»

Другие примеры на языке «C#»




Поделиться в соц сетях:




Если на этой странице не нашлось того, что Вы так искали...

         Не расстраивайтесь, не все потеряно... Смело щелкайте...

исходный код на заказ. orenstudent.ru Автоматизация документов MS Office. orenstudent.ru исходный код на заказ. orenstudent.ru Помогите найти и устранить ошибку в исходном коде программы. orenstudent.ru Skype-консультирование по программированию
Скайп-консультации

Акция !!!
исходный код комментарии цена минимальная


Сайт помощи студентам по программированию и информатике

Program code