專利名稱:連鎖反應(yīng)碼的系統(tǒng)編碼和解碼的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及編碼和解碼所有類型的數(shù)據(jù)的系統(tǒng)和方法,更特別地,涉及使用連鎖反應(yīng)碼來編碼和解碼數(shù)據(jù)的系統(tǒng)和方法。
在發(fā)送者和接收者之間通過信道傳輸數(shù)據(jù)已成為很多文獻(xiàn)的主題。較佳地,但不是必須,接收者希望按照某種程度的確定性來接收由發(fā)送者通過信道傳輸?shù)臄?shù)據(jù)的確切拷貝。當(dāng)信道沒有完美的保真度時(shí)(這涵蓋所有物理上可實(shí)現(xiàn)的系統(tǒng)中的大多數(shù)),一個(gè)考慮是如何處理在傳輸中丟失或損壞的數(shù)據(jù)。丟失的數(shù)據(jù)(丟失)處理起來通常比損壞的數(shù)據(jù)(差錯(cuò))更簡單,因?yàn)樵趽p壞的數(shù)據(jù)是錯(cuò)誤接收的數(shù)據(jù)時(shí),接收者并不總是能知道這一情況。已開發(fā)了很多糾錯(cuò)碼來糾正丟失和/或差錯(cuò)。通常,基于有關(guān)傳輸數(shù)據(jù)的信道失真的某些信息以及所傳輸?shù)臄?shù)據(jù)的本質(zhì)來選擇使用特殊的碼。例如,當(dāng)已知信道具有較長時(shí)間段的失真時(shí),突發(fā)差錯(cuò)碼可能最適合于該應(yīng)用。當(dāng)失真時(shí)間段較短時(shí),估計(jì)差錯(cuò)發(fā)生不頻繁,則簡單的奇偶校驗(yàn)碼可能最好。
選擇代碼的另一個(gè)考慮是用于傳輸?shù)膮f(xié)議。在因特網(wǎng)的情況下,使用包協(xié)議進(jìn)行數(shù)據(jù)傳輸。該協(xié)議稱為互聯(lián)網(wǎng)協(xié)議或簡稱“IP”。當(dāng)通過IP網(wǎng)絡(luò)發(fā)送文件或其他數(shù)據(jù)塊時(shí),將它們劃分為相等大小的輸入符號(hào),并將輸入符號(hào)放入連續(xù)的包中。輸入符號(hào)的“大小”可以通過比特來衡量,不管是否將輸入符號(hào)實(shí)際劃分為比特流,當(dāng)輸入符號(hào)具有M比特的大小時(shí),從2M個(gè)符號(hào)的字母表中選擇輸入符號(hào)。在這樣基于包的通信系統(tǒng)中,面向包的編碼方案可能是最適合的。
如果傳輸允許預(yù)定的接收者即使在網(wǎng)絡(luò)中出現(xiàn)丟失時(shí)也能復(fù)原原始文件的確切拷貝,則稱其為可靠的。在因特網(wǎng)上,通常會(huì)因?yàn)榕紶柕膿砣沟寐酚善髦械木彌_機(jī)制達(dá)到其最大容量并迫使其丟棄進(jìn)入的包而發(fā)生包丟失。在傳輸期間針對(duì)丟失進(jìn)行保護(hù)已成為很多研究的主題。
傳輸控制協(xié)議(TCP)是常用的具有確認(rèn)機(jī)制的點(diǎn)對(duì)點(diǎn)的包控制方案。使用TCP,發(fā)送者傳輸有序的包,而接收者確認(rèn)每個(gè)包的接收。如果丟失了一個(gè)包,則不會(huì)發(fā)送確認(rèn)到發(fā)送者,而發(fā)送者將重發(fā)送該包。對(duì)TCP這樣的協(xié)議,由于可以重發(fā)送丟失的包來響應(yīng)確認(rèn)的缺乏或者響應(yīng)來自接收者的明確請(qǐng)求,確認(rèn)方案允許包丟失而不導(dǎo)致完全失敗。
雖然基于確認(rèn)的協(xié)議通常適合于很多應(yīng)用并且實(shí)際上廣泛使用在當(dāng)前的因特網(wǎng)上,它們還是不夠的,并且有時(shí)完全不可行,如對(duì)Luby I中描述的特定應(yīng)用那樣。
一種已提出用于解決傳輸問題的解決方案是避免使用基于確認(rèn)的協(xié)議,而是使用前向糾錯(cuò)(FEC)碼,如Reed-Solomon碼、Tornado碼,或連鎖反應(yīng)碼來提高可靠性。其基本思想是發(fā)送通過內(nèi)容生成的輸出符號(hào),而不只是構(gòu)成內(nèi)容的輸入符號(hào)?,F(xiàn)有的丟失糾錯(cuò)碼,如Reed-Solomon或Tornado碼,對(duì)固定長度的內(nèi)容生成固定數(shù)量的輸出符號(hào)。例如,對(duì)K個(gè)輸入符號(hào),可以生成N個(gè)輸出符號(hào)。這N個(gè)輸出符號(hào)可以包括K個(gè)原始的輸入符號(hào)和N-K個(gè)冗余符號(hào)。如果存儲(chǔ)允許,則服務(wù)器可以對(duì)每個(gè)內(nèi)容只進(jìn)行一次輸出符號(hào)集合的計(jì)算,并使用輪播協(xié)議來傳輸輸出符號(hào)。
某些FEC碼的一個(gè)問題是使用它們需要額外的計(jì)算能力或存儲(chǔ)。另一個(gè)問題是輸出符號(hào)的數(shù)量必須在編碼處理之前確定。這可能在過高估計(jì)包丟失率時(shí)導(dǎo)致低效,并可能在過低估計(jì)包丟失率時(shí)導(dǎo)致失敗。
對(duì)現(xiàn)有的FEC碼,可能生成的輸出符號(hào)的數(shù)量在數(shù)量級(jí)上與內(nèi)容所劃分為的輸入符號(hào)數(shù)量相同。通常,但不是所有,這些輸出符號(hào)中的多數(shù)或全部都在發(fā)送步驟之前的預(yù)處理步驟中生成。這些輸出符號(hào)具有這樣的屬性,可以通過輸出符號(hào)在長度上與原始內(nèi)容等長或比原始內(nèi)容稍長的任何子集再生成所有輸入符號(hào)。
在標(biāo)題為“通信系統(tǒng)的信息附加碼生成器和解碼器”、編號(hào)為6,307,487的美國專利(此后稱為“Luby I”)和標(biāo)題為“通信系統(tǒng)的多階段碼生成器和解碼器”、編號(hào)為10/032,156的美國專利申請(qǐng)(此后稱為“Raptor”)中描述的“連鎖反應(yīng)編碼”表示不同形式的處理上述問題的前向糾錯(cuò)。對(duì)連鎖反應(yīng)碼,可能生成的輸出符號(hào)池在數(shù)量級(jí)上大于輸入符號(hào)的數(shù)量,和可以非常快速地通過概率池生成隨機(jī)輸出符號(hào)。對(duì)連鎖反應(yīng)碼,可以根據(jù)需要即時(shí)地與發(fā)送步驟同時(shí)生成輸出符號(hào)。連鎖反應(yīng)碼具有這樣的屬性,可以通過隨機(jī)生成的輸出符號(hào)集合在長度上稍長于原始內(nèi)容的任何子集再生成內(nèi)容的所有輸入符號(hào)。
對(duì)各種連鎖反應(yīng)編碼系統(tǒng)其他描述可以在這樣的文檔中找到,如2000年9月22日提交、標(biāo)題為“對(duì)窗口的按需編碼”、編號(hào)為09/668,452的美國專利申請(qǐng)及2000年10月18日提交、標(biāo)題為“使用基礎(chǔ)生成高權(quán)重輸出符號(hào)”、編號(hào)為09/691,735的美國專利申請(qǐng)。
連鎖反應(yīng)編碼系統(tǒng)的某些實(shí)施例包括編碼器和解碼器。可以按塊或流的形式向編碼器提供數(shù)據(jù),且編碼器可以通過塊或流即時(shí)生成輸出符號(hào)。在某些實(shí)施例,例如在Raptor中描述的那些實(shí)施例中,可以使用靜態(tài)編碼器離線地預(yù)先編碼數(shù)據(jù),且可以通過多個(gè)原始數(shù)據(jù)符號(hào)和靜態(tài)輸出符號(hào)生成輸出符號(hào)。
在連鎖反應(yīng)編碼系統(tǒng)的某些實(shí)施例中,編碼和解碼處理依賴于權(quán)重表。權(quán)重表描述源符號(hào)集合上的概率分布。即,對(duì)1和源符號(hào)數(shù)量之間的任何數(shù)W,權(quán)重表指示唯一的概率P(W)。可能P(W)對(duì)絕大多數(shù)W的值為0,在此情況只需要包含那些P(W)不為0的權(quán)重W。
在連鎖反應(yīng)編碼系統(tǒng)的某些實(shí)施例中,按如下方式生成輸出符號(hào)對(duì)每個(gè)輸出符號(hào)隨機(jī)生成一個(gè)密鑰?;谠撁荑€,通過權(quán)重表計(jì)算權(quán)重W。然后選擇W個(gè)源符號(hào)的隨機(jī)子集。然后輸出符號(hào)將是這些源符號(hào)的XOR結(jié)果。此后將這些源符號(hào)稱為輸出符號(hào)的鄰居或伙伴。可以使用此基本方案的各種修改和擴(kuò)展,它們已在上述專利和專利申請(qǐng)中描述。
一旦已生成了輸出符號(hào),就可以將它和它的密鑰或如何再生成密鑰的指示一起發(fā)送到預(yù)定的接收者。在某些實(shí)施例中,很多輸出符號(hào)可以組成一個(gè)傳輸包,例如2001年2月22日提交、標(biāo)題為“在服務(wù)器上提供服務(wù)的多文件調(diào)度”、編號(hào)為09/792,364的美國專利申請(qǐng)描述的那樣。
在特定的應(yīng)用中,最好首先傳輸源符號(hào),然后通過發(fā)送輸出符號(hào)來繼續(xù)傳輸。這樣的編碼系統(tǒng)在此稱為系統(tǒng)編碼系統(tǒng)。在接收方,接收者可以嘗試接收盡可能多的原始輸入符號(hào),用一個(gè)或多個(gè)輸出符號(hào)替換未接收到的輸入符號(hào)并使用它們來復(fù)原丟失的輸入符號(hào)。輸出符號(hào)的傳輸可以主動(dòng)地進(jìn)行,不需要接收者的明確請(qǐng)求,或被動(dòng)地進(jìn)行,即,響應(yīng)接收者的明確請(qǐng)求。例如,對(duì)估計(jì)沒有丟失或只有很小量的丟失的應(yīng)用,首先發(fā)送原始輸入符號(hào)并只在丟失的情況下發(fā)送附加的輸出符號(hào)可能是有利的。以此方式,如果不存在丟失,則不需要執(zhí)行解碼。作為另一種應(yīng)用,考慮將現(xiàn)場直播視頻流傳輸?shù)揭粋€(gè)或多個(gè)接收者的情況。當(dāng)估計(jì)存在某些丟失時(shí),使用連鎖反應(yīng)碼保護(hù)數(shù)據(jù)可能是有利的。由于現(xiàn)場直播傳輸?shù)谋举|(zhì),接收器能夠緩沖的數(shù)據(jù)的特定部分最多只能達(dá)預(yù)定時(shí)間量。如果在此時(shí)間量之后接收的符號(hào)的數(shù)量不足以完成數(shù)據(jù)的重建,則在特定應(yīng)用中將至此接收的這些部分?jǐn)?shù)據(jù)轉(zhuǎn)發(fā)到視頻播放器可能是有利的。在特定的應(yīng)用中,當(dāng)使用適當(dāng)?shù)脑淳幋a方法時(shí),視頻播放器可能可以按降低的質(zhì)量來回放數(shù)據(jù)??偟膩碚f,當(dāng)應(yīng)用能夠利用只是部分復(fù)原的數(shù)據(jù)時(shí),使用系統(tǒng)編碼系可能是有利的。
直接修改如Luby I或Raptor中描述的連鎖反應(yīng)編碼系統(tǒng)的實(shí)施例來產(chǎn)生系統(tǒng)編碼系統(tǒng)通常會(huì)導(dǎo)致低效。例如,如果在連鎖反應(yīng)編碼系統(tǒng)中首先傳輸?shù)姆?hào)包括原始符號(hào),則可能需要接收一些純粹的輸出符號(hào),為了能夠復(fù)原原始數(shù)據(jù),這些輸出符號(hào)的數(shù)量級(jí)和原始符號(hào)相同。換句話說,接收原始符號(hào)可能只在最小的程度有助于解碼處理,因此解碼處理只好完全依賴于其他接收的符號(hào)。這導(dǎo)致了不必要的較高接收開銷。
因此,要連鎖反應(yīng)編碼系統(tǒng)的系統(tǒng)版本,它應(yīng)具有高效的編碼和解碼算法,并具有和連鎖反應(yīng)編碼系統(tǒng)類似的開銷。
發(fā)明內(nèi)容
本發(fā)明提供使用系統(tǒng)連鎖反應(yīng)編碼和解碼處理編碼和解碼數(shù)據(jù)的系統(tǒng)和方法。本發(fā)明可以在大量的應(yīng)用中使用,其中之一是更快、更可靠并以更少的計(jì)算開銷發(fā)送數(shù)據(jù)的數(shù)據(jù)通信系統(tǒng)。
在本發(fā)明的一個(gè)實(shí)施例中,提供了將數(shù)據(jù)編碼為連鎖反應(yīng)碼的方法。首先,通過數(shù)據(jù)生成輸入符號(hào)的集合。接下來,通過該輸入符號(hào)集合生成一個(gè)或多個(gè)非系統(tǒng)輸出符號(hào),從非系統(tǒng)輸出符號(hào)的字母表中選擇一個(gè)或多個(gè)非系統(tǒng)輸出符號(hào)中的每一個(gè),且將每個(gè)非系統(tǒng)輸出符號(hào)作為一個(gè)或多個(gè)輸入符號(hào)的函數(shù)生成。作為此編碼處理的結(jié)果,輸入符號(hào)集合的任何子集都可以通過(i)預(yù)定數(shù)量的非系統(tǒng)輸出符號(hào),或(ii)(a)不包括在要復(fù)原的輸入符號(hào)的子集內(nèi)的輸入符號(hào),與(b)一個(gè)或多個(gè)非系統(tǒng)輸出符號(hào)的組合來復(fù)原。
通過下面的附圖和詳細(xì)說明,闡明本發(fā)明的附加實(shí)施例及特性。
圖1A和1B各自展示非系統(tǒng)連鎖反應(yīng)編碼器和解碼器的例子實(shí)施例;圖2展示在連鎖反應(yīng)解碼處理中通過原始輸入符號(hào)生成輸出符號(hào);圖3展示在連鎖反應(yīng)解碼處理中使用的例子解碼圖;圖4展示圖3所示解碼圖的解碼矩陣;圖5展示在連鎖反應(yīng)解碼處理中使用的獲取修正的解碼圖的例子處理;圖6展示公式在連鎖反應(yīng)解碼處理中使用的修正的解碼;圖7A展示根據(jù)本發(fā)明使用系統(tǒng)連鎖反應(yīng)碼編碼數(shù)據(jù)的例子方法;圖7B展示根據(jù)本發(fā)明解碼系統(tǒng)連鎖反應(yīng)碼的例子方法;圖7C展示根據(jù)本發(fā)明的一個(gè)實(shí)施例使用系統(tǒng)編碼和解碼的通信系統(tǒng)的框圖;圖8A展示本發(fā)明的一個(gè)實(shí)施例的系統(tǒng)編碼器的操作;圖8B展示本發(fā)明的一個(gè)實(shí)施例的系統(tǒng)解碼器的操作;圖9A展示本發(fā)明的系統(tǒng)編碼器的一個(gè)實(shí)施例;圖9B展示本發(fā)明的系統(tǒng)解碼器的一個(gè)實(shí)施例;圖10展示本發(fā)明的生成系統(tǒng)密鑰的一種方法;圖11展示本發(fā)明的生成系統(tǒng)密鑰的第二種方法;圖12展示本發(fā)明的生成系統(tǒng)密鑰的第三種方法;圖13展示本發(fā)明的生成系統(tǒng)密鑰的第四種方法;圖14展示本發(fā)明的解碼具有系統(tǒng)和非系統(tǒng)符號(hào)的連鎖反應(yīng)碼的方法;及圖15-17展示本發(fā)明的一個(gè)實(shí)施例中的編碼和解碼處理。
為了簡潔和方便起見,在前面的圖中已標(biāo)識(shí)出的特性和組件在后面的圖中保持其引用編號(hào)。
具體實(shí)施例方式
I.非系統(tǒng)連鎖反應(yīng)編碼器和解碼器圖1A和1B各自展示如Luby I和Raptor中所述的非系統(tǒng)連鎖反應(yīng)編碼器130和解碼器170的例子實(shí)施例。雖然在Luby I和Raptor中沒有這樣描述,這些實(shí)施例在此稱為“非系統(tǒng)的”以區(qū)分它們的結(jié)構(gòu)和操作與下面展示的系統(tǒng)編碼器和解碼器。
下面參考圖1A,非系統(tǒng)編碼器130接收輸入符號(hào)IS(0)、IS(1)、…和密鑰生成器120生成的密鑰I0、I1、…??梢允孪戎垒斎敕?hào)的數(shù)量,也可以不這樣。在某些實(shí)施例中,非系統(tǒng)編碼器130對(duì)每個(gè)密鑰I都生成一個(gè)輸出符號(hào)。在圖1A中,輸出由B(I0)、B(I1)、…表示,它們對(duì)應(yīng)于密鑰I0、I1、…。生成的輸出符號(hào)的數(shù)量可以是無限的。密鑰生成器120可以訪問隨機(jī)數(shù)生成器,后者生成密鑰。另外,密鑰I也可以由其他機(jī)制生成。編碼器130可以包括靜態(tài)和動(dòng)態(tài)編碼器,如Raptor中的例子描述的那樣。它可以訪問用于描述靜態(tài)編碼器的附加密鑰生成器。
存在通過輸入符號(hào)獲取輸出符號(hào)的各種方法,參見Luby I和Raptor。在圖2中給出了這樣的編碼方法的一個(gè)例子實(shí)施例。它描述了通過原始輸入符號(hào)生成輸出符號(hào)270。原始輸入符號(hào)由210(a)-210(f)表示。在某些實(shí)施例中,編碼處理的第一步是靜態(tài)編碼,如Raptor中描述的那樣。此步驟可以產(chǎn)生源符號(hào),由220(a)-220(f)和260(a)-260(c)表示。在某些實(shí)施例中,靜態(tài)編碼可以是系統(tǒng)的,這使得源符號(hào)220(a)-220(f)的值等于210(a)-210(f)的值。在某些實(shí)施例中,可以沒有靜態(tài)編碼,在此情況下,輸入符號(hào)和源符號(hào)一致。在數(shù)據(jù)符號(hào)變得可用時(shí),可以離線或在線產(chǎn)生源符號(hào)。
一旦已創(chuàng)建了源符號(hào),通過源符號(hào)就生成輸出符號(hào)。在某些實(shí)施例中,輸出符號(hào)的值是某些源符號(hào)值的XOR。對(duì)每個(gè)輸出符號(hào),密鑰生成器120產(chǎn)生一個(gè)密鑰,通過它用權(quán)重表250確定輸出符號(hào)的權(quán)重。一旦確定了權(quán)重W,就選擇W個(gè)隨機(jī)或偽隨機(jī)源符號(hào),且將輸出符號(hào)的值作為這些源符號(hào)值的XOR計(jì)算。例如,在圖2中,輸出符號(hào)270的權(quán)重等于3,且將其值作為源符號(hào)220(a)、220(d)和260(b)的XOR確定。在此說明書中,輸出符號(hào)的權(quán)重有時(shí)也稱為輸出符號(hào)的次數(shù)。如果源符號(hào)S對(duì)輸出符號(hào)O的值有貢獻(xiàn),則S和O稱為鄰居。例如,在圖2中所示的情況下,輸出符號(hào)270是源符號(hào)220(a)、220(b)和220(d)中每一個(gè)的鄰居。
在Luby I和Raptor中詳細(xì)描述了圖1B中連鎖反應(yīng)解碼器170的各種實(shí)施例。在某些實(shí)施例中,一旦收集到足夠的輸出符號(hào)就開始解碼處理。在某些實(shí)施例中,收集到的輸出符號(hào)的數(shù)量稍微大于原始輸入符號(hào)的數(shù)量。在另外的實(shí)施例中,收集到的開始解碼處理所需的輸出符號(hào)的數(shù)量可以明顯小于原始輸入符號(hào)的數(shù)量。
在某些實(shí)施例中,密鑰再生成器160對(duì)每個(gè)接收到的輸出符號(hào)計(jì)算與其對(duì)應(yīng)的密鑰,并通過該密鑰確定相鄰的源符號(hào)。
對(duì)連鎖反應(yīng)解碼的解碼處理實(shí)施例的一種可能描述可以根據(jù)對(duì)應(yīng)的解碼圖進(jìn)行,如圖3所示。該圖包括兩個(gè)節(jié)點(diǎn)集合,源節(jié)點(diǎn)和輸出節(jié)點(diǎn),它們分別對(duì)應(yīng)于源符號(hào)和接收到的輸出符號(hào)。源節(jié)點(diǎn)對(duì)應(yīng)源符號(hào),類似地,輸出節(jié)點(diǎn)對(duì)應(yīng)于輸出符號(hào)。如果對(duì)應(yīng)于源節(jié)點(diǎn)的源符號(hào)是鄰居對(duì)應(yīng)于輸出節(jié)點(diǎn)的輸出符號(hào),則將連接這兩個(gè)輸出節(jié)點(diǎn)和源節(jié)點(diǎn)。在此情況,所述輸出節(jié)點(diǎn)和所述源節(jié)點(diǎn)稱為鄰居。
在某些實(shí)施例中,通過識(shí)別次數(shù)為1的輸出節(jié)點(diǎn)O1開始解碼。然后聲明O1唯一的鄰居已復(fù)原,并將其從解碼圖中移除,然后處理繼續(xù)識(shí)別次數(shù)為1的另一個(gè)輸出節(jié)點(diǎn)O2。例如,在圖3所示的情況下,O1可以是由330(a)表示的輸出節(jié)點(diǎn)。從解碼圖中移除其唯一的鄰居320(b)將得到另一個(gè)次數(shù)為1的輸出節(jié)點(diǎn),即330(c)。處理繼續(xù),直到已復(fù)原所有的源節(jié)點(diǎn),或直到?jīng)]有剩下次數(shù)為1的輸出節(jié)點(diǎn)。
例如,在圖3所示的情況下,可以選擇下面的輸出節(jié)點(diǎn)序列來復(fù)原對(duì)應(yīng)的源節(jié)點(diǎn)
在此情況下,解碼成功。
在某些實(shí)施例中,可以使用圖解釋來設(shè)置解碼所需實(shí)際計(jì)算的時(shí)間表,如Luby I或Raptor所述的那樣。再者,可以按各種方式改變上述理想的解碼器來減少所需資源,并加速解碼處理,如上述專利和專利申請(qǐng)中描述的那樣。
在某些實(shí)施例中,解碼器可以輸出用來復(fù)原對(duì)應(yīng)的輸入節(jié)點(diǎn)的輸出節(jié)點(diǎn)序列。例如,在上述情況下,解碼器可以輸出對(duì)應(yīng)于輸出節(jié)點(diǎn)330(a)、330(c)、330(h)、330(d)、330(i)、330(b)、330(j)、330(e)、330(f)和330(g)的下標(biāo)。
有時(shí)考慮解碼圖的矩陣表示及以此矩陣對(duì)解碼算法的解釋(下面稱為解碼矩陣)是有利的。在本發(fā)明的某些實(shí)施例中,對(duì)應(yīng)于解碼圖的解碼矩陣的行數(shù)和輸出節(jié)點(diǎn)一樣多,而列數(shù)和源節(jié)點(diǎn)一樣多,其元素取值為0或1。如果第j個(gè)源節(jié)點(diǎn)是第k個(gè)輸出節(jié)點(diǎn)的鄰居,則在解碼矩陣的位置(k,j)的元素為1。
圖4展示圖3中解碼圖的解碼矩陣。熟悉技術(shù)的人應(yīng)理解,可以用對(duì)解碼矩陣給定的方程組求解來描述解碼問題。如果M表示對(duì)應(yīng)于解碼的解碼矩陣,輸出符號(hào)值的向量由b表示,且存在K個(gè)源節(jié)點(diǎn),則未知源符號(hào)值x1、x2、…、xk滿足矩陣公式M·x=b其中x為列向量(x1,x2…,xk)。如果存在M的行和列的排列使得結(jié)果矩陣是下三角矩陣,即,使得上述矩陣中主對(duì)角線上的值為0,則連鎖反應(yīng)解碼成功。例如,通過對(duì)M的行執(zhí)行排列(3→2,8→3,2→5,10→6,5→7,6→8,7→9),且對(duì)M的列執(zhí)行排列(2→1,5→2,8→3,9→4,1→5,3→7,7→8,4→9)可以產(chǎn)生下三角矩陣。按矩陣的術(shù)語來說,這意味著連鎖反應(yīng)解碼算法產(chǎn)生排列矩陣P和Q,使得P·M·Q是下三角矩陣。如熟悉技術(shù)的人所知,存在解線性方程組的各種方法。例如,可以使用高斯消去算法。
解碼的矩陣視圖僅用于說明目的,而不是限制性的。特別是,解碼器的實(shí)際操作可以本質(zhì)上不同于如Luby I、Raptor中所描述的上述說明和上述專利申請(qǐng)。
在某些實(shí)施例中,如果使用多階段連鎖反應(yīng)編碼系統(tǒng),如Raptor中描述的那樣,則可以通過描述由使用的特定靜態(tài)編碼給定的源符號(hào)之間的關(guān)系的第二個(gè)圖來增強(qiáng)解碼圖。例如,當(dāng)使用低密度奇偶校驗(yàn)碼進(jìn)行靜態(tài)編碼處理時(shí),可以在解碼圖中添加其數(shù)量和此碼的校驗(yàn)符號(hào)數(shù)量相等的輸出節(jié)點(diǎn),將它們的值設(shè)置為0,且可以用源節(jié)點(diǎn)和校驗(yàn)節(jié)點(diǎn)之間的低密度奇偶校驗(yàn)碼的圖來增強(qiáng)解碼圖,且可以用新的圖替換解碼圖。對(duì)低密度奇偶校驗(yàn)碼的選擇對(duì)本申請(qǐng)來說不是核心的??偟膩碚f,對(duì)任何類型的靜態(tài)編碼,對(duì)應(yīng)的奇偶校驗(yàn)矩陣定義增強(qiáng)解碼圖的雙向圖。在下文中,這個(gè)新的圖稱為修正的解碼圖。
圖5為獲取修正的解碼圖的流程的例子實(shí)施例。源節(jié)點(diǎn)由510(a)-510(f)表示,輸出節(jié)點(diǎn)由520(a)-520(g)表示,而校驗(yàn)節(jié)點(diǎn)由530(a)-520(d)表示。源節(jié)點(diǎn)對(duì)應(yīng)于源符號(hào)。輸出節(jié)點(diǎn)和源節(jié)點(diǎn)之間的圖是解碼圖,由輸出節(jié)點(diǎn)的鄰居結(jié)構(gòu)給定。校驗(yàn)節(jié)點(diǎn)和源節(jié)點(diǎn)之間的圖描述源節(jié)點(diǎn)之間的關(guān)系。例如,節(jié)點(diǎn)530(a)表明對(duì)應(yīng)于源節(jié)點(diǎn)510(a)、510(b)、510(e)和510(f)的源符號(hào)值的XOR是0。
修正的解碼圖對(duì)應(yīng)于包含0和1的修正的解碼矩陣,其列數(shù)和源節(jié)點(diǎn)相同,其行數(shù)和輸出節(jié)點(diǎn)與校驗(yàn)節(jié)點(diǎn)的聚合值相同。對(duì)應(yīng)地,修正的解碼矩陣包含兩組行,一組對(duì)應(yīng)于輸出節(jié)點(diǎn),另一組對(duì)應(yīng)于校驗(yàn)節(jié)點(diǎn)。當(dāng)存在L個(gè)輸出節(jié)點(diǎn)、C個(gè)校驗(yàn)節(jié)點(diǎn)和K個(gè)源節(jié)點(diǎn)時(shí),修正的解碼矩陣可以分解為L行K列的子矩陣Mo,和C行K列的矩陣Mc。如果x1、…、xk表示未知的源符號(hào)值,b1、…、bL表示已知的接收到的輸出符號(hào)的值,則解碼器的任務(wù)是解由Mo·x=b和Mc·x=0給定的方程組。組合的方程組可以是圖6中給出的那樣。
在連鎖反應(yīng)解碼器的某些實(shí)施例中,可以使用不同的解碼器,稱為失活解碼器。此解碼器更詳細(xì)地在共同指定的標(biāo)題為“通過失活來解碼連鎖反應(yīng)碼的系統(tǒng)和處理”、編號(hào)為10/459,370的待決美國專利申請(qǐng)中描述、,將此專利申請(qǐng)包含在此作為參考,并將該解碼器稱為“失活解碼器”。
II.系統(tǒng)連鎖反應(yīng)編碼器和解碼器及操作方法圖7A展示根據(jù)本發(fā)明使用系統(tǒng)連鎖反應(yīng)碼編碼數(shù)據(jù)的例子方法。如在此所用,術(shù)語“輸出符號(hào)”指連鎖反應(yīng)碼,其例子在Luby I和Raptor中描述。相應(yīng)地,系統(tǒng)和非系統(tǒng)輸出符號(hào)指特定類型的連鎖反應(yīng)碼,系統(tǒng)輸出符號(hào)包括傳輸?shù)妮斎敕?hào),而非系統(tǒng)輸出符號(hào)包括作為一個(gè)或多個(gè)輸入符號(hào)的函數(shù)的輸出符號(hào)。
圖7A的方法可以用于各種應(yīng)用,如編碼數(shù)據(jù)以通過實(shí)時(shí)信道傳輸,如通過因特網(wǎng)的路徑、從電視發(fā)射機(jī)至電視接收者的廣播鏈接或從一點(diǎn)到另一點(diǎn)的電話連接,或者信道可以是存儲(chǔ)信道,如一個(gè)或多個(gè)CD-ROM、磁盤、網(wǎng)站等等。信道甚至可以是實(shí)時(shí)信道和存儲(chǔ)信道的組合,如當(dāng)一個(gè)人通過電話線將輸入文件從個(gè)人計(jì)算機(jī)傳輸?shù)揭蛱鼐W(wǎng)服務(wù)提供商(ISP),將輸入文件存儲(chǔ)在Web服務(wù)器上,并接下來通過因特網(wǎng)傳輸給接收者時(shí)構(gòu)成的信道。
現(xiàn)參考圖7A,編碼處理開始于702,首先接收到輸入數(shù)據(jù)的集合,然后通過它們產(chǎn)生輸入符號(hào)集合。在Luby I和Raptor中描述了此處理的例子實(shí)施例,雖然在本發(fā)明的其他實(shí)施例中可以使用其他方法。如此說明書和那些參考或包含在此作為參考的內(nèi)容所述,輸入數(shù)據(jù)可以有任何的格式和類型,包括現(xiàn)場直播數(shù)據(jù),其中事先不知道整個(gè)輸入數(shù)據(jù)集合。
接下來,通過輸入符號(hào)生成一個(gè)或多個(gè)非系統(tǒng)輸出符號(hào)。在該處理的特殊實(shí)施例中,首先通過輸入符號(hào)生成中間輸入符號(hào)(704)。接下來,通過中間輸入符號(hào)生成一個(gè)或多個(gè)非系統(tǒng)輸出符號(hào)(706)。在本發(fā)明的其他實(shí)施例中,可以省略706的處理,并通過輸入符號(hào)生成非系統(tǒng)輸出符號(hào)。下面更詳細(xì)地展示這些處理中的每一個(gè)。
如下面進(jìn)一步的說明,輸入符號(hào)由輸入符號(hào)生成器作為輸入數(shù)據(jù)提供。如上所述,輸入數(shù)據(jù)可以是從二級(jí)設(shè)備,如視頻捕捉模塊實(shí)時(shí)獲取的數(shù)據(jù),或可以是靜態(tài)的,例如當(dāng)輸入數(shù)據(jù)存在于由二級(jí)應(yīng)用創(chuàng)建的文件或緩沖時(shí)。在本發(fā)明的其他應(yīng)用中,可以通過實(shí)時(shí)和靜態(tài)方法的組合獲取輸入數(shù)據(jù),例如通過從二級(jí)設(shè)備或應(yīng)用,如網(wǎng)卡中接收數(shù)據(jù),并將其存儲(chǔ)在存儲(chǔ)設(shè)備上以便由輸入符號(hào)生成器進(jìn)一步處理。
圖7B展示根據(jù)本發(fā)明解碼系統(tǒng)連鎖反應(yīng)碼的例子方法。首先在712,獲取輸入符號(hào)的第一個(gè)子集。通常應(yīng)用將確定如何實(shí)現(xiàn)此處理。例如,當(dāng)用在通信系統(tǒng)中時(shí),通過接收經(jīng)信道傳輸?shù)倪B鎖反應(yīng)碼的輸入符號(hào)來執(zhí)行此處理。如上所述,在本發(fā)明的特殊實(shí)施例中,信道可以是實(shí)時(shí)信道、存儲(chǔ)信道,或兩者的組合。在下面進(jìn)一步展示的特定實(shí)施例中,通過將輸入符號(hào)傳輸?shù)浇邮掌鱽韺?shí)現(xiàn)輸入符號(hào)的獲取,傳輸?shù)妮斎敕?hào)包括系統(tǒng)輸出符號(hào)。由于有期望的信道丟失,某些傳輸?shù)妮斎敕?hào)(即,系統(tǒng)輸出符號(hào))可能會(huì)丟失。因此,接收者只可以獲取有原始輸入符號(hào)集合的子集。
接下來在714,獲取一個(gè)或多個(gè)非系統(tǒng)輸出符號(hào)。雖然可以在另外的實(shí)施例中使用其他方法,非系統(tǒng)輸出符號(hào)的獲取通常將遵循與獲取輸入符號(hào)相同的形式。
方法在716繼續(xù),其中復(fù)原一個(gè)或多個(gè)未獲取到的輸入符號(hào)。在此處理的特定實(shí)施例中,可以通過非系統(tǒng)輸出符號(hào),或通過非系統(tǒng)輸出符號(hào)與獲取的輸入符號(hào)的組合來復(fù)原丟失的輸入符號(hào)。
716處的復(fù)原處理可以用于復(fù)原一個(gè)、幾個(gè)或全部丟失的輸入符號(hào)。一旦復(fù)原了所需數(shù)量的丟失輸入符號(hào),就將它們添加到獲取的輸入符號(hào)中,來重建原始輸入符號(hào)集合,并因此得到原始數(shù)據(jù)的拷貝。
圖7C為框圖,展示使用本發(fā)明的一個(gè)實(shí)施例的系統(tǒng)編碼和解碼的例子通信系統(tǒng)700。在通信系統(tǒng)700中,向輸入符號(hào)生成器726提供輸入文件721或輸入流725。輸入符號(hào)通過輸入文件或輸入流生成器726生成一個(gè)或多個(gè)輸入符號(hào)的序列(IS(0)、IS(1)、IS(2)、…),每個(gè)輸入符號(hào)都具有值和位置(在圖7中表示為帶括號(hào)的整數(shù))。如上所述,輸入符號(hào)的可能的值,即,其字母表,通常是2M個(gè)符號(hào)的字母表,從而每個(gè)輸入符號(hào)對(duì)輸入文件的M位編碼。通常使用通信系統(tǒng)700來確定M的值,但是通用系統(tǒng)也可以包括對(duì)輸入符號(hào)生成器726的符號(hào)大小輸入,從而每次使用的M可以不同。向系統(tǒng)編碼器728提供輸入符號(hào)生成器726的輸出。
非系統(tǒng)密鑰生成器727生成對(duì)應(yīng)于向編碼器728提供的輸入符號(hào)的密鑰I0、I1、I2、…,非系統(tǒng)密鑰用于計(jì)算從編碼器728輸出的非系統(tǒng)輸出符號(hào)B(I0)、B(I1)、B(I2)的值、…。生成每個(gè)非系統(tǒng)密鑰I0、I1、I2、…,使得大部分的密鑰對(duì)相同的輸入文件唯一。在一個(gè)實(shí)施例中,非系統(tǒng)密鑰生成器727包括前面圖1A中所示并在Luby I和Raptor中描述的密鑰生成器120,雖然可以在其他實(shí)施例中使用可用于生成非系統(tǒng)密鑰的其他類型的設(shè)備。
系統(tǒng)密鑰生成器730生成對(duì)應(yīng)于向編碼器728提供的輸入符號(hào)的系統(tǒng)密鑰C0、C1、C2、…,這些密鑰用于復(fù)原一個(gè)或多個(gè)未接收到的輸入符號(hào),這將在下面進(jìn)一步描述。它可以使用隨機(jī)數(shù)生成器735生成的隨機(jī)數(shù)來生成密鑰。接下來更詳細(xì)地描述系統(tǒng)密鑰的生成。向編碼器728提供非系統(tǒng)密鑰生成器727和系統(tǒng)密鑰生成器730的輸出。
通過由非系統(tǒng)密鑰生成器727提供的每個(gè)非系統(tǒng)密鑰I,編碼器728通過由輸入符號(hào)生成器提供的輸入符號(hào)生成具有值B(I)的非系統(tǒng)輸出符號(hào)。生成的非系統(tǒng)輸出符號(hào)可以是在Luby I中描述的輸出符號(hào)(單狀態(tài)編碼/解碼)或在Raptor中描述的輸出符號(hào)(多階段編碼/解碼)。下面將更詳細(xì)地描述例子系統(tǒng)編碼器728的操作?;谄涿荑€,并基于一個(gè)或多個(gè)輸入符號(hào)的某種函數(shù),生成每個(gè)輸出符號(hào)的值。
在某些實(shí)施例中,輸入符號(hào)的數(shù)量K由系統(tǒng)編碼器728用來選擇伙伴。如果事先不知道K,如當(dāng)輸入為流文件時(shí),K可以只是估計(jì)。K的值也可以由系統(tǒng)編碼器728用來對(duì)輸入符號(hào)和任何由系統(tǒng)編碼器728生成的中間符號(hào)分配存儲(chǔ)。
系統(tǒng)編碼器728將輸入符號(hào)IS(0)、IS(1)、…和系統(tǒng)密鑰C0、C1、…、CK-1或如何再生成系統(tǒng)密鑰的指示一起轉(zhuǎn)發(fā)至傳輸模塊740。在傳輸后,符號(hào)IS(0)、IS(1)、…在此稱為“系統(tǒng)輸出符號(hào)”。系統(tǒng)編碼器728可以創(chuàng)建輸入符號(hào)的拷貝,以在轉(zhuǎn)發(fā)輸入符號(hào)到傳輸模塊之前生成更多的輸出符號(hào)。
系統(tǒng)編碼器728也向傳輸模塊740提供非系統(tǒng)輸出符號(hào)B(I0)、B(I1)、B(I2)、…。傳輸模塊740也通過非系統(tǒng)密鑰生成器727提供每個(gè)這樣的輸出符號(hào)的非系統(tǒng)密鑰(I0、I1、I2、…)。傳輸模塊740傳輸系統(tǒng)和非系統(tǒng)輸出符號(hào),且取決于所用的密鑰確定方法,傳輸模塊740也可以通過信道745傳輸某些有關(guān)所傳輸?shù)妮敵龇?hào)的密鑰的數(shù)據(jù)到接收模塊750。假設(shè)信道745是丟失信道,但這不是正確操作通信系統(tǒng)700必須的。模塊740、745和750可以是任何適合的硬件組件、軟件組件、物理媒體或它們的任意組合,只要傳輸模塊740適用于傳輸輸出符號(hào)及任何有關(guān)它們的密鑰的所需的數(shù)據(jù)到信道745,且接收模塊750適用于從信道745接收符號(hào)及可能的某些有關(guān)它們的密鑰的數(shù)據(jù)。如果將K的值用于確定伙伴,則可以通過信道745發(fā)送它,或可以通過協(xié)調(diào)編碼器728和解碼器755來事先設(shè)置它。
如上所述,信道745可以是實(shí)時(shí)信道,如通過因特網(wǎng)的路徑、從電視發(fā)射機(jī)至電視接收者的廣播鏈接或從一點(diǎn)到另一點(diǎn)的電話連接,或者信道745可以是存儲(chǔ)信道,如一個(gè)或多個(gè)CD-ROM、磁盤、網(wǎng)站等等。信道745甚至可以是實(shí)時(shí)信道和存儲(chǔ)信道的組合,如當(dāng)一個(gè)人通過電話線將輸入文件從個(gè)人計(jì)算機(jī)傳輸?shù)揭蛱鼐W(wǎng)服務(wù)提供商(ISP),將輸入文件存儲(chǔ)在Web服務(wù)器上,并接下來通過因特網(wǎng)傳輸給接收者時(shí)構(gòu)成的信道。
接收模塊750通過信道745接收非系統(tǒng)和/或系統(tǒng)輸出符號(hào),并將它們提供給解碼器755。向非系統(tǒng)密鑰生成器760及系統(tǒng)密鑰生成器780提供對(duì)應(yīng)于接收到的輸出符號(hào)的密鑰的數(shù)據(jù)。在圖7所示實(shí)施例中,由IS(x)、IS(y)、…、IS(z)表示的系統(tǒng)輸出符號(hào)的集合和非系統(tǒng)輸出符號(hào)集合B(Ia)、B(Ib)、B(Ic)、…一起接收。在另外的實(shí)施例中,接收模塊750可以只接收系統(tǒng)輸出符號(hào),或系統(tǒng)和非系統(tǒng)輸出符號(hào)的組合。
非系統(tǒng)密鑰生成器760再生成接收的非系統(tǒng)輸出符號(hào)的非系統(tǒng)密鑰,并向系統(tǒng)解碼器755提供這些密鑰。在一個(gè)實(shí)施例中,非系統(tǒng)密鑰生成器760包括上面圖1B中所示并在Luby I和Raptor中描述的密鑰生成器160,雖然在另外的實(shí)施例中也可以使用其他類型的設(shè)備來再生成非系統(tǒng)密鑰。系統(tǒng)密鑰再生成器180再生成系統(tǒng)密鑰C0、C1、…并將它們提供給系統(tǒng)解碼器755。系統(tǒng)密鑰再生成器780可以訪問某些和系統(tǒng)密鑰生成器730共享的信息,系統(tǒng)密鑰生成器730有助于系統(tǒng)密鑰的再生成。另外,系統(tǒng)密鑰再生成器780也可以基于通過信道745傳輸?shù)母郊有畔⒃偕擅荑€。在某些實(shí)施例中,系統(tǒng)密鑰再生成器780可以訪問用于生成系統(tǒng)密鑰的相同的隨機(jī)數(shù)生成器735。這可以是訪問相同物理設(shè)備的形式,如果隨機(jī)數(shù)是在這樣的設(shè)備上生成,或訪問相同的隨機(jī)數(shù)生成算法的形式,以便實(shí)現(xiàn)相同的效果。
解碼器755將非系統(tǒng)密鑰再生成器760和系統(tǒng)密鑰生成器780提供的非系統(tǒng)密鑰和對(duì)應(yīng)的輸出符號(hào)一起用來復(fù)原輸入符號(hào)(再次為IS(0)、IS(1)、IS(2)、…)。將復(fù)原的輸入符號(hào)轉(zhuǎn)發(fā)至輸入文件重裝器765。系統(tǒng)解碼器755可以在復(fù)原余下的輸入符號(hào)之前直接將接收到的系統(tǒng)輸出符號(hào)IS(x)、IS(y)、…、IS(z)轉(zhuǎn)發(fā)到輸入文件重裝器765。特別地,如果接收到了所有的輸入符號(hào),則解碼器可以選擇只將接收到的數(shù)據(jù)轉(zhuǎn)發(fā)至輸入文件重裝器765而不進(jìn)行進(jìn)一步的計(jì)算。輸入文件重裝器765生成輸入文件721或輸入流725的拷貝770。
下面詳細(xì)描述系統(tǒng)編碼器728和解碼器755的操作。如上所述,在本發(fā)明的某些實(shí)施例中,這些單元可以使用連鎖反應(yīng)編碼和解碼。
圖8A展示系統(tǒng)編碼器728在本發(fā)明的具體實(shí)施例中的操作。首先,系統(tǒng)編碼器728從圖7中的輸入符號(hào)生成器726接收輸入符號(hào)IS(0)、IS(1)、…、IS(K-1)。可以在編碼開始時(shí)知道全部輸入符號(hào),或可以只是知道其中的一部分。
在此實(shí)施例中,系統(tǒng)編碼器728可以訪問非系統(tǒng)密鑰生成器727,后者生成數(shù)量和非系統(tǒng)輸出符號(hào)一樣多的非系統(tǒng)密鑰I0、I1、…。另外,系統(tǒng)密鑰生成器730生成數(shù)量和輸入符號(hào)一樣多的系統(tǒng)密鑰C0、C1、…、CK-1。系統(tǒng)編碼器728將原始輸入符號(hào)傳遞給傳輸模塊750,這些符號(hào)是作為系統(tǒng)輸出符號(hào)傳輸?shù)?。系統(tǒng)編碼器728也用于對(duì)非系統(tǒng)密鑰生成器727生成的每個(gè)密鑰I0、I1、…生成非系統(tǒng)輸出符號(hào)B(I0)、B(I1)、…。下面進(jìn)一步描述系統(tǒng)密鑰生成器730的操作。
系統(tǒng)密鑰生成器730和系統(tǒng)密鑰再生成器780(圖7)可以訪問某些共享信息,因此系統(tǒng)密鑰再生成器780可以成功地生成與系統(tǒng)密鑰生成器730相同的密鑰。在某些實(shí)施例中,可以將共享信息傳輸?shù)较到y(tǒng)密鑰再生成器780。在另外的實(shí)施例中,系統(tǒng)密鑰可以是其他編碼參數(shù)的確定函數(shù),這樣的參數(shù)如輸入符號(hào)數(shù)量和權(quán)重表。
在某些實(shí)施例中,可以對(duì)該數(shù)量的輸入符號(hào)的部分或所有相關(guān)的值預(yù)先計(jì)算系統(tǒng)密鑰。在某些實(shí)施例中,可以對(duì)不同的輸入符號(hào)集合重用系統(tǒng)密鑰。在另外的實(shí)施例中,可以使用系統(tǒng)密鑰生成器730和系統(tǒng)密鑰再生成器780之間的某些共享信息對(duì)每個(gè)輸入塊重新計(jì)算系統(tǒng)密鑰。
圖8B展示系統(tǒng)解碼器755在本發(fā)明的具體實(shí)施例中的操作。系統(tǒng)解碼器755從接收模塊750接收系統(tǒng)和非系統(tǒng)輸出符號(hào),它們各自由IS(x)、IS(y)、…、IS(z)和B(Ia)、B(Ib)、…表示。在特定的實(shí)施例中,系統(tǒng)解碼器755可以訪問系統(tǒng)密鑰再生成器780和非系統(tǒng)密鑰生成器760。系統(tǒng)連鎖反應(yīng)解碼器的輸出是原始輸入符號(hào)集合IS(0)、IS(1)、…IS(K-1)。
圖9A更詳細(xì)地展示系統(tǒng)編碼器728。系統(tǒng)編碼器728包括連鎖反應(yīng)解碼器910和連鎖反應(yīng)編碼器920。另外,它可以訪問存儲(chǔ)設(shè)備(未展示)來存儲(chǔ)中間符號(hào)S(0)、S(1)、…S(K-1)。
在接收到輸入符號(hào)IS(0)、IS(1)、…IS(K-1)及系統(tǒng)密鑰C0、C1、…、CK-1時(shí),連鎖反應(yīng)解碼器910使用例如在包括在此的專利和專利申請(qǐng)中描述的解碼連鎖反應(yīng)碼的方法來計(jì)算中間輸入符號(hào)集合S(0)、S(1)、…S(K-1)。在本發(fā)明的某些實(shí)施例中,可以將中間輸入符號(hào)存儲(chǔ)在存儲(chǔ)器中或存儲(chǔ)在硬盤上。在另外的實(shí)施例中,可以在它們可用時(shí)將中間輸入符號(hào)轉(zhuǎn)發(fā)至連鎖反應(yīng)編碼器920。
連鎖反應(yīng)編碼器920將連鎖反應(yīng)解碼器910生成的中間輸入符號(hào)和非系統(tǒng)密鑰再生成器727生成的非系統(tǒng)密鑰I0、I1、I2、…一起用來生成非系統(tǒng)輸出符號(hào)B(I0)、B(I1)、…。在某些實(shí)施例中,可以使用Luby I或Raptor中描述的輸入符號(hào)編碼處理來實(shí)現(xiàn)此編碼處理,只是在修改后使用本發(fā)明的中間輸入符號(hào)作為Luby I的輸入符號(hào)。在特殊的實(shí)施例中,先向傳輸模塊140提供輸入符號(hào)IS(0)、IS(1)、…IS(K-1),再提供非系統(tǒng)輸出符號(hào)。然而這對(duì)本發(fā)明的功能來說不是本質(zhì)性的。進(jìn)一步來說,從傳輸模塊740進(jìn)行傳輸?shù)捻樞蛞部梢圆煌?br>
圖9B展示系統(tǒng)解碼器755的例子實(shí)施例,系統(tǒng)解碼器755包括連鎖反應(yīng)解碼器930和連鎖反應(yīng)編碼器940。系統(tǒng)解碼器的輸入包括接收到的輸出符號(hào),其中部分包括接收到的系統(tǒng)輸出符號(hào)IS(x)、IS(y)、IS(z)、…,部分包括接收到的非系統(tǒng)輸出符號(hào)B(Ia)、B(Ib)、…。在某些實(shí)施例中,解碼器可以將接收到的系統(tǒng)符號(hào)復(fù)制到存儲(chǔ)設(shè)備,并將它們直接轉(zhuǎn)發(fā)到輸入文件重裝器765。
連鎖反應(yīng)解碼器930使用符號(hào)IS(x)、IS(y)、…、IS(z)、B(Ia)、B(Ib)、…、由非系統(tǒng)密鑰生成器760生成的系統(tǒng)密鑰Cx、Cy、…、Cz及非系統(tǒng)密鑰再生成器760生成的非系統(tǒng)密鑰Ia、Ib、…來產(chǎn)生中間輸入符號(hào)S(0)、S(1)、…S(K-1)。系統(tǒng)密鑰Cx、Cy、…、Cz對(duì)應(yīng)于接收到的輸入符號(hào)IS(x)、IS(y)、…、IS(z)。在某些實(shí)施例中,可以在將其傳遞給連鎖反應(yīng)編碼器440之前把復(fù)原的中間符號(hào)存儲(chǔ)到二級(jí)存儲(chǔ)中。在其他實(shí)施例中,可以將這些中間符號(hào)直接傳遞給連鎖反應(yīng)編碼器940。
連鎖反應(yīng)編碼器940使用中間輸入符號(hào)和對(duì)應(yīng)于丟失的系統(tǒng)輸出符號(hào)IS(u)、IS(v)、…、IS(w)的系統(tǒng)密鑰Cu、Cv、…、Cw來生成并輸出丟失的原始輸入符號(hào)IS(u)、IS(v)、…、IS(w)。作為例子實(shí)施例,對(duì)每個(gè)原始的密鑰Cu、Cv、…、Cw,解碼器識(shí)別權(quán)重W和中間輸入符號(hào)S(0)、S(1)、…S(K-1)之中的W個(gè)符號(hào),并對(duì)輸出符號(hào)值進(jìn)行XOR來獲取對(duì)應(yīng)于系統(tǒng)密鑰Cu、Cv、…、Cw的丟失的符號(hào)IS(u)、IS(v)、…、IS(w)。在一個(gè)實(shí)施例中,由連鎖反應(yīng)編碼器940使用的計(jì)算資源量和丟失的系統(tǒng)輸出符號(hào)數(shù)量成比例。例如,如果接收到了所有系統(tǒng)輸出符號(hào),則解碼器可以不執(zhí)行任何計(jì)算,并轉(zhuǎn)發(fā)接收到的符號(hào)到輸入文件重裝器765。
在特定的實(shí)施例中,連鎖反應(yīng)編碼器940和連鎖反應(yīng)解碼器910可以訪問相同的權(quán)重表,并使用相同的靜態(tài)編碼/解碼,如果使用靜態(tài)編碼的話。類似地,連鎖反應(yīng)編碼器920和連鎖反應(yīng)解碼器930可以訪問相同的權(quán)重表,并使用相同的靜態(tài)編碼/解碼。
計(jì)算系統(tǒng)密鑰的方法在本發(fā)明的具體實(shí)施例中,系統(tǒng)密鑰由系統(tǒng)密鑰生成器730在符號(hào)傳輸之前計(jì)算,并由系統(tǒng)密鑰生成器780在符號(hào)接收之后重新計(jì)算。系統(tǒng)密鑰由連鎖反應(yīng)解碼器910和編碼器930用來獲取中間輸入符號(hào)S(0)、S(1)、…S(K-1)。
在本發(fā)明的特定實(shí)施例中,以這樣的方式計(jì)算系統(tǒng)密鑰,使得可能使用通過這些密鑰生成的正好K個(gè)輸出符號(hào)對(duì)K個(gè)符號(hào)進(jìn)行唯一并高效的連鎖反應(yīng)解碼。在此解碼可以是由Luby I、Raptor描述的解碼方法、失活解碼,或基于高斯消去算法的更一般的解碼方法中的任何一種,例如失活解碼描述的例子。
圖10為系統(tǒng)密鑰生成處理的例子實(shí)施例。系統(tǒng)密鑰生成器的一個(gè)輸入可以是輸入符號(hào)IS(0)、IS(1)、…IS(K-1)的數(shù)量K。系統(tǒng)密鑰生成開始于將變量j設(shè)置為0。在執(zhí)行算法期間,K列的矩陣M首先有0個(gè)行,然后隨著算法的進(jìn)行通過添加行來更新它。在1020,對(duì)每個(gè)不同的值j,算法生成不同的密鑰D(j)。可以通過Luby I或Raptor中描述的方法生成此密鑰,并可以使用圖1中所示的隨機(jī)數(shù)生成器135。接下來在1030,使用密鑰D(j)來計(jì)算矩陣M第j行的元素。這樣的計(jì)算的一個(gè)可能的實(shí)施例可以是在連鎖反應(yīng)編碼處理中使用密鑰D(j)。在此情況,使用權(quán)重表,密鑰D(j)標(biāo)識(shí)權(quán)重W和值0、1、…、K-1中的W個(gè)值。然后如果m是生成的隨機(jī)或偽隨機(jī)值之一,則將M的第j行位置m設(shè)置為1,并將第j行的其他值設(shè)置為0。
在1040,確定是否當(dāng)前配置的矩陣M有K個(gè)行在二進(jìn)制域GF(2)上線性無關(guān),二進(jìn)制域GF(2)指包含0和1的集合,其中以模2進(jìn)行乘法和加法??梢杂酶鞣N方法執(zhí)行1040中的這一處理。例如,可以使用二進(jìn)制域GF(2)上的高斯消去來對(duì)此進(jìn)行校驗(yàn)。然而,存在很多熟悉技術(shù)的人所知的其他方法。例如,如果將失活解碼的方法應(yīng)用于矩陣M,則僅在應(yīng)用于M的失活解碼器成功時(shí),M包含K個(gè)線性無關(guān)的行。
如果1040中的檢驗(yàn)結(jié)果是肯定的,且M的行r(0)、r(1)、…r(K-1)線性無關(guān),則將系統(tǒng)密鑰設(shè)置為密鑰D(r(0))、…、D(r(K-1)),然后輸出這些密鑰。如果1040中的檢驗(yàn)結(jié)果是否定的,則計(jì)數(shù)器j在1060遞增,并從1020開始重復(fù)計(jì)算過程。
熟悉技術(shù)的人可知,存在其他等價(jià)或本質(zhì)上類似的生成系統(tǒng)密鑰的方法。例如,可以事先生成L個(gè)這樣的密鑰的集合,并在算法的步驟j從這個(gè)密鑰池中取得密鑰D(j),而不是在執(zhí)行算法期間每次生成一個(gè)密鑰D(j)。在此,L可以是輸入符號(hào)數(shù)量的函數(shù)。
圖11中展示了生成系統(tǒng)密鑰的第二種方法。在此方法中,此算法的輸入包括輸入符號(hào)的數(shù)量K,以及通常大于或等于K的數(shù)量L。在某些實(shí)施例中,L可以是保證解碼成功概率高而收集的輸出符號(hào)的數(shù)量,如Luby I或Raptor中描述的那樣。
在1110,生成L個(gè)密鑰D(0)、…、D(L-1)??梢酝ㄟ^使用隨機(jī)數(shù)生成器735來實(shí)現(xiàn)此處理。在其他實(shí)施例中,可以通過可重用的密鑰的固定列表來生成這些密鑰。此處理也可以提供如何生成密鑰的指示。例如,如果使用隨機(jī)數(shù)生成器,則可以記錄生成器的種子,以便在將來由系統(tǒng)密鑰再生成器使用。
使用密鑰D(0)、…、D(L-1),在1120中按前面描述及圖5中展示的那樣設(shè)置修正的解碼圖。此處理可以使用有關(guān)該代碼的具體權(quán)重表的知識(shí),以及有關(guān)使用的任何靜態(tài)編碼的知識(shí),如Raptor中描述的那樣。
在1130,使用上述方法中的任何一種來解碼修正的解碼圖。作為解碼的副產(chǎn)品,記錄觸發(fā)輸入節(jié)點(diǎn)的復(fù)原的那些輸出節(jié)點(diǎn)的下標(biāo)r(0)、r(1)、…、r(K-1)。在1140,輸出的系統(tǒng)密鑰為C0=D(r(0))、…、CK=D(r(K-1))。
圖12展示計(jì)算系統(tǒng)密鑰的第三種方法。類似于圖11的方法,在1210生成密鑰D(0)、…、D(L-1),并使用這些密鑰,有可能也使用權(quán)重表來設(shè)置解碼圖。接下來,在1230將集合S初始化為空集。集合S包含在連鎖反應(yīng)解碼處理中用于復(fù)原輸入節(jié)點(diǎn)值的那些輸出符號(hào)的下標(biāo)。在1240,通過識(shí)別次數(shù)為1的輸出節(jié)點(diǎn),對(duì)解碼圖應(yīng)用連鎖反應(yīng)解碼處理。根據(jù)此集合的上述角色,將此輸出節(jié)點(diǎn)的下標(biāo)添加到集合S中。在1250執(zhí)行檢驗(yàn),判斷集合S是否已包含正確數(shù)量的元素。如果否,則算法循環(huán)回到1240,其中選擇另一個(gè)次數(shù)為1的輸入節(jié)點(diǎn)來繼續(xù)解碼處理。如果S的大小為K,則在1260對(duì)S的元素排序,從最小的元素開始,以便產(chǎn)生排序的元素S0、…、SK-1且計(jì)算得到的系統(tǒng)密鑰為C0=D(r(0))、…、CK-1=D(r(K-1))。
圖13展示本發(fā)明的第四種計(jì)算系統(tǒng)密鑰的方法。在此方法中,假設(shè)這樣的解碼算法可用,該解碼算法可以基于輸入K和密鑰集合確定是否可以通過給定的密鑰集合解碼原始的K個(gè)符號(hào)。這樣的算法的例子由Luby I、Raptor中描述的解碼器或失活解碼提供。
在1310,生成L個(gè)密鑰D(0)、…、D(L-1)。類似于上述說明,可以通過使用隨機(jī)數(shù)生成器735來實(shí)現(xiàn)此處理,或可以通過可重用的密鑰的固定列表來生成這些密鑰。在1315,使用解碼器來判斷是否可以通過密鑰集合D(0)、…、D(L-1)解碼K個(gè)符號(hào)。如果解碼不成功,則給定的密鑰集合不將這些系統(tǒng)密鑰作為子集包含,且算法在1325中止。否則,在1330初始化三個(gè)集合。這些集合各自稱為系統(tǒng)、非系統(tǒng)和未訪問集合。在算法的最后,系統(tǒng)集合將包含系統(tǒng)密鑰的集合。首先,在1330,將系統(tǒng)和非系統(tǒng)集合初始化為空集,而使未訪問集合包含所有的原始密鑰D(0)、…、D(L-1)。在處理1335至1360,從未訪問集合中移除一個(gè)密鑰,并對(duì)包含在系統(tǒng)和未訪問集合中的密鑰做出解碼嘗試。如果嘗試成功,則選擇的密鑰C不屬于系統(tǒng)密鑰集合。另一方面,如果解碼不成功,則該密鑰屬于系統(tǒng)密鑰集合。只要系統(tǒng)集合的元素?cái)?shù)量少于原始輸入符號(hào)的數(shù)量K,就重復(fù)包含移除未訪問的密鑰并解碼(1335),判斷解碼是否成功(1340)及下面基于解碼器的輸出結(jié)果添加選擇的密鑰到系統(tǒng)或非系統(tǒng)集合(1345和1350)的處理。
圖14展示本發(fā)明的解碼包含系統(tǒng)和非系統(tǒng)符號(hào)的連鎖反應(yīng)碼的方法。在1410,使用對(duì)應(yīng)于接收到的非系統(tǒng)輸出符號(hào)B(Ia)、B(Ib)…的非系統(tǒng)密鑰Ia、Ib、…來生成矩陣B,矩陣B的行數(shù)和接收到的非系統(tǒng)輸出符號(hào)的數(shù)量相同,列數(shù)和輸入符號(hào)的數(shù)量相同。對(duì)每個(gè)密鑰,使用和編碼連鎖反應(yīng)碼相同的機(jī)制來產(chǎn)生權(quán)重W及輸入符號(hào)下標(biāo)的集合J1、J2、…、Jw,通過它生成對(duì)應(yīng)于該密鑰的輸出符號(hào)。然后,在矩陣B的對(duì)應(yīng)的行中,將對(duì)應(yīng)于J1、J2、…、Jw的位置設(shè)置為1,而將該行中的其他位置設(shè)置為0。重復(fù)此處理,直到處理完對(duì)應(yīng)于接收到的非系統(tǒng)符號(hào)的所有密鑰。
接下來,在1420,應(yīng)用類似的處理通過系統(tǒng)密鑰C0、C1、…、CK-1來構(gòu)建正方形矩陣C,其行數(shù)和列數(shù)與輸入符號(hào)的數(shù)量相同。此處理還計(jì)算矩陣C的逆矩陣,稱為A。如熟悉技術(shù)的人所知,可以用各種方法計(jì)算A的逆矩陣。例如,可以使用高斯消去算法來計(jì)算A。在其他實(shí)施例中,可以使用某種連鎖反應(yīng)解碼來執(zhí)行此步驟。在本說明書后面的例子中對(duì)此進(jìn)行進(jìn)一步的說明。
在1430,計(jì)算矩陣B和A在二進(jìn)制域GF(2)上的乘積來獲得矩陣H。接下來在1440,確定兩個(gè)下標(biāo)集合E和RE是未接收到的系統(tǒng)符號(hào)的下標(biāo)的集合,而R是接收到的系統(tǒng)符號(hào)的下標(biāo)的集合。例如,假設(shè)存在下標(biāo)為0、1、2、…、10的11個(gè)輸入符號(hào)。如果在傳輸之后接收到對(duì)應(yīng)于下標(biāo)0、3、9、10的系統(tǒng)符號(hào),則R={0,3,9,10}而E={1,2,4,5,6,7,8}。然后將在1430中作為B和A的乘積計(jì)算的矩陣H劃分為兩個(gè)子矩陣HE和HRHE是H的子矩陣,通過取H中對(duì)應(yīng)于未接收到的系統(tǒng)符號(hào)的下標(biāo)的列獲得它,而HR是H的子矩陣,通過取H中對(duì)應(yīng)于接收到的系統(tǒng)符號(hào)的下標(biāo)的列獲得它。在上述例子中,HE可以是H中由H的列1、2、3、4、5、6、7和8構(gòu)成的子矩陣。
在1450,矩陣HR和接收到的系統(tǒng)符號(hào)IS(x)、IS(y)、…、IS(z)構(gòu)成的向量相乘。例如在上述情況下,HR和系統(tǒng)符號(hào)0、3、9、10的值(以此順序)相乘。如熟悉技術(shù)的人所知,實(shí)際的乘法可以用各種方式執(zhí)行??梢源鎯?chǔ)此乘法的結(jié)果用于將來使用,下面稱其為向量y。在1460,使用接收到的非系統(tǒng)輸出符號(hào)來設(shè)置向量b。其中存在L個(gè)這樣的符號(hào),向量b中的元素?cái)?shù)量是L。此步驟可以只是邏輯上的。換句話說,此步驟可能不需要任何計(jì)算。接下來,前面存儲(chǔ)在向量y中的乘法結(jié)果和向量b中的元素進(jìn)行逐元素的XOR,即,每個(gè)接收到的非系統(tǒng)輸出符號(hào)和向量y中的對(duì)應(yīng)符號(hào)進(jìn)行XOR。可以將此操作的結(jié)果存儲(chǔ)在接收到的非系統(tǒng)符號(hào)的位置,或可以將其存儲(chǔ)在不同的位置。
一旦確定了此XOR,就使用對(duì)應(yīng)丟失的系統(tǒng)符號(hào)的矩陣HE設(shè)置了線性方程組。然后方程組HE*x=y(tǒng)+b的解x對(duì)應(yīng)于丟失的系統(tǒng)符號(hào)的值。這些值在1470中輸出。再次,可以用各種方法執(zhí)行此處理,例如使用高斯消去法,或由LubyI、Raptor或失活解碼揭示的連鎖反應(yīng)解碼的任何變體。
解碼的此矩陣視圖只用于說明目的,而不是限制性的。在查看此說明書之后,此解碼處理的很多變體對(duì)熟悉技術(shù)的人來說顯而易見。
III.例子系統(tǒng)編碼和解碼下面參考圖15-17給出系統(tǒng)連鎖反應(yīng)編碼系統(tǒng)的某些實(shí)施例的操作的某些方面的簡單例子。在所有的例子中,僅根據(jù)給定符號(hào)的鄰居的列表及其給定密鑰暗含地說明給出的權(quán)重表的效果。
計(jì)算系統(tǒng)密鑰圖15A描述用于獲取系統(tǒng)密鑰C0、C1、…、C8的解碼圖。假設(shè)通過例如圖11的1110中的操作已生成12個(gè)密鑰D(0)、D(1)、…、D(11)。圖15A中的圖使用密鑰D(0)、…D(11)描述由1520(a)、…、1520(i)表示的輸入節(jié)點(diǎn)及由1530(a)、…、1530(l)表示的輸出節(jié)點(diǎn)之間的修正的解碼圖?,F(xiàn)在可以對(duì)此圖應(yīng)用連鎖反應(yīng)解碼來獲取作為在連鎖反應(yīng)解碼過程中觸發(fā)輸入節(jié)點(diǎn)復(fù)原的那些輸出節(jié)點(diǎn)的密鑰的系統(tǒng)密鑰。
在操作中,可以使用節(jié)點(diǎn)1530(a)來復(fù)原輸入節(jié)點(diǎn)1520(b)。相應(yīng)地,第一個(gè)系統(tǒng)密鑰C0就等于第一個(gè)生成的密鑰,即D(0)。復(fù)原輸入節(jié)點(diǎn)1520(b)使得輸出節(jié)點(diǎn)1530(c)的次數(shù)變?yōu)?,因此觸發(fā)節(jié)點(diǎn)1520(e)的復(fù)原。以此方式繼續(xù),可以看到圖15A中淺灰色的節(jié)點(diǎn)可以用于復(fù)原輸入節(jié)點(diǎn)。用于復(fù)原輸入節(jié)點(diǎn)的輸出節(jié)點(diǎn)的序列為1530(a)、1530(b)、1530(c)、1530(d)、1530(e)、1530(f)、1530(g)、1530(h)、1530(j)。結(jié)果,可以如圖15B中那樣選擇系統(tǒng)密鑰的序列。
應(yīng)注意,所示的連鎖反應(yīng)解碼的復(fù)原處理只是概念性的。特別地,在此特定例子中沒有執(zhí)行XOR操作。
系統(tǒng)編碼如圖9A所示,系統(tǒng)連鎖反應(yīng)編碼器由連鎖反應(yīng)解碼器910和連鎖反應(yīng)編碼器920組成。因此,系統(tǒng)連鎖反應(yīng)編碼的的操作劃分為兩個(gè)部分。這兩個(gè)部分各自在圖16A和圖16B中展示。
圖16B展示連鎖反應(yīng)解碼器910的操作。輸入符號(hào)由IS(0)、…、IS(8)表示。使用密鑰C0、C1、…、C8來設(shè)置輸入符號(hào)和中間輸入符號(hào)S(0)、…、S(8)之間在圖上的關(guān)聯(lián)關(guān)系。例如,密鑰C1表明IS(0)等于S(1)的值,而密鑰C4表明IS(4)等于S(2)、S(5)和S(7)的值的XOR。現(xiàn)在可以應(yīng)用連鎖反應(yīng)解碼來獲取S(0)、S(1)、…、S(8)的值。由于設(shè)置此時(shí)間表的目的是獲取密鑰C0、C1、…、C8,可以將獲取這些值的時(shí)間表從圖7中的系統(tǒng)密鑰生成器730轉(zhuǎn)發(fā)至連鎖反應(yīng)解碼器910。不象系統(tǒng)密鑰生成器的操作那樣,此步驟可以對(duì)單個(gè)符號(hào)的值進(jìn)行XOR。
在圖16A的例子中,時(shí)間表可以首先產(chǎn)生S(1)的值,然后再用IS(1)的值產(chǎn)生S(4)的值。這將觸發(fā)S(0)和S(7)等等的值的復(fù)原。
圖16B通過展示最先的11個(gè)非系統(tǒng)輸出符號(hào)O(0)、…、O(10)的生成來演示圖9A中的連鎖反應(yīng)編碼器920的操作。(所示的輸出符號(hào)O(i)指上述輸出符號(hào)B(Ii)。)如上所述,系統(tǒng)編碼器的輸出由系統(tǒng)輸入符號(hào)IS(0)、…、IS(8)和后面的輸出符號(hào)O(0)、…、O(10)、…組成。此特定順序只是演示性的,在本發(fā)明另外的實(shí)施例中可以使用其他順序。
系統(tǒng)解碼圖17A和17B展示系統(tǒng)連鎖反應(yīng)解碼處理的實(shí)施例。假設(shè)接收到的系統(tǒng)輸出符號(hào)為IS(1)、IS(6)和IS(7),而接收到的非系統(tǒng)輸出符號(hào)為O(0)、O(3)、O(4)、O(6)、O(7)、O(8)、O(9)和O(10)。解碼器的任務(wù)是計(jì)算丟失的系統(tǒng)輸入符號(hào)的值,即,IS(0)、IS(2)、IS(3)、IS(4)、IS(5)和IS(8)的值。圖17A是圖9B中的連鎖反應(yīng)解碼器930和連鎖反應(yīng)編碼器940可以如何組合為一個(gè)解碼器的例子。在某些應(yīng)用中,這樣的組合可以帶來計(jì)算上的節(jié)約。
使用對(duì)應(yīng)于接收到的系統(tǒng)輸出符號(hào)的密鑰C1、C6、…、C7和對(duì)應(yīng)于接收到的非系統(tǒng)輸出符號(hào)的密鑰,在接收到的輸出符號(hào)和中間輸入符號(hào)S(0)、…、S(8)之間設(shè)置圖。在輸出符號(hào)和所有的其XOR產(chǎn)生輸出符號(hào)值的中間輸入符號(hào)之間畫出連接線。單個(gè)的連接和圖16A和圖16B中所示的那些相同。接收到的輸出符號(hào)的特定順序可以不同于選擇用于表示解碼圖的順序。
通過另一個(gè)節(jié)點(diǎn)層來擴(kuò)展此圖,這個(gè)節(jié)點(diǎn)層對(duì)應(yīng)于丟失的系統(tǒng)輸出符號(hào)。此圖對(duì)應(yīng)于圖17A的上半部分,其中輸入符號(hào)IS(0)、IS(2)、IS(3)、IS(4)、IS(5)和IS(8)通過虛線連接到那些是它們的XOR的中間輸入符號(hào)。再次,這些連接可以用圖17A中的對(duì)應(yīng)連接來校驗(yàn)。
此特定例子中的解碼處理可以通過對(duì)下面的圖應(yīng)用連鎖反應(yīng)解碼開始。每次復(fù)原一個(gè)中間符號(hào),可以將其值XOR為此符號(hào)在圖的上半部內(nèi)未接收到的原始符號(hào)中的所有鄰居的值。首先,可以將這些符號(hào)的值設(shè)置為0。
例如,可以使用輸出符號(hào)O(4)來復(fù)原S(3)的值。然后可以XOR S(3)的值得到IS(5)的當(dāng)前值。在此步驟之后,IS(5)的值等于S(3)的值。S(3)的復(fù)原將輸出節(jié)點(diǎn)O(10)的次數(shù)減為1。然后此輸出節(jié)點(diǎn)復(fù)原中間符號(hào)S(6)的值。XOR此值得到IS(5)的當(dāng)前值,使得在此步驟之后,IS(5)的值復(fù)原??梢岳^續(xù)處理,直到復(fù)原所有未接收到的系統(tǒng)輸入符號(hào)。
圖17B展示復(fù)原丟失的輸出符號(hào)的處理。復(fù)原的符號(hào)在矩形框內(nèi)。復(fù)原的系統(tǒng)輸出符號(hào)在灰色的矩形框內(nèi)。此圖中在邊上的標(biāo)簽描述用于復(fù)原的符號(hào)。
例如,使用符號(hào)O(4)來復(fù)原S(3)。使用符號(hào)O(10)來復(fù)原S(6)。S(3)和S(6)一起復(fù)原IS(5)。S(6)的復(fù)原觸發(fā)S(8)的復(fù)原(使用O(9))和S(0)的復(fù)原(使用接收到的系統(tǒng)輸出符號(hào)IS(7))。S(8)的復(fù)原觸發(fā)IS(3)的復(fù)原。S(0)的復(fù)原觸發(fā)S(4)的復(fù)原(使用IS(1))。另一方面,使用O(0),S(8)的復(fù)原觸發(fā)S(1)的復(fù)原,S(1)和S(4)一起復(fù)原IS(2)。此外,S(1)的復(fù)原導(dǎo)致IS(0)的復(fù)原,因?yàn)檫@些值是相等的。使用O(8)和S(4)復(fù)原的值,獲得S(5)的值。S(5)接著復(fù)原IS(8)的值,因?yàn)楹笳呤荢(5)、S(4)和S(0)的XOR,在此階段所有這些值都是已知的。使用IS(6)和S(4),獲得S(7)的值。使用O(7)復(fù)原S(2)的值,S(2)和S(7)一起復(fù)原最后剩下的輸入符號(hào)即IS(4)的值。
上述說明僅用于演示和說明的目的。它并不旨在窮盡或限制本發(fā)明為所揭示的精確形式,且在閱讀上述說明后顯然可知本發(fā)明可以有很多修改和變體。選擇所述的實(shí)施例是為了最好地解釋本發(fā)明的原理及其實(shí)際應(yīng)用,從而使得熟悉技術(shù)的人最好地在各種實(shí)施例和適合于特殊使用的各種修改中理解本發(fā)明。應(yīng)理解,本發(fā)明的范圍由后附的權(quán)利要求界定。
包括在此作為參考的文檔編號(hào)為6,307,487的美國專利,發(fā)明人為Michael G.Luby,標(biāo)題為“通信系統(tǒng)的信息附加碼生成器和解碼器”(在此稱為“Luby I”);編號(hào)為09/792,364的美國專利申請(qǐng),2001年2月22日提交,標(biāo)題為“在服務(wù)器上提供服務(wù)的多文件調(diào)度”;編號(hào)為10/032,156的美國專利申請(qǐng),2001年12月21日提交,標(biāo)題為“通信系統(tǒng)的多階段碼生成器和解碼器”(在此稱為“Raptor”);及編號(hào)為10/459,370的美國專利申請(qǐng),2003年6月10日提交,標(biāo)題為“通過失活來解碼連鎖反應(yīng)碼的系統(tǒng)和處理”(在此稱為“失活解碼”)。
權(quán)利要求
1.一種將數(shù)據(jù)編碼為包含系統(tǒng)輸出符號(hào)和非系統(tǒng)輸出符號(hào)的連鎖反應(yīng)碼的方法,其特征在于,所述方法包括通過所述數(shù)據(jù)生成輸入符號(hào)集合,所述輸入符號(hào)包括系統(tǒng)輸出符號(hào);及通過所述輸入符號(hào)集合生成一個(gè)或多個(gè)非系統(tǒng)輸出符號(hào),從非系統(tǒng)輸出符號(hào)的字母表中選擇一個(gè)或多個(gè)非系統(tǒng)輸出符號(hào)中的每一個(gè),且將每個(gè)非系統(tǒng)輸出符號(hào)作為一個(gè)或多個(gè)輸入符號(hào)的函數(shù)生成;所述輸入符號(hào)集合的任何子集都可通過預(yù)定數(shù)量的非系統(tǒng)輸出符號(hào)(i),或(a)不包括在所述要復(fù)原的輸入符號(hào)的子集中的輸入符號(hào)和(b)一個(gè)或多個(gè)非系統(tǒng)輸出符號(hào)的組合(ii)來復(fù)原。
2.如權(quán)利要求1所述的方法,其特征在于,所述生成一個(gè)或多個(gè)非系統(tǒng)輸出符號(hào)包括通過所述輸入符號(hào)集合生成多個(gè)中間輸入符號(hào);及將所述多個(gè)中間輸入符號(hào)編碼為一個(gè)或多個(gè)非系統(tǒng)輸出符號(hào),其中將所述一個(gè)或多個(gè)輸入符號(hào)編碼為一個(gè)非系統(tǒng)輸出符號(hào)。
3.如權(quán)利要求2所述的方法,其特征在于,所述生成多個(gè)中間輸入符號(hào)包括計(jì)算所述多個(gè)輸入符號(hào)的系統(tǒng)密鑰;及通過所述多個(gè)輸入符號(hào)和對(duì)應(yīng)的系統(tǒng)密鑰,生成多個(gè)中間輸入符號(hào)。
4.如權(quán)利要求3所述的方法,其特征在于,所述計(jì)算所述多個(gè)輸入符號(hào)的系統(tǒng)密鑰包括構(gòu)建K列J行的矩陣,所述K對(duì)應(yīng)于輸入符號(hào)的數(shù)量,所述方法還包括(i)將J初始化為0(ii)將密鑰D(J)作為J的函數(shù)計(jì)算;(iii)將第J行的元素作為密鑰D(J)的函數(shù)計(jì)算;及(iv)判斷矩陣中的行是否線性無關(guān),如果矩陣的行并非線性無關(guān),則將J遞增為J+1并重復(fù)(ii)-(iii),如果矩陣的行線性無關(guān),則將系統(tǒng)密鑰作為線性無關(guān)的行的函數(shù)計(jì)算。
5.如權(quán)利要求4所述的方法,其特征在于,所述(ii)計(jì)算密鑰D(J)包括使用隨機(jī)數(shù)生成器來將密鑰D(J)作為J的函數(shù)計(jì)算。
6.如權(quán)利要求4所述的方法,其特征在于,所述行元素包括0或1的值。
7.如權(quán)利要求3所述的方法,其特征在于,所述計(jì)算所述多個(gè)輸入符號(hào)的系統(tǒng)密鑰包括(i)計(jì)算L個(gè)唯一的密鑰D(0)-D(L-1),所述L為預(yù)定的數(shù);(ii)構(gòu)建包含K列L行的修正的解碼矩陣,所述K對(duì)應(yīng)于輸入符號(hào)的數(shù)量,且對(duì)j在0和L-1之間的任何值,將第j行中的元素作為密鑰D(j)的函數(shù)計(jì)算;及(iii)解由所述修正的解碼矩陣描述的線性方程組,將所述系統(tǒng)密鑰作為所述線性方程組的解的函數(shù)來計(jì)算。
8.如權(quán)利要求1所述的方法,其特征在于,還包括通過信道傳輸所述系統(tǒng)輸出符號(hào)和非系統(tǒng)輸出符號(hào)。
9.如權(quán)利要求8所述的方法,其特征在于,還包括接收組成所述輸入符號(hào)集合的第一個(gè)子集的一個(gè)或多個(gè)系統(tǒng)輸出符號(hào);接收一個(gè)或多個(gè)非系統(tǒng)輸出符號(hào),從非系統(tǒng)輸出符號(hào)的字母表中選擇所述每個(gè)非系統(tǒng)輸出符號(hào),且將所述每個(gè)非系統(tǒng)輸出符號(hào)作為一個(gè)或多個(gè)輸入符號(hào)的函數(shù)生成;及復(fù)原所述輸入符號(hào)集合余下的子集,所述余下的子集由一個(gè)或多個(gè)不包含在所述輸入符號(hào)的第一個(gè)子集中的輸入符號(hào)組成,通過下述復(fù)原所述輸入符號(hào)余下的子集(i)預(yù)定數(shù)量的非系統(tǒng)輸出符號(hào);或(ii)(a)所述第一個(gè)子集中的一個(gè)或多個(gè)輸入符號(hào),和(b)一個(gè)或多個(gè)非系統(tǒng)輸出符號(hào)的組合。
10.如權(quán)利要求9所述的方法,其特征在于,通過(a)所述第一個(gè)子集中的一個(gè)或多個(gè)輸入符號(hào),和(b)一個(gè)或多個(gè)非系統(tǒng)輸出符號(hào)的組合所述復(fù)原輸入符號(hào)余下的子集包括將所述一個(gè)或多個(gè)接收到的非系統(tǒng)輸出符號(hào)和所述一個(gè)或多個(gè)接收到的輸入符號(hào)的組合解碼為多個(gè)中間輸入符號(hào);及將所述多個(gè)中間輸入符號(hào)編碼為組成輸入符號(hào)余下的子集的多個(gè)輸入符號(hào),所述輸入符號(hào)余下的子集包括不包含在所述輸入符號(hào)的第一個(gè)子集中的一個(gè)或多個(gè)輸入符號(hào)。
11.如權(quán)利要求10所述的方法,其特征在于,所述將一個(gè)或多個(gè)非系統(tǒng)輸出符號(hào)和所述一個(gè)或多個(gè)系統(tǒng)輸出符號(hào)解碼為多個(gè)中間輸入符號(hào)包括計(jì)算對(duì)應(yīng)于所述接收到的系統(tǒng)輸出符號(hào)的系統(tǒng)密鑰;計(jì)算對(duì)應(yīng)于所述接收到的非系統(tǒng)輸出符號(hào)的非系統(tǒng)密鑰;及通過所述系統(tǒng)密鑰、非系統(tǒng)密鑰、所述接收到的非系統(tǒng)輸出符號(hào)和所述接收到的系統(tǒng)輸出符號(hào)生成多個(gè)中間輸入符號(hào)。
12.如權(quán)利要求10所述的方法,其特征在于,所述將所述多個(gè)中間輸入符號(hào)編碼為組成輸入符號(hào)余下的子集的一個(gè)或多個(gè)輸入符號(hào)包括計(jì)算所述未接收到的系統(tǒng)輸出符號(hào)的系統(tǒng)密鑰;及通過對(duì)應(yīng)于所述未接收到的系統(tǒng)輸出符號(hào)和所述中間輸入符號(hào)的系統(tǒng)密鑰,生成所述輸入符號(hào)余下的子集。
13.一種將包含系統(tǒng)輸出符號(hào)和非系統(tǒng)輸出符號(hào)的連鎖反應(yīng)碼解碼為輸入符號(hào)集合的方法,所述輸入符號(hào)包括所需要的數(shù)據(jù),所述方法包括提供所述輸入符號(hào)集合的第一個(gè)子集,所述輸入符號(hào)的第一個(gè)子集包括一個(gè)或多個(gè)系統(tǒng)輸出符號(hào);提供一個(gè)或多個(gè)非系統(tǒng)輸出符號(hào),從非系統(tǒng)輸出符號(hào)的字母表中選擇所述每個(gè)非系統(tǒng)輸出符號(hào),將所述每個(gè)非系統(tǒng)輸出符號(hào)作為一個(gè)或多個(gè)輸入符號(hào)的函數(shù)生成;及復(fù)原所述輸入符號(hào)余下的子集,所述余下的子集由一個(gè)或多個(gè)不包含在所述輸入符號(hào)的第一個(gè)子集中的輸入符號(hào)組成,通過下述復(fù)原所述輸入符號(hào)余下的子集(i)預(yù)定數(shù)量的非系統(tǒng)輸出符號(hào);或(ii)(a)所述第一個(gè)子集中的一個(gè)或多個(gè)輸入符號(hào),和(b)一個(gè)或多個(gè)非系統(tǒng)輸出符號(hào)的組合。
14.如權(quán)利要求13所述的方法,其特征在于,所述通過(a)所述第一個(gè)子集中的一個(gè)或多個(gè)輸入符號(hào),和(b)一個(gè)或多個(gè)非系統(tǒng)輸出符號(hào)的組合來復(fù)原所述輸入符號(hào)余下的子集包括將所述一個(gè)或多個(gè)接收到的非系統(tǒng)輸出符號(hào)和所述一個(gè)或多個(gè)接收到的輸入符號(hào)的組合解碼為多個(gè)中間輸入符號(hào);及將所述多個(gè)中間輸入符號(hào)編碼為組成輸入符號(hào)余下的子集的一個(gè)或多個(gè)輸入符號(hào),所述第一個(gè)子集和輸入符號(hào)余下的子集一起組成輸入符號(hào)集合。
15.如權(quán)利要求14所述的方法,其特征在于,將所述一個(gè)或多個(gè)非系統(tǒng)輸出符號(hào)解碼為多個(gè)中間輸入符號(hào)包括計(jì)算對(duì)應(yīng)于所述接收到的系統(tǒng)輸出符號(hào)的系統(tǒng)密鑰;計(jì)算對(duì)應(yīng)于所述接收到的非系統(tǒng)輸出符號(hào)的非系統(tǒng)密鑰;及通過所述系統(tǒng)密鑰、非系統(tǒng)密鑰、所述接收到的非系統(tǒng)輸出符號(hào)和所述接收到的系統(tǒng)輸出符號(hào)生成多個(gè)中間輸入符號(hào)。
16.如權(quán)利要求13所述的方法,其特征在于,所述將所述多個(gè)中間輸入符號(hào)編碼為組成輸入符號(hào)余下的子集的一個(gè)或多個(gè)輸入符號(hào)包括計(jì)算所述未接收到的系統(tǒng)輸出符號(hào)的系統(tǒng)密鑰;及通過對(duì)應(yīng)于所述未接收到的系統(tǒng)輸出符號(hào)和所述中間輸入符號(hào)的系統(tǒng)密鑰,生成所述輸入符號(hào)余下的子集。
17.如權(quán)利要求13所述的方法,其特征在于,還包括通過經(jīng)信道發(fā)送的傳輸方式接收所述系統(tǒng)和非系統(tǒng)輸出符號(hào)。
18.一種使用連鎖反應(yīng)碼處理數(shù)據(jù)的方法,其特征在于,所述方法包括通過所述數(shù)據(jù)生成輸入符號(hào)集合,所述輸入符號(hào)包括系統(tǒng)輸出符號(hào);通過所述輸入符號(hào)集合生成一個(gè)或多個(gè)非系統(tǒng)輸出符號(hào),從非系統(tǒng)輸出符號(hào)的字母表中選擇一個(gè)或多個(gè)非系統(tǒng)輸出符號(hào)中的每一個(gè),且將每個(gè)非系統(tǒng)輸出符號(hào)作為一個(gè)或多個(gè)輸入符號(hào)的函數(shù)生成;接收所述輸入符號(hào)集合的第一個(gè)子集,所述輸入符號(hào)的第一個(gè)子集包括一個(gè)或多個(gè)系統(tǒng)輸出符號(hào);接收一個(gè)或多個(gè)非系統(tǒng)輸出符號(hào),從非系統(tǒng)輸出符號(hào)的字母表中選擇所述每個(gè)非系統(tǒng)輸出符號(hào),將所述每個(gè)非系統(tǒng)輸出符號(hào)作為一個(gè)或多個(gè)輸入符號(hào)的函數(shù)生成;及復(fù)原所述輸入符號(hào)余下的子集,所述余下的子集由一個(gè)或多個(gè)不包含在所述輸入符號(hào)的第一個(gè)子集中的輸入符號(hào)組成,通過下述復(fù)原所述輸入符號(hào)余下的子集(i)預(yù)定數(shù)量的非系統(tǒng)輸出符號(hào);或(ii)(a)所述第一個(gè)子集中的一個(gè)或多個(gè)輸入符號(hào),和(b)一個(gè)或多個(gè)非系統(tǒng)輸出符號(hào)的組合。
19.如權(quán)利要求18述的方法,其特征在于,所述生成一個(gè)或多個(gè)非系統(tǒng)輸出符號(hào)包括通過所述輸入符號(hào)集合生成多個(gè)中間輸入符號(hào);及將所述多個(gè)中間輸入符號(hào)編碼為一個(gè)或多個(gè)非系統(tǒng)輸出符號(hào),其中將所述一個(gè)或多個(gè)輸入符號(hào)編碼為一個(gè)非系統(tǒng)輸出符號(hào)。
20.如權(quán)利要求19的方法,其特征在于,所述生成多個(gè)中間輸入符號(hào)包括計(jì)算所述多個(gè)輸入符號(hào)的系統(tǒng)密鑰;及通過所述多個(gè)輸入符號(hào)和對(duì)應(yīng)的系統(tǒng)密鑰,生成多個(gè)中間輸入符號(hào)。
21.如權(quán)利要求18述的方法,其特征在于,所述通過(a)所述第一個(gè)子集中的一個(gè)或多個(gè)輸入符號(hào),和(b)一個(gè)或多個(gè)非系統(tǒng)輸出符號(hào)的組合來復(fù)原所述輸入符號(hào)余下的子集包括將所述一個(gè)或多個(gè)接收到的非系統(tǒng)輸出符號(hào)和所述一個(gè)或多個(gè)接收到的輸入符號(hào)的組合解碼為多個(gè)中間輸入符號(hào);及將所述多個(gè)中間輸入符號(hào)編碼為組成輸入符號(hào)余下的子集的一個(gè)或多個(gè)輸入符號(hào),所述第一個(gè)子集和輸入符號(hào)余下的子集一起組成輸入符號(hào)集合。
22.如權(quán)利要求21所述的方法,其特征在于,將所述一個(gè)或多個(gè)非系統(tǒng)輸出符號(hào)解碼為多個(gè)中間輸入符號(hào)包括計(jì)算對(duì)應(yīng)于所述接收到的系統(tǒng)輸出符號(hào)的系統(tǒng)密鑰;計(jì)算對(duì)應(yīng)于所述接收到的非系統(tǒng)輸出符號(hào)的非系統(tǒng)密鑰;及通過所述系統(tǒng)密鑰、非系統(tǒng)密鑰、所述接收到的非系統(tǒng)輸出符號(hào)和所述接收到的系統(tǒng)輸出符號(hào)生成多個(gè)中間輸入符號(hào)。
23.如權(quán)利要求18所述的方法,其特征在于,所述將所述多個(gè)中間輸入符號(hào)編碼為組成輸入符號(hào)余下的子集的一個(gè)或多個(gè)輸入符號(hào)包括計(jì)算所述未接收到的系統(tǒng)輸出符號(hào)的系統(tǒng)密鑰;及通過對(duì)應(yīng)于所述未接收到的系統(tǒng)輸出符號(hào)和所述中間輸入符號(hào)的系統(tǒng)密鑰,生成所述輸入符號(hào)余下的子集。
24.如權(quán)利要求18的方法,其特征在于,還包括通過經(jīng)信道發(fā)送的傳輸方式接收所述系統(tǒng)和非系統(tǒng)輸出符號(hào)。
25.如權(quán)利要求18的方法,其特征在于,所述接收所述輸入符號(hào)集合的第一個(gè)子集包括接收包含所述輸入符號(hào)集合的第一個(gè)子集的傳輸,所述接收一個(gè)或多個(gè)非系統(tǒng)輸出符號(hào)包括接收包含所述一個(gè)或多個(gè)非系統(tǒng)輸出符號(hào)的傳輸。
26.一種配置為將輸入數(shù)據(jù)集合編碼為連鎖反應(yīng)碼的編碼器,所述連鎖反應(yīng)碼包括系統(tǒng)輸出符號(hào)和非系統(tǒng)輸出符號(hào),其特征在于,所述編碼器包括用于接收所述輸入數(shù)據(jù)集合并輸出一個(gè)或多個(gè)輸入符號(hào)進(jìn)行響應(yīng)的輸入符號(hào)生成器;用于生成對(duì)應(yīng)于每個(gè)輸入符號(hào)的系統(tǒng)密鑰的系統(tǒng)密鑰生成器;用于生成一個(gè)或多個(gè)非系統(tǒng)密鑰的非系統(tǒng)密鑰生成器;及用于接收所述一個(gè)或多個(gè)輸入符號(hào)、所述系統(tǒng)密鑰和所述非系統(tǒng)密鑰,并輸出一個(gè)或多個(gè)非系統(tǒng)密鑰和一個(gè)或多個(gè)輸入符號(hào)進(jìn)行響應(yīng)的系統(tǒng)編碼器,其中輸出的輸入符號(hào)包括系統(tǒng)輸出符號(hào)。
27.如權(quán)利要求26所述的編碼器,其特征在于,所述系統(tǒng)編碼器包括用于接收一個(gè)或多個(gè)輸入符號(hào)和對(duì)應(yīng)于所述一個(gè)或多個(gè)輸入符號(hào)的系統(tǒng)密鑰,并生成一個(gè)或多個(gè)中間輸入符號(hào)來進(jìn)行響應(yīng)的連鎖反應(yīng)解碼器;及接收所述一個(gè)或多個(gè)中間輸入符號(hào)和所述一個(gè)或多個(gè)非系統(tǒng)密鑰的連鎖反應(yīng)編碼器,所述連鎖反應(yīng)解碼器生成一個(gè)或多個(gè)非系統(tǒng)輸出符號(hào)來進(jìn)行響應(yīng)。
28.如權(quán)利要求27所述的編碼器,其特征在于,還包括用于接收所述一個(gè)或多個(gè)輸入符號(hào)和所述一個(gè)或多個(gè)非系統(tǒng)輸出符號(hào)并傳輸所述輸入符號(hào)和所述非系統(tǒng)輸出符號(hào)的傳輸模塊,其中傳輸?shù)妮斎敕?hào)包括系統(tǒng)輸出符號(hào)。
29.一種配置為解碼連鎖反應(yīng)碼集合的解碼器,所述連鎖反應(yīng)碼包含一個(gè)或多個(gè)非系統(tǒng)輸出符號(hào)和一個(gè)或多個(gè)系統(tǒng)輸出符號(hào),其特征在于,所述解碼器包括配置為生成每個(gè)獲取的非系統(tǒng)輸出符號(hào)的非系統(tǒng)密鑰的集合的非系統(tǒng)密鑰生成器;配置為再生成一個(gè)或多個(gè)系統(tǒng)密鑰的系統(tǒng)密鑰生成器;及配置為接收所述一個(gè)或多個(gè)系統(tǒng)輸出符號(hào)、所述一個(gè)或多個(gè)系統(tǒng)輸出符號(hào)、所述系統(tǒng)密鑰和所述非系統(tǒng)密鑰,并輸出一個(gè)或多個(gè)輸入符號(hào)來進(jìn)行響應(yīng)的系統(tǒng)解碼器。
30.如權(quán)利要求29所述的解碼器,其特征在于,所述系統(tǒng)密鑰再生成器配置為再生成第一個(gè)系統(tǒng)密鑰集合和第二個(gè)系統(tǒng)密鑰集合,第一個(gè)系統(tǒng)密鑰集合中的每個(gè)系統(tǒng)密鑰對(duì)應(yīng)于獲取的系統(tǒng)輸出符號(hào),第二個(gè)系統(tǒng)密鑰集合中的每個(gè)系統(tǒng)密鑰對(duì)應(yīng)于丟失的系統(tǒng)輸出符號(hào)。
31.如權(quán)利要求30所述的解碼器,其特征在于,所述系統(tǒng)解碼器包括用于接收所述接收到的系統(tǒng)輸出符號(hào)、所述非系統(tǒng)密鑰的集合和第一個(gè)及第二個(gè)系統(tǒng)密鑰集合,并生成對(duì)應(yīng)的中間輸入符號(hào)集合來進(jìn)行響應(yīng)的連鎖反應(yīng)解碼器;及用于接收所述中間輸入符號(hào)所述第二個(gè)系統(tǒng)密鑰集合,并生成丟失的系統(tǒng)輸出符號(hào)的拷貝來進(jìn)行響應(yīng)的連鎖反應(yīng)編碼器;所述接收到的系統(tǒng)輸出符號(hào)和所述接收到的非系統(tǒng)輸出符號(hào)拷貝的組合起來包括完整的傳輸?shù)妮斎敕?hào)集合,所述傳輸?shù)妮斎敕?hào)集合包括原始數(shù)據(jù)的集合。
32.一種存儲(chǔ)在計(jì)算機(jī)可讀媒體上并用于將數(shù)據(jù)編碼為連鎖反應(yīng)碼的計(jì)算機(jī)程序產(chǎn)品,所述連鎖反應(yīng)碼包括系統(tǒng)輸出符號(hào)和非系統(tǒng)輸出符號(hào),所述計(jì)算機(jī)程序產(chǎn)品包括用于通過所述數(shù)據(jù)生成輸入符號(hào)集合的指令代碼,所述輸入符號(hào)包括系統(tǒng)輸出符號(hào);及用于通過所述輸入符號(hào)集合生成一個(gè)或多個(gè)非系統(tǒng)輸出符號(hào)的指令代碼,從非系統(tǒng)輸出符號(hào)的字母表中選擇一個(gè)或多個(gè)非系統(tǒng)輸出符號(hào)中的每一個(gè),且將每個(gè)非系統(tǒng)輸出符號(hào)作為一個(gè)或多個(gè)輸入符號(hào)的函數(shù)生成;所述輸入符號(hào)集合的任何子集都可通過預(yù)定數(shù)量的非系統(tǒng)輸出符號(hào)(i),或(a)不包括在所述要復(fù)原的輸入符號(hào)的子集中的輸入符號(hào)和(b)一個(gè)或多個(gè)非系統(tǒng)輸出符號(hào)的組合(ii)來復(fù)原。
33.如權(quán)利要求32所述的計(jì)算機(jī)程序產(chǎn)品,其特征在于,所述生成一個(gè)或多個(gè)非系統(tǒng)輸出符號(hào)的指令代碼包括通過所述輸入符號(hào)集合生成多個(gè)中間輸入符號(hào)的指令代碼;及將所述多個(gè)中間輸入符號(hào)編碼為一個(gè)或多個(gè)非系統(tǒng)輸出符號(hào)的指令代碼,其中將所述一個(gè)或多個(gè)輸入符號(hào)編碼為一個(gè)非系統(tǒng)輸出符號(hào)。
34.如權(quán)利要求33所述的計(jì)算機(jī)程序產(chǎn)品,其特征在于,所述生成多個(gè)中間輸入符號(hào)的指令代碼包括計(jì)算所述多個(gè)輸入符號(hào)的系統(tǒng)密鑰的指令代碼;及通過所述多個(gè)輸入符號(hào)和對(duì)應(yīng)的系統(tǒng)密鑰,生成多個(gè)中間輸入符號(hào)的指令代碼。
35.一種存儲(chǔ)在計(jì)算機(jī)可讀媒體上并用于將連鎖反應(yīng)碼解碼為輸入符號(hào)集合的計(jì)算機(jī)程序產(chǎn)品,所述連鎖反應(yīng)碼包括系統(tǒng)輸出符號(hào)和非系統(tǒng)輸出符號(hào),所述輸入符號(hào)包括所需要的數(shù)據(jù),所述計(jì)算機(jī)程序產(chǎn)品包括提供所述輸入符號(hào)集合的第一個(gè)子集的指令代碼,所述輸入符號(hào)的第一個(gè)子集包括一個(gè)或多個(gè)系統(tǒng)輸出符號(hào);提供一個(gè)或多個(gè)非系統(tǒng)輸出符號(hào)的指令代碼,從非系統(tǒng)輸出符號(hào)的字母表中選擇所述每個(gè)非系統(tǒng)輸出符號(hào),將所述每個(gè)非系統(tǒng)輸出符號(hào)作為一個(gè)或多個(gè)輸入符號(hào)的函數(shù)生成;及復(fù)原所述輸入符號(hào)余下的子集的指令代碼,所述余下的子集由一個(gè)或多個(gè)不包含在所述輸入符號(hào)的第一個(gè)子集中的輸入符號(hào)組成,通過下述復(fù)原所述輸入符號(hào)余下的子集(i)預(yù)定數(shù)量的非系統(tǒng)輸出符號(hào);或(ii)(a)所述第一個(gè)子集中的一個(gè)或多個(gè)輸入符號(hào),和(b)一個(gè)或多個(gè)非系統(tǒng)輸出符號(hào)的組合。
36.如權(quán)利要求35所述的計(jì)算機(jī)程序產(chǎn)品,其特征在于,所述通過(a)所述第一個(gè)子集中的一個(gè)或多個(gè)輸入符號(hào),和(b)一個(gè)或多個(gè)非系統(tǒng)輸出符號(hào)的組合來復(fù)原所述輸入符號(hào)余下的子集的指令代碼包括將所述一個(gè)或多個(gè)接收到的非系統(tǒng)輸出符號(hào)和所述一個(gè)或多個(gè)接收到的輸入符號(hào)的組合解碼為多個(gè)中間輸入符號(hào)的指令代碼;及將所述多個(gè)中間輸入符號(hào)編碼為組成輸入符號(hào)余下的子集的一個(gè)或多個(gè)輸入符號(hào)的指令代碼,所述第一個(gè)子集和輸入符號(hào)余下的子集一起組成輸入符號(hào)集合。
37.如權(quán)利要求36所述的計(jì)算機(jī)程序產(chǎn)品,其特征在于,將所述一個(gè)或多個(gè)非系統(tǒng)輸出符號(hào)解碼為多個(gè)中間輸入符號(hào)的指令代碼包括計(jì)算對(duì)應(yīng)于所述接收到的系統(tǒng)輸出符號(hào)的系統(tǒng)密鑰的指令代碼;計(jì)算對(duì)應(yīng)于所述接收到的非系統(tǒng)輸出符號(hào)的非系統(tǒng)密鑰的指令代碼;及通過所述系統(tǒng)密鑰、非系統(tǒng)密鑰、所述接收到的非系統(tǒng)輸出符號(hào)和所述接收到的系統(tǒng)輸出符號(hào)生成多個(gè)中間輸入符號(hào)的指令代碼。
38.如權(quán)利要求36所述的計(jì)算機(jī)程序產(chǎn)品,其特征在于,所述將所述多個(gè)中間輸入符號(hào)編碼為組成輸入符號(hào)余下的子集的一個(gè)或多個(gè)輸入符號(hào)的指令代碼包括計(jì)算所述未接收到的系統(tǒng)輸出符號(hào)的系統(tǒng)密鑰的指令代碼;及通過對(duì)應(yīng)于所述未接收到的系統(tǒng)輸出符號(hào)和所述中間輸入符號(hào)的系統(tǒng)密鑰,生成所述輸入符號(hào)余下的子集的指令代碼。
全文摘要
將數(shù)據(jù)編碼為連鎖反應(yīng)碼的方法,所述方法包括通過輸入數(shù)據(jù)生成輸入符號(hào)集合。接下來,通過該輸入符號(hào)集合生成一個(gè)或多個(gè)非系統(tǒng)輸出符號(hào),從非系統(tǒng)輸出符號(hào)的字母表中選擇一個(gè)或多個(gè)非系統(tǒng)輸出符號(hào)中的每一個(gè),且將每個(gè)非系統(tǒng)輸出符號(hào)作為一個(gè)或多個(gè)輸入符號(hào)的函數(shù)生成。作為此編碼處理的結(jié)果,輸入符號(hào)集合的任何子集都可以通過(i)預(yù)定數(shù)量的非系統(tǒng)輸出符號(hào),或(ii)(a)不包括在要復(fù)原的輸入符號(hào)的子集內(nèi)的輸入符號(hào)與(b)一個(gè)或多個(gè)非系統(tǒng)輸出符號(hào)的組合來復(fù)原。
文檔編號(hào)H04L1/00GK1717871SQ200380104307
公開日2006年1月4日 申請(qǐng)日期2003年10月1日 優(yōu)先權(quán)日2002年10月5日
發(fā)明者M·A·肖洛拉希, M·G·盧比 申請(qǐng)人:數(shù)字方敦股份有限公司