Файл: Методы кодирования данных (Общая информации о сжатии данных).pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 31.03.2023

Просмотров: 247

Скачиваний: 3

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

var leftBranch := new List<Node>;

var rightBranch := new List<Node>;

for var i:= 0 to nodes.Count - 1 do

begin

if (i <= m) then leftBranch.Add(nodes[i])

else rightBranch.Add(nodes[i]);

end;

if ((leftBranch.Count = 0) or (rightBranch.Count = 0)) then exit;

for var i:= 0 to _nodes.Count - 1 do

begin

if (contains(_nodes[i].Letter, leftBranch) = true) then

begin

var newNode: Node := (Letter: _nodes[i].Letter; Pi: _nodes[i].Pi; Code: _nodes[i].Code + '0');

_nodes[i] := newNode;

end;

if (contains(_nodes[i].Letter, rightBranch) = true) then

begin

var newNode: Node := (Letter: _nodes[i].Letter; Pi: _nodes[i].Pi; Code: _nodes[i].Code + '1');

_nodes[i] := newNode;

end;

end;

if (debug = true) then begin PrintNodes; readln(); end;

code(leftBranch, debug);

code(rightBranch, debug);

end;

public

constructor Create(filename: string);

begin

_nodes := new List<Node>;

_words := new List<string>;

readFile(filename);

end;

procedure PrintNodes;

begin

for var i:= 0 to _nodes.Count - 1 do

begin

writeFormat('Letter: {0, 3: s}', _nodes[i].Letter);

writeFormat(' Pi: {0, 10}', _nodes[i].Pi);

writeFormat(' Code: {0, 3: s}', _nodes[i].Code);

writeln;

end;

end;

procedure Code(debug: boolean);

begin

code(_nodes, debug);

end;

end;

begin

var s_f := new SF('data.txt');

s_f.code(false);

s_f.PrintNodes;

end.

Заключение

Благодаря изученных технологиям и алгоритмам сжатия данных удалось реализовать метод Шеннона-Фано, который строит префиксный код. Безусловно, данный метод является одним из наиболее простых, однако он позволяет понять более фундаментальные алгоритмы и тем самым оптимизировать дальнейшую разработку. Вместе с тем программирование данного метода закладывает список методов, подлежащих реализации в каждом практическом алгоритме сжатия данных, например:

  • чтение данных из внешнего файла;
  • построение вероятностей встречаемости символов;
  • кодирование;
  • отображение данных.

Несомненно, в мире существует множество интереснейших алгоритмов, которые позволяют как кодировать, так и сжимать информацию. необходимо понимать, что кодирование и сжатие – две разные вещи, в первом случае информация трансформируется, усложняя восприятие, а во втором – теряет свой объем, упрощая доступ к ней посредством более быстрой и оперативной загрузке. Тем самым можно сказать, что два данных действия схожи – оба преобразуют и конвертирую т информацию – однако вместе с тем они делают принципиально разные вещи.