Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Kuantum bilişiminin önemli bir kavramı olan dolanıklığı gösteren temel Q# bir program yazmayı öğrenin.
İki veya daha fazla kubit dolanık olduğunda kuantum bilgilerini paylaşırlar; bu da bir kubite ne olursa olsun diğerinin de olduğu anlamına gelir. Bu hızlı başlangıçta Bell çifti olarak adlandırılan iki kubitli dolanık bir durum oluşturacaksınız. Bell çiftinde, bir kubiti $\ket{0}$ durumunda ölçerseniz, diğer kubitin de $\ket{0}$ durumunda olduğunu, ölçüm yapmadan bilirsiniz. Daha fazla bilgi için bkz . Kuantum dolanıklığı.
Bu hızlı başlangıçta yapacağınız:
- Bir Q# dosyası oluşturun.
- Bir kubit çifti ayırın.
- Kubitleri dolaştırın.
Önkoşullar
- Visual Studio Code'un en son sürümü.
- Azure Quantum Geliştirme Seti (QDK) uzantısı. Yükleme ayrıntıları için Quantum Development Kit'i kurma bölümüne bakın.
Q# dosyası oluşturun
- Visual Studio Code'u açın.
- Dosya>Yeni Metin Dosyası'nı seçin.
- Dosyayı
Main.qs
olarak kaydedin. .qs uzantısı bir Q# programı belirtir.
Kodunuzu Q# yazın.
Dosyanızda Main.qs
ikili kuantum biti dolanık hale getirmek ve ölçmek için bu adımları izleyin.
Kuantum kitaplığını içeri aktarma
QDK, kuantum programlarınız için önceden tanımlanmış işlevler ve işlemler içeren standart kitaplığı içerir Q# . Bunları kullanmak için önce ilgili kitaplığı içeri aktarmanız gerekir.
Programınızda, import
kullanarak Microsoft.Quantum.Diagnostics
kitaplığını açın. Bu, DumpMachine()
dahil olmak üzere daha sonra dolanık durumu görüntülemek için kullandığınız tüm işlevlerine ve işlemlerine erişmenizi sağlar.
import Microsoft.Quantum.Diagnostics.*;
İşlem tanımlama
İlgili kitaplıkları içeri aktardıktan sonra kuantum işleminizi ve onun giriş ve çıkış değerlerini tanımlayın. Bu hızlı başlangıç için işleminiz şeklindedir Main
. İki kubit ayırmak, işlemek ve ölçmek için kalan Q# kodu burada yazacaksınız.
Main
hiçbir parametre almaz ve Result
ya da Zero
değerlerini döndüren One
, qubit ölçümlerinin sonuçlarını temsil eder.
operation Main() : (Result, Result) {
// Your entanglement code goes here.
}
İki kubit ayır
İşlem Main
şu anda boş olduğuna göre, sonraki adım iki kubit q1
ve q2
ayırmaktır.
Q# içinde, kubitleri use
anahtar sözcüğünü kullanarak atarsınız.
// Allocate two qubits, q1 and q2, in the 0 state.
use (q1, q2) = (Qubit(), Qubit());
Not
Q# içinde, kubitler her zaman $\ket{0}$ durumunda ayrılır.
Bir kubiti süper pozisyona yerleştirme
Kubitler q1
ve q2
, $\ket{0}$ durumundadır. Kubitleri dolanıklığa hazırlamak için, bunlardan birini $\ket{0}$ veya $\ket{1}$ olarak ölçülme olasılığının %50 olduğu eşit bir süperpozisyona yerleştirmeniz gerekir.
Hadamard işlemini
// Put q1 into an even superposition.
H(q1);
Sonuç durumu q1
, $\frac{{1}{\sqrt{2}}(\ket{{0}+\ket{1})$'dır, bu da $\ket{0}$ ve $\ket{{1}$'nin eşit bir süperpozisyonudur.
Kubitleri dolandırın
Artık controlled-NOT, CNOT
, işlemini kullanarak kubitleri dolandırabilirsiniz.
CNOT
iki kubit alan ve bunlardan birinin denetim, diğerinin ise hedef olarak görev yaptığı bir kontrol işlemidir.
Bu hızlı başlangıçta, q1
denetim kubiti olarak ve q2
hedef kubit olarak ayarlarsınız. Bu durum, q1
durumu $\ket{1}$ olduğunda CNOT
ile q2
durumunu tersine çevirir.
// Entangle q1 and q2, making q2 depend on q1.
CNOT(q1, q2);
Her iki kubitin de sonuç durumu Bell çiftidir $\frac{{1}{\sqrt{2}}(\ket{00}+\ket{{11})$.
İpucu
Hadamard ve CNOT işlemlerinin kubitlerin durumunu nasıl dönüştürdüğünü öğrenmek istiyorsanız bkz . Kuantum işlemleriyle dolanıklık oluşturma.
Dolanık durumu görüntüleme
Kubitleri ölçmeden önce, önceki kodunuzun bunları başarıyla dolandırdığını doğrulamanız önemlidir.
DumpMachine
işlemini, Microsoft.Quantum.Diagnostics
kütüphanesinin bir parçası olarak kullanarak Q# programınızın geçerli durumunu çıktısını alabilirsiniz.
// Show the entangled state of the qubits.
DumpMachine();
Kubitleri ölçme
Kubitlerin dolanık olduğunu doğruladığınıza göre, M
işlemini kullanarak bunları ölçebilirsiniz.
q1
ve q2
ölçümü, kuantum durumlarını eş olasılıkla Zero
veya One
haline daraltır.
Q# içinde, yeni bir değişken bildirmek için let
anahtar sözcüğünü kullanırsınız.
q1
ve q2
ölçüm sonuçlarını depolamak için sırasıyla m1
ve m2
değişkenlerini bildirin.
// Measure q1 and q2 and store the results in m1 and m2.
let (m1, m2) = (M(q1), M(q2));
Kubitleri sıfırlama
Her Reset
kullanarak yaparsınız.
// Reset q1 and q2 to the 0 state.
Reset(q1);
Reset(q2);
Ölçüm sonuçlarını döndürme
Son olarak, Main
işlemini tamamlamak ve dolanık durumu gözlemlemek için, m1
ve m2
ölçüm sonuçlarını döndürün.
// Return the measurement results.
return (m1, m2);
İpucu
bir Q# işlev veya işlem hakkında daha fazla bilgi edinmek istiyorsanız üzerine gelin.
Kodunuzu Q# çalıştırma
Tebrikler! Q# İki kubiti dolanık hale getiren ve bir Bell çifti oluşturan program yazdınız.
Son Q# programınız şu şekilde görünmelidir:
import Microsoft.Quantum.Diagnostics.*;
operation Main() : (Result, Result) {
// Allocate two qubits, q1 and q2, in the 0 state.
use (q1, q2) = (Qubit(), Qubit());
// Put q1 into an even superposition.
// It now has a 50% chance of being measured as 0 or 1.
H(q1);
// Entangle q1 and q2, making q2 depend on q1.
CNOT(q1, q2);
// Show the entangled state of the qubits.
DumpMachine();
// Measure q1 and q2 and store the results in m1 and m2.
let (m1, m2) = (M(q1), M(q2));
// Reset q1 and q2 to the 0 state.
Reset(q1);
Reset(q2);
// Return the measurement results.
return (m1, m2);
}
Programınızı çalıştırmak ve her iki kubitin sonucunu görüntülemek için işlemin üzerinde Çalıştır'ıMain
veya Ctrl+F5 tuşlarına basın
Programı birkaç kez çalıştırabilirsiniz ve her birinin hata ayıklama konsolunda farklı bir sonucu vardır. Bu, kuantum ölçümlerinin olasılıksal doğasını ve kubitlerin dolanıklığını gösterir.
Örneğin, sonuç ise Zero
hata ayıklama konsolunuz şu şekilde görünmelidir:
DumpMachine:
Basis | Amplitude | Probability | Phase
-----------------------------------------------
|00⟩ | 0.7071+0.0000𝑖 | 50.0000% | 0.0000
|11⟩ | 0.7071+0.0000𝑖 | 50.0000% | 0.0000
Result: "(Zero, Zero)"
Sonraki adım
Kuantum dolanıklığı hakkında daha fazla bilgi edinmek için Q# ile Q# ile kuantum dolanıklığını keşfetme öğreticisine bakın. Bu eğitim, bu hızlı başlangıçta ele alınan kavramları genişletir ve daha karmaşık bir dolanıklık programı yazmanıza yardımcı olur.