2013-07-30 44 views
0

兩個量子位「控制旋轉」我試圖創建一個程序QCL(量子計算機語言),它隨機產生六個國家之一(即骰子滾動程序)。雖然實現這個,我發現自己需要如下編寫一個函數:我怎樣才能在QCL

operator CondRot(qureg r, qureg c) { 
    qureg newReg = r & c; 
    complex half; 

    half = 1/sqrt(2); 
    Matrix4x4(1, 0, 0, 0,   // <00| 
       0, 1, 0, 0,   // <01| 
       0, 0, half, -half, // <10| 
       0, 0, half, half,  // <11| 
       newReg); 
} 

我感到失望的是,我發現自己需要爲了實現我的目標明確說明酉矩陣。我已經認識到,僅僅使用Hadamard矩陣和一個受控V矩陣,我應該能夠生成任何我想要的酉矩陣。但是,如何做到這一點並不明顯。你們有沒有人知道我怎麼可以重寫這個operator沒有明確說明矩陣?

回答

0

經過一番思考,我意識到我可以用復係數實現我想要的。這是我的新實現的CondRot

operator CondRot(qureg r, qureg c) { 
    qureg joined = r & c; 
    H(r); 
    V(pi/2, joined); 
    H(r); 
} 

注意,結果出來一個複雜的矩陣:

[2 0 0 0 
0 2 0 0 
0 0 1+i 1-i 
0 0 1-i 1+i] * 1/2 

雖然這個矩陣包含複雜的價值觀,它的平方是C-非門。另外,它在< 10 |上運行或者< 11 |產生1/sqrt(2)< 10 | + 1/sqrt(2)< 11 |。

創建這個實現之後,我已經瞭解到,爲了得到我想要的結果,我不一定非得生成一個確切的矩陣。另外,我學會了擁抱相移門!