Введение

коды коррекции ошибок
В информатике коды Raptor (быстрые торнадо; см. Коды торнадо) являются первым известным классом фонтанных кодов с кодированием и декодированием за линейное время. Они были изобретены Амином Шохроллахи в 2000/2001 году и впервые опубликованы в 2004 году в виде расширенного тезиса. Коды Raptor представляют собой значительное теоретическое и практическое улучшение по сравнению с кодами LT, которые были первым практическим классом фонтанных кодов. Коды Raptor, как и фонтанные коды в целом, кодируют заданный исходный блок данных, состоящий из k равноразмерных исходных символов, в потенциально неограниченную последовательность кодирующих символов, так что прием любых k или более кодирующих символов позволяет восстановить исходный блок с ненулевой вероятностью. Вероятность восстановления исходного блока увеличивается с ростом числа полученных кодирующих символов сверх k, приближаясь к 1, когда число полученных кодирующих символов лишь незначительно превышает k. Например, в кодах Raptor последнего поколения, RaptorQ, вероятность ошибки декодирования при получении k кодирующих символов составляет менее 1%, а при получении k+2 кодирующих символов – менее одного случая на миллион. (Более подробное обсуждение см. в разделе "Вероятность восстановления и избыточность" ниже.) Символ может быть любого размера – от одного байта до сотен или тысяч байт. Коды Raptor могут быть систематическими или несистематическими. В систематическом случае символы исходного блока, то есть исходные символы, включаются в набор кодирующих символов. Примерами систематических кодов Raptor являются их использование в проекте партнерства 3-го поколения для мобильного сотового беспроводного вещания и мультивещания, а также в стандартах DVB-H для IP-трансляции данных на портативные устройства (см. внешние ссылки). Коды Raptor, используемые в этих стандартах, также определены в IETF RFC 5053. Онлайн-коды являются примером несистематического фонтанного кода.

Код RaptorQ

Наиболее продвинутой версией Raptor является код RaptorQ, определённый в IETF RFC 6330. Код RaptorQ является систематическим кодом, может быть реализован для достижения линейной производительности кодирования и декодирования, обладает почти оптимальными свойствами восстановления (подробности см. в разделе «Вероятность восстановления и накладные расходы» ниже), поддерживает до 56 403 исходных символов и может поддерживать практически неограниченное количество кодирующих символов. Код RaptorQ, определённый в IETF RFC 6330, специфицирован как часть стандарта Next Gen TV (ATSC 3.0) для обеспечения высококачественной потоковой передачи видео (надёжного мобильного телевидения) и эффективной и надёжной доставки файлов вещания (передачи данных). В частности, код RaptorQ специфицирован в A/331: Signaling, Delivery, Synchronization, and Error Protection в стандарте ATSC 3.0 (см. Список стандартов ATSC для перечня частей стандарта ATSC 3.0). Next Gen TV (ATSC 3.0) выходит далеко за рамки традиционного телевидения, предоставляя широковещательный интернет и обеспечивая универсальные услуги доставки данных.

Обзор

Коды Raptor формируются путем конкатенации двух кодов. Код стирания с фиксированной скоростью, обычно с достаточно высокой скоростью, применяется как "предварительный код" или "внешний код". Этот предварительный код сам может быть конкатенацией нескольких кодов, например, в коде, стандартизированном 3GPP, код проверки четности высокой плотности, полученный из бинарной последовательности Грея, конкатенируется с простым регулярным кодом проверки четности низкой плотности. Другой вариант – конкатенация кода Хэмминга с кодом проверки четности низкой плотности. Внутренний код принимает результат операции предварительного кодирования и генерирует последовательность кодирующих символов. Внутренний код является разновидностью LT-кодов. Каждый кодирующий символ представляет собой XOR псевдослучайно выбранного набора символов из выхода предварительного кодирования. Количество символов, которые складываются по XOR для формирования кодирующего символа, выбирается псевдослучайным образом для каждого кодирующего символа в соответствии с определенным распределением вероятностей. Это распределение, а также механизм генерации псевдослучайных чисел для выборки из этого распределения и выбора символов для XOR, должны быть известны как отправителю, так и получателю. В одном из подходов каждый символ сопровождается идентификатором, который может быть использован в качестве начального значения для генератора псевдослучайных чисел для генерации этой информации, при этом отправитель и получатель используют один и тот же процесс. В случае несистематических кодов Raptor исходные данные, подлежащие кодированию, используются в качестве входных данных на этапе предварительного кодирования. В случае систематических кодов Raptor вход для этапа предварительного кодирования получается путем первоначального применения обратной операции кодирования, генерирующей первые k выходных символов, к исходным данным. Таким образом, применение обычной операции кодирования к полученным символам приводит к восстановлению исходных символов в качестве первых k выходных символов кода. Необходимо обеспечить, чтобы псевдослучайные процессы, генерирующие первые k выходных символов, создавали обратимую операцию.

Декодирование

Есть два возможных подхода к декодированию кодов Raptor. При конкатенированном подходе внутренний код декодируется первым с использованием алгоритма распространения убеждений, как это делается для кодов LT. Декодирование успешно, если эта операция восстанавливает достаточное количество символов, чтобы внешний код мог восстановить оставшиеся символы, используя алгоритм декодирования, подходящий для данного кода. При комбинированном подходе связи между символами, определяемые как внутренним, так и внешним кодами, рассматриваются как единый набор совместных уравнений, которые могут быть решены стандартными методами, обычно методом Гаусса.

Комплексность вычислений

Коды Raptor требуют время O(размер символа) для генерации кодирующего символа из исходного блока и время O(размер исходного блока) для восстановления исходного блока по крайней мере из k кодирующих символов.

Правовой статус

Qualcomm, Inc. опубликовала заявление о правах интеллектуальной собственности (ИС) для кода Raptor, описанного в IETF RFC 5053, и заявление о правах ИС для более продвинутого кода RaptorQ, описанного в IETF RFC 6330. Эти заявления соответствуют лицензионным обязательствам, которые Qualcomm, Inc. взяла на себя в отношении стандарта MPEG DASH. Стандарт MPEG DASH был внедрен широким кругом компаний, включая компании – членов DASH Industry Forum.