Префиксный метод кодирования текстовой информации на основании остатка от частоты использования символа
Сегедин Руслан Адольфович
кандидат технических наук, доцент , г. Санкт-Петербург, Россия, Segedin_R_A@mail.ru
АННОТАЦИЯ_
Введение: в настоящее время существует множество методов кодирования информации. Одними из наиболее часто используемых префиксных кодов являются коды Хаффмана и Шеннона - Фано. Коды учитывают частоту появления символов в тексте. Те символы, которые наиболее часто используются в тексте, имеют более короткую кодировку. При этом эти коды имеют общий недостаток. Отсутствует помехозащищенность (сигнализация об ошибке и исправление этой ошибки). Цель синтеза: разработка помехозащищенного кода подобного коду Хаффмана или коду Шеннона - Фано (это дает увеличение точности и достоверности информации). Метод: предполагаемый метод относится к области методов кодирования текстовой информации кодами, у которых длина кода и алгоритм кодирования зависит от частоты использования символов. Каждый символ имеет свою уникальную кодировку, и эта кодировка указывает, сколько раз встречается в тексте этот символ. Причем, для исключения повторяемости кодировки, используется следующее правило. Сначала, подсчитывается общее количество символов в тексте (сколько раз используется каждый символ, суммируется количество по всем символам). Затем, ранжируются символы по правилу увеличения количества раз использования (от наименьшего использования до максимального использования). Третий шаг, получение уникального числа для каждого символа (поочередно, от общего количества всех символов отнимают количество раз использования конкретного символа). Эта операция выполняется для всех символов, итогом этих операций «нуль» для самого часто встречаемого символа. Следующим шагом является представление уникальных относительно друг друга десятичных чисел каждого символа в двоичной форме. Причем, наиболее редкие символы будут представлены большим количеством бит, наиболее часто используемые символы - меньшим количеством бит. Эта комбинация представления символов в двоичном коде будет иметь уникальный вид для каждого символа. После этого составляется кодовое дерево. Далее следует выполнить анализ на наличие свойств префиксности кодировок символов. Под пре-фиксностью понимается отсутствие символов в узлах кодового дерева. Все символы находятся на концах ветвей кодового дерева. В случае отсутствия префиксности (символ находится в узле кодового дерева) вводятся изменение в кодировку данного символа. Предлагается дополнять нулями слева битовую кодировка этого символа, тем самым обеспечивается перенос символа на конец ветви с одновременным сохранением веса битовой последовательности. Далее, предлагается кодировка текста по данному коду. После чего, следует передача общего количества раз использования всех символов (для проверки и раскодировки), затем передается сама кодировка символов по одному, и наконец, передача кодированного сообщения. После этого, приемное устройство выполняет проверку принятого сообщения. Подсчитывается количество раз использования всех символов. Выполняется операция по ранжированию и по определению остатка от общей суммы (операция аналогичная операции при формировании кода). Затем производится перевод в двоичный код и сравнение с кодом каждого символа. В случае совпадения количества раз использования, т.е. в случае совпадения кодировок принимается, что отсутствуют сбои в передаче сигналов. Данная кодировка является сигнализирующей о сбойных вариантах передачи. Предложенный код обладает информацией об ошибках в передаче символов за счет алгоритма формирования самого кода символа, в котором заложена информация количества символов в передаваемом тексте. Результаты: приведены на примере кодирования текстовой информации из 8 символов. Проведены исследования зависимости средней длины кода от количества символов в тексте. Средняя длина кода в 3-5 раз увеличена по сравнению с кодом Шеннона-Фано. Проведен статистический анализ ошибок кода. Результаты аналогичны статистическому анализу ошибок кода Шеннона-Фано. Таким образом, результаты показали, что данным преимуществом сигнализации о сбое предлагаемый код стал обладать за счет увеличения общей длины кода. В данном направлении ликвидации недостатка необходимы дальнейшие исследования.
КЛЮЧЕВЫЕ СЛОВА: алфавит; код; кодирование; ошибки.
Введение
Предполагаемый метод относится к области методов кодирования текстовой информации кодами, у которых длина кода и алгоритм кодирования зависит от частоты использования символов.
Метод
Причем каждая кодировка уникальна для каждого текста. Т.е. при кодировании учитывается количество использования символа в тексте. Каждый символ имеет свою уникальную кодировку, и эта кодировка указывает, сколько раз встречается в тексте этот символ. Причем, для исключения повторяемости кодировки, используется следующее правило. Сначала, подсчитывается общее количество символов в тексте (сколько раз используется каждый символ, суммируется количество по всем символам). Затем, ранжируются символы по правилу увеличения количества раз использования (от наименьшего использования до максимального использования). Третий шаг, получение уникального числа для каждого символа (поочередно, от общего количества всех символов отнимают количество раз использования конкретного символа). Эта операция выполняется для всех символов, итогом этих операций «нуль» для самого часто встречаемого символа. Следующим шагом является представление уникальных относительно друг друга десятичных чисел каждого символа в двоичной форме. Причем, наиболее редкие символы будут представлены большим количеством бит, наиболее часто используемые символы - меньшим количеством бит. Эта комбинация представления символов в двоичном коде будет иметь уникальный вид для каждого символа. После этого составляется кодовое дерево. Далее следует выполнить анализ на наличие свойств префикс-ности кодировок символов. Под префиксностью понимается отсутствие символов в узлах кодового дерева. Все символы находятся на концах ветвей кодового дерева. В случае отсутствия префиксности (символ находится в узле кодового дерева) вводятся изменение в кодировку данного символа. Предлагается дополнять нулями слева битовую кодировка этого символа, тем самым обеспечивается перенос символа на конец ветви с одновременным сохранением веса битовой последовательности. Далее, предлагается кодировка текста по данному коду. После чего, следует передача общего количества раз использования всех символов (для проверки и раскодировки), затем передается сама кодировка символов по одному, и наконец, передача кодированного сообщения. После этого, приемное устройство выполняет проверку принятого сообщения. Подсчитывается количество раз использования всех символов. Выполняется операция по ранжированию и по определению остатка от общей суммы (операция аналогичная операции при формировании кода). Затем производится перевод в двоичный код и сравнение с кодом каждого символа. В случае совпадения количества раз использования, т.е. в случае совпадения кодировок принимается, что отсутствуют сбои в передаче сигналов. Данная кодировка является сигнализирующей о сбойных вариантах передачи.
Прототипом предполагаемого алгоритма является алгоритм кодирования методом Шеннона-Фано [1,2,3,4]. Алгоритм Шеннона— Фано — один из первых алгоритмов сжатия, который впервые сформулировали американские учёные Клод Шеннон и Роберт Фано. Алгоритм использует коды переменной длины: часто встречающийся символ кодируется кодом меньшей длины, редко встречающийся — кодом большей длины. Коды Шеннона — Фано — префиксные, то есть никакое кодовое слово не является префиксом любого другого [5,6,7]. Это свойство позволяет однозначно декодировать любую последовательность кодовых слов
[8-17]. Метод предлагаемого кодирования включает алгоритм получения кода - это, прежде всего, формирование двоичного кода остатка от общего количества использования символов.
Пример. Рассмотрим кодирование на конкретном примере.
Рассмотрим задачу полностью. Пусть дан текст. Анализ текста определяет количество символов в тексте (см. второй столбец табл. 1). Например, буква А встречается 36 раз в тексте, буква Б встречается 24 раза в тексте, буква В встречается 12 раз в тексте, и так далее. Далее определяется разница обратного расчета, для определения уникального кода каждой буквы исходя из количества встречаемости этой буквы (см. третий и четвертый столбец табл.1). Далее в табл.2 выполнена запись с группировкой по разрядам. Данное представление дает возможность сформировать дерево кодов.
Таблица 1. Пример получения предлагаемого кода
Наименование символов Кол-во символов в тексте, шт Количество символов - остаток от разницы, шт Двоичный код количества символов - остаток от разницы
А 36 36-36=0 0
Б 24 60-24=36 100100
В 12 72-12=60 111100
Г 5 77-5=72 1001000
Д 5 82-5=77 1001101
Е 1 83-1=82 1010010
Ж 1 84-1=83 1010011
З 1 85-1=84 1010100
Всего 85 85
Таблица 2. Запись по группам разрядов примера
Буквы примера Первый разряд (старший) Второй разряд Третий разряд Четвертый разряд Пятый разряд Шестой разряд Седьмой разряд (младший)
А 0
Г 1 0 0 0000
Б 1 0 0 1 00
Д 1 0 0 1 101
Е 1 0 1 0 0 1 0
Ж 1 0 1 0 0 1 1
З 1 0 1 0 100
В 1 1100
В рассмотренном примере формируется префиксное дерево кода (рис.1)
Г БД З ЕЖ
00
101
Д
Ж
Рис.1. Дерево кода.
После получения кодовых выражений для символов выполняется кодировка текста. Например, выполним кодирование текста из набора букв АБВГДЕЖЗ (таблица 3).
После получения полного текста приемный абонент проверяет правильность пришедшего кода текста путем проверки на количество появления букв (за счет кодирования остатков в двоичном коде). В случае совпадения кодировки букв с количеством раз использования данных букв делается вывод об идентичности текстов (отсутствии ошибок).
В случае сбоя в передаче сигналов, например, по причине влияния помех среды распространения сигналов, данное соотношение не выполняется.
Данный код - самосигнализирующий на наличие ошибок.
Возможно и исправление ошибок в случае ошибок в одном коде. В случае ошибок в двух и более кодах возникает проблема по распознаванию буквы. К какой букве относится данная ошибочная комбинация.
0
Б
Е
Кроме этого, возможны случаи перекодировки двух букв одна в другую из-за ошибок. Если количество этих букв одинаково, то данная ошибка также нераспознаваема.
Таблица 3. Кодирование текста.
Наименование символов Кол-во символов в тексте, шт Текст, код текста
А 36 АААААААААААААААААААААААААААААА АААБББББББББББББББББББББВВВВВВВВВВВ 00000000000000000010000000000000000010010010 01001001001001001001001001001001001001001001 00100100100100100100100100110011001100110011 00110011001100110011001100110010000001000000 10000010000010000010100010101000111010100
Б 24
В 12
Г 5
Д 5
Е 1
Ж 1
З 1
Всего 85
Исследования
Проведены исследования данного алгоритма кодирования (таблица 4). Таблица 4. Таблица соответствия количества букв и длины кодовой комбинации.
Количество одинаковых букв в тексте Общее количество букв Максимальная длина кодовой комбинации
8 85 8
26 340 17
33 520 28
50 1220 54
Кроме этого выполнен статический анализ кода на основе программного обеспечения кода.
Статический анализ кода (англ. static code analysis) - анализ программного обеспечения, производимый (в отличие от динамического анализа) без реального выполнения исследуемых программ. В большинстве случаев анализ производится над версией исходного кода текста. Термин обычно применяют к анализу, производимому специальным программным обеспечением (ПО), тогда как ручной анализ называют «program understanding», «program comprehension» (пониманием или постижением программы).
В зависимости от используемого инструмента глубина анализа может варьироваться от определения поведения отдельных операторов до анализа, включающего весь имеющийся исходный код. Способы использования полученной в ходе анализа информации также различны - от выявления мест, возможно содержащих ошибки (утилиты типа Lint), до фор-
мальных методов, позволяющих математически доказать какие-либо свойства программы (например, соответствие поведения спецификации).
Статический анализ показал возможные количество возможных ошибок и вес данных ошибок (таблица 5).
Таблица 5. Статический анализ ошибок кода
Количество одинаковых букв в тексте Общее количество букв Количество возможных ошибок Вес данных ошибок
8 85 3 0,01
26 340 9 0.2
33 520 12 0,4
50 1220 16 0,54
Таким образом, предлагается использовать отличный метод кодирования. Данный метод кодирования позволяет выполнять проверку принятого текста на наличии ошибки в принятых символах.
Задачей данного метода является устранение недостатка кода Шеннона-Фано [18-20]. А именно невозможность анализа о наличии ошибки в переданном тексте. Предлагаемый код обладает данным качеством.
Заключение
Таким образом, предложенный код обладает информацией об ошибках в передаче символов за счет алгоритма формирования самого кода символа, в котором заложена информация частоты использования символа.
Литература
1. Блинова И.В., Попов И.Ю. Теория информации. СПб: Университет ИТМО, 2018. 84 с.
2. М. Вернер Основы кодирования. М.: Техносфера, 2017. 288 с.
3. Гуменюк, А. С. Теория информации и кодирования / А.С. Гуменюк, Н.Н. Поздниченко ; Ми-нобрнауки России, ОмГТУ. Омск: Изд-во ОмГТУ, 2016. 164 с.
4. Мотовилова О.В. Основы теории информации. Ростов н/Д: Изд-во РДГТУ, 2018. 95 с.
5. Литвинская О.С., Чернышев Н.И. Основы теории передачи информации. М.:КНОРУС, 2017. 168 с.
6. Грошев А. С. Информатика. Архангельск, Ар-ханг. гос. техн. ун-т, 2018. 470 с.
7. КолмогоровА.Н. Теория информации и теория алгоритмов. М.: Наука, 1987. 324 с.
8. Мазур, М. Качественная теория информации : [пер. с польск.]. М. : Мир, 2019. 240 с
9. Шеннон, К. Работы по теории информации и кибернетике : [пер. с англ.] / К. Шеннон. М. : Изд-во иностранной лит-ры, 1963. 829 с.
10. Штарьков Ю. М. Универсальное кодирование. Теория и алгоритмы. М.: ФИЗМАТЛИТ, 2019. 288 с.
11. https://ru.wikipedia.org/wiki/Семантическая информация
12. Гошин Е. В. Теория информации и кодирования. Самара: Изд-во Самарского университета, 2018. 124 с.
13.Arndt, C. Information Measures, Information and its Description in Science and Engineering / C. Arndt. Springer Series: Signals and Communication Technology, 2015. 603 p.
14. Cover, T. Elements of information theory (2-nd ed.) / T. Cover, J.A. Thomas. New York: Wiley-Interscience, 2016. 776 p.
15. MacKay, D.J.C. Information Theory, Inference, and Learning Algorithms. Cambridge: Cambridge University Press, 2019. 640 p.
16. McEliece, R. The Theory of Information and Coding. Cambridge, 2017. 410 p.
17. Yeung, R.W. A First Course in Information. Theory Kluwer Academic/Plenum Publishers, 2018. 431 p.
18. Скляр, Б. Цифровая связь. Теоретические основы и практическое применение . 2-е изд., испр.; пер. с англ. М.: Издательский дом "Вильямс", 2016. 1104 с.
19.ДмитриевВ.И. Прикладная теория информации. М.: Высшая школа, 2018. 320 с
20. Чикрин Д.Е. Теория информации и кодирования. Казань: Казанский университет, 2016. 116 с.
PREFIX METHOD FOR ENCODING TEXT INFORMATION BASED ON FREQUENCY REMAINING SYMBOLS
RUSLAN A. SEGEDIN,
Ph.D., associate professor Federal State Budgetary Educational Institution
of Higher Education "St. Petersburg State University of Civil Aviation, St-Petersburg:
Russia,Segedin_R_A@mail.ru
ABSTRACT
Introduction: currently, there are many methods of encoding information. One of the most commonly used prefix codes are the Huffman and Shannon-Fano codes. The codes take into account the frequency of occurrence of characters in the text. Those characters that are most often used in the text have a shorter encoding. At the same time, these codes have a common drawback. There is no noise immunity (error signaling and correction of this error). The purpose of the synthesis is to develop a noise-proof code similar to the Huffman code or the Shannon-Fano code (this gives an increase in the accuracy and reliability of information).Method: the proposed method relates to the field of methods for encoding textual information with codes, in which the length of the code and the coding algorithm depend on the frequency of use of characters. Each character has its own unique encoding, and this encoding indicates how many times this character occurs in the text. Moreover, to exclude the repeatability of the encoding, the following rule is used. First, the total number of characters in the text is calculated (how many times each character is used, the number of all characters is summed up). Then, the symbols are ranked according to the rule of increasing the number of times of use (from least use to maximum use). The third step is getting a unique number for each character (alternately, the number of times a particular character is used is taken away from the total number of all characters). This operation is performed for all characters, the result of these operations is "zero" for the most frequently encountered character. The next step is to represent the unique relative decimal numbers of each character in binary form. Moreover, the most rare characters will be represented by a large number of bits, the most frequently used characters - by a smaller number of bits. This combination of character representation in binary code will have a unique look for each character. After that, a code tree is compiled. Next, an analysis should be performed for the presence of prefix properties of character encodings. Prefix refers to the absence of characters in the nodes of the code tree. All characters are located at the ends of the branches of the code tree. If there is no prefix (the symbol is located in the node of the code tree), a change in the encoding of this symbol is introduced. It is proposed to supplement the bit encoding of this symbol with zeros on the left, thereby ensuring the transfer of the symbol to the end of the branch with the simultaneous preservation of the weight of the bit sequence. Next, the encoding of the text according to this code is proposed. After that, the total number of times all characters are used (for verification and decoding) is transmitted, then the character encoding itself is transmitted one by one, and finally, the encoded message is transmitted. After that, the receiving device checks the received message. The number of times all characters are used is counted. An operation is performed to rank and determine the balance of the total amount (an operation similar to the operation when forming the code). Then it is translated into binary code and compared with the code of each character. In case of coincidence of the number of times of use, i.e. in case of coincidence of encodings, it is assumed that there are no failures in signal transmission. This encoding is signaling about faulty transmission options. The proposed code has information about errors in the transmission of symbols due to the algorithm for the formation of the symbol code itself, which contains information about the number of characters in the transmitted text. The results are given by the example of encoding text information of 8 characters. Studies of the dependence of the average length of the code on the number of characters in the text have been carried out. The average length of the code is 3-5 times longer than the Shannon-Fano code. A statistical analysis of code errors was carried out. The results are similar to the statistical analysis of Shannon-Fano code errors. Thus, the results showed that the proposed code began to have this advantage of failure signaling due to an increase in the total length of the code. Further research is needed in this direction of eliminating the shortage.
Keywords: alphabet; code; coding; errors; prefix.
REFERENCES
1. Blinova I.V., Popov I.Yu. Information theory. St. Petersburg: ITMO University, 2018. 84 p.
2. M. Werner. Fundamentals of coding. M.: Technosphere, 2017. 288 p.
3. Gumenyuk, A. S. Theory of information and coding. Ministry of Education and Science of Russia, OmSTU. Omsk: Publishing house of OmSTU, 2016. 164 p.
4. Motovilova O.V. Fundamentals of information theory. Rostov n/A: Publishing house of RDSTU, 2018. 95 p.
5. Litvinskaya O.S., Chernyshev N.I. Fundamentals of the theory of information transmission. M.:KNORUS, 2017. 168 p.
6. Groshev A. S. Informatics. Arkhangelsk, Arhang. state Technical University. un-t, 2018. 470 p.
7. Kolmogorov A.N. Information theory and theory of algorithms. M.: Nauka, 1987. 324 p.
8. Mazur, M. Qualitative theory of information : [trans. from Polish.]. M. Mir, 2019. 240 p.
9. Shannon, K. Works on information theory and cybernetics: [trans. from English]. M.Publishing House of Foreign Literature, 1963. 829 p.
10. Shtarkov Yu. M. Universal coding. Theory and algorhythms. M.: FIZMATLIT, 2019. 288 p.
11. https://ru.wikipedia.org/wiki/Semantic information
12. Goshin E. V. Theory of information and coding. Samara: Publishing House of Samara University, 2018. 124 p.
13. Arndt, C. Information Measures, Information and its Description in Science and Engineering. Springer Series: Signals and Communication Technology, 2015. 603 p.
14. Cover, T., Elements of information theory (2nd ed.). New York: Wiley Interscience, 2016. 776 p.
15. MacKay, D. J. C. Information Theory, Inference, and Learning Algorithms. Cambridge: Cambridge University Press, 2019. 640 p.
16. McEliece, R. The Theory of Information and Coding. Cambridge, 2017. 410 p.
17. Yeung, R.W. A First Course in Information. Theory Kluwer Academic/Plenum Publishers, 2018. 431 p.
18. Sklyar, B. Digital Communication. Theoretical foundations and practical application. M.: Publishing house "Williams", 2016. 1104 p.
19. Dmitriev V.I. Applied information theory. M.: Higher school, 2018. 320 p.
20. Chikrin D.E. Theory of information and coding. Kazan: Kazan University, 2016. 116 p.