糾錯碼 - 二進位制卷積碼
錯誤和糾錯碼
由於干擾和網路問題,在計算機網路傳輸過程中,位元可能會發生損壞,從而導致錯誤。
糾錯碼 (ECC) 是一系列由特定演算法生成的數字,用於檢測和消除在嘈雜通道上傳輸的資料中的錯誤。糾錯碼確定了已損壞位元的確切數量以及在演算法限制內已損壞位元的位置。
ECC 可以廣泛地分為兩種型別:分組碼和卷積碼。
二進位制卷積碼
在卷積碼中,訊息包含任意長度的資料流,並且透過將布林函式滑動應用於資料流來生成輸出位元序列。
在分組碼中,資料包含一定長度的資料塊。然而,在卷積碼中,輸入資料位不會被分成塊,而是作為資料位流饋送,根據編碼器的邏輯函式卷積成輸出位。此外,與分組碼不同的是,分組碼的輸出碼字僅取決於當前輸入,而在卷積碼中,輸出流不僅取決於當前輸入位,還取決於儲存在記憶體中的先前輸入位。
卷積碼由 Elias 於 1955 年首次提出。此後,許多數學家進行了許多中間研究。1973 年,Viterbi 開發了一種用於最大似然解碼方案的演算法,稱為 Viterbi 方案,它導致了現代卷積碼的出現。
卷積碼的編碼
為了生成卷積碼,資訊按順序透過線性有限狀態移位暫存器。移位暫存器包含 (-bit) 階段和布林函式發生器。
卷積碼可以表示為 (n,k, K),其中
k 是在一次編碼中移入編碼器的位元數。通常,k = 1。
n 是對應於 k 個資訊位元的編碼器輸出位元數。
位元速率,Rc = k/n 。
編碼器記憶體,大小為 k 的移位暫存器,是約束長度。
n 是當前輸入位元和K內容的函式。
編碼器的狀態由 (K - 1) 位元的值給出。
生成卷積碼的示例
讓我們考慮一個k = 1, n = 2 和 K = 3 的卷積編碼器。
位元速率,Rc = k/n = 1/2 。

輸入字串從右到左流入編碼器。
當第一個位元 1 流入編碼器時,編碼器的內容將為 -

當下一個位元 1 流入編碼器時,編碼器的內容將為 -

當下一個位元 0 流入編碼器時,編碼器的內容將為 -

當最後一個位元 1 流入編碼器時,編碼器的內容將為 -

用狀態轉換圖和狀態表表示卷積編碼器
從上面的例子中,我們可以看到任何特定的二進位制卷積編碼器都與一組二進位制輸入、一組二進位制輸出和一組狀態相關聯。轉換和輸出可以透過狀態轉換圖和狀態表有效地表示。
對於示例中給出的二進位制卷積編碼器 -
The set of inputs = {0, 1}
The set of outputs = { 00, 10, 11}
The set of states = { 00, 01, 10, 11}我們可以看到,在初始狀態 00 中,當輸入 1 時,下一個狀態變為 10,相應的輸出為 11。在此狀態 10 中,當輸入 1 時,下一個狀態為 11,編碼器輸出為 10。以同樣的方式,我們得到其他轉換。當將其製成表格時,我們得到如下狀態轉換表 -

相應的狀態轉換圖將為 -

資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP