Какие методы можно использовать для кодирования данных по одностороннему каналу с потерями?

Я записал простую обертку [приблизительно 111], что можно использовать как это:

git export ~/the/destination/dir

, Если целевой каталог уже существует, необходимо будет добавить -f или --force.

Установка проста; просто отбросьте сценарий где-нибудь в Вашем PATH и удостоверьтесь, что это - исполняемый файл.

репозиторий GitHub для git-export

5
задан Ben 6 February 2013 в 22:12
поделиться

9 ответов

В зависимости от некоторых деталей, которые вы не предоставляете о своем канале с потерями, Я бы порекомендовал сначала использовать код Грея , чтобы гарантировать, что однобитовые ошибки приводят к небольшим различиям (чтобы удовлетворить ваше желание уменьшения потерь при передаче с потерями), а затем, возможно, также закодировать полученный поток с некоторыми " без потерь "(== пытается кодировать без потерь ;-).

Рид-Соломон и его варианты особенно хороши, если ваши шумовые эпизоды имеют тенденцию происходить небольшими всплесками (несколько битовых ошибок, скажем, в одном байте), которые должны хорошо взаимодействовать с кодированием Грея (так как много- битовые ошибки убивают аспект «уменьшения потерь» Грея, предназначенный для постепенного снижения однобитовых ошибок в сети). Это потому, что RS по сути является блочной схемой, и множественные ошибки в одном блоке в основном такие же, как и одна ошибка в нем, с точки зрения RS; -).

RS особенно хорош, если многие из ошибок ] erasures - проще говоря, стирание - это символ, который, скорее всего, был искажен при передаче, НО для которого вы ДЕЙСТВИТЕЛЬНО знаете решающий факт, что он БЫЛ искажен. Физический уровень, в зависимости от того, как он » спроектирован, часто может иметь подсказки об этом факте, и если есть способ информировать более высокие уровни, это может оказать решающую помощь. Позвольте мне объяснить, подчистки немного ...:

Say для упрощенного примера, что 0 посылается как уровень -1 вольт и 1, посылают как уровень +1 вольт (WRT некоторой опорной волны), но есть шум (физический шум часто можно хорошо смоделировать, спросите любого грамотного инженера по коммуникациям ;-); в зависимости от модели шума декодирование может заключаться в том, что что-либо -0,7 В и ниже считается 0 битом, все +0,7 В и выше считается 1 битом, все промежуточное считается стиранием, т. е. сообщается более высокому уровню что рассматриваемый бит, вероятно, был искажен при передаче и поэтому его следует игнорировать. (Иногда я привожу это как один из примеров своего тезиса о том, что иногда абстракции ДОЛЖНЫ «просачиваться»

9
ответ дан 18 December 2019 в 06:51
поделиться

Этот вопрос является предметом теории кодирования .

4
ответ дан 18 December 2019 в 06:51
поделиться

Вероятно, одним из наиболее известных методов является использование кода Хэмминга . Возможно, это не лучший способ исправления ошибок в больших масштабах, но его невероятно просто понять.

3
ответ дан 18 December 2019 в 06:51
поделиться
  • Используется избыточная кодировка в оптическом носителе , который может восстанавливать потерю битов.
    • ECC также используется в жестких дисках и RAM
  • Протокол TCP может обрабатывать довольно большие потери данных при повторных передачах.
2
ответ дан 18 December 2019 в 06:51
поделиться

Вы можете использовать коды Рида-Соломона .

1
ответ дан 18 December 2019 в 06:51
поделиться

См. Также Протокол скользящего окна (который используется TCP).

Хотя это включает в себя работу с переупорядоченными или полностью потерянными пакетами, что не было часть вашего определения проблемы.

1
ответ дан 18 December 2019 в 06:51
поделиться

Либо Турбо-коды , либо Коды проверки четности с низкой плотностью для общих данных, поскольку они ближе всего подходят к пределу Шеннона - см. Википедию.

2
ответ дан 18 December 2019 в 06:51
поделиться

Как говорит Алекс Мартелли, в мире существует множество теорий кодирования, но коды Рида-Соломона определенно являются приятным местом. Если вы действительно хотите что-то построить, Джим Планк написал хороший учебник по кодированию Рида-Соломона . Планк профессионально интересуется программированием и имеет большой практический опыт, подтверждающий это.

1
ответ дан 18 December 2019 в 06:51
поделиться

Я бы воспользовался некоторыми из этих предложений, за которыми следует несколько отправок одних и тех же данных. Таким образом, вы можете надеяться на появление различных ошибок в разных точках потока, и вы сможете намного проще определить желаемое число.

0
ответ дан 18 December 2019 в 06:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: