Skip to main content
LibreTexts - Ukrayinska

4.5: Одиночні біти

  • Page ID
    29913
  • \( \newcommand{\vecs}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} } \) \( \newcommand{\vecd}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash {#1}}} \)\(\newcommand{\id}{\mathrm{id}}\) \( \newcommand{\Span}{\mathrm{span}}\) \( \newcommand{\kernel}{\mathrm{null}\,}\) \( \newcommand{\range}{\mathrm{range}\,}\) \( \newcommand{\RealPart}{\mathrm{Re}}\) \( \newcommand{\ImaginaryPart}{\mathrm{Im}}\) \( \newcommand{\Argument}{\mathrm{Arg}}\) \( \newcommand{\norm}[1]{\| #1 \|}\) \( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\) \( \newcommand{\Span}{\mathrm{span}}\) \(\newcommand{\id}{\mathrm{id}}\) \( \newcommand{\Span}{\mathrm{span}}\) \( \newcommand{\kernel}{\mathrm{null}\,}\) \( \newcommand{\range}{\mathrm{range}\,}\) \( \newcommand{\RealPart}{\mathrm{Re}}\) \( \newcommand{\ImaginaryPart}{\mathrm{Im}}\) \( \newcommand{\Argument}{\mathrm{Arg}}\) \( \newcommand{\norm}[1]{\| #1 \|}\) \( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\) \( \newcommand{\Span}{\mathrm{span}}\)

    Передача одного біта може здатися не важливою, але вона викликає деякі часто використовувані методи виявлення та виправлення помилок.

    Спосіб захисту одного біта полягає в тому, щоб відправити його не один раз, і очікувати, що частіше за все кожен відправлений біт буде незмінним. Найпростіший випадок - відправити його двічі. Таким чином повідомлення 0 замінюється на 00 і 1 на 11 канальним кодером. Потім декодер може викликати тривогу, якщо два біти різні (це може статися лише через помилку). Але є тонкий момент. Що робити, якщо є дві помилки? Якщо дві помилки трапляються на одному біті, то цей біт відновлюється до початкового значення, і це ніби не сталося жодної помилки. Але якщо дві помилки трапляються на різних бітах, то вони закінчуються однаковими, хоча і неправильними, і помилка невиявлена. Якщо помилок більше, то ймовірність невиявлених змін стає суттєвою (буде виявлено непарну кількість помилок, але парне число - ні).

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

    Тепер що можна зробити, щоб декодер міг виправити помилку, а не просто виявити її? Якщо відомо, що це не більше однієї помилки, і якщо один біт надсилається три рази, то декодер каналу може сказати, чи сталася помилка (якщо три біти не всі однакові), і він також може сказати, що вихідне значення було - використовуваний процес іноді називається «логікою більшості» (вибираючи залежно від того біт зустрічається найчастіше). Ця методика під назвою «потрійна резервування» може бути використана для захисту каналів зв'язку, пам'яті або довільних обчислень.

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

    Два важливих питання - наскільки ефективними та ефективними є ці методи. Що стосується ефективності, то зручно визначати швидкість коду як кількість бітів перед кодуванням каналу, розділене на число після кодера. Таким чином, швидкість коду знаходиться в межах від 0 до 1. Подвійне надмірність призводить до частоти коду 0,5, а потрійного надмірності 0,33. Що стосується ефективності, то якщо помилки дуже малоймовірні, може бути розумним ігнорувати ще більш малоймовірний випадок двох помилок, настільки близьких один до одного. Якщо так, потрійне резервування дуже ефективно. З іншого боку, деякі фізичні джерела помилок можуть знищити дані великими чергами (подумайте про фізичну подряпину на компакт-диску), і в цьому випадку одна помилка, навіть якщо малоймовірна, може супроводжуватися подібною помилкою на сусідніх бітах, тому потрійне надмірність не буде ефективною.

    Малюнки 4.2 та 4.3 ілюструють, як потрійне резервування захищає одиночні помилки, але може вийти з ладу, якщо є дві помилки.

    Знімок екрана 2021-05-02 о 12.47.50 PM.png
    Малюнок 4.2: Потрійне резервування каналу кодування і декодування корекції однієї помилки, для каналу, що вводить одну бітову помилку.
    Знімок екрана 2021-05-02 о 12.48.23 PM.png
    Малюнок 4.3: Потрійне резервування каналу кодування і декодування з однократною помилкою корекції, для каналу, що вводить дві бітові помилки.