Convolutional codes where ending state equals starting state, eliminating rate loss from tailing bits. Used in 802.11 WiFi, LTE control channels, satellite communications. No zero-padding needed. Circular trellis structure. Viterbi decoding starts from all possible initial states. Achieves full rate without truncation.
| Property | Value |
|---|---|
| Category | Error Correction |
| Sub-category | Convolutional Code |
| Security status | π Educational Only |
| Complexity | Advanced |
| Inventor | Howard Ma, Jack Wolf |
| Year | 1986 |
| Origin | πΊπΈ United States |
| Source | algorithms/ecc/tail-biting-convolutional.js |
Status: π Educational Only
| Issue | Description | Mitigation |
|---|---|---|
| Decoding Complexity | Must try all possible starting states in Viterbi decoding. Complexity is S times standard Viterbi, where S is number of encoder states. For K=3 (4 states), overhead is 4x. | β |
| Short Block Performance | Tail-biting advantage diminishes for long blocks where rate loss from tailing bits becomes negligible. Most beneficial for blocks of 40-500 bits. Longer blocks should use zero-termination. | β |
| Synchronization | Requires proper frame synchronization. Block boundaries must be known precisely or tail-biting constraint will be violated, causing significant performance degradation. | β |
4 vectors ship with this algorithm and run in the test suite. Byte values are hexadecimal.
Vector 1 β Tail-biting K=3 all zeros (state 00->00)
| Field | Value |
|---|---|
input |
00000000 |
expected |
0000000000000000 |
Vector 2 β Tail-biting K=3 pattern 1100 (state 00->00)
| Field | Value |
|---|---|
input |
01010000 |
expected |
0101000100010101 |
Vector 3 β Tail-biting K=3 pattern 0110 (state 10->10)
| Field | Value |
|---|---|
input |
00010100 |
expected |
0101010100010001 |
Vector 4 β Tail-biting K=3 pattern 1001 (state 01->01)
| Field | Value |
|---|---|
input |
01000001 |
expected |
0001000101010101 |