Корректирующий код

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

Основная техника — добавление при записи (передаче) в полезные данные специальным образом структурированной избыточной информации (например, контрольного числа), а при чтении (приёме) использование такой избыточной информации для обнаружения и исправления ошибки. Число ошибок, которое можно исправить, ограничено и зависит от конкретного применяемого кода.

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

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

Блоковые коды

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

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

  • способность исправлять как можно большее число ошибок,
  • как можно меньшая избыточность,
  • простота кодирования и декодирования.

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

Линейные коды общего вида

Линейный блоковый код — такой код, что множество его кодовых слов образует -мерное линейное подпространство в -мерном линейном пространстве, изоморфное пространству -битных векторов.

Это значит, что операция кодирования соответствует умножению исходного -битного вектора на невырожденную матрицу , называемую порождающей матрицей.

Для ортогонального по отношению к подпространства  и матрицы , задающей базис этого подпространства, и для любого вектора справедливо:

.

Минимальное расстояние и корректирующая способность

Расстоянием Хэмминга (метрикой Хэмминга) между двумя кодовыми словами и называется количество отличных бит на соответствующих позициях:

.

Минимальное расстояние Хэмминга является важной характеристикой линейного блокового кода. Она показывает, насколько «далеко» расположены коды друг от друга. Она определяет другую, не менее важную характеристику — корректирующую способность:

.

Корректирующая способность определяет, сколько ошибок передачи кода (типа ) можно гарантированно исправить. То есть вокруг каждого кодового слова имеем -окрестность , которая состоит из всех возможных вариантов передачи кодового слова с числом ошибок () не более . Никакие две окрестности двух любых кодовых слов не пересекаются друг с другом, так как расстояние между кодовыми словами (то есть центрами этих окрестностей) всегда больше двух их радиусов .

Таким образом, получив искажённую кодовую комбинацию из , декодер принимает решение, что исходной была кодовая комбинация , исправляя тем самым не более ошибок.

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

Коды Хэмминга

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

,

где  — принятый вектор, будет равен номеру позиции, в которой произошла ошибка. Это свойство позволяет сделать декодирование очень простым.

Общий метод декодирования линейных кодов

Любой код (в том числе нелинейный) можно декодировать с помощью обычной таблицы, где каждому значению принятого слова соответствует наиболее вероятное переданное слово . Однако данный метод требует применения огромных таблиц уже для кодовых слов сравнительно небольшой длины.

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

Линейные циклические коды

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

Циклическим кодом является линейный код, обладающий следующим свойством: если является кодовым словом, то его циклическая перестановка также является кодовым словом.

Слова циклического кода удобно представлять в виде многочленов. Например, кодовое слово представляется в виде полинома . При этом циклический сдвиг кодового слова эквивалентен умножению многочлена на по модулю .

Чаще всего используются двоичные циклические коды (то есть могут принимать значения 0 или 1).

Порождающий многочлен

Можно показать, что все кодовые слова конкретного циклического кода кратны определённому порождающему (генераторному) многочлену . Порождающий многочлен является делителем .

С помощью порождающего многочлена осуществляется кодирование циклическим кодом. В частности:

  • несистематическое кодирование осуществляется путём умножения кодируемого вектора на : ;
  • систематическое кодирование осуществляется путём «дописывания» к кодируемому слову остатка от деления на , то есть .

Коды CRC

Коды CRC (англ. cyclic redundancy check — циклическая избыточная проверка) являются систематическими кодами, предназначенными не для исправления ошибок, а для их обнаружения. Они используют способ систематического кодирования, изложенный выше: «контрольная сумма» вычисляется путём деления на . Ввиду того, что исправление ошибок не требуется, проверка правильности передачи может производиться точно так же.

Таким образом, вид многочлена задаёт конкретный код CRC. Примеры наиболее популярных полиномов:

Название кода Степень Полином
CRC-12 12
CRC-16 16
CRC-CCITT 16
CRC-32 32

Коды БЧХ

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

Коды коррекции ошибок Рида — Соломона

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

Математически коды Рида — Соломона являются кодами БЧХ.

Преимущества и недостатки блоковых кодов

Хотя блоковые коды, как правило, хорошо справляются с редкими, но большими пачками ошибок, их эффективность при частых, но небольших ошибках (например, в канале с АБГШ), менее высока.

Свёрточные коды

Свёрточный кодер ()

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

Кодирование свёрточным кодом производится с помощью регистра сдвига, отводы от которого суммируются по модулю два. Таких сумм может быть две (чаще всего) или больше.

Декодирование свёрточных кодов, как правило, производится по алгоритму Витерби, который пытается восстановить переданную последовательность согласно критерию максимального правдоподобия.

Свёрточные коды эффективно работают в канале с белым шумом, но плохо справляются с пакетами ошибок. Более того, если декодер ошибается, на его выходе всегда возникает пакет ошибок.

Каскадное кодирование. Итеративное декодирование

Преимущества разных способов кодирования можно объединить, применив каскадное кодирование. При этом информация сначала кодируется одним кодом, а затем другим, в результате получается код-произведение.

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

Некоторые коды-произведения специально сконструированы для итеративного декодирования, при котором декодирование осуществляется в несколько проходов, каждый из которых использует информацию от предыдущего. Это позволяет добиться большой эффективности, однако декодирование требует больших ресурсов. К таким кодам относят турбо-коды и LDPC-коды (коды Галлагера).

Оценка эффективности кодов

Эффективность кодов определяется количеством ошибок, которые тот может исправить, количеством избыточной информации, добавление которой требуется, а также сложностью реализации кодирования и декодирования (как аппаратной, так и в виде программы для ЭВМ).

Граница Хэмминга и совершенные коды

Пусть имеется двоичный блоковый код с корректирующей способностью . Тогда справедливо неравенство (называемое границей Хэмминга):

Коды, удовлетворяющие этой границе с равенством, называются совершенными. К совершенным кодам относятся, например, коды Хэмминга. Часто применяемые на практике коды с большой корректирующей способностью (такие, как коды Рида — Соломона) не являются совершенными.

Литература

  • Блейхут Р. Теория и практика кодов, контролирующих ошибки = Theory and Practice of Error Control Codes. — М.: Мир, 1986. — 576 с.
  • Мак-Вильямс Ф. Дж., Слоэн Н. Дж. А. Теория кодов, исправляющих ошибки. М.: Радио и связь, 1979.
  • Морелос-Сарагоса Р. Искусство помехоустойчивого кодирования. Методы, алгоритмы, применение / пер. с англ. В. Б. Афанасьева. — М.: Техносфера, 2006. — 320 с. — (Мир связи). — 2000 экз. — ISBN 5-94836-035-0.

Read other articles:

Stasiun Yanagita柳田駅Bangunan baru Stasiun Yanagita pada Mei 2019LokasiYanagita Yanagida, Yokote, Akita 013-0054JepangKoordinat39°16′35″N 140°33′14.2″E / 39.27639°N 140.553944°E / 39.27639; 140.553944Koordinat: 39°16′35″N 140°33′14.2″E / 39.27639°N 140.553944°E / 39.27639; 140.553944Operator JR EastJalur■ Jalur Utama ŌuLetak224.4 kilometers dari FukushimaJumlah peron2 peron sisiInformasi lainStatusMemiliki petugas ...

 

 

Source 2Tipemesin gim LisensiKepemilikanKarakteristik teknisSistem operasiMicrosoft Windows, macOS, Linux dan iOS Bahasa pemrogramanC++ Informasi pengembangPengembangValve Bagian dari Sunting di Wikidata • L • B • Bantuan penggunaan templat ini Source 2 adalah mesin permainan video yang dikembangkan oleh Valve sebagai penerus mesin Source asli. Mesin diumumkan pada 2015, dengan permainan pertama yang menggunakannya, Dota 2, sedang di ported dari mesin aslinya pada tahun y...

 

 

Wakil Bupati Seram Bagian TimurPetahanaIdris Rumalutur, S.E.sejak 26 Februari 2021Masa jabatan5 tahunDibentuk2005Pejabat pertamaDra. Sitti Umaria SuruwakySitus webwww.serambagiantimurkab.go.id Berikut ini adalah daftar Wakil Bupati Seram Bagian Timur dari masa ke masa. No Potret Wakil Bupati Mulai Jabatan Akhir Jabatan Prd. Ket. Bupati 1 Dra.Sitti Umaria Suruwaky 2005 2010 1   Abdullah VanathS.Sos., M.M.P. 13 September 2010 13 September 2015 2   Jabatan kosong 13 September 2015...

Mayan deity The Classic period Maya moon goddess may have been a forerunner of Awilix Awilix (/äwiˈliʃ/) (also spelt Ahuilix, Auilix and Avilix) was a goddess (or possibly a god) of the Postclassic Kʼicheʼ Maya, who had a large kingdom in the highlands of Guatemala.[1] She was the patron deity of the Nijaʼibʼ noble lineage at the Kʼicheʼ capital Qʼumarkaj, with a large temple in the city. Awilix was a Moon goddess and a goddess of night,[2] although some studies refe...

 

 

Kawczynski pada Juni 2017 Daniel Robert Kawczynski (pengucapan bahasa Polandia: [ka'ft͡ʂɨnskʲi]; lahir 24 Januari 1972) adalah seorang politikus Partai Konservatif Inggris dan Anggota Parlemen untuk Shrewsbury dan Atcham di Shropshire, Inggris.[1] Anggota parlemen Inggris pertama yang lahir di Polandia,[2] ia dibesarkan di Inggris dari usia tujuh tahun. Referensi ^ Daniel Kawczynski. BBC. Diakses tanggal 2 July 2013.  ^ Parliamentlive.tv. parliamentlive.tv. ...

 

 

Karakter dalam seri NarutoYamatoヤマトYamatoPenampilan perdanaMangaChapter 284AnimeEpisode 34FilmNaruto Shippuden 2: BondsPermainan videoNaruto Shippūden: Gekitō Ninja Taisen! EX 2OVANaruto Shippūden: UNSG anime cutscenesTampil diAnime, manga, film, OVA, dan permainanPengisi suaraInggrisTroy BakerJepangRikiya Koyama Informasi karakter ProfilUlang tahun10 AgustusJenis kelaminLaki-lakiUsia26Tinggi178 cm (5 ft 10 in)Berat58,4 kg (129 pon)Gol. darahAAfiliasi �...

Pour les articles homonymes, voir Kornilov. L'affaire Kornilov ou Kornilovchtchina (en russe : Корниловское выступление ou Корниловщина) se réfère à un affrontement confus en août/septembre 1917 entre le général Lavr Kornilov, commandant en chef de l'armée russe, et, Aleksandr Kerenski, ministre de la Guerre et, depuis peu, président du Conseil des ministres du gouvernement provisoire russe. Cet événement s'est déroulé entre la révolution ...

 

 

Fundamental law of the Second Spanish Republic (1931-39) Spanish ConstitutionPreface to the Spanish Constitution of 1931Ratified9 December 1931Repealed1 April 1939 (end of the Spanish Civil War)SignatoriesNiceto Alcalá-ZamoraFull text Constitución española de 1931 at Wikisource The Spanish Constitution of 1931 was approved by the Constituent Assembly on 9 December 1931. It was the constitution of the Second Spanish Republic (founded 14 April 1931) and was in force until 1 April 1939. This ...

 

 

Community college with several campuses in Virginia, U.S. 38°13′54.6″N 77°29′34.8″W / 38.231833°N 77.493000°W / 38.231833; -77.493000 Germanna Community CollegeEstablished1970PresidentJanet GullicksonStudents10,000 -plus credit students, 3,000 non-creditLocationFredericksburg/ Culpeper/ Stafford/ Spotsylvania/ Orange/ Caroline/ Madison, Virginia, United States38°13′54.6″N 77°29′34.8″W / 38.231833°N 77.493000°W / 38.231833...

American local election 2017 Flint mayoral recall election ← 2015 November 7, 2017 2019 →   Candidate Karen Weaver Scott Kincaid Don Pfeiffer Party Nonpartisan Nonpartisan Nonpartisan Popular vote 7,709 4,671 894 Percentage 52.98% 32.10% 6.14% Mayor before election Karen Weaver Nonpartisan Elected Mayor Karen Weaver Nonpartisan The 2017 Flint mayoral recall election in Flint, Michigan was held on November 7, 2017, and resulted in incumbent mayor Karen Weaver be...

 

 

Alfred von Gutschmid Hermann Alfred Freiherr (Baron) von Gutschmid (1 July 1835 – 2 March 1887), German historian and Orientalist, was born at Loschwitz near (Dresden). He devoted himself to the study of Eastern language and history in its pre-Greek and Hellenistic periods, contributed largely to the literature of the subject. After holding chairs at Kiel (1866), Königsberg (1873), and Jena (1876), he was finally appointed professor of history at Tübingen, where he remained u...

 

 

Disambiguation article For the genus of grass skipper butterflies, see Idmon (skipper). In Greek mythology, Idmon (Ancient Greek: Ἴδμων means having knowledge of or the knowing) may refer to the following individuals: Idmon, one of the fifty sons of Aegyptus, who married and was killed by the Danaid Pylarge.[1] Idmon, father of Arachne,[2] and perhaps her brother Phalanx too. Idmon, an Argonaut seer and son of Apollo or Abas.[3] Idmon, herald of Turnus.[4]...

政治腐敗 概念 反腐敗 賄賂 裙帶關係 腐败经济学(英语:Economics of corruption) 选举操控 精英俘获(英语:Elite capture) 权力寻租 竊盜統治 黑手黨國家 裙帶關係 行贿基金 買賣聖職 各国腐败 亚洲 中国 治貪史 中華人民共和國 朝鲜 菲律宾 欧洲 俄羅斯(英语:Corruption in Russia) 乌克兰 英国 法国 查论编   此条目的内容是1949年中華人民共和國成立以后中国大陆的国家�...

 

 

Questa voce sull'argomento gruppi musicali statunitensi è solo un abbozzo. Contribuisci a migliorarla secondo le convenzioni di Wikipedia. Segui i suggerimenti del progetto di riferimento. Stabbing Westward Paese d'origine Stati Uniti GenereIndustrial rockRock alternativo Periodo di attività musicale1985 – 20022016 – in attività EtichettaColumbia Records, Koch Records, Sony Records Album pubblicati6 Studio4 Raccolte2 Sito ufficiale Modifica dati ...

 

 

Aviron aux Jeux olympiques d'été de 2016 Généralités Sport Aviron Organisateur(s) CIO Édition 27e Lieu(x) Rio de Janeiro Date du 6 août 2016 au 13 août 2016 Nations 58 Participants 550 (331 hommes et 219 femmes) Épreuves 14 Site(s) Lagoa Rodrigo de Freitas Navigation 1900 • 1904 • 1908 • 1912 • 1920 • 1924 • 1928 • 1932 • 1936 • 1948 • 1952 • 1956 • 1960 • 1964 • 1968 • 1972 • 1976 • 1980 • 1984 • 1988 • 1992 • 1996 • 2000 • 2004 • 200...

Artikel ini sebatang kara, artinya tidak ada artikel lain yang memiliki pranala balik ke halaman ini.Bantulah menambah pranala ke artikel ini dari artikel yang berhubungan atau coba peralatan pencari pranala.Tag ini diberikan pada Januari 2023. Banjir Mumbai 2021Negara bagian Maharashtra di IndiaTanggal22 Juli 2021 - sekarangPenyebabHujan derasTewas250 Water being released from Koyna Dam Road destroyed in floods near Satara Food and other essential items being distributed by voluntary organiz...

 

 

العلاقات الإندونيسية القيرغيزستانية إندونيسيا قيرغيزستان   إندونيسيا   قيرغيزستان تعديل مصدري - تعديل   العلاقات الإندونيسية القيرغيزستانية هي العلاقات الثنائية التي تجمع بين إندونيسيا وقيرغيزستان.[1][2][3][4][5] مقارنة بين البلدين هذه مقار...

 

 

ستريمونيكو  خريطة الموقع تقسيم إداري البلد اليونان  [1] إحداثيات 41°02′33″N 23°19′01″E / 41.0425°N 23.316944444444°E / 41.0425; 23.316944444444   السكان التعداد السكاني 1645 (إحصاء السكان) (2001)[2]1602 (resident population of Greece) (2001)1139 (resident population of Greece) (1991)945 (resident population of Greece) (2021)1619 (resident popula...

This article may require cleanup to meet Wikipedia's quality standards. The specific problem is: This article has improper capitalization, poor grammar, and a lack of encyclopedic tone. Please help improve this article if you can. (April 2022) (Learn how and when to remove this message) 2014 South Korean filmGhost MessengerPoster of the 2014 movie version.Directed byBongHue GuStarringEunJung, SungTae Park, JungHwa Yang, JaeHeon Jung, and moreMusic byD.A. (JIMMie Park)ProductioncompanySTUDIO A...

 

 

Cet article possède des paronymes, voir Licensed to Kill et Plus permis de tuer. Permis de tuer Le logo du film en version originale. Données clés Titre original Licence to Kill Réalisation John Glen Scénario Michael G. WilsonRichard Maibaum Musique Michael Kamen Acteurs principaux Timothy DaltonCarey LowellRobert DaviTalisa SotoBenicio del Toro Sociétés de production EON ProductionsDanjaq Pays de production Royaume-Uni États-Unis Genre espionnage Durée 133 minutes Sortie 1989 Séri...