上海网站建设好处,黄骅贴吧新闻,腾讯公众号小程序,本地 安装 WordPress主题前言
上篇讲的subQUBO属于方法论#xff0c;这次讲个通过编码量子比特的方式#xff0c;同样的约束条件#xff0c;不同的编码#xff0c;所需的量子比特数是不同的。有的编码方式#xff0c;很节省量子比特。比如#xff0c;这次要讲的Domain wall encoding。 一、Doma…前言
上篇讲的subQUBO属于方法论这次讲个通过编码量子比特的方式同样的约束条件不同的编码所需的量子比特数是不同的。有的编码方式很节省量子比特。比如这次要讲的Domain wall encoding。 一、Domain wall encoding是什么
1.1 直觉上的理解
Domain wall的概念来自于物理学具体的由来我还没有考古等我有时间了再补充。
它主要是可以用N-1位量子比特来代表N位的One-hot编码。它的概念解释中用的变量是Ising machine的spin变量也就是变量取值是1或-1。
下面资料的图主要来自以下文章
https://qiita.com/sotobenjamin0307/items/2cd329923fb3f0c03692Domain-Wall / Unary Encoding in QUBO for Permutation Problems
https://ieeexplore.ieee.org/document/9951263大家对比一下04的one-hot编码和Domain wall encoding的区别。
one hot编码有几个数值就需要几个量子比特。 Domain wall encodingN个数值的话就只需要N-1个spin。
为什么4个量子比特可以代表5个数值呢
因为它隐藏了首尾两个默认值所以就是它本来用了N2个spin所有会有N个边就是下图中的竖线段的位置。 就想象成10个电线杆的话需要8段线。 1.2 Domain wall encoding的数学定义
one hot编码的约束项等价于下面的Domain wall encoding的约束项。 spin串里从-1变为1的位置下标数值i就是该编码的代表的数值。满足该条件的位置仅存在一个 下面的Domain wall value就是上面约束项的最小值。可以代入验算一下。
二、Domain wall encoding的python实现
1. 安装amplify库
pip install -U amplify2.创建Domain wall约束
from amplify import domain_wallgen VariableGenerator()
q gen.array(Binary, 4)
dw domain_wall(q)也可以换成Binary变量具体约束项参考以下文档。
https://amplify.fixstars.com/en/docs/amplify/v1/constraint.html总结
Domain wall encoding的概念并不难理解但是网上资料太少了搞懂也花了点时间不过终于搞懂了希望能帮到大家。还有更高级的Domain wall encoding在某些问题上可以缩减到正常one hot编码的几十分之一。以后有机会再介绍。