量子计算类型库
项目描述
dann5.ocean 版本 2 (d5o2)
该项目旨在简化量子计算模型的编程,并演示更快开发交互式示例的方法,这将帮助您学习使用dann5 d5o 库在量子计算机上制定和解决问题量子编程类型和操作。d5o 库提供了将操作分配转换为 QUBO 的方法,然后可以在各种量子求解器上执行,例如使用 IBM Qiskit 的模拟量子门计算机,或使用 DWave Ocean 的量子退火器或混合计算机,或使用 Azure Quantum 的量子模拟器。Dann5 d5o 库提供了在 Python 中指定未定义和已定义变量的编程类型的方法,如 q-bit、q-boolean、q-binary、q-whole、q-integer、量子非负有理数和 q-有理数。然后可以通过应用适当的操作表达式来描述需要解决的问题,将指定的量子变量链接到量子逻辑分配中。在某种程度上 dann5 d5o 库是 D-Wave Ocean 工具堆栈的扩展,
Dann5 项目和 d5o 框架的目标是为 QAC 开发人员提供编程结构,例如:
- 标准类型:
- Qbit † – 量子位,其中
Qbit x ϵ { 0, 1, S(叠加) }
- Qbool † – 量子布尔值,其中
Qbool x ϵ { T(rue), F(alse), S(uperposition) }
- Qbin † – 量子二进制,作为 Qbit 的数组
Qbin x ≡ Qbit[ xi; 其中 xi ϵ Qbit & 0 <= i <= n ]
- Qwhole – 量子整数(非负整数),其中
Qwhole x ∈ { n | n ≥ 0 } { | n = U(nknown) if ni = S | ni ϵ Qbit & ni ϵ n} }
- Qint † – 量子整数,其中
Qint x ∈ Qwhole U -Qwhole }
- Qnnr †† – 量子非负有理数,其中
Qnnr x ∈ { r | r ∈ R(ational) & n≥0 } { | r = U(nknown) if ri = S | ri ϵ Qbit & ri ϵ r} }
- Qrat †† – 量子有理数,其中
Qreal x ∈ Qnnr U -Qnnr }
- Qbit † – 量子位,其中
- 定义:
-
量子变量示例
Qbit x(“x”) ⇛ 用处于 S(upperpostion) 状态的位初始化一个 Q 位变量
Qbool y(“z”, d5o.Qbool.false()) ⇛ 用位 z = 0 初始化定义的 Q 二进制变量
Qbin a(3, “a”) ⇛ 初始化一个未定义的 Q 二进制变量,其中 3 个量子位处于 S(upperpostion) 状态
Qwhole b(“b”, 6) ⇛ 用值 6 初始化定义的 Q 整体变量 b,即包含 3 个具有确定值的 qbit:b0 = 0、b1 = 1 和 b2 = 1
Qint i(3, “i”, -1) ⇛ 用值 -1 初始化定义的 Q 整个变量 i,即包含 3 个具有确定值的 qbits:i0 = 1 i1 = 1 和 i2 = 1
Qnnr c(“c”, 2.5) ⇛ 用二进制值 10.1 初始化定义的 Q 非负有理变量 c,即 c-1 = 1, c0 = 0 和 c1 = 1 ††
Qrat a(1.2, “d”) ⇛ 用 3 个量子比特初始化一个 Q 有理变量 d,作为未知有理数,即 d-2 = S, d-1 = S 和 d0 = S ††
-
Qassignment - 量子分配定义了预定义变量之间的操作交互
eX = Qwhole(“X”, 15).assign(a * a) ⇛ 对于 Q 变量 a(如上定义)将具有预期结果 X -= 15 的乘法表达式分配给 eX Q 量子分配
- QUBO 集成到 D-Wave Ocean、Azure Quantum 或 Qiskit:
- qubo() – 返回分配的 QUBO 二元二次模型 (BQM)
eX.qubo() ⇛ 用于 eX Q 赋值(上面定义)返回一个 QUBO 字典对象,用于在精确或 QAC 求解器上执行
- add() – 接收求解器返回的样本字典
eX.add(lowSamples) ⇛ 将从求解器返回的结果样本设置为 eX Q 方程,该方程已用于创建 QUBO BQM
- 解决方案() - 根据添加的样本返回分配解决方案的字符串表示形式
eX.solutions() ⇛ 用于 eX Q 赋值(上面定义),预期结果 15 和 b 设置为 6 返回未定义 Q 变量 a 的解决方案
- reset() – 将分配重置为其初始状态,即没有任何解决方案
eX.reset() ⇛ 用于 eX Q 赋值(如上定义)设置为其初始状态
- qubo() – 返回分配的 QUBO 二元二次模型 (BQM)
- QUBO 集成到 D-Wave Ocean、Azure Quantum 或 Qiskit:
-
Qcondition †† - 量子条件语句
Qcondition cA(a > b) ⇛ 创建一个 Q 条件 cA,比较(上面定义的)Q 变量 a 和 b
cA << eX ⇛ 在条件 cA 下添加(上面定义的)要计算的 eX Q 方程,即 a 大于 b
-
Qroutine †† - 量子例程
Qroutine program(“my Q program”) ⇛ 创建一个 Q 例程程序,允许关联编程 Q 语句
程序 << cA << eB ⇛ 将(上面定义的)cA Q 条件和预定义的 eB Q 方程添加到我的 Q 程序中
-
Qfunction †† - 量子函数例程
Qfunction myF(“my F”, a) ⇛ 创建一个 Q 函数例程 my F,其中 Q 变量 a 作为返回变量
myF << cA << a + b ⇛ 将(上面定义的)cA Q 条件和 a 和 b 的加法 Q 方程添加到 myF
eB *= myF ⇛ 更新 eB Q 方程,将其现有表达式与 myF Q 函数的返回值相乘
-
Qpow ††, Qmod ††, Qgcd †† - 专门的量子函数
Qpow a_x3(a, 3) ⇛ 创建一个以 Q 变量 a 为底数和指数 3 的幂 Q 函数例程 a_x3
Qmod b_m3(b, 3) ⇛ 创建一个模 Q 函数例程 b_m3,其中 Q 变量 b 作为被除数和除数 3
Qgcd a_b(a, b) ⇛ 为 Q 变量 a 和 b 创建一个最大公约数 Q 函数例程 a_b
-
- 标准操作:
-
赋值 ——量子变量或表达式到 Q 方程
-
一元运算符:〜(反转)
-
二元运算符:+、*、-、/
-
逻辑运算符:&、|、^、nand、nor
-
比较运算符 † : ==, !=, >, >=, <, <=
注意:†开发中的功能,††计划中的功能。
-
有关如何使用 d5o 功能的更多信息,请参阅示例。
安装和使用
安装先决条件
安装和使用 Dann5 d5o 预编译库
- 安装Python 3.9.9 (64-bit),用于测试发布的功能
- 将 D-Wave Ocean Tools 安装到 python 环境中;按照安装海洋工具
- 将pybind11安装到相同的python环境中;按照安装库
除上述先决条件外,编译Dann5 d5o源代码
安装
Dann5 d5o 库正在作为主要操作系统的 Windows x64 上积极开发。未来将发布 Mac OS X/Linux 版本和软件包安装。
将此存储库中的 Windows x64 版本安装到 python 项目或环境中
pip install --upgrade dann5
#####手动安装
- 从示例文件夹下载带有 d5o.cp38-win_amd64.pyd 库的 dann5文件夹
- 将 dann5 设为
-
你的 python 项目文件夹;或者
-
您的 python 环境的 site-packages 文件夹,例如对于 anaconda 发行版,在 windows 上,路径应该是:
C:\Users<user_name>\AppData\Local\Continuum\anaconda3\envs<env_name>\Lib\site-packages
- 将 d5o.cp38-win_amd64.pyd 复制到 Dann5 子文件夹中
#####从源代码安装包
- 只需克隆或下载 dann5 存储库 - 如果使用 MS Visual Studio dann5.ocean.sln,请确保 dann5 和 Eigen 是同一文件夹中的子文件夹。
- 构建 - d5o.cp38-win_amd64.pyd 适用于 windows 和 python x64 - d5o.cp38-win_amd32.pyd 适用于 windows 和 python x32 - d5o.so 适用于 Mac OS X 或 Linux
- 将 d5o 库部署到您的 python 项目或环境中的 dann5 文件夹中,如 Windows x64 版本安装中所述
利用
按照上述说明安装 d5o 库后,在 python 源代码中使用已发布的功能:
将 dann5.d5o2 导入为 d5o
a = Qwhole(4, "a")
b = Qwhole(3, "b")
A = Qwhole("A", 15))
eA = A.assign(a + b)
打印(eA.toString())
打印(eA.toString(真))
打印(eA.qubo())
或者使用 Jupyter Notebook示例来查看 Dann5 d50 版本 2 的功能。
错误、问题和贡献
欢迎对该项目的贡献。
注意:如果您有问题,请将代码示例发送给我。
项目详情
下载文件
下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。
源分布
内置分布
dann5-2.1.0.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 0227833a8469494631ed12bc01a090fae39d961154506ae74ad3a22213f97fdb |
|
MD5 | f7b687a78590f06f7c5a7b91f977acb6 |
|
布莱克2-256 | b488b92bd1a27461e21c77e684181ba15f9c74ddb2a2d9845adb61680bca8c5f |
dann5-2.1.0 -py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 414bf84fd9971ea644029bf94649ebeb5a9a08ff4ff212bdd7f61e6d462b740f |
|
MD5 | 6f762d65c5ae1b9e8e9eb9d982823e34 |
|
布莱克2-256 | d7cd6e7c84ec9a2ce5eba6b995affc5b72b6c1d054a415e0244ad0e5e944f674 |