函子應用程式

函式是可讓您存取可呼叫之特定特製化實作的處理站。 Q# 目前支援兩個函式; AdjointControlled,這兩者都可以套用至提供必要特製化的作業。

ControlledAdjoint 函子會通勤;如果 ApplyUnitary 是同時支援這兩個函子的作業,則 Controlled Adjoint ApplyUnitaryAdjoint Controlled ApplyUnitary 之間沒有任何差異。 兩者都有相同的型別,並在叫用時執行為特製化定義的實作controlled adjoint

相鄰運算函式

如果 ApplyUnitary 作業定義了量子狀態的單一轉換 U,則 Adjoint ApplyUnitary 會存取 U† 實作。 Adjoint函式是它自己的反向函式,因為 (U†) † = U 依定義。 例如,Adjoint Adjoint ApplyUnitaryApplyUnitary 相同。

運算式 Adjoint ApplyUnitary 是與 ApplyUnitary 相同類型的作業;其具有相同的引數和傳回型別,而且支援相同的函子。 如同任何作業,可以使用適當類型的引數來加以叫用。 下列表達式會將 的相鄰特製化套ApplyUnitary用至 自變數arg

Adjoint ApplyUnitary(arg) 

受控制的函式

針對定義量子狀態單一轉換 UApplyUnitary 作業,Controlled ApplyUnitary 會存取在 |1⟩ 狀態中,控制項量子位元陣列中所有量子位元上套用 U 條件的實作。

運算式 Controlled ApplyUnitary 是一個作業,其傳回類型和作業特性ApplyUnitary 相同,這表示其支援相同的函子。 其會採用 (Qubit[], <TIn>) 類型的引數,其中 <TIn> 應以 ApplyUnitary 的引數類型取代,並將單一資料庫元組等價納入考量。

作業 引數類型 受控引數類型
X Qubit (Qubit[], Qubit)
SWAP (Qubit, Qubit) (Qubit[], (Qubit, Qubit))

具體而言,如果 cs 包含量子位元的陣列,q1q2 為兩個量子位元,而且 SWAP 作業如同這裡所定義,則下列運算式會交換 q1q2 的狀態 (如果 cs 中的所有量子位元都處於 |1⟩ 狀態:

Controlled SWAP(cs, (q1, q2))

注意

根據處於 |1 以外狀態的控件量子位,有條件地套用作業⟩可以藉由在叫用之前將適當的相鄰轉換套用至控件量子位,並在之後套用反轉來達成。 例如,您可以在之前和之後套用 X 作業,以在所有控制項量子位元中,以 |0⟩ 狀態來調節轉換。 這可以使用結合便利地表示。 不過,這類建構的詳細資訊在未來可能會對更精簡的語法提供額外的支援。