Унарное кодирования , [NB 1] или унарную систему счисления , а также иногда называют термометром код , является энтропийного кодирования , которая представляет собой натуральное число , п , с п те , за которым следует ноль (если натуральное число понимается как неотрицательное целое число ) или с n - 1 единицами, за которыми следует ноль (если натуральное число понимается как строго положительное целое ). Например, 5 представлен как 111110 или 11110. В некоторых представлениях используется n или n - 1 ноль, за которым следует единица. Единицы и нули взаимозаменяемы без потери общности . Унарное кодирование - это как код без префиксов, так и самосинхронизирующийся код .
n (неотрицательный) | п (строго положительный) | Унарный код | Альтернатива |
---|---|---|---|
0 | 1 | 0 | 1 |
1 | 2 | 10 | 01 |
2 | 3 | 110 | 001 |
3 | 4 | 1110 | 0001 |
4 | 5 | 11110 | 00001 |
5 | 6 | 111110 | 000001 |
6 | 7 | 1111110 | 0000001 |
7 | 8 | 11111110 | 00000001 |
8 | 9 | 111111110 | 000000001 |
9 | 10 | 1111111110 | 0000000001 |
Унарное кодирование - это оптимально эффективное кодирование для следующего дискретного распределения вероятностей
для .
При посимвольном кодировании он оптимален для любого геометрического распределения.
для которого k ≥ φ = 1,61803398879…, золотое сечение или, в более общем смысле, для любого дискретного распределения, для которого
для . Хотя это оптимальное посимвольное кодирование для таких распределений вероятностей, кодирование Голомба обеспечивает лучшую способность сжатия для геометрического распределения, поскольку оно не рассматривает входные символы независимо, а скорее неявно группирует входные данные. По той же причине арифметическое кодирование лучше работает для общих распределений вероятностей, как в последнем случае выше.
Сегодня используется унарный код [ править ]
Примеры использования унарного кода включают:
- В коде Голомба Райса унарное кодирование используется для кодирования частной части кодового слова Голомба.
- В UTF-8 унарное кодирование используется в ведущем байте многобайтовой последовательности, чтобы указать количество байтов в последовательности, так что длину последовательности можно определить без проверки байтов продолжения.
- Мгновенно обученные нейронные сети используют унарное кодирование для эффективного представления данных.
Унарное кодирование в биологических сетях [ править ]
Унарное кодирование используется в нейронных цепях, ответственных за воспроизведение пения птиц . [1] [2] Ядром мозга певчих птиц, которое играет роль как в обучении, так и в производстве пения птиц, является HVC ( высокий вокальный центр ). Командные сигналы для разных нот в пении птиц исходят из разных точек HVC. Это кодирование работает как пространственное кодирование, которое является эффективной стратегией для биологических цепей из-за присущей ему простоты и надежности.
Обобщенное унарное кодирование [ править ]
Обобщенная версия унарного кодирования была представлена Субхашем Каком для представления чисел гораздо более эффективно, чем стандартное унарное кодирование. [3] Вот пример обобщенного унарного кодирования для целых чисел от 1 до 15, для которого требуется всего 7 бит (где три бита произвольно выбираются вместо одного в стандартном унарном для отображения числа). Обратите внимание, что представление является циклическим, где маркеры используются для представления более высоких целых чисел в более высоких циклах.
п | Унарный код | Обобщенный унарный |
---|---|---|
0 | 0 | 0000000 |
1 | 10 | 0000111 |
2 | 110 | 0001110 |
3 | 1110 | 0011100 |
4 | 11110 | 0111000 |
5 | 111110 | 1110000 |
6 | 1111110 | 0010111 |
7 | 11111110 | 0101110 |
8 | 111111110 | 1011100 |
9 | 1111111110 | 0111001 |
10 | 11111111110 | 1110010 |
11 | 111111111110 | 0100111 |
12 | 1111111111110 | 1001110 |
13 | 11111111111110 | 0011101 |
14 | 111111111111110 | 0111010 |
15 | 1111111111111110 | 1110100 |
Обобщенное унарное кодирование требует, чтобы диапазон представляемых чисел был предварительно определен, потому что этот диапазон определяет количество необходимых битов.
См. Также [ править ]
Заметки [ править ]
- ^ Эквивалент термина «унарное кодирование» в немецкой научной литературе - « BCD-Zählcode », что переводится как « двоично-кодированный десятичный счетный код». Его не следует путать с аналогичным немецким термином « BCD-Code », переводящимся в BCD-код на английском языке.
Ссылки [ править ]
- ^ Fiete, IR; Сын, HS (2007). «Нейросетевые модели производства, обучения и кодирования птичьего пения». In Squire, L .; Олбрайт, Т .; Блум, Ф .; Gage, F .; Спитцер, Н. (ред.). Новая энциклопедия неврологии . Эльзевир .
- ^ Мур, JM; и другие. (2011). «Конвергенция моторных путей предсказывает размер репертуара слогов у осетровых птиц» . Proc. Natl. Акад. Sci. США . 108 (39): 16440–16445. DOI : 10.1073 / pnas.1102077108 . PMC 3182746 . PMID 21918109 .
- ^ Как, С. (2015). «Обобщенное унарное кодирование». Схемы, системы и обработка сигналов . 35 (4): 1419–1426. DOI : 10.1007 / s00034-015-0120-7 .