Kuantum hata düzeltmesine giriş
Bu makalede kuantum hata düzeltmesinin temelleri, kuantum hatalarının türleri ve bazı yaygın kuantum hata düzeltme kodları açıklanmaktadır. Ayrıca, üç kubitli kodu kullanarak hataları düzeltmeye yönelik bir örnek de sağlar.
Kuantum hata düzeltmesi nedir?
Kuantum hata düzeltmesi (QEC), kuantum bilgilerini hatalardan korumamıza olanak tanıyan bir tekniktir. Verimli kuantum algoritmaları kirliliklere duyarlı olan büyük ölçekli kuantum bilgisayarlarını kullandığından, hata düzeltme özellikle kuantum bilgisayarlarda önemlidir.
Kuantum hata düzeltmesinin ardındaki temel ilke, belirli bir bilgi miktarını kodlamak için kullanılan bit sayısının artırılmasıdır. Bu yedeklilik, kodun hataları algılamasını ve düzeltmesini sağlar.
Kuantum bilgisayarları için hata oranları genellikle kuantum sistemleri oluşturma ve çalıştırmayla ilgili zorluklar nedeniyle klasik bilgisayarın hatalarından daha yüksektir. Kuantum kapılarındaki kirlilik, uyumsuzluk ve kusurlar, kuantum hesaplamalarında hatalara neden olabilir. Geçerli kuantum bilgisayarların %1 ile %0,1 arasında hata oranları vardır. Başka bir deyişle bu, her 100 ile 1000 kuantum kapısı işlemi arasında ortalama bir hataya neden olduğu anlamına gelir.
Kuantum hatası türleri
İki temel kuantum hatası türü vardır: bit çevirmeleri ve aşama çevirmeleri.
Bir kubit olarak $\ket{0}$ $\ket{1}$ değiştirildiğinde veya tersi olduğunda bit çevirme hataları oluşur. \sigma_x ve \sigma_x$ kubit durumlarını $eşlediklerinden bit çevirme hataları \={1}\ket{\ket{0}$sigma_x-errors{1}$=\ket{\ket{0} olarak $da bilinir.$ Bu hata klasik bit çevirme hatasına benzer.
Bir kubit fazını değiştirdiğinde aşama çevirme hataları oluşur. \sigma_z-errors olarak $da bilinirler çünkü \sigma_z$ ve $\sigma_z{0}$ \ket{= \ket{0}=\ket{{1}-\ket{1}$ kubit durumlarını $eşlerler. Bu tür bir hatanın klasik analogu yoktur.
Kuantum bilişiminde, kuantum hataları bit çevirmeleri, aşama çevirmeleri veya her ikisinin birleşimi olarak ortaya çıkar.
Kuantum hata düzeltmesi nasıl çalışır?
Kuantum hata düzeltme kodları, kuantum bilgilerini fiziksel kubitler olarak adlandırılan daha büyük bir kubit kümesine kodlayarak çalışır. Fiziksel kubitlerin birleşik durumu mantıksal kubiti temsil eder.
Fiziksel kubitler, kuantum kapılarındaki ayrıştırma ve kusurlardan dolayı hatalara maruz kalır. Kod, koddaki bazı kubitler ölçülerek hataların algılanıp düzeltilmesi için tasarlanmıştır.
Örneğin, tek kubit iletisini $\ket{0}$göndermek istediğinizi düşünün. İletiyi kodlamak için üç fiziksel kubit kullanabilirsiniz. $\ket{000}$Bu, kod sözcüğü olarak bilinir. İleti üç kez tekrarlandığından bu hata düzeltme kodu bir yineleme kodudur.
Şimdi, iletim sırasında tek bir bit çevirme hatası oluştuğundan alıcının aldığı şeyin durumu $\ket{010}$olduğunu düşünün. Bu senaryoda, alıcı hedeflenen iletinin olduğunu $\ket{000}$çıkarsayabilir. Ancak, ileti iki bit çevirme hatasına maruz kalırsa, alıcı yanlış bir ileti çıkarsayabilir. Son olarak, özgün iletinin $\ket{000}$ olması $\ket{111}$için üç bitin de çevrilmesi durumunda alıcının hata oluştuğundan haberi olmaz.
QEC kodunun kod uzaklığı, bir kodu başka bir kod sözcüğüne değiştiren en düşük hata sayısıdır, yani algılanamaz hata sayısıdır. d$ kod uzaklığı $olarak tanımlanabilir
$$d = 2t + 1$$
burada $t$ , kodun düzeltebileceği hata sayısıdır. Örneğin, üç bit kod bir bit çevirme hatasını algılayabilir ve düzeltebilir, bu nedenle t 1 ve dolayısıyla kod uzaklığı d = 3'dür$$.$= $
Bu örnekte kullanılan üç bit kod gibi yineleme kodlarının yalnızca bit çevirme hatalarını düzeltebileceğini, aşama çevirme hatalarını düzeltemediğini unutmayın. Her iki hata türünü de düzeltmek için daha karmaşık kuantum hata düzeltme kodları gerekir.
QEC kodu türleri
Her biri kendi özelliklerine ve avantajlarına sahip birçok farklı QEC kodu türü vardır. Bazı yaygın QEC kodları şunlardır:
Yineleme kodu: Tek bir kubitin birden çok kez tekrarlanarak birden çok kubite kodlandığı en basit kuantum hata düzeltme kodu. Yineleme kodu bit çevirme hatalarını düzeltebilir ancak aşama çevirme hatalarını düzeltemez.
Shor kodu: Peter Shor tarafından geliştirilen ilk kuantum hata düzeltme kodu. Bir mantıksal kubiti dokuz fiziksel kubite kodlar. Shor kodu tek bit çevirme hatasını veya bir aşamalı çevirme hatasını düzeltebilir, ancak her iki hata türünü aynı anda düzeltemez.
Steane kodu: Bu, hem bit çevirme hem de aşama çevirme hatalarını düzeltebilen yedi kubitli bir koddur. Hataya dayanıklı olma avantajına sahiptir, yani hata düzeltme işleminin kendisi ek hatalara neden olmaz.
Surface kodu: Bu, mantıksal kubitleri kodlamak için iki boyutlu kubit kafesleri kullanan bir topolojik hata düzeltme kodudur. Yüksek hata düzeltme eşiğine sahiptir ve büyük ölçekli, hataya dayanıklı kuantum bilişimi için en umut verici tekniklerden biri olarak kabul edilir. Surface kodu Azure Quantum Kaynak Tahmin Aracı tarafından kullanılır.
Hastings-Haah kodu: Bu kuantum hata düzeltme kodu, birçok rejimdeki Majorana kubitlerindeki yüzey kodlarından daha iyi uzay-zaman maliyetleri sunar. Geçit tabanlı yönerge kümeleri için ek yük daha büyüktür ve bu da bu yaklaşımı yüzey kodundan daha az verimli hale getirir.
Örnek: Üç kubitli kod
Üç kubitli hata düzeltme kodu, bir bit çevirme hatasını algılayıp düzeltebilen basit bir yineleme kodudur. Kubiti üç kez tekrarlayarak tek bir mantıksal kubiti üç fiziksel kubite kodlar.
İpucu
Üç kubitli kodun kod örneğine göz atın.Q#
Rastgele bir tek kubit $\ket{\phi}=\alpha\ket{{0} + \beta\ket{1}$göndermek istediğinizi düşünün. Hataları önlemek için temel durumları $\ket{0}$ ve $\ket{1}$ üç kubitin ortak durumunu kodlarsınız. İki mantıksal temel durum $\ket{0_L}=\ket{000}$ ve $\ket{1_L.}=\ket{111}$
Bu nedenle, tek kubit $\ket{\phi}={0}\alpha\ket{+ \beta\ket{1}$ şu şekilde kodlanır:
$$\ket{\phi}{000}\ket{\alpha=_L + \beta\ket{\ket{\alpha{111}=0_L} + 1_L \beta\ket{}$$
Şimdi üç kubitli kodun adımlarını ayıralım.
Kubitleri hazırlama
İlk olarak, tek kubitinizi +\beta\ket{1}$ üç kubitin $\ket{\phi}=\alpha\ket{{0} ortak durumuna kodlarsınız.
Ardından, durumunda $\ket{0}$iki kubit daha hazırlayabilirsiniz. Bu nedenle, üç kubitin de genel durumu (\alpha\ket{0} +\beta\ket{1})\ket{0}\ket{0}={000}\alpha\ket{ + \beta\ket{${100}şeklindedir.$
Son olarak, iki CNOT işlemi uygulayarak tek kubiti üç kubitin ortak durumuna kodlarsınız. İlk CNOT, denetim olarak ilk kubiti kullanır ve +\ket{110}$\beta üreterek $\alpha\ket{000} ikinci kubit üzerinde hareket eder. İkinci CNOT, denetim olarak ilk kubiti kullanır ve üçüncü kubit üzerinde hareket eder. Üç kubitin durumu artık $\alpha\ket{000} + \beta\ket{111}$şeklindedir.
Kubitleri gönderme
Üç kubiti de gönderirsiniz. Yalnızca bir bit çevirme hataları oluşabildiğini varsayarsak, alınan kubitler aşağıdaki durumlardan birindedir:
State | Hata |
---|---|
$\alpha\ket{000} + \beta\ket{111}$ | Hata yok |
$\alpha\ket{100} + \beta\ket{011}$ | Kubit 1 |
$\alpha\ket{010} + \beta\ket{101}$ | Kubit 2 |
$\alpha\ket{001} + \beta\ket{110}$ | Kubit 3 |
Yardımcı kubit ekleme
İlk olarak, durumunda $\ket{00}$hazırlanmış iki kubit daha tanıtacaksınız. Bu yardımcı kubit çifti, mantıksal durumla ilgili bilgileri doğrudan ölçmeden veya almadan hatanın bilgilerini ayıklamak için kullanılır.
Daha sonra dört CNOT işlemi gerçekleştirirsiniz: İlk iki işlem birinci ve ikinci alınan kubitleri kontrol olarak kullanır ve ilk yardımcı kubit üzerinde işlem yapar ve son iki işlem, birinci ve üçüncü alınan kubitleri kontrol olarak kullanır ve ikinci yardımcı bit üzerinde hareket eder. Beş kubitin de toplam durumu şu şekildedir:
State | Hata |
---|---|
$(\alpha\ket{000} + \beta\ket{111})\ket{00}$ | Hata yok |
$(\alpha\ket{100} + \beta\ket{011})\ket{11}$ | Kubit 1 |
$(\alpha\ket{010} + \beta\ket{101})\ket{10}$ | Kubit 2 |
$(\alpha\ket{001} + \beta\ket{110})\ket{01}$ | Kubit 3 |
Hata sendromu alınıyor
Hata bilgilerini almak için, ve hesaplama temeli durumlarındaki $\ket{0}$ $\ket{1}$iki yardımcı kubiti ölçersiniz. Bunu yaparak, alınan kubitlerdeki hataları tanılamaya yardımcı olduğu için hata sendromu olarak adlandırılan birleşik durumu kurtarırsınız.
Artık alınan üç kubitin dört olası durumdan hangisinde olduğunu biliyorsunuz. Düzeltme işlemini uygulayarak hatayı düzeltebilirsiniz. Bu durumda bit çevirme hatalarıyla karşı karşıyasınız, bu nedenle düzeltme kubitlerin birine (veya hiçine) uygulanan bir $\sigma_x$ işlemidir.
Örneğin, hata sendromu ise$\ket{00}$, alınan kubitler başlangıçta gönderdiğiniz durum $\alpha{000}\ket{olan + \beta\ket{{111}$durumundadır. Hata sendromu ise$\ket{11}$, alınan kubitler + b\ket{{011}$ durumundadır $\alpha\ket{{100} . İlk kubitte bir \sigma_x$ işlemi uygulayarak $düzeltebileceğiniz bir bit çevirme hatası vardır.
Hata sendromu | Durumu daralt | Düzeltme |
---|---|---|
$\ket{00}$ | $\alpha\ket{000} + \beta\ket{111}$ | Hiçbir şey yapma |
$\ket{01}$ | $\alpha\ket{100} + \beta\ket{011}$ | Kubit 3'e \sigma_x$ uygulama $ |
$\ket{10}$ | $\alpha\ket{010} + \beta\ket{101}$ | Kubit 2'ye \sigma_x$ uygulama $ |
$\ket{11}$ | $\alpha\ket{001} + \beta\ket{110}$ | Kubit 1'e \sigma_x$ uygulama $ |
Özgün kubit ayıklanır
Son olarak, başlangıçta iletmek istediğiniz tek kubiti ayıklamak için iki CNOT işlemi uygularsınız: biri denetim olarak ilk kubiti kullanır, ikinci kubit üzerinde hareket eder, diğeri ise ilk kubiti denetim olarak kullanır ve üçüncü kubit üzerinde çalışır.
İlk kubitin durumu, iletmek $\alpha\ket{0} istediğiniz özgün kubit olan + \beta\ket{1}$şeklindedir.
Önemli
QEC kodu, katsayılar $\alpha$ ve ile ilgili hiçbir bilgi kazanmaz, $\beta$bu nedenle hesaplama durumunun süper pozisyonları düzeltme sırasında bozulmadan kalır.