量子程式設計(Q )(一)

2021-08-13 11:21:01 字數 1474 閱讀 8991

11號微軟宣布發布量子程式語言——q#,還有其配套的模擬器和開發套件,可以在本地或者雲端進行量子程式設計和模擬執行。

以上兩個選項任選其一即可。

namespace quantum.bell}}

operation belltest(count: int, initial: result) : (int, int)

}set(zero, qubits[0]);

}return (count - numones, numones);}}

}

可以看出語法和c#很像,在乙個namespace中,operation就像c#的方法或者c++的函式一樣,是q#程式執行的基本單位。open就像c#的using或c++的#include一樣引用一些庫。

operation set (desired: result, q1: qubit) : ()

如上**中,該operation包含兩個輸入,desired型別為result,q1型別是qubit(quantum bit,量子位元),冒號後面是operation的返回值,為空,就像c#或c++的void。在operation belltest(count: int, initial: result) : (int, int)中,返回值就是(int, int)的元組。**的作用是測量量子位元中0的個數和1的個數,在 set() 中使用泡利-x門初始化。量子位元位有限,所以用過後需要**。這裡語法類似c#中支援idisposable介面的類,可以通過using語法確保物件在作用域之外自動**,所以我猜測使用using分配量子位元位後也可以自動**。

開啟 driver.cs,新增如下**:

static

void main(string args)

; foreach(result initial in initials)

, 0s = , 1s = ");}}

}

這裡主要例項化模擬器quantumsimulator()。operation可以直接像類一樣呼叫run方法,這是乙個非同步方法,使用result屬性獲取結果。run方法包含三個引數,第乙個是例項化的模擬器物件,後面的引數是operation需要的引數。結果如下:

init:zero, 0s = 1000, 1s = 0

init:one , 0s = 0 , 1s = 1000

如果set中使用h門(阿達馬門(hadamard gate)),則會得到像下面這樣的結果:

init:zero 0s=484 1s=516

init:one 0s=522 1s=478

根據官方文件說法,量子模擬器使用openmp來進行線性運算,缺省會用到所有執行緒。而且量子位元位極為消耗記憶體,32bit需要32g,40bit則需要16t。就以上程式的表現,模擬器要比預想的要流暢許多。

Q 入門理論 量子位元狀態向量

量子位元,是量子領域的單位。常規資訊理論的基本單位是位元bit,8個就是乙個位元組。量子位元qubit,也就是位元在量子領域的對應物。位元可以表示的狀態是0和1 qubit也可以表示0和1 當然和位元的0 1不一樣,是乙個向量 還可以表示0和1的疊加。qubit的狀態向量是乙個二維列向量,裡面兩個數...

《ACM程式設計》 Q題

題目描述 給定n個大數,求和,但對輸出格式有要求。1.以 開頭 2.保留到小數點後兩位 3.開頭可以是0 4.最終輸出格式是從後往前數每三個加乙個標點 題目分析 首先去掉其他符號後做大數加法。本題主要是在於細節的處理,尤其是 逗號的處理即可,注意最開始的多出來的最多有4位,得處理多出來的位數,加幾個...

量子程式設計法 簡介和導引

量子程式設計法 又稱為 鏈式程式設計法 是本人研究出的一種程式設計模式。其基本原理是將 碎片化及一致性處理,用excel進行 片段的儲存和管理,並生成最終的源 可用於任何程式語言的程式開發,具有簡單 自然 面向文件和跨程式語言的特點。量子程式設計法 001 一種新的程式設計模式 量子程式設計法 00...