欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

使用基于子碼元的代碼來保護(hù)數(shù)據(jù)不被刪除的制作方法

文檔序號(hào):7526178閱讀:175來源:國(guó)知局
專利名稱:使用基于子碼元的代碼來保護(hù)數(shù)據(jù)不被刪除的制作方法
使用基于子碼元的代碼來保護(hù)數(shù)據(jù)不被刪除本申請(qǐng)是國(guó)際申請(qǐng)日為2004年12月1日,申請(qǐng)?zhí)枮镻CT/US2004/040271,發(fā)明名稱為"使用基于子碼元的代碼來保護(hù)數(shù)據(jù)不被刪除"的申請(qǐng)的分案申請(qǐng)。相關(guān)申請(qǐng)的交叉引用本申請(qǐng)要求以下共同待批的美國(guó)臨時(shí)專利申請(qǐng)的優(yōu)先權(quán)于2003年12月1 日提交的名為"Protection of Data From Erasures Using Interleaved Transformations and Codes From Algebraic Geometry (使用來自代數(shù)幾何的交叉變換和代碼來保護(hù) 數(shù)據(jù)不被刪除)"的美國(guó)臨時(shí)專利申請(qǐng)60/526,218號(hào)(代理案巻號(hào)19186-005400US); 以及于2003年12月2日提交的名為"Protection of Data From Erasures Using Interleaved Transformations and Codes From Algebraic Geometry (使用來自代數(shù)幾何 的交叉變換和代碼來保護(hù)數(shù)據(jù)不被刪除)"的美國(guó)臨時(shí)專利申請(qǐng)60/526,452號(hào),為 所有目的,這些申請(qǐng)通過引用包含在此,如同在本文中全文描述。本申請(qǐng)也引用以下共同所有的專利和申請(qǐng),包括授予Luby的名為于通信系統(tǒng)的信息加成碼生成器和解碼器)"的美國(guó)專利6,307,487號(hào)(后文中稱 為"Luby I")以及授予Shokrollahi等人的名為"Multi-Stage Code Generator and Decoder for Communication Systems (用于通信系統(tǒng)的多級(jí)碼生成器和解碼器)" 的美國(guó)專利(于2001年12月21日提交的美國(guó)專利申請(qǐng)10/032,156號(hào))(后文中 稱為"Shokrollahi I"),為所有目的,這些專利及申請(qǐng)中的每一個(gè)都通過引用包 含在此,如同在本文檔中全文描述。發(fā)明背景通過受損(impaired)網(wǎng)絡(luò)傳輸數(shù)據(jù)成為了眾多研究的主題。在眾多計(jì)算機(jī)網(wǎng) 絡(luò),諸如因特網(wǎng)或任何其它基于分組的網(wǎng)絡(luò)上,通過首先將數(shù)據(jù)細(xì)分成分組,然后 經(jīng)由網(wǎng)絡(luò)獨(dú)立地將分組路由至目的地來發(fā)送數(shù)據(jù)。在這樣的網(wǎng)絡(luò)中,通常預(yù)期到分 組的丟失。由于傳輸物理層上的錯(cuò)誤、由于路由器或其它網(wǎng)點(diǎn)的溢出引起設(shè)備丟棄4分組等可能會(huì)丟失分組。為確保完整地接收數(shù)據(jù),通常使用各種機(jī)制來保護(hù)數(shù)據(jù)免 于這種丟失。 一般而言,丟失的單位是分組,因?yàn)榉纸M或者被正確接收,或者就被 認(rèn)為丟失,并采取步驟來處理整個(gè)分組的丟失。因此,如果接收到分組的多個(gè)比特, 但沒有正確完整地接收該分組,該整個(gè)分組也被認(rèn)為丟失。丟失可以采用遺失整個(gè) 分組的形式,或可以采用確定分組中存在錯(cuò)誤而產(chǎn)生不可靠的比特的形式,即刪除 和出錯(cuò)。近年來,提出了兩種類型的代碼用于當(dāng)預(yù)期在傳輸期間將丟失數(shù)據(jù)時(shí)保護(hù)數(shù) 據(jù)鏈?zhǔn)椒磻?yīng)碼和多級(jí)鏈?zhǔn)椒磻?yīng)碼。對(duì)具有A個(gè)碼元的給定內(nèi)容,這些代碼產(chǎn)生實(shí) 際無限的輸出碼元流,使得能夠從累積次數(shù)大約等于&的不同輸出碼元的任何集合 的接收中恢復(fù)原始的A個(gè)碼元。除非另外指出,否則應(yīng)該理解,如此處所使用的對(duì) "一個(gè)鏈?zhǔn)椒磻?yīng)碼"或"多個(gè)鏈?zhǔn)椒磻?yīng)碼"的引用可應(yīng)用于鏈?zhǔn)椒磻?yīng)碼,諸如在Lubyl和/或其它地方描述的那些,且也可用于多級(jí)鏈?zhǔn)椒磻?yīng)碼,諸如Shokrollahi I中描述的那些。使用鏈?zhǔn)椒磻?yīng)碼,對(duì)給定的A個(gè)輸入碼元的輸入集合的可能的輸出碼元個(gè)數(shù) 被稱為是"實(shí)際無限的",因?yàn)閹缀踉谒星闆r中,相對(duì)于實(shí)際生成的輸出碼元, 可能的輸出碼元個(gè)數(shù)要多得多,或者用于輸入碼元恢復(fù)的輸出碼元個(gè)數(shù)遠(yuǎn)小于可能 碼元的個(gè)數(shù)。例如,如果有10,000比特的輸入碼元碼,且一般預(yù)期的傳輸是大小 高達(dá)10吉比特的文件或流,則編碼器應(yīng)被設(shè)計(jì)成處理^:=1,000,000個(gè)碼元的輸入。 這樣的解碼器可被配置成能夠生成多達(dá)232 (40億)個(gè)沒有重復(fù)的輸出碼元。如果 這還不夠,則解碼器可被配置成能夠生成更多的沒有重復(fù)的輸出碼元。當(dāng)然,由于 所有的物理可實(shí)現(xiàn)系統(tǒng)都是有限的,因此解碼器最終將到達(dá)一種狀態(tài),在該狀態(tài)中 它重復(fù),但總是可如此設(shè)計(jì)該狀態(tài),使得對(duì)任何預(yù)期的傳輸和出錯(cuò)率,沒有重復(fù)的 輸出碼元的個(gè)數(shù)是實(shí)際無限的。此處,分組可攜帶一個(gè)或多個(gè)碼元。盡管不是必需的,但輸入碼元中所編碼 的比特?cái)?shù)和輸出碼元中所編碼的比特?cái)?shù)可以是相同的。在某些實(shí)施例中,這些代碼通過在輸入碼元上執(zhí)行XOR來對(duì)數(shù)據(jù)編碼,且它們通過在所接收的碼元上執(zhí)行XOR來解碼,但也可使用或改為使用其它運(yùn)算。XOR是有用的運(yùn)算,因?yàn)樗焖偾铱赡?。其它運(yùn)算也可提供這些優(yōu)點(diǎn)。這些代碼解決了將在其中發(fā)送方或接收方未知丟失率的受損網(wǎng)絡(luò)上數(shù)據(jù)從一個(gè)或多個(gè)發(fā)送方分發(fā)到一個(gè)或多個(gè)接收方的問題。原因之一在于,當(dāng)可能的輸出碼 元數(shù)相對(duì)于輸入碼元數(shù)較大時(shí),接收方可以在即使接收方之間沒有協(xié)調(diào)的情況下也5以該壓倒性的多余(overwhelmingodds)而不重復(fù)由另一接收方發(fā)送的分組。該特 性被稱為接收方是"信息加成(informationadditive)"的。在某些情況中,不必或不期望從給定內(nèi)容中產(chǎn)生實(shí)際無限數(shù)量的輸出碼元。 例如,當(dāng)接收方時(shí)間受限時(shí),可能無法享受等待附加碼元在給定時(shí)間間隔之后到達(dá) 的奢侈。例如,當(dāng)將實(shí)況電影發(fā)送給一個(gè)或多個(gè)接收方時(shí),情況就是這樣。由于實(shí) 況傳輸?shù)谋举|(zhì),不可能總是等待足夠的編碼數(shù)據(jù)到達(dá)接收方,因?yàn)榻邮辗降姆答伇?須與發(fā)送方的發(fā)送同步而不能被長(zhǎng)時(shí)間地中斷。在這樣的情況中,預(yù)期到丟失,發(fā) 送方可對(duì)內(nèi)容添加固定數(shù)量的附加的冗余碼元,并將內(nèi)容與冗余碼元一起發(fā)送。如 果在內(nèi)容傳輸期間發(fā)生的丟失的數(shù)量不大于冗余碼元的個(gè)數(shù),則預(yù)期將在接收方恢 復(fù)所丟失的數(shù)據(jù)。也可使用鏈?zhǔn)椒磻?yīng)碼來解決這個(gè)問題。在這樣的情況中,編碼器僅生成固定 數(shù)量的已編碼數(shù)據(jù),而不是實(shí)際無限的數(shù)據(jù)流。然而,在某些情況中,可能更適宜 使用不同的解決方案。例如,由于鏈?zhǔn)椒磻?yīng)碼的解碼過程的概率性本質(zhì),這些過程 可能導(dǎo)致對(duì)非常小的內(nèi)容大小的某些額外的開銷。Reed-Solomon碼("RS碼")是用于處理受到編碼器輸出與解碼器輸入之間 的刪除的數(shù)據(jù)的傳輸或存儲(chǔ)的一類碼。在本公開全文中,應(yīng)理解,編碼不限于傳輸, 而是在時(shí)間、空間等分離的編碼器處表示經(jīng)由當(dāng)已編碼數(shù)據(jù)流經(jīng)信道時(shí)可能展現(xiàn)出 刪除和/或錯(cuò)誤的信道而來自解碼器的原始數(shù)據(jù)。眾多研究者曾對(duì)眾多條件、數(shù)據(jù) 和信道廣泛地研究了 RS碼,且RS碼已知具有某些性質(zhì)。一種這樣的條件被描述為"最優(yōu)性條件"。RS碼不在二元域而在更大的伽羅 瓦域上運(yùn)算。RS碼的基本性質(zhì)之一是它們滿足最優(yōu)性條件,使得當(dāng)使用RS碼對(duì)A: 個(gè)碼元編碼時(shí),產(chǎn)生用于存儲(chǔ)或傳輸?shù)摹?lt;A個(gè)碼元,可從所編碼的《個(gè)碼元的A 個(gè)不同的接收碼元的任何可能的組合中肯定地恢復(fù)原始的A:個(gè)碼元。由于原始的A: 個(gè)碼元不能從少于A個(gè)不同的接收碼元中恢復(fù),因此該接收碼元數(shù)被認(rèn)為是"最優(yōu) 的"。該最優(yōu)性是有代價(jià)的,因?yàn)榫幋a所需的運(yùn)算次數(shù)較多,且隨著代碼的變長(zhǎng)(即, 使用伽羅瓦域),次數(shù)變多。使用RS碼,提前確定最大塊長(zhǎng)度m其中塊長(zhǎng)度是 從原始的&個(gè)輸入碼元中生成的輸出碼元的個(gè)數(shù)。注意到,如果丟失了多于w-A個(gè) 輸出碼元,則不能恢復(fù)原始的A個(gè)輸入碼元。塊長(zhǎng)度w不能被任意加長(zhǎng)來處理任何 預(yù)期的條件,因?yàn)閷?duì)較大的塊長(zhǎng)度計(jì)算變得更難,且對(duì)非常大的塊長(zhǎng)度是不切實(shí)際 的??梢燥@示,對(duì)在以塊長(zhǎng)度"和維數(shù)A:的伽羅瓦域GF(2A)上定義的Reed-Solomon 碼,產(chǎn)生輸出碼元的碼元的XOR的次數(shù)平均等于"(h-A:"^/f28^)。使用這樣的 Reed-Solomon碼,使用A:個(gè)輸入碼元來產(chǎn)生總共w個(gè)輸出碼元,其中一般&個(gè)輸 入碼元包含在"個(gè)輸出碼元中,且"大于A:。與之對(duì)比,當(dāng)使用鏈?zhǔn)椒磻?yīng)碼時(shí),產(chǎn) 生輸出碼元的碼元的XOR的平均次數(shù)等于獨(dú)立于A:的常數(shù)或所產(chǎn)生的輸出碼元的 個(gè)數(shù)。對(duì)解碼器也成立類似的結(jié)果。Reed-Solomon碼的長(zhǎng)度"不能超過2A+1 。這后一條件與通常將A選為2的冪的事實(shí)一起有時(shí)可能相當(dāng)大地減慢了編碼和解碼過程。例如,假設(shè)原始內(nèi)容大小為 32KB (其中1KB^024字節(jié)),每一分組可對(duì)1KB的輸入數(shù)據(jù)進(jìn)行編碼,并總共 將要發(fā)送48個(gè)分組。在該示例中,內(nèi)容可分為32個(gè)1KB的組塊(每一組塊分配 給將要發(fā)送的一個(gè)分組),然后每一組塊可進(jìn)一步細(xì)分成X個(gè)輸入碼元。然后可 以并行地應(yīng)用Reed-Solomon編碼過程X次,每次對(duì)來自每一組塊的一個(gè)輸入碼元 進(jìn)行運(yùn)算(諸如對(duì)每一組塊的所有第一輸入碼元進(jìn)行運(yùn)算,然后對(duì)每一組塊的第二 輸入碼元進(jìn)行運(yùn)算等),這意味著每一運(yùn)算考慮32個(gè)輸入碼元。假設(shè)這為Z個(gè)位 置中的每一個(gè)產(chǎn)生16個(gè)附加的輸出碼元,且將每一組Z個(gè)輸出碼元放在一起來產(chǎn) 生要發(fā)送的16個(gè)附加的分組,每一個(gè)長(zhǎng)1KB。在該示例中,作為2的冪的最小可 接受的A是A二8,因?yàn)閷?duì)A=4則將得到2A+1 = 17,這小于48。在該操作中, Reed-Solomon碼在域GF(256)中運(yùn)算,因此每一碼元為1字節(jié)長(zhǎng),且%=1024。如 該示例所示,盡管這些碼可滿足最優(yōu)性條件,但它們要求相當(dāng)多的計(jì)算且對(duì)可能的 碼長(zhǎng)度有限制。引出對(duì)編碼論的一些概念的介紹。傳輸粒度指的是作為單位發(fā)送和接收的對(duì) 象的大小。例如,分組網(wǎng)絡(luò)以分組發(fā)送和接收數(shù)據(jù)。即使僅刪除或破壞了分組的某 些比特,但整個(gè)分組被丟棄,并激活機(jī)制(前向糾錯(cuò)、請(qǐng)求再次發(fā)送等)來整體恢 復(fù)分組。因此,這樣的對(duì)象以其整體或者被無錯(cuò)地接收或者被刪除。在某些應(yīng)用中, 對(duì)象大小可以是傳輸分組的大小或者更小。當(dāng)預(yù)期到傳輸分組之間的丟失的相關(guān)性 時(shí),則傳輸粒度的大于分組大小。在其它應(yīng)用中,傳輸粒度可小于分組大小。計(jì)算粒度指的是在編碼器和/或解碼器中對(duì)其運(yùn)算的對(duì)象的大小。因此,如果 編碼器的基本運(yùn)算為XOR 128字節(jié)單位,則這就是計(jì)算粒度。包含細(xì)分成128-字 節(jié)子碼元的1024個(gè)字節(jié)的碼元(例如,可以為分組)可以是分成8個(gè)子碼元的碼 元(如果所有子碼元具有相同大小,這不是必需的,但較為簡(jiǎn)單)且在這些子碼元 進(jìn)行XOR。計(jì)算粒度因此為128字節(jié)。Reed-Solomon碼的最優(yōu)性的原因之一在于其傳輸粒度與其計(jì)算粒度之間的關(guān) 系。 一個(gè)示例將示出這一點(diǎn)??紤]域GF(256)上的Reed-Solomon碼,它用于對(duì)給定文件編碼,并經(jīng)由信道 以各自大小為1024字節(jié)的分組發(fā)送所編碼的信息。在該示例中,計(jì)算粒度可等于 128字節(jié)(1024字節(jié)除以8),而傳輸粒度等于1024字節(jié)。在該示例中,諸如比 特序列的XOR等基本運(yùn)算在作為整體的128字節(jié)單位上進(jìn)行。通常,編碼和解碼的效率隨計(jì)算粒度而變化??砂凑斩喾N方式測(cè)量效率,而 測(cè)量的一種方法是按照編碼或解碼數(shù)據(jù)單位的運(yùn)算的平均次數(shù)。通常,編碼和解碼 對(duì)較細(xì)的計(jì)算粒度效率較低,而對(duì)較粗的計(jì)算粒度效率較高。然而,較細(xì)計(jì)算粒度 的代碼可提供較好的接收開銷,即確保對(duì)表示向編碼器提供的碼元數(shù)上的正確解碼 所需接收的額外碼元數(shù)可保持非常小。作為結(jié)果,對(duì)給定碼在編碼效率與傳輸開銷 之間存在折衷。Reed-Solomon碼處于該編碼折衷的一端,因?yàn)橛?jì)算粒度足夠小,使得在接收 了與編碼一樣多的數(shù)據(jù)之后,可保證對(duì)面臨刪除的數(shù)據(jù)的最優(yōu)恢復(fù)。在另一端,在 二元字母表上定義的碼(諸如用于在分組網(wǎng)絡(luò)上傳輸?shù)哪切?具有與傳輸粒度一樣 大的計(jì)算粒度,但可能在確保完整解碼所需的接收開銷上效率低下。如上所述,Reed-Solomon碼需要預(yù)先確定最大出錯(cuò)率,即如果將A:個(gè)碼元編 碼成n個(gè)RS-碼元,則大于fn-^A的出錯(cuò)率將使得解碼器不能恢復(fù)所發(fā)送的數(shù)據(jù)。 因此,在由所發(fā)送數(shù)據(jù)的不成功恢復(fù)的最終概率測(cè)量的傳輸系統(tǒng)中,Reed-Solomon 碼盡管其最優(yōu)性但還是顯示出正的失敗概率。這是因?yàn)椋嬖谟山邮辗浇邮盏臄?shù)據(jù) 量實(shí)際上小于所發(fā)送的數(shù)據(jù)的正概率。作為結(jié)果,最終,編碼系統(tǒng)可能具有較低效 率的編碼,而仍舊具有需要降低的失敗概率。因此,需要的是這樣一種用于編碼和解碼經(jīng)由信道發(fā)送的數(shù)據(jù)的編碼系統(tǒng)和 方法,它可如特定應(yīng)用、可用的處理能力和數(shù)據(jù)集所需地折衷計(jì)算工作量和開銷效 率。發(fā)明概述在根據(jù)本發(fā)明的通信系統(tǒng)的一個(gè)實(shí)施例中,編碼器使用輸出碼元的子碼元來 實(shí)現(xiàn)或控制計(jì)算工作量和開銷效率的折衷,用于例如,以少量的開銷效率為代價(jià)極 大地減少計(jì)算工作量。編碼器讀取構(gòu)成輸入文件或輸入流的有序的多個(gè)輸入碼元, 并產(chǎn)生輸出子碼元。該有序的多個(gè)輸入碼元各自是從輸入字母表中選擇的,且所生成的輸出子碼元構(gòu)成輸出子碼元字母表中的選擇。輸出子碼元是使用應(yīng)用于輸入碼 元的子碼元的函數(shù)求值器生成的。在某些實(shí)施例中,可調(diào)用編碼器一次或多次,每 一次產(chǎn)生一個(gè)輸出子碼元。然后可將輸出子碼元組裝成輸出碼元,并將其發(fā)送至其 目的地。在根據(jù)本發(fā)明的各方面的一個(gè)編碼過程中,用于從輸入子碼元生成輸出子碼元的函數(shù)是對(duì)輸入子碼元中某一些的XOR。在根據(jù)本發(fā)明的各個(gè)方面的另一編碼 過程中,這些函數(shù)是通過使用GF(2)上的擴(kuò)域的正則表達(dá)式將該碼的生成矩陣或奇 偶校驗(yàn)矩陣中的每一條目變換成適當(dāng)?shù)亩仃?,從在GF(2)的擴(kuò)域上定義的線性碼獲得的。在根據(jù)本發(fā)明的各方面的解碼器中,由接收方接收的輸出子碼元是從由基于 輸入序列(文件、流等)的編碼生成這些輸出碼元的一個(gè)發(fā)送方發(fā)送的輸出碼元中 獲得的。因?yàn)樵趥鬏斨休敵龃a元可能丟失,即使解碼器僅接收到所發(fā)送的輸出碼元 的任意一部分,它也正常操作。本發(fā)明提供諸如能夠控制計(jì)算工作量與傳輸消息的折衷的優(yōu)點(diǎn)。例如,放松 最優(yōu)性要求,對(duì)可能的傳輸工作量的小小增加將可極大地減少計(jì)算工作量。使用某 些代碼,可容易地得到附加的輸出,使得可僅在接收超過最優(yōu)性條件下解碼所需的 碼元數(shù)的相對(duì)少量的附加碼元的情況下任意地減少解碼失敗率。在實(shí)現(xiàn)中,通過計(jì) 算單位(作為單獨(dú)的編碼或解碼運(yùn)算的一部分的數(shù)據(jù)之間的界限)和丟失單位(數(shù) 據(jù)之間的界限,其中如果單位界限內(nèi)的任何數(shù)據(jù)不可用則,該單位界限內(nèi)的所有數(shù) 據(jù)被認(rèn)為丟失)可減少計(jì)算工作量。在具體實(shí)現(xiàn)中,丟失單位為碼元或分組,計(jì)算 單位為子碼元??赏ㄟ^參考說明書的其余部分和附圖來實(shí)現(xiàn)對(duì)此處所公開的本發(fā)明的本質(zhì)和 優(yōu)點(diǎn)的進(jìn)一步理解。附圖描述

圖1是根據(jù)本發(fā)明的一個(gè)實(shí)施例的通信系統(tǒng)的框圖。 圖2是更詳細(xì)示出的圖1中的編碼器1的一部分的框圖。 圖3示出了生成矩陣;圖3A示出了 GF(4)域上的基礎(chǔ)矩陣而圖3B示出了 GF(2)上的二元生成矩陣。發(fā)明的詳細(xì)描述在此處所述的示例中,描述了稱為"基于子碼元的編碼"的編碼方案,首先 是對(duì)本說明書中使用的各種術(shù)語的意義和范圍的解釋。編碼器是從文件、流或其它輸入數(shù)據(jù)源接收輸入數(shù)據(jù)并對(duì)該數(shù)據(jù)編碼使得信 道可能對(duì)數(shù)據(jù)產(chǎn)生的影響可由信道的另一端處的解碼器糾正,而使解碼器能以所需 的任何準(zhǔn)確度重新生成原始數(shù)據(jù)的軟件過程、硬件裝置、組合等。使用基于子碼元的編碼,由發(fā)送方按所需從輸入文件中生成輸出碼元。每一 輸出碼元包含一個(gè)或多個(gè)子碼元,其中至少一個(gè)輸出碼元包含至少兩個(gè)子碼元。輸 出碼元內(nèi)的每一子碼元是通過使用編碼器或解碼器軟件和/或硬件,對(duì)構(gòu)成輸入文 件的碼元的子碼元執(zhí)行計(jì)算運(yùn)算來生成的。 一旦生成之后,輸出碼元然后可置于分 組之中,并發(fā)送至其目的地,每一分組包含一個(gè)或多個(gè)輸出碼元。如此處所使用的,術(shù)語"文件"指的是存儲(chǔ)在一個(gè)或多個(gè)源處且要作為一個(gè) 單位傳遞到一個(gè)或多個(gè)目的地的任何數(shù)據(jù)。因此,來自文件服務(wù)器或計(jì)算機(jī)存儲(chǔ)設(shè) 備的文檔、圖像和文件都是可傳遞的"文件"的示例。文件可具有已知大小(諸如 存儲(chǔ)在硬盤上的l兆圖像)或可具有未知大小(諸如從流源的輸出取出的文件)。 在任一方法中,文件都是輸入碼元的序列,其中每一輸入碼元具有一個(gè)文件中的位 置和一個(gè)值。傳輸是經(jīng)由信道將數(shù)據(jù)從一個(gè)或多個(gè)發(fā)送方發(fā)送到一個(gè)或多個(gè)接收方以便傳 遞文件的過程。如果一個(gè)發(fā)送方經(jīng)由完美的信道連接至任何數(shù)量的接收方,則由于 所有的數(shù)據(jù)都將被正確接收,因此所接收的數(shù)據(jù)可以是輸入文件的精確副本。此處, 假定信道不是完美的,這也是大多數(shù)現(xiàn)實(shí)信道的情況。在眾多信道不完善性之中, 所感興趣的兩個(gè)不完善性是數(shù)據(jù)刪除和數(shù)據(jù)不完整性(這可作為數(shù)據(jù)刪除的特殊情 況處理)。當(dāng)信道丟失或掉落數(shù)據(jù)時(shí)發(fā)生數(shù)據(jù)刪除。當(dāng)接收方在數(shù)據(jù)中的某些已經(jīng) 通過之前沒有開始接收數(shù)據(jù)、接收方在傳輸結(jié)束之前停止接收、或接收方間斷地停 止并再次開始接收數(shù)據(jù)時(shí),發(fā)生數(shù)據(jù)不完整性。作為數(shù)據(jù)不完整性的一個(gè)示例,移 動(dòng)衛(wèi)星發(fā)送方可能發(fā)送表示輸入文件的數(shù)據(jù)并在接收方處于范圍之中之前開始發(fā) 送。 一旦接收方位于范圍之中,可接收數(shù)據(jù)直到衛(wèi)星移動(dòng)到范圍之外,此處接收方 可重定向其衛(wèi)星天線(在此期間它沒有接收數(shù)據(jù))來開始接收關(guān)于由已經(jīng)移動(dòng)到范 圍之內(nèi)的另一衛(wèi)星發(fā)送的同一輸入文件的數(shù)據(jù)。如通過閱讀本說明書應(yīng)該顯而易見的,由于接收方可如同接收方在全部時(shí)間10內(nèi)都在范圍之內(nèi),但直到接收方開始接收數(shù)據(jù)的那一點(diǎn)之前信道丟失所有的數(shù)據(jù)一 樣來對(duì)待數(shù)據(jù)不完整性(且接收方具有相同的問題),因此數(shù)據(jù)不完整性是數(shù)據(jù)刪 除的特殊情況。同樣,如在通信系統(tǒng)設(shè)計(jì)中公知的,可單單通過掉落含有可檢測(cè)錯(cuò) 誤的所有數(shù)據(jù)塊或碼元,可檢測(cè)錯(cuò)誤可等價(jià)于刪除。一般而言,傳輸是通過連接發(fā)送方和接收方的信道將數(shù)據(jù)從發(fā)送方移動(dòng)到接 收方的動(dòng)作。信道可以是實(shí)時(shí)信道,其中當(dāng)信道獲得數(shù)據(jù)時(shí)信道將數(shù)據(jù)從發(fā)送方移 動(dòng)到接收方,或者信道可以是在數(shù)據(jù)從發(fā)送方到接收方的傳輸中存儲(chǔ)某些或所有數(shù) 據(jù)的存儲(chǔ)信道。后者的一個(gè)示例是磁盤存儲(chǔ)或其它存儲(chǔ)設(shè)備。在該示例中,生成數(shù) 據(jù)的程序或設(shè)備可被看作是發(fā)送方,它將數(shù)據(jù)發(fā)送給存儲(chǔ)設(shè)備。接收方是從存儲(chǔ)設(shè) 備中讀取數(shù)據(jù)的程序或設(shè)備。發(fā)送方用來將數(shù)據(jù)放到存儲(chǔ)設(shè)備上的機(jī)制、存儲(chǔ)設(shè)備 本身以及接收方用來從存儲(chǔ)設(shè)備中獲得數(shù)據(jù)的機(jī)制共同構(gòu)成了信道。如果存在這些 機(jī)制或存儲(chǔ)設(shè)備可能丟失數(shù)據(jù)的幾率,則將被作為信道中的數(shù)據(jù)刪除來對(duì)待。1.基本實(shí)現(xiàn)在一個(gè)典型實(shí)現(xiàn)中,使用基于子碼元的編碼來發(fā)送文件涉及,從輸入文件中 生成、形成或提取輸入碼元,為每一輸入碼元生成子碼元、將這些子碼元編碼成一 個(gè)或多個(gè)輸出子碼元、從輸出子碼元中創(chuàng)建輸出碼元以及通過信道將該輸出碼元發(fā) 送到一個(gè)或多個(gè)接收方。使用基于子碼元的編碼來接收(或重建)輸入文件的副本涉及,從一個(gè)或多 個(gè)數(shù)據(jù)流接收輸出碼元的某一集合或子集、為每一所接收到的輸出碼元生成子碼 元、從所接收的輸出子碼元的值中解碼輸入子碼元、從所解碼的輸入子碼元中創(chuàng)建 輸入碼元、以及從輸入碼元中重新組裝輸入文件。在某些實(shí)施例中,例如當(dāng)輸入文 件可從所解碼的輸入子碼元中直接重新組裝時(shí),丟棄了最后一步?,F(xiàn)在將參考附圖來描述本發(fā)明的各方面。圖1是使用基于子碼元的編碼的通信系統(tǒng)100的框圖。在通信系統(tǒng)100中, 向子碼元生成器110提供輸入文件101或輸入流105。子碼元生成器110從輸入文 件或流中生成一個(gè)或多個(gè)輸入子碼元的序列(IS(0,0),IS(0,1),IS(0,2),...),每一輸入碼元具有一個(gè)值和兩個(gè)位置(圖1中示為括號(hào)內(nèi)的整數(shù))。子碼元生成器110 將值m用作為其輸入之一,這是每一輸入或輸出碼元內(nèi)的子碼元的個(gè)數(shù)。子碼元 生成器的輸出被分成每組m個(gè)的組,使用第二括號(hào)內(nèi)的整數(shù)標(biāo)識(shí)每一組的元素, 它是0與m-l之間的整數(shù)。11如上所述,每一輸入子碼元的大小是編碼系統(tǒng)的計(jì)算粒度,而傳輸粒度可以是大于或等于m倍計(jì)算粒度的任何數(shù)字。在此處所提供的示例中,為說明簡(jiǎn)單起見,通常假定子碼元的大小都是相等的,但應(yīng)該理解,大小可以有變化,且對(duì)正確 的運(yùn)行而言不必使用恒定的大小。輸入子碼元的可能值,即其字母表, 一般是2M個(gè)碼元的字母表,使得每一輸 入碼元對(duì)輸入文件的M個(gè)比特編碼。M的值一般由通信系統(tǒng)100的用途來確定, 但通用系統(tǒng)可包括對(duì)輸入子碼元生成器110的子碼元大小輸入,使得M可隨用途 而有所變化。將輸入子碼元生成器110的輸出提供給編碼器115。編碼器115從由輸入子碼元生成器110提供的輸入子碼元生成輸出子碼元,其值為oso/)。每一輸出子碼元的值是基于對(duì)一個(gè)或多個(gè)輸入子碼元的某一函數(shù)生成的,這些輸入子碼元在此處稱為輸出子碼元的"相關(guān)聯(lián)輸入碼元"或簡(jiǎn)稱為"關(guān) 聯(lián)"。函數(shù)("值函數(shù)")和關(guān)聯(lián)的選擇是根據(jù)以下將更詳細(xì)描述的過程完成的。 通常,但不總是,M對(duì)輸入子碼元和輸出子碼元是相同的,即它們均對(duì)同樣個(gè)數(shù) 的比特編碼。在某些實(shí)施例中,編碼器使用輸入子碼元的個(gè)數(shù)K來選擇關(guān)聯(lián)。如果K事先 未知,諸如當(dāng)輸入是流文件時(shí),則K可以僅僅是估計(jì)值。值K也可由編碼器115用來為輸入子碼元分配存儲(chǔ)。編碼器115向輸出碼元生成器135提供輸出子碼元。也向輸出碼元生成器135 提供每一碼元內(nèi)的子碼元個(gè)數(shù)m。輸出碼元生成器135將圖l中示為OS(0),OS(1),..., 等的其輸出提供給發(fā)送模塊140。發(fā)送模塊140通過信道145將輸出碼元發(fā)送給接 收模塊150。假定信道145為刪除信道,但這不是通信系統(tǒng)100的正確操作的要求。 模塊140、 145和150可以是任何合適的硬件組件、軟件組件、物理介質(zhì)或其任何 組合,只要發(fā)送模塊140適于將輸出碼元以及關(guān)于它們的鍵的任何所需數(shù)據(jù)發(fā)送到 信道145,且接收模塊150適于從信道145接收碼元和可能某些關(guān)于它們的鍵的數(shù) 據(jù)。值K如果用于確定關(guān)聯(lián),則可經(jīng)由信道145發(fā)送它,或者它可由編碼器115 和解碼器155的協(xié)議預(yù)先設(shè)定。如上所述,信道145可以是實(shí)時(shí)信道,諸如穿過因特網(wǎng)的路徑或從電視發(fā)射 機(jī)到電視接收器的廣播鏈路或從一點(diǎn)到另一點(diǎn)的電話連接,或者信道145可以是存 儲(chǔ)信道,諸如CD-ROM、磁盤驅(qū)動(dòng)器、萬維網(wǎng)站等。信道145甚至可能是實(shí)時(shí)信 道和存儲(chǔ)信道的組合,諸如當(dāng)一人通過電話線將輸入文件從個(gè)人計(jì)算機(jī)發(fā)送到因特 網(wǎng)服務(wù)供應(yīng)商(ISP)時(shí)形成的信道,輸入文件存儲(chǔ)在Web服務(wù)器上,并隨后經(jīng)由因特網(wǎng)發(fā)送給接收方。因?yàn)榧俣ㄐ诺?45是刪除信道,因此通信系統(tǒng)100不假定離開接收模塊150 的輸出碼元與進(jìn)入發(fā)送模塊140的輸出碼元之間的一一對(duì)應(yīng)。事實(shí)上,當(dāng)信道145 包括分組網(wǎng)絡(luò)時(shí),通信系統(tǒng)100甚至可能不能假定通過信道145的傳輸中保持的任 何兩個(gè)或多個(gè)分組的相對(duì)順序。接收模塊150將所接收到的碼元RS(0)、 RS(1)提供給子碼元生成器160。也向 該生成器給出每一所接收的輸出碼元包含的子碼元個(gè)數(shù)的值m。該信息可在傳輸之 前在發(fā)送方與接收方之間共享,它可以是傳輸?shù)囊徊糠郑蛘呷绻鼘?duì)接收方未知 且接收方不必立刻解碼,則它可在稍后提供。如前所述,對(duì)所有接收的輸出碼元, 值m不必相同。子碼元生成器160生成示為RS(O,O),RS(O,l),...,等的輸出,并將其給予解碼器 155。當(dāng)每一所接收的碼元包含/n個(gè)子碼元時(shí),子碼元生成器160的輸出被分成各 自含有m個(gè)的組,其中每一組對(duì)應(yīng)于每一所接收的碼元內(nèi)的子碼元。第二括號(hào)內(nèi) 的整數(shù)對(duì)應(yīng)于子碼元在所接收的碼元內(nèi)的位置,而第一個(gè)整數(shù)對(duì)應(yīng)于輸出的子碼元 是其子碼元的所接收的碼元。在這種情況中,子碼元生成器的輸出為RS(O,O),...,RS(O, m-l),RS(l,O),...RS(l, m-l)等。解碼器155使用由子碼元生成器160提供的輸出子碼元來恢復(fù)輸入子碼元(再 一次為IS(0,0),IS(0,1),IS(0,2),...)。解碼器155將所恢復(fù)的輸入子碼元提供給碼元 生成器162,后者又產(chǎn)生輸入碼元IS(O),IS(O),...等。將這些輸入碼元提供給輸入文 件重新組裝器165,后者生成輸入文件101或輸入流105的副本170。在某些應(yīng)用 中,可繞過碼元生成器162,而將輸出直接轉(zhuǎn)發(fā)給輸入文件重新組裝器165。2.基本編碼器圖2是基本編碼器的示例性框圖。對(duì)每一生成的輸出碼元230,它包含由FO/') 表示的函數(shù)求值器。在圖2的示例中,附=4且總共存在12個(gè)輸入子碼元,由 201,...,212表示。函數(shù)求值器220計(jì)算輸入子碼元的函數(shù)來生成輸出子碼元230。 例如,在圖2所示的情況中,函數(shù)求值器使用函數(shù)F(W)來從輸入 IS(0,0),IS(0,3),IS(1,1),IS(1,3)和IS(2,2)中生成其輸出OS(/,力的值。在某些實(shí)施例中,每一生成的輸出子碼元具有不同的相關(guān)聯(lián)的函數(shù),這是確 定性或偽隨機(jī)生成的。在其它實(shí)施例中,函數(shù)求值器220可以對(duì)所生成的輸出碼元 中的多個(gè)是相同的,且可僅在用于函數(shù)的輸入值集合中有所不同。例如,如果使用簡(jiǎn)單的交叉方案,則對(duì)/的所有值,F(xiàn)(/力都可以是相同的,且僅在輸入值集合中有所不同。特別地,在該情況中,函數(shù)F(/力僅使用子碼元IS(0力,IS(l^,IS(2j')等作為輸入。如圖2中所示,函數(shù)求值器220可以是其輸入的任何函數(shù)。在某些實(shí)施例中, 尤其在那些期望具有線性碼的情況中,應(yīng)選擇是自變量的線性函數(shù)的函數(shù),例如自 變量的XOR?,F(xiàn)在將描述可由函數(shù)求值器220使用的一類這樣的線性函數(shù),稱為 "交叉變換"。3.交叉變換此處描述的某些過程使用了 Bloemer、 Kalfane、 Karp、 Karpinski、 Luby和 Zuckerman的國(guó)際計(jì)算機(jī)科學(xué)協(xié)會(huì)(ICSI)技術(shù)報(bào)告TR-95-048 "An XOR based erasure resilient coding scheme (基于XOR的刪除彈性編碼方案)"中隱含敘述的方法??紤]將以s個(gè)碼元組織的輸入數(shù)據(jù)變換成以Z個(gè)碼元組織的輸出數(shù)據(jù)的變換過 程,其中(輸入數(shù)據(jù)和輸出數(shù)據(jù)的)每一碼元包含相等大小的m個(gè)子碼元,且其 中變換使用f行s列的基礎(chǔ)矩陣,每一基礎(chǔ)矩陣的條目是有限域GF(2,中的值。該變換過程由將基礎(chǔ)矩陣的每一條目變換成m行m列的二元矩陣開始。該變 換使用有限域的正則表達(dá)式作為GF(2)的模,這是有限代數(shù)和編碼理論領(lǐng)域中普通 技術(shù)人員所公知的概念,因此將不在這里詳細(xì)描述。對(duì)原始的基礎(chǔ)矩陣的所有條目 應(yīng)用該變換,產(chǎn)生Z*m行s*m列的新的二元矩陣。該變換過程對(duì)輸入數(shù)據(jù)的 個(gè)子碼元應(yīng)用該新的矩陣來得出"m個(gè)輸出子碼元,新二元矩陣每行一個(gè)。新二元 矩陣的每一行對(duì)應(yīng)于一個(gè)子碼元,其中該變換過程通過對(duì)行和列中有一個(gè)1的每一 輸入子碼元進(jìn)行XOR來確定給定的輸出子碼元。以這種方式創(chuàng)建的最終的f*m個(gè) 子碼元被分組成各自具有m個(gè)子碼元的組來產(chǎn)生Z個(gè)碼元。注意,該變換過程僅需要執(zhí)行子碼元的XOR。它執(zhí)行XOR的次數(shù)取決于原 始矩陣,但該次數(shù)平均等于^^m/2。作為上述變換過程的一個(gè)示例,考慮圖3A中所示的在域GF(4)二(0,l,a,c^上 的^ = 5而?二2的基礎(chǔ)矩陣。對(duì)GF(4), m=2。使用GF(4)在對(duì)于基(l,a〉的GF(2) 上的正則表達(dá)式,圖3A的基礎(chǔ)矩陣變換成圖3B中所示的新二元矩陣,它是一m =10行產(chǎn)m二4列的矩陣。使用該變換后的矩陣,包含5個(gè)碼元、每一碼元包含2個(gè)子碼元的原始數(shù)據(jù)如下變換四個(gè)輸出子碼元中的第一個(gè)被計(jì)算為輸入子碼元3,6,7,9,10的XOR,因 為這些是圖3B的矩陣的第一行中"1"的位置。注意,"1"是對(duì)二元值的一種狀 態(tài)的任意指示,因此應(yīng)將其視為使用輸入碼元的標(biāo)志。第二個(gè)輸出子碼元被計(jì)算為輸入子碼元4,5,6,8,9的XOR。第三輸出子碼元被 計(jì)算為輸入子碼元1,5,8,10的XOR。最后,最后一個(gè)(第四個(gè))輸出子碼元被計(jì) 算為輸入子碼元2,6,7,8,9,10的XOR。在該情形中,執(zhí)行子碼元的XOR的總次數(shù) 為20。如下給出該特定示例中的函數(shù)F(O〕<formula>formula see original document page 15</formula>其中符號(hào)"+"表示XOR。交叉變換可用作使用由GF(2)擴(kuò)域上的其生成矩陣和奇偶校驗(yàn)矩陣定義的代 碼的編碼器和/或解碼器的實(shí)施例的一部分。4. 基本輸出碼元生成器圖4是輸出碼元生成器135的框圖。該圖例示了 m=4且3個(gè)輸出碼元的情況。 在該示例中,輸出碼元生成器135將四個(gè)輸出碼元的組,示為OS(/,0), OS(U), OS(/,2),...,OS(/,m-l)(該附圖中標(biāo)為401,...412)打包成輸出碼元OS(/)(在附圖中 標(biāo)為420、 430和440)。對(duì)所有輸出碼元選擇相同的值m僅是為了簡(jiǎn)明起見。該 值對(duì)不同的輸出碼元可有所不同,只要輸出碼元生成器指示對(duì)要生成的輸出碼元值 m是什么。5. 基本子碼元生成器圖5是基本子碼元生成器160的框圖。該圖例示了m二4,且3個(gè)所接收碼元 RS(O)、 RS(l)、 RS(2)的情況。子碼元生成器160的運(yùn)算對(duì)應(yīng)于圖4中給出的輸出 碼元生成器135的運(yùn)算的逆運(yùn)算。在圖5中給出的示例中,子碼元生成器135為每一所接收到的碼元?jiǎng)?chuàng)建4個(gè) 子碼元(圖中子碼元標(biāo)記為501,...,512)。子碼元1^(/,0),...,1^(。)對(duì)應(yīng)于所接收 到的碼元RS(O (該附圖中標(biāo)記為520、 530和540)。對(duì)所有所接收的碼元選擇相同的值m僅是為了簡(jiǎn)明起見。該值對(duì)不同的所接收碼元可有所不同,只要對(duì)每一 所接收的碼元向子碼元生成器提供對(duì)該碼元的值m為何的指示。這樣的指示可通 過來自發(fā)送器的帶外信息或者通過由發(fā)送方和接收方共享的預(yù)先確定的算法來提 供給子碼元生成器。
6.使用GF(2)擴(kuò)域上的交叉變換和代碼的基于子碼元的編碼
如上所述,基于子碼元的編碼可與此處所述的交叉變換一起使用來設(shè)計(jì)用于
在預(yù)期刪除的分組網(wǎng)絡(luò)上傳輸?shù)拇a,使得該代碼顯示出關(guān)于計(jì)算和刪除粒度與工
作量的期望折衷。
在一個(gè)實(shí)施例中,編碼器和解碼器被配置成使用在擴(kuò)域GF(2,上定義的代碼。 該代碼可由生成矩陣、奇偶校驗(yàn)矩陣或達(dá)到類似結(jié)果的某種抽象編碼過程或規(guī)則集 來定義。為表達(dá)簡(jiǎn)明起見,此處示例使用生成矩陣來描述編碼,但應(yīng)理解,可對(duì)相 同、相似、不同的結(jié)果使用其它方法。
假設(shè)生成矩陣具有"行和A:列。假定該代碼是系統(tǒng)的,可以理解,該代碼也 可以改為非系統(tǒng)的。
使用系統(tǒng)碼,包含前&列的子矩陣是單位矩陣。包含其余的r-"4列的子矩 陣此處稱為C。該矩陣C具有r行和A列。假定要編碼的數(shù)據(jù)是A個(gè)碼元(或分組) 長(zhǎng)。則編碼過程是將以上的交叉變換過程應(yīng)用于矩陣C和要編碼的數(shù)據(jù)的過程。
與以往的編碼方法相比,這種編碼方法的優(yōu)點(diǎn)之一在于,傳輸方案的開銷性 質(zhì)由有限域GF(2,上原始碼的結(jié)構(gòu)來支配,而計(jì)算是在域GF(2)上執(zhí)行的。對(duì)代碼 參數(shù)的明智選擇,諸如此處所述的或根據(jù)此處所述的選擇方法,可能獲得提供上述 折衷的優(yōu)異平衡的編碼結(jié)構(gòu)。
由于子碼元的存在,解碼過程更為復(fù)雜,且一般以如下所述的步驟進(jìn)行。值 得注意的是,解碼計(jì)算工作量仍舊可比用來獲得相同的錯(cuò)誤恢復(fù)結(jié)果的前述方法 少。
在一個(gè)示例解碼過程中,假定所編碼的數(shù)據(jù)分組各自具有相關(guān)聯(lián)的位置,且 該位置可由1到n的整數(shù)表示。前々個(gè)位置被稱為系統(tǒng)位置,在傳輸之前處于這些 位置中的所編碼數(shù)據(jù)與要編碼的數(shù)據(jù)完全相同。其余位置中的數(shù)據(jù)(或分組)稱為 冗余分組。如前所述,假定給出一個(gè)生成矩陣,其中前A行形成單位矩陣,而其余 的r行形成矩陣C。
在解碼過程的一個(gè)實(shí)施例中,步驟如下
161) 記錄和存儲(chǔ)已刪除系統(tǒng)分組的位置^,化...,^,其中e是這樣的已刪除分組
的個(gè)數(shù)。如果沒有這樣的分組存在,聲明成功解碼并退出。
2) 置計(jì)數(shù)器/=0。
3) 當(dāng)解碼不成功(g卩,還沒有恢復(fù)所有的原始分組),執(zhí)行以下的子步驟(a) 到(e):
(a) 找出6+/個(gè)非己刪除冗余分組。如果少于6+/個(gè)非已刪除冗余分組 可用,則聲明解碼出錯(cuò)。否則,由戶^2,...,^+/表示"/個(gè)非已刪除 冗余分組的位置。
(b) 形成包含對(duì)應(yīng)于位置/^,^...,;^的行和對(duì)應(yīng)于位置^&…,&的列 的生成矩陣的子矩陣。將這個(gè)矩陣稱為"。注意到該矩陣為C的子 矩陣。
(c) 找出D的可逆的eXe子矩陣,例如通過高斯消去法或顯式確定或 其它方法。如果這樣的子矩陣不存在,則對(duì)計(jì)數(shù)器/增加l并前進(jìn) 至步驟3。
(d) 如果這樣的可逆子矩陣存在,則記錄其行"…,re,并在基域上計(jì)算 其逆,將該逆稱為5。
(e) 對(duì)矩陣5和包含位置nre處的冗余分組的數(shù)據(jù)應(yīng)用交叉變換來 獲得位置^^...,&處的已刪除系統(tǒng)分組。聲明解碼成功并停止。
以下是使用一個(gè)特定值集的這種解碼過程的詳細(xì)示例。假設(shè)&=16且"=24, 并假設(shè)在傳輸了 24個(gè)分組之后,接收到位置1, 2, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15, 16, 18, 20, 22處的分組。丟失了位置3和IO處的系統(tǒng)分組,而其它14個(gè)正確接收。 所以《產(chǎn)3而《2=10。將計(jì)數(shù)器/置為0,獲得2+0=2個(gè)非已刪除冗余分組。這可 以是位置18和20處的分組,所以/^-18而/72-20。設(shè)置具有生成矩陣的行18和 20以及列3和10的矩陣,即行2和4以及列3和10的C的子矩陣。假設(shè)該矩陣 的秩不為2,則步驟3 (c)不成功。增加計(jì)數(shù)器/為l,并返回至步驟3,該過程 繼續(xù)。此時(shí),例如設(shè)置內(nèi)=18, / 2=20且p3=22,可形成包含生成矩陣的這幾行 和列3和IO的C的子矩陣。如果該矩陣滿秩,則步驟3 (c)將成功,且對(duì)應(yīng)于非 已刪除系統(tǒng)位置18和22的行1和3將形成可逆子矩陣。在步驟3 (d)計(jì)算該矩 陣的逆,稱為5,并將交叉變換過程(步驟3 (e))應(yīng)用于該矩陣和包含位置18 和22處冗余分組的數(shù)據(jù),這將產(chǎn)生在位置3和10處的已刪除分組的值。
在某些實(shí)施例中,在步驟2中,可對(duì)值/選擇某個(gè)大于0的數(shù)字。這可在例如如果預(yù)期對(duì)所有的小值/,步驟3 (C)將不成功時(shí)發(fā)生。有可能有眾多其它的變化, 本領(lǐng)域的普通技術(shù)人員可在閱讀本公開之后推導(dǎo)出這些變化。
7.代數(shù)幾何碼
結(jié)合交叉變換的子碼元解碼過程產(chǎn)生尤其良好結(jié)果的一類代碼為代數(shù)幾何碼 類,即"AG碼"。AG碼是Reed-Solomon碼的擴(kuò)展,它允許在同一域上構(gòu)造遠(yuǎn)長(zhǎng) 于Reed-Solomon碼的代碼。這些代碼是使用有限域上的曲線的點(diǎn)以及曲線在規(guī)定 的極點(diǎn)上的函數(shù)構(gòu)造的。對(duì)這些代碼的構(gòu)造對(duì)有限代數(shù)和編碼論領(lǐng)域的普通技術(shù)人 員而言是公知的,從而不在此處詳細(xì)描述。這些代碼的各種文獻(xiàn)之一是G叩pa,V.D 的"Geometry and Codes (幾何與代碼)"(Kluwer Academic Publisher 1988)。
AG碼共享許多Reed-Solomon碼的性質(zhì)。它們通??捎娠@式的生成矩陣和奇 偶校驗(yàn)矩陣描述,且給定其維數(shù)A和塊長(zhǎng)度",其最小距離不能小于g,其 中g(shù)是作為底層曲線的參數(shù)的非負(fù)整數(shù)。該參數(shù)被稱為曲線的虧格(genus)。虧 格0的曲線一般產(chǎn)生Reed-Solomon碼,而較高虧格的曲線可產(chǎn)生就塊長(zhǎng)度而言有 實(shí)質(zhì)改進(jìn)(雖然以較小的最小距離為代價(jià))的代碼。
例如,如果底層域?yàn)镚F(16),則最長(zhǎng)的可能的Reed-Solomon碼具有塊長(zhǎng)度 17。與之對(duì)比,可能顯示出具有塊長(zhǎng)度24的虧格1的AG碼。該代碼的最小距離 比最優(yōu)值小l。這樣的代碼可用于以下示例性情況中。該情況僅用于說明性的目的 描述,而不旨在限制應(yīng)用的范圍。
假設(shè)將經(jīng)由網(wǎng)絡(luò)傳輸16KB長(zhǎng)的一段數(shù)據(jù),其中分組具有1KB的有效負(fù)載。 而且,假設(shè)針對(duì)33%的丟失保護(hù)數(shù)據(jù)。然后,使用虧格1、塊長(zhǎng)度24且維數(shù)16 的AG碼的生成矩陣,并使用上述交叉變換過程,可能產(chǎn)生24KB的經(jīng)編碼的內(nèi)容。 由于每一子碼元是分組有效負(fù)載(即,碼元)的1/4,該變換涉及大小為256字節(jié) 的子碼元的XOR。得到的代碼具有以1的概率從接收的17個(gè)分組的任意集合中解 碼原始的16個(gè)分組,并以大約96%的概率形成接收的16個(gè)分組的集合(即,16 個(gè)分組的可能組合的96%使得可從該組合中解碼原始的16個(gè)分組)的能力。
可使AG碼成為系統(tǒng)的。例如,在以上情況中,所編碼數(shù)據(jù)的前16KB可等于 原始的16KB,附加的8KB表示冗余數(shù)據(jù)。為產(chǎn)生該冗余數(shù)據(jù),對(duì)8行16列的矩 陣應(yīng)用上述交叉變換過程。在這樣的情況中,產(chǎn)生冗余數(shù)據(jù)的子碼元XOR的次數(shù) 平均為8*16*4/2,即256。在該操作之后,所產(chǎn)生的經(jīng)編碼的數(shù)據(jù)包含96個(gè)子碼 元,使得每個(gè)生成的子碼元的子碼元XOR次數(shù)為256/96,稍小于3。如果以上使用Reed-Solomon碼,則其上定義Reed-Solomon碼、作為2的冪
的最小可能的域擴(kuò)張需要為GF(256)。在這種情況中,子碼元將與前一情況中的一 半一樣大,且它平均需要8*16*8/2 = 512次子碼元的XOR來產(chǎn)生冗余數(shù)據(jù),這又 轉(zhuǎn)化成前一情況的編碼速度的一半。
以下描述了可用于在分組有效負(fù)載大小為1 KB的基于分組的網(wǎng)絡(luò)上傳輸多 達(dá)64 KB大小的內(nèi)容的某種AG碼。這些示例僅用于說明性的目的,而不應(yīng)解釋 為限制本發(fā)明的范圍。這些示例由所編碼內(nèi)容的長(zhǎng)度而不是原始內(nèi)容的長(zhǎng)度作為參 數(shù)。對(duì)后者的轉(zhuǎn)換可通過期望的保護(hù)丟失率來進(jìn)行。例如,當(dāng)所編碼內(nèi)容的長(zhǎng)度為 24KB,且預(yù)期25Q^的丟失時(shí),則原始內(nèi)容的長(zhǎng)度可設(shè)為等于18KB。
對(duì)多達(dá)8KB的所編碼內(nèi)容大小而言,可能使用來自帶有9個(gè)有理點(diǎn)的最大可 能個(gè)數(shù)的GF(4)上的橢圓曲線的AG碼。這樣的曲線的一個(gè)示例為Hermitian曲線。 對(duì)應(yīng)于該曲線的代碼保證可能從最多超過1個(gè)附加分組來恢復(fù)內(nèi)容。對(duì)該任務(wù)的 Reed-Solomon碼將必須在域GF(16)中操作,并大約折半此示例中構(gòu)造的AG碼的 編碼和解碼速度。對(duì)多達(dá)24KB的所編碼內(nèi)容大小而言,可能使用來自帶有25個(gè)有理點(diǎn)的最大 可能個(gè)數(shù)的GF(16)上的橢圓曲線的AG碼。這樣的曲線對(duì)本領(lǐng)域的普通技術(shù)人員 而言是公知的,因此可容易地構(gòu)造相應(yīng)的代碼。對(duì)這些代碼,保證上述解碼過程中 的索引/永遠(yuǎn)不會(huì)超過l。換言之,如果所接收的分組個(gè)數(shù)比原始分組個(gè)數(shù)大1, 則解碼過程即成功。然而,如果所接收到的分組的個(gè)數(shù)等于原始分組的個(gè)數(shù),則存 在與解碼器相關(guān)聯(lián)的失敗的某種概率。在此情況中,該概率可在數(shù)學(xué)上計(jì)算,大約
等于1/25,即4%。
對(duì)多達(dá)32KB的所編碼內(nèi)容大小而言,可能使用來自帶有33個(gè)點(diǎn)的GF (16) 上虧格2的最大超橢圓曲線的AG碼。該曲線對(duì)本領(lǐng)域的普通技術(shù)人員而言也是公 知的,相關(guān)聯(lián)代碼的構(gòu)造也是如此。在該情況中,以上過程中的索引/永不超過2。 對(duì)多達(dá)37KB的所編碼內(nèi)容大小而言,可能使用來自帶有38個(gè)點(diǎn)的GF (16)上虧 格3的最大曲線的AG碼。在該情況中,以上過程中的索引/永不超過3。對(duì)多達(dá) 44KB的所編碼內(nèi)容大小而言,可能使用來自帶有38個(gè)點(diǎn)的GF (16)上虧格4的 最大曲線的AG碼。在該情況中,以上過程中的索引/永不超過4。對(duì)多達(dá)64KB 的所編碼內(nèi)容大小而言,可能使用帶有65個(gè)有理點(diǎn)的GF (16)上的Hermitian曲 線。在該情況中,索引/永不超過值6。
在以上情況的每一個(gè)中,從任何&個(gè)所接收到的分組中都能以某一良好的概率恢復(fù)包含A個(gè)分組的原始內(nèi)容,且該概率隨這所接收到的分組的個(gè)數(shù)超過A而快 速增加,如果超過的量等于所使用的曲線的虧格則到達(dá)概率1。
8.隨機(jī)碼
與交叉變換結(jié)合的基于子碼元的編碼過程對(duì)塊碼決不特別。 一般而言,本發(fā) 明的教導(dǎo)可受益于有限域GF(2m)上的任何碼,或者更一般地,任何有限域GF⑧ 上的任何碼。例如,該過程可與隨機(jī)碼結(jié)合來獲得有益的效果。
隨機(jī)碼可用作塊碼,或類似于鏈?zhǔn)椒磻?yīng)碼,對(duì)其而言,可生成的輸出碼元的 個(gè)數(shù)預(yù)先是不固定的,而約為大于輸入碼元個(gè)數(shù)的數(shù)量級(jí)。具體地,可能的輸出碼 元的個(gè)數(shù)可以比任何預(yù)期的丟失模式大,使得發(fā)送器(或一組發(fā)送器,可能未協(xié)調(diào) 的)不必為期望成功傳輸而在一段時(shí)間上重復(fù)輸出碼元。盡管沒有物理過程可以真 正是無限的且可重復(fù)的,但可容易地使用如Luby I或他處所述的鏈?zhǔn)椒磻?yīng)碼,使 得給定輸入序列的輸出碼元的個(gè)數(shù)是實(shí)際無限的。因?yàn)檩敵龃a元的不相關(guān)序列不太 可能重疊(由于給定輸入序列的輸出碼元的較大空間),這些碼有時(shí)被稱為"信息 加成碼"。
對(duì)隨機(jī)塊碼,生成矩陣是通過隨機(jī)或偽隨機(jī)地選擇GF(力中的元素獲得的。應(yīng) 理解,如此處所用,"隨機(jī)"也可包含"偽隨機(jī)",但為改進(jìn)本公開的可讀性起見, 沒有在所有地方都明確地指出。域大小g負(fù)責(zé)矩陣的秩性質(zhì)。 一般而言,《越大,
則給定維數(shù)的矩陣具有滿秩的可能性越高。上述解碼過程中步驟3 (c)的成功與 否是由矩陣的秩性質(zhì)確定的。
對(duì)GF(《)上的隨機(jī)鏈?zhǔn)椒磻?yīng)碼,每一輸出碼元是使用如Luby I和Shokrollahi I 中所述的鍵來生成的。對(duì)每一鍵,選擇輸入碼元的子集,并隨之對(duì)輸入碼元元素中 的每一個(gè)選擇域GF(q)中的隨機(jī)或偽隨機(jī)元素。概念上,形成包含GF(《)中所選值 以及對(duì)對(duì)應(yīng)于未選擇的輸入碼元的那些位置的0的向量,且將結(jié)合交叉變換的基于 子碼元的編碼過程應(yīng)用于該矩陣。創(chuàng)建矩陣的中間步驟純粹是概念性的,可在應(yīng)用 中整體省略。
作為示例,再次考慮GF(16)上的代碼的情況。A行A列的隨機(jī)矩陣在有大約等 于93X的概率的GF(16)上可逆。(應(yīng)理解,除非以其它方式指出,否則對(duì)此處描 述為"隨機(jī)"的任何事物,也可使用"偽隨機(jī)"。)這意味著,在應(yīng)用上述解碼過 程中,在93%的情況中,計(jì)數(shù)器/保持為0,因此不需要接收超過原始數(shù)據(jù)大小的 數(shù)據(jù)。&行^+/列的隨機(jī)矩陣有大約等于99.5%的概率具有秩&。這意味著,僅在0.5%的情況中,計(jì)數(shù)器/才會(huì)達(dá)到2。類似地,/永不超過2的概率大約為99.7%, /永不超過3的概率大約為99.998%, /永不超過4的概率大約為99.99998。%,諸 如此類,且它超過6的概率大約為4 x l(T9。表1示出了解碼器對(duì)所接收的超額分 組的個(gè)數(shù)的各個(gè)其它值的出錯(cuò)概率。表1中的數(shù)據(jù)示出了可能構(gòu)造具有非常良好的 開銷的隨機(jī)碼,因?yàn)樗鼈兪窃谳^小的域上構(gòu)建的,因此它們具有比Reed-Solomon 碼更有效編碼和解碼算法。
表1
所接收到的超額分組
0
1
2
4
6
7
8
9
10
解碼出錯(cuò)概率
6.6 x 10—2 4.2 x IO-3 2.7x 10-4
1.7 x l(T5
1.2 x 10 6.4 x 10-
-6
4.0 x 10
.9
2.5 x 10
1.6 x 10 9.8 x 10 6.1 x 10
-10
■13
■14
域GF(4)上發(fā)生類似的結(jié)果。表2示出了 GF(4)上作為所接收的超額分組的個(gè) 數(shù)的函數(shù)的解碼器的出錯(cuò)概率。注意,相比GF(16)上的代碼,GF(4)增加了一倍的
編碼和解碼速度。
表2
所接收到的超額分組
0
1
2
解碼出錯(cuò)概率
3.1 x 10"
8.2 x 10-2
2.1 x 10-2
5.2 x 10-3
4
1.3 x 10
.3
215 3.3 x l(T
6 8.2 x l(T:
7 2.1 x
8 5.1x10-'
9 1.3x10—
10 3.2x10—
以上的數(shù)字示出,即使在非常小的開銷的情況下,基于信息加成碼的GF(4) 或GF(16)上的隨機(jī)碼也運(yùn)行得非常優(yōu)異。
盡管示出了與交叉變換一起使用的非Reed-Solomon編碼的若干示例,但其它 非Reed-Solomon基礎(chǔ)矩陣也可起作用。
變化
在某些變化中,并行操作編碼器來更快速地生成輸出碼元。為了獲得子碼元 操作的某些便利,并行編碼器模塊應(yīng)該是相互依賴而不是完全獨(dú)立操作的。例如, 并行編碼器可協(xié)調(diào)在多個(gè)輸入碼元中對(duì)子碼元集合的選擇用于值函數(shù)的應(yīng)用,使得 子碼元在多個(gè)輸入碼元中混合且來自輸入碼元內(nèi)的不同子碼元位置。
結(jié)論
基于子碼元的編碼可使用少于Reed-Solomon碼的算術(shù)運(yùn)算來操作。注意到, 如果要求了最優(yōu)性條件,則這樣的代碼不存在,但是通過放松該要求,則可能有所 感興趣的代碼。盡管可示出,對(duì)這樣的碼不得不喪失就必須接收以便能夠解碼原始 內(nèi)容的輸出碼元的個(gè)數(shù)而言的最優(yōu)性條件,但是某類代碼顯示出示出它們?cè)诖蠖鄶?shù) 情況中類似于Reed-Solomon碼執(zhí)行,且僅在少量情況中需要額外的碼元來恢復(fù)原 始內(nèi)容的合理的統(tǒng)計(jì)特性。
觀察到不總是要求絕對(duì)的最優(yōu)性,且這并不總是導(dǎo)向?qū)?shù)據(jù)的完全恢復(fù),通 ??梢韵喈?dāng)少的計(jì)算工作量來得到足夠好的接近最優(yōu)傳輸效率。例如,使用具有較 小字母表的代碼極大地減少了計(jì)算工作量,同時(shí)僅引起對(duì)絕對(duì)最優(yōu)性的稍微放松。
在某些較佳實(shí)施例中,向經(jīng)由可能有損的通信介質(zhì)通信的兩個(gè)或多個(gè)多用途 計(jì)算機(jī)提供執(zhí)行上述通信過程的指令集(或軟件)。機(jī)器的個(gè)數(shù)可從一個(gè)發(fā)送方和 一個(gè)接收方變化到任何數(shù)量的發(fā)送和/或接收的機(jī)器。連接機(jī)器的通信介質(zhì)可以是 有線、光學(xué)、無線等。上述通信系統(tǒng)具有多種用途,通過閱讀本說明書這是顯而易見的。
以上描述是說明性而非限制性的。在審閱本公開之后,對(duì)本領(lǐng)域的技術(shù)人員 而言,本發(fā)明的各種變化是顯而易見的。從而,本發(fā)明的范圍不是參考以上描述確 定的,而是參考所附權(quán)利要求書以及其等效實(shí)施方式的全部范圍來確定的。
權(quán)利要求
1.一種用于在目的地經(jīng)由通信信道從源接收數(shù)據(jù)的方法,其中所要接收的數(shù)據(jù)被排列成輸入碼元的有序集合,所述方法包括經(jīng)由所述通信信道接收多個(gè)輸出碼元,其中所述多個(gè)輸出碼元使得對(duì)與輸入碼元的有序集合相等大小的所接收的輸出碼元的至少一個(gè)可能的集合,需要附加接收輸出碼元來從所述多個(gè)輸出碼元中完全地重新生成所述輸入碼元的有序集合;從所述多個(gè)輸出碼元中生成多個(gè)輸出子碼元,其中輸出子碼元使用值函數(shù)和一組關(guān)聯(lián)對(duì)應(yīng)于一個(gè)或多個(gè)輸入子碼元,其中輸入子碼元是輸入碼元的一部分或全部,且至少一個(gè)輸入碼元被分成兩個(gè)或多個(gè)輸入子碼元,且每一輸入子碼元可使用其輸入碼元內(nèi)唯一的索引來標(biāo)識(shí),其中所述一組關(guān)聯(lián)標(biāo)識(shí)應(yīng)用所述值函數(shù)的所述輸入子碼元,其中至少一個(gè)輸出子碼元是各自含有其輸入碼元內(nèi)的不同索引的多個(gè)輸入子碼元的函數(shù);從所述多個(gè)輸出子碼元中生成多個(gè)輸入子碼元;以及從所述多個(gè)輸入子碼元中重新生成所述輸入碼元的有序集合。
2. 如權(quán)利要求l所述的方法,其特征在于,所述給定輸入碼元的集合的可能 的輸出碼元的個(gè)數(shù)相對(duì)于重新生成所述輸入碼元的集合所需的輸出碼元的個(gè)數(shù)實(shí) 際上是無限的。
3. 如權(quán)利要求l所述的方法,其特征在于,至少一個(gè)輸出子碼元對(duì)應(yīng)于一個(gè) 以上輸入子碼元、且少于所述輸入子碼元集合中的所有輸入子碼元、且少于至少一 個(gè)輸入碼元中的所有子碼元。
4. 如權(quán)利要求1所述的方法,其特征在于,所述輸入碼元的每一個(gè)被分成公 共個(gè)數(shù)的子碼元,且所述公共個(gè)數(shù)大于l。
5. 如權(quán)利要求1所述的方法,其特征在于,所述值函數(shù)對(duì)所有的輸出子碼元 相同。
6. 如權(quán)利要求1所述的方法,其特征在于,所述值函數(shù)對(duì)至少兩個(gè)輸出子碼元不同。
7. 如權(quán)利要求1所述的方法,其特征在于,所述一組關(guān)聯(lián)是使用鏈?zhǔn)椒磻?yīng)編 碼過程來確定的。
8. 如權(quán)利要求1所述的方法,其特征在于,所述值函數(shù)是所述一組關(guān)聯(lián)的線性函數(shù)。
9. 如權(quán)利要求8所述的方法,其特征在于,所述線性函數(shù)是使用交叉變換過 程導(dǎo)出的。
10. 如權(quán)利要求l所述的方法,其特征在于,所述值函數(shù)隨輸出子碼元變化,所述值函數(shù)是使用交叉變換過程導(dǎo)出的所述一組關(guān)聯(lián)的線性函數(shù),其中多個(gè)值函數(shù)是使用應(yīng)用于在至少高于其素域2次的有限域上定義的代碼的生成矩陣的交叉變 換過程得到的。
11. 如權(quán)利要求10所述的方法,其特征在于,所述代碼是在虧格大于O的曲 線上定義的代數(shù)幾何碼。
12. 如權(quán)利要求IO所述的方法,其特征在于,所述代碼是隨機(jī)碼。
13. 如權(quán)利要求IO所述的方法,其特征在于,所述代碼是在作為高于其素域 至少2次的擴(kuò)張的有限域上的鏈?zhǔn)椒磻?yīng)碼。
14. 如權(quán)利要求13所述的方法,其特征在于,所述鏈?zhǔn)椒磻?yīng)碼是隨機(jī)碼。
15. —種恢復(fù)經(jīng)編碼的數(shù)據(jù)的方法,其中所述數(shù)據(jù)被分成s個(gè)碼元,s是大于 l的整數(shù),其中A個(gè)碼元足以恢復(fù)所述數(shù)據(jù),A小于l其中s個(gè)碼元用于構(gòu)成?個(gè) 子碼元,/是大于1的整數(shù),其中s個(gè)碼元中的至少一個(gè)用于構(gòu)成Z個(gè)子碼元中的 一個(gè)以上,其中子碼元用于恢復(fù)其它子碼元,所述方法包括-獲得n個(gè)子碼元,其中所述w個(gè)子碼元不包括所述f個(gè)子碼元中的至少一個(gè); 從所述《個(gè)子碼元中恢復(fù)不包括在所述w個(gè)子碼元中的所述f個(gè)子碼元中的一 個(gè)或多個(gè);從所述"個(gè)子碼元和恢復(fù)?個(gè)子碼元中的一個(gè)或多個(gè)中恢復(fù)至少A個(gè)碼元;以及從所述至少A個(gè)碼元中恢復(fù)所述數(shù)據(jù)。
全文摘要
本發(fā)明涉及一種使用基于子碼元的代碼來保護(hù)數(shù)據(jù)不被刪除的方法。編碼器(115)讀取構(gòu)成輸入文件(101)或輸入流(105)的有序的多個(gè)輸入碼元(110),并產(chǎn)生輸出子碼元。該有序的多個(gè)輸入碼元各自是從輸入字母表中選擇的,且所生成的輸出子碼元包含輸出子碼元字母表中的選擇。輸出子碼元是使用應(yīng)用于輸入碼元的子碼元的函數(shù)求值器來生成的。用于生成輸出子碼元的函數(shù)可以是對(duì)輸入子碼元中的某一些的XOR,且這些函數(shù)是從在擴(kuò)域GF(2)上定義的線性碼中獲得的。在解碼器(155)中,由接收方接收的輸出子碼元是從由基于輸入序列的編碼生成輸出碼元的一個(gè)發(fā)送方發(fā)送的這些輸出子碼元中獲得的。
文檔編號(hào)H03M7/00GK101582698SQ20091014160
公開日2009年11月18日 申請(qǐng)日期2004年12月1日 優(yōu)先權(quán)日2003年12月1日
發(fā)明者M·A·肖克羅拉西 申請(qǐng)人:數(shù)字方敦股份有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
登封市| 保山市| 宜君县| 清丰县| 聂荣县| 宜宾市| 革吉县| 崇礼县| 龙泉市| 卢龙县| 邓州市| 涞源县| 吉林省| 阳信县| 临沧市| 吴桥县| 施秉县| 左贡县| 香格里拉县| 兰西县| 庆元县| 班玛县| 嘉鱼县| 桦南县| 射阳县| 大港区| 宜宾县| 抚顺市| 象山县| 名山县| 留坝县| 康乐县| 赤峰市| 诸城市| 广南县| 宣威市| 宁明县| 永定县| 科技| 秭归县| 丰原市|