Bagikan melalui


Operasi CheckOperationsAreEqual

Nama yang sepenuhnya memenuhi syarat: Std.Diagnostics.CheckOperationsAreEqual

operation CheckOperationsAreEqual(nQubits : Int, actual : (Qubit[] => Unit), expected : (Qubit[] => Unit is Adj)) : Bool

Ringkasan

Mengingat dua operasi, memeriksa bahwa mereka bertindak identik untuk semua status input.

Deskripsi

Pemeriksaan ini diimplementasikan dengan menggunakan isomorfisme Choi–Jamiołkowski untuk mengurangi pemeriksaan ini ke pemeriksaan pada dua register yang terjerat. Dengan demikian, operasi ini hanya memerlukan satu panggilan ke setiap operasi yang sedang diuji, tetapi memerlukan dua kali lebih banyak qubit untuk dialokasikan. Pemeriksaan ini dapat digunakan untuk memastikan, misalnya, bahwa versi operasi yang dioptimalkan bertindak identik dengan implementasi naifnya, atau bahwa operasi yang bertindak pada berbagai input non-kuantum setuju dengan kasus yang diketahui.

Komentar

Operasi ini mengharuskan operasi memodelkan perilaku yang diharapkan dapat digabungkan, sehingga inversi dapat dilakukan pada register target saja. Secara resmi, seseorang dapat menentukan operasi transpose, yang melonggarkan persyaratan ini, tetapi operasi transpose umumnya tidak dapat direalisasi secara fisik untuk operasi kuantum sewenang-wenang dan dengan demikian tidak disertakan di sini sebagai opsi.

Masukan

nQubit

Jumlah qubit yang akan diteruskan ke setiap operasi.

aktual

Operasi yang akan diuji.

Diharapkan

Operasi yang menentukan perilaku yang diharapkan untuk operasi yang sedang diuji.

Hasil

Benar jika operasi sama, jika tidak salah.