Movatterモバイル変換


[0]ホーム

URL:


Jump to content
WikipediaThe Free Encyclopedia
Search

Unary coding

From Wikipedia, the free encyclopedia
Entropy encoding

Unary coding,[nb 1] or theunary numeral system, is anentropy encoding that represents anatural number,n, withn ones followed by a zero (if the termnatural number is understood asnon-negative integer) or withn − 1 ones followed by a zero (if the termnatural number is understood asstrictly positive integer). A unary number's code length would thus ben + 1 with that first definition, orn with that second definition. Unary code when vertical behaves like mercury in athermometer that gets taller or shorter asn gets bigger or smaller, and so is sometimes calledthermometer code.[1] An alternative representation usesn orn − 1 zeros followed by a one, effectively swapping the ones and zeros,without loss of generality. For example, the first ten unary codes are:

Unary codeAlternativen (non-negative)n (strictly positive)
0101
100112
11000123
1110000134
111100000145
11111000000156
1111110000000167
111111100000000178
11111111000000000189
11111111100000000001910

Unary coding is anoptimally efficient[clarification needed] encoding for the following discreteprobability distribution[citation needed]

P(n)=2n{\displaystyle \operatorname {P} (n)=2^{-n}\,}

forn=1,2,3,...{\displaystyle n=1,2,3,...}.

In symbol-by-symbol coding, it is optimal for anygeometric distribution

P(n)=(k1)kn{\displaystyle \operatorname {P} (n)=(k-1)k^{-n}\,}

for whichk ≥ φ = 1.61803398879..., thegolden ratio, or, more generally, for any discrete distribution for which

P(n)P(n+1)+P(n+2){\displaystyle \operatorname {P} (n)\geq \operatorname {P} (n+1)+\operatorname {P} (n+2)\,}

forn=1,2,3,...{\displaystyle n=1,2,3,...}. Although it is the optimal symbol-by-symbol coding for such probability distributions,Golomb coding achieves better compression capability for the geometric distribution because it does not consider input symbols independently, but rather implicitly groups the inputs. For the same reason,arithmetic encoding performs better for general probability distributions, as in the last case above.

Unary coding is both aprefix-free code and aself-synchronizing code.

Unary code in use today

[edit]

Examples of unary code uses include:

  • InGolomb Rice code, unary encoding is used to encode the quotient part of the Golomb code word.
  • InUTF-8, unary encoding is used in the leading byte of a multi-byte sequence to indicate the number of bytes in the sequence so that the length of the sequence can be determined without examining the continuation bytes.
  • Instantaneously trained neural networks use unary coding for efficient data representation.

Unary coding in biological networks

[edit]

Unary coding is used in theneural circuits responsible forbirdsong production.[2][3] The nucleus in the brain of the songbirds that plays a part in both the learning and the production of bird song is the HVC (high vocal center). The command signals for different notes in the birdsong emanate from different points in the HVC. This coding works as space coding which is an efficient strategy for biological circuits due to its inherent simplicity and robustness.

Standard run-length unary codes

[edit]

All binary data is defined by the ability to represent unary numbers in alternating run-lengths of 1s and 0s. This conforms to the standard definition of unary i.e. N digits of the same number 1 or 0. All run-lengths by definition have at least one digit and thus representstrictly positive integers.

nRL codeNext code
110
21100
3111000
411110000
51111100000
6111111000000
711111110000000
81111111100000000
9111111111000000000
1011111111110000000000
...

These codes are guaranteed to end validly on any length of data (when reading arbitrary data) and in the (separate) write cycle allow for the use and transmission of an extra bit (the one used for the first bit) while maintaining overall and per-integer unary code lengths of exactly N.

Uniquely decodable non-prefix unary codes

[edit]

Following is an example ofuniquely decodable unary codes that is not aprefix code and is not instantaneously decodable (need look-ahead to decode)

nUnary codeAlternative
110
21001
3100011
410000111
51000001111
6100000011111
710000000111111
81000000001111111
9100000000011111111
1010000000000111111111
...

These codes also (when writing unsigned integers) allow for the use and transmission of an extra bit (the one used for the first bit). Thus they are able to transmit 'm' integers * N unary bits and 1 additional bit of information within m*N bits of data.

Symmetric unary codes

[edit]

The following symmetric unary codes can be read and instantaneously decoded in either direction:

Unary codeAlternativen (non-negative)n (strictly positive)
1001
001112
01010123
0110100134
011101000145
01111010000156
0111110100000167
011111101000000178
01111111010000000189
01111111101000000001910
...

Canonical unary codes

[edit]
See also:Canonical Huffman code

For unary values where the maximum is known, one can use canonical unary codes that are of a somewhat numerical nature and different from character based codes. The largestn numerical '0' or '-1' (2n1{\displaystyle \operatorname {2} ^{n}-1\,}) and the maximum number of digits then for each step reducing the number of digits by one and increasing/decreasing the result by numerical '1'.[clarification needed]

nUnary codeAlternative
110
20110
3001110
400011110
50000111110
6000001111110
700000011111110
80000000111111110
9000000001111111110
1000000000011111111110

Canonical codes canrequire less processing time to decode[clarification needed] when they are processed as numbers not a string. If the number of codes required per symbol length is different to 1, i.e. there are more non-unary codes of some length required, those would be achieved by increasing/decreasing the values numerically without reducing the length in that case.

Generalized unary coding

[edit]

A generalized version of unary coding was presented bySubhash Kak to represent numbers much more efficiently than standard unary coding.[4] Here's an example of generalized unary coding for integers from 0 through 15 that requires only 7 bits (where three bits are arbitrarily chosen in place of a single one in standard unary to show the number). Note that the representation is cyclic where one uses markers to represent higher integers in higher cycles.

nUnary codeGeneralized unary
000000000
1100000111
21100001110
311100011100
4111100111000
51111101110000
611111100010111
7111111100101110
81111111101011100
911111111100111001
10111111111101110010
111111111111100100111
1211111111111101001110
13111111111111100011101
141111111111111100111010
1511111111111111101110100

Generalized unary coding requires that the range of numbers to be represented to be pre-specified because this range determines the number of bits that are needed.

See also

[edit]

Notes

[edit]
  1. ^The equivalent to the term "unary coding" in German scientific literature is "BCD-Zählcode", which would translate into "binary-coded decimal counting code". This must not be confused with the similar German term "BCD-Code" translating toBCD code in English.

References

[edit]
  1. ^"University of Alberta Dictionary of Cognitive Science: Thermometer Code".www.bcp.psych.ualberta.ca. Retrieved2025-05-31.
  2. ^Fiete, I. R.; Seung, H. S. (2007). "Neural network models of birdsong production, learning, and coding". In Squire, L.; Albright, T.; Bloom, F.; Gage, F.; Spitzer, N. (eds.).New Encyclopedia of Neuroscience.Elsevier.
  3. ^Moore, J. M.; et al. (2011)."Motor pathway convergence predicts syllable repertoire size in oscine birds".Proc. Natl. Acad. Sci. USA.108 (39):16440–16445.Bibcode:2011PNAS..10816440M.doi:10.1073/pnas.1102077108.PMC 3182746.PMID 21918109.
  4. ^Kak, S. (2015). "Generalized unary coding".Circuits, Systems and Signal Processing.35 (4):1419–1426.doi:10.1007/s00034-015-0120-7.S2CID 27902257.
Lossless
type
Entropy
Dictionary
Other
Hybrid
Lossy
type
Transform
Predictive
Audio
Concepts
Codec
parts
Image
Concepts
Methods
Video
Concepts
Codec
parts
Theory
Community
People
Retrieved from "https://en.wikipedia.org/w/index.php?title=Unary_coding&oldid=1326303984"
Categories:
Hidden categories:

[8]ページ先頭

©2009-2026 Movatter.jp