函子應用程式
函式是可讓您存取可呼叫之特定特製化實作的處理站。 Q# 目前支援兩個函式; Adjoint
和 Controlled
,這兩者都可以套用至提供必要特製化的作業。
Controlled
和 Adjoint
函子會通勤;如果 ApplyUnitary
是同時支援這兩個函子的作業,則 Controlled Adjoint ApplyUnitary
和 Adjoint Controlled ApplyUnitary
之間沒有任何差異。
兩者都有相同的型別,並在叫用時執行為特製化定義的實作controlled adjoint
。
相鄰運算函式
如果 ApplyUnitary
作業定義了量子狀態的單一轉換 U,則 Adjoint ApplyUnitary
會存取 U† 實作。 Adjoint
函式是它自己的反向函式,因為 (U†) † = U 依定義。 例如,Adjoint Adjoint ApplyUnitary
與 ApplyUnitary
相同。
運算式 Adjoint ApplyUnitary
是與 ApplyUnitary
相同類型的作業;其具有相同的引數和傳回型別,而且支援相同的函子。 如同任何作業,可以使用適當類型的引數來加以叫用。 下列表達式會將 的相鄰特製化套ApplyUnitary
用至 自變數arg
:
Adjoint ApplyUnitary(arg)
受控制的函式
針對定義量子狀態單一轉換 U 的 ApplyUnitary
作業,Controlled ApplyUnitary
會存取在 |1⟩ 狀態中,控制項量子位元陣列中所有量子位元上套用 U 條件的實作。
運算式 Controlled ApplyUnitary
是一個作業,其傳回類型和作業特性與 ApplyUnitary
相同,這表示其支援相同的函子。
其會採用 (Qubit[], <TIn>)
類型的引數,其中 <TIn>
應以 ApplyUnitary
的引數類型取代,並將單一資料庫元組等價納入考量。
作業 | 引數類型 | 受控引數類型 |
---|---|---|
X | Qubit |
(Qubit[], Qubit) |
SWAP | (Qubit, Qubit) |
(Qubit[], (Qubit, Qubit)) |
具體而言,如果 cs
包含量子位元的陣列,q1
和 q2
為兩個量子位元,而且 SWAP
作業如同這裡所定義,則下列運算式會交換 q1
和 q2
的狀態 (如果 cs
中的所有量子位元都處於 |1⟩ 狀態:
Controlled SWAP(cs, (q1, q2))
注意
根據處於 |1 以外狀態的控件量子位,有條件地套用作業⟩可以藉由在叫用之前將適當的相鄰轉換套用至控件量子位,並在之後套用反轉來達成。 例如,您可以在之前和之後套用 X
作業,以在所有控制項量子位元中,以 |0⟩ 狀態來調節轉換。 這可以使用結合便利地表示。 不過,這類建構的詳細資訊在未來可能會對更精簡的語法提供額外的支援。
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應