Перевод Great Principles of Computing




В 1948 году Шеннон в своей «теории связи» предложил математическую модель связи. Её смысл в следующем.



Есть источник и есть приёмник. Источник отправляет сообщения, а приёмник принимает. Оба участника пользуются одинаковым словарем для кодирования и раскодирования сообщений.
Модель Шеннона применима к любой системе, которая кодирует, раскодирует, передает, хранит и получает сообщения. Так можно рассматривать природу как источник физических законов (сообщений), а процесс открытия этих законов — как канал связи (Dretske 1981).

Шум еще одна составляющая этой модели. Шум — то, что заставляет приёмник неверно истолковывать сообщения. Плохая видимость (туман и сумерки) нарушает семафорное сообщение между судами; вспышки молнии прерывают передачу радиоволн AM-частот; царапины на CD могут сделать его нечитаемым; множество посторонних шумов делают речь неразборчивой.

Стоит заметить, что кодирование в системах связи — не то же, что и шифрование секретных сообщений. Шифрование предполагает существование специального ключа: получить исходный текст сможет только тот, у кого есть этот ключ.

В своей модели Шеннон в качестве «словаря для кодирования» выбрал биты. Он утверждал, что любое сообщение может быть представлено в виде набора бит, т.e. в прямом смысле оцифровано, любая информация превращает в цифры, в набор нулей и единиц.

Любопытно посмотреть на то, как оцифровывать сообщения и что такое шум, на упрощенном примере.
Пусть источник может передавать только сообщения состоящие из 4 букв: A, B, C и D. Используем двухбитовые коды для обозначения этих букв:

A: 11
B: 10
C: 01
D: 00

Например, источник хочет сказать: «CAB». Этому сообщению соответствует код «011110». Источник отправляет этот набор бит в канал, а приёмник их получает и запускает обратный процесс: разбивает код на пары бит и сверяет со словарем.

Возникает вопрос: достаточно ли двух бит для кодирования этих букв? Естественно, что чем меньше бит требуется для этой цели — тем лучше: сообщения занимают меньше места, передаются быстрее. Однако, короткий код намного проще испортить, внеся даже небольшие искажения, которые привносит шум.

Например, если первый бит в букве A по каким-то причинам потеряется, мы получим 010110 — что соответствует CCB, а это полностью меняет смысл сообщения. Как быть?

Добавим дополнительный бит для каждой буквы (бит четности):

A: 110
B: 101
C: 011
D: 000

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

Если добавить еще несколько лишних битов, то это поможет приемнику не только выяснить где ошибка, но и восстановить исходный код:

A: 11111
B: 10010
C: 01001
D: 00100

Каждый код отличает от другого как минимум на 3 бита. Теперь испорченный бит показывает набор, который по-прежнему отличается от верного на один бит, но теперь он отличается на два или более битов от всех остальных в словаре! Соответственно, приёмник может легко «поправить» испорченное сообщение.

Инжерен связи Ричард Хемминг (Richard Hamming) впервые сформулировал правило, по которому можно определить достаточное «расстояние» между наборами бит. По Хеммингу, расстояние — это количество бит на которые отличаются наборы бит друг от друга. Теперь эта величина называется расстоянием Хемминга.

Хемминг понял, что для того, чтобы поправить k ошибок, достаточно чтобы расстояние Хемминга было равно 2^k — 1. Хемминг так же разработал семейство кодов (коды Хемминга), которые получаются добавлением битов четности к исходным кодам и создал схемы, которые позволяют легко получать исходные сообщения (с учетом исправления ошибок). Коды Хемминга широко используются при передаче сообщений от процессора к памяти компьютера.

Коды Хемминга хорошо работают, когда шум распределен случайным образом. Однако, в некоторых сигналах шум возникает периодически или на относительно длительное время. С этой задачей хорошо справляются другой тип кодов — коды Рида-Соломона (Reed-Solomon). С точки зрения математики, они более хитрые, однако и те и другие легко могут быть выполнены на интегральных схемах компьютера.
Поделиться с друзьями
-->

Комментарии (14)


  1. mwizard
    30.07.2016 14:36
    +7

    Не статья, а огрызок, извините.


    1. vitkarpov
      30.07.2016 15:00
      +1

      Перевод всего одной, небольшой, но законченной мысли. Думаете имеет смысл сделать больше?


      1. drakmail
        30.07.2016 15:03

        Тема интересная, написано очень понятно, но слишком мало =(


        1. mwizard
          30.07.2016 15:04

          Соглашусь. Вроде только настроился на чтение, объяснение теории, откуда берется лимит Шеннона, какие следствия модели Шеннона и тому подобное — и все, закончилось.


        1. vitkarpov
          30.07.2016 19:29

          Спасибо за обратную связь: если интересно, значит попробую перевести целую главу до конца


  1. andy_p
    30.07.2016 16:17
    +3

    По моему вы называете кодирование шифрованием.


    1. vitkarpov
      30.07.2016 19:31

      Да, действительно, спасибо. Кодирование — то самое слово.


    1. sav6622
      30.07.2016 20:07

      Однозначно, кодирование здесь.


    1. alexkunin
      30.07.2016 22:32

      Минут 20 искал исходник из-за такого же подозрения:

      At its essence is the following process: A source sends a message. An encoder generates a distinct signal for the message, as prescribed in a codebook. The channel is the medium that carries signals from the source to the receiver. A decoder on the receiver end converts the signals back to their original form, using the same codebook — and the message has arrived. Shannon's model applies to any system that encodes, decodes, transports, stores or retrieves signals or data. It also serves as a model of scientific discovery, treating it as the communication of previously unknown facts.


  1. deniskreshikhin
    30.07.2016 20:54
    +2

    Главная заслуга Шеннона не биты и байты какие-то, а то что он установил что любой аналоговый канал связи имеет ограниченную пропускную способность, подобно любому цифровому каналу. В общем это открытие повлияло не только на теорию связи, но и сильно повлияло на современную физику и математику.

    А цифровая передача данных возникла задолго до Шеннона, еще в начале 19 века.


  1. netcitizen
    30.07.2016 23:33
    +1

    Последний абзац, честно говоря, убивает. Складывается впечатление, что всего есть два типа кодирования: Хэмминга и Рида-Соломона.
    Может стоить начать повествование с классификации кодирования, чтобы разложить все по полочкам?


  1. Deosis
    02.08.2016 07:04

    Предпоследний тоже вводит в заблуждение. Достаточное расстояние равно 2*k+1.


  1. awfun
    02.08.2016 08:15

    2^k — 1 для k=1 получается 1, а в примере из статьи для исправления одной ошибки берётся расстояние в 3 бита. Можете добавить пример, иллюстрирующий эту формулу, пожалуйста?


    1. vitkarpov
      02.08.2016 08:15

      Посмотрю последние 2 абзаца еще раз и переведу немного дальше, там есть годные примеры.