• Nenhum resultado encontrado

Nesta se¸c˜ao apresentaremos os c´odigos Calderbank-Shor-Steane, conhecidos como c´odigos CSS. Essa fam´ılia de c´odigos foi desenvolvida por Calderbank e Shor [8] e Steane [30] em 1996. Como veremos, esses c´odigos s˜ao constru´ıdos a partir dos c´odigos cl´assicos lineares.

Por isso, antes de apresentarmos os c´odigos CSS, abordaremos os c´odigos lineares cl´assicos.

Defini¸c˜ao 2.3. Um c´odigo linear C codificando k bits de informa¸c˜ao em um espa¸co de c´odigos de n bits ´e descrito por uma matrizG de ordem n×k, chamada de matriz geradora, onde todas as suas entradas s˜ao elementos de Z2. Denotamos esse c´odigo por [n, k].

Seja x a mensagem de k bits que desejamos codificar. O produto Gx ´e a mensagem codificada pelo c´odigoC, chamado de palavra c´odigo. As colunas deG devem ser L.I, pois o conjunto de todas as palavras c´odigo ´e igual ao espa¸co vetorial gerado por elas. Assim, todas as palavras ser˜ao codificadas de forma ´unica. Vale destacar que todos os c´alculos s˜ao feitos m´odulo 2 e um c´odigo codificando k bits tem 2k palavras c´odigo poss´ıveis.

Exemplo 2.4. Queremos codificar dois bits usando trˆes repeti¸c˜oes de cada bit, ou seja, um c´odigo [6,2]. Considere

onde G ´e a matriz geradora do c´odigo e xi, i = 1,2,3,4 s˜ao as mensagens que podemos co-dificar. As mensagens codificadas s˜ao: Gx1 = (0,0,0,0,0,0), Gx2 = (0,0,0,1,1,1), Gx3 = (1,1,1,0,0,0) e Gx4 = (1,1,1,1,1,1).

O processo de corre¸c˜ao de erros ser´a feito utilizando matrizes de verifica¸c˜ao de paridade.

Defini¸c˜ao 2.5. Seja C um c´odigo [n, k]contendo todos os vetores xde n elementos sobre Z2 tal queHx= 0, onde H ´e uma matriz de ordem n−k×n, chamada de matriz de verifica¸c˜ao de paridade, cujas entradas est˜ao em Z2.

SendoC um c´odigo de dimens˜ao k, o posto de H ´e n−k. Assim, a matrizH deve ter ao menosn−k linhas linearmente independentes (L.I).

Tendo uma das matrizes Gou H conseguimos determinar a outra.

ComHem m˜aos, como o n´ucleo deHtem dimens˜aok, escolhemoskvetores L.I,y1, . . . , yk que geram o n´ucleo. Em seguida, definimos G tendoy1, . . . , yk como colunas.

ComGem m˜aos, escolhemosn−k vetores L.I,y1, . . . , yn−kde tal forma que esses vetores sejam ortogonais `as colunas de G. Definimos H como tendo y1>, . . . , yn−k> como linhas da matriz.

Exemplo 2.6. Considere o c´odigo [6,2] cuja matriz geradora G foi dada no exemplo 2.4.

Para constru´ırmos H, devemos escolher 6−2 = 4 vetores L.I ortogonais `as colunas de G.

Digamos (1,1,0,0,0,0), (0,1,1,0,0,0), (0,0,0,1,1,0) e (0,0,0,0,1,1). Logo,

Fazendo Hx= 0, veremos que as palavras c´odigo s˜ao as obtidas no exemplo 2.4.

Para a detec¸c˜ao e a recupera¸c˜ao de erros, considere y = Gx a mensagem codificada e suponha que ocorreu um erro e dando a palavra c´odigo y0 = y +e. Temos que Hy0 = H(y+e) = Hy +He = 0 +He = He, onde Hy0 ´e a s´ındrome do erro. Como Hy0 = He, ela cont´em informa¸c˜oes sobre qual erro ocorreu. Com efeito, se nenhum erro ocorreu, ent˜ao

Hy0 = 0. Caso ocorreu algum erro no j-´esimo bit, ent˜ao Hy0 = Hej, onde ej ´e o vetor com 1 na j-´esima linha e 0 nas outras. Da mesma forma que nos outros c´odigos, supondo que ocorreu no m´aximo um erro em um ´unico bit, ao calcularmos a s´ındrome do erro e compararmos com os Hej, descobriremos onde ocorreu o erro, podendo assim corrigir o bit afetado.

Para comparar Hy0 eHej, usamos a seguinte defini¸c˜ao de distˆancia.

Defini¸c˜ao 2.7. Sejam x e y palavras de n bits cada. A distˆancia entre x e y ´e definida como o n´umero de coordenadas em quex ey diferem e ´e chamada de distˆancia de Hamming.

Denotamos a distˆancia de Hamming por d(x, y).

Defini¸c˜ao 2.8. Sejam x uma palavra de n bits e 0a palavra que possui zeros em todos os n bits. A distˆancia de Hamming entre x e 0, denotado por wt(x)≡d(x,0), ´e chamado de peso (de Hamming), isto ´e, ´e o n´umero de coordenadas em que x ´e n˜ao nulo.

Se a probabilidade de um bit flip ocorrer for menor que 12, ent˜ao a palavra y minimiza o n´umero de bit flips necess´arios para ir dey para y0, ou seja,wt(ej) =d(y, y0), logo a palavra codificada, provavelmente foi y.

Agora definiremos a distˆancia de um c´odigo C.

Defini¸c˜ao 2.9. Seja C um c´odigo. A distˆancia de C ´e a distˆancia m´ınima entre qualquer palavra c´odigo x e 0, ou seja,

d(C) = min

x∈C, x6=0wt(x). (2.7)

Com o conceito de distˆanciad ≡d(C), dizemos que o c´odigo C ´e um c´odigo [n, k, d]. Proposi¸c˜ao 2.10. SejaCum c´odigo[n, k, d]com distˆanciadde pelo menos2t+1para algum tinteiro positivo. Ent˜aoC ´e capaz de corrigir erros em at´e tbits, simplesmente decodificando a mensagem codificada corrompiday0 como a ´unica palavra c´odigoy satisfazendod(y, y0)≤t.

Demonstra¸c˜ao. Com efeito, suponha que o c´odigo tenha distˆanciad≥2t+1. Seu´e enviado e v´e recebido tendo n˜ao mais do queterros, ent˜aod(u, v)≤t. Temos tamb´em qued(u, u0)≥d para qualquer palavra c´odigo u0 6=u.

Pela desigualdade triangular

d(u, v) +d(v, u0) ≥ d(u, u0)⇔ d(v, u0) ≥ d(u, u0)−d(u, v)

≥ d−t

≥ 2t+ 1−t

= t+ 1.

Assim, conseguimos corrigir parau, pois ser´a a ´unica palavra c´odigo tal que d(u, v)≤t.

Caso d(u, v)> t, suponha sem perda de generalidade qued(u, v) = t+ 1, ent˜ao d(v, u0) ≥ d(u, u0)−d(u, v)

≥ d−t−1

≥ 2t+ 1−t−1

= t.

Logo, d(v, u0) ≥t, ou seja, podemos ter u0 6=u dando o valort e, assim, n˜ao conseguiremos recuperar o erro.

Portanto, conseguimos recuperar no m´aximo erros em at´e t bits.

Uma classe de c´odigos cl´assicos que usaremos no exemplo 2.14 s˜ao os c´odigos de Hamming, os quais definiremos agora.

Defini¸c˜ao 2.11. Seja r ≥ 2 um inteiro e seja H uma matriz de verifica¸c˜ao de paridade, cujas 2r−1 colunas s˜ao todas cadeias de bits de comprimento r que n˜ao s˜ao identicamente 0. Essa matriz define um c´odigo [2r−1,2r−r−1,3] conhecido como c´odigo de Hamming.

Por fim, antes de definirmos os c´odigos CSS, definiremos o c´odigo dual de um c´odigo cl´assico, o qual ´e utilizado na defini¸c˜ao dos c´odigos CSS.

Defini¸c˜ao 2.12. Seja C um c´odigo [n, k] com matriz geradora G e matriz de verifica¸c˜ao de paridade H. Ent˜ao, definimos o c´odigo dual de C, denotado por C, como sendo o c´odigo com matriz geradora H> e matriz de verifica¸c˜ao de paridade G>. Se C ⊆ C, ent˜ao C ´e dito fracamente auto-dual e estritamente auto-dual seC =C.

Com todos esses elementos em m˜aos estamos aptos a definir os c´odigos CSS.

O estado |x+C2i depende unicamente do coset C1/C2, pois, pode-se mostrar que dado x0 ∈ C1 tal que x−x0 ∈ C2, temos que |x+C2i = |x0 +C2i. E, os estados |x+C2i s˜ao t bit flip e phase flip.

Para entender a identifica¸c˜ao e recupera¸c˜ao de erros, recomendamos ao leitor [23], [24].

Exemplo 2.14. (C´odigo de Steane) Vamos construir um c´odigo CSS usando o c´odigo de Hamming (defini¸c˜ao 2.11). Considere r = 3, logo, temos um c´odigo de Hamming [7,4,3], denotado por C. GC2 = HC1>. Seguindo o processo que j´a apresentamos, ´e poss´ıvel determinar a partir de HC1 a matriz geradora de C1 e a partir de GC2 =HC1> a matriz de verifica¸c˜ao de paridade de C2.

Queremos mostrar que C2 ⊂ C1. Utilizando as matrizes geradoras ou de verifica¸c˜ao de paridade, determinamos que

C1 = {(0,0,0,0,0,0,0),(1,0,1,0,1,0,1),(0,1,1,0,0,1,1),(1,1,0,0,1,1,0), (0,0,0,1,1,1,1),(1,0,1,1,0,1,0),(0,1,1,1,1,0,0),(1,1,0,1,0,0,1), (1,1,1,1,1,1,1),(1,1,1,0,0,0,0),(0,0,1,1,0,0,1),(0,1,0,1,0,1,0), (1,0,0,1,1,0,0),(1,0,0,0,0,1,1),(0,1,0,0,1,0,1),(0,0,1,0,1,1,0)}

e

C2 = {(0,0,0,0,0,0,0),(1,0,1,0,1,0,1),(0,1,1,0,0,1,1),(1,1,0,0,1,1,0), (0,0,0,1,1,1,1),(1,0,1,1,0,1,0),(0,1,1,1,1,0,0),(1,1,0,1,0,0,1)}.

Portanto, C2 ⊂ C1. Veja tamb´em que C2 = C

=C, logo, ambos os c´odigos C1 e C2 tˆem distˆancia 3 e assim, podem corrigir erros em at´e 1 bit.

Como C1 ´e um c´odigo [7,4] e C2 ´e um c´odigo [7,3], o c´odigo quˆantico CSS(C1, C2) ´e um c´odigo [7,1] que pode corrigir erros em 1 ´unico qubit, e ´e definido como sendo o espa¸co vetorial gerado pelos estados|x+C2i ∀x∈C1. Note que temos apenas dois estados, os quais ser˜ao denotados pelos l´ogicos |0Li e |1Li.

|0Li = |0 +C2i

= 1

p|C2| X

y∈C2

|0 +yi

= 1

√8[|0000000i+|1010101i+|0110011i+|1100110i+

|0001111i+|1011010i+|0111100i+|1101001i]

e

|1Li = |1 +C2i

= 1

p|C2| X

y∈C2

|1 +yi

= 1

√8[|1111111i+|0101010i+|1001100i+|0011001i+

|1110000i+|0100101i+|1000011i+|0010110i],

onde 0 = (0,0,0,0,0,0,0) e 1 = (1,1,1,1,1,1,1). Temos que 0 ∈C2 e se escolhermos qual-quer outro x∈C2 teremos o mesmo estado |0Li. Do mesmo modo, 1∈C1 e se escolhermos qualquer outrox∈C1−C2 teremos o mesmo estado |1Li. O espa¸co vetorial gerado por |0Li e |1Li ´e chamado de c´odigo de Steane.

Documentos relacionados