C_Meng PSNA

Never wait for the storm to pass, just dance in the rain.

0%

向量表示

量子计算的基本单位是量子比特,量子比特用向量 $|\psi\rangle$ (狄拉克Dirac符号)来描述。

基态: $|g\rangle=|1\rangle=\left[ \begin{matrix} 0 \\ 1 \end{matrix} \right]$

激发态: $∣e\rangle=|0\rangle=\left[ \begin{matrix} 1 \\ 0 \end{matrix} \right]$

在量子理论中,描述量子态的向量称为态矢,态矢分为左矢和右矢。相同描述对象的左矢和右矢互为转置共轭。

pyqpanda中,dagger()函数可用于对逻辑门进行转置共轭操作

右失(ket): $|\psi\rangle=\left[ \begin{matrix} c_1 & c_2 & \cdots & c_n \end{matrix} \right]^T=\left[ \begin{matrix} c_1 \\ c_2 \\ \vdots \\ c_n \end{matrix} \right]$

左失(bra): $\langle\psi|=\left[ \begin{matrix} c_1^* & c_2^* & \cdots & c_n^* \end{matrix} \right]$

并不是任意的二维向量都能用来描述一个qubit的状态,描述量子态的向量的模长必须为1,所谓向量的模长定义如下:

​ $M(\alpha) = \sqrt{|a_{1}|^{2} + |a_{2}|^{2} + … + |a_{n}|^{2}}$

量子比特各维度的平方为量子处于该状态的概率。

向量计算

对于一组向量 $|u_1\rangle, |u_2\rangle, \cdots, |u_n\rangle$ 张成(spanning)的 $n$ 维空间 $C^n$ ,空间中的任意向量可以表示为: $|v\rangle=\sum_i x_i u_i$ ,这个集合 ${|u_1\rangle, |u_2\rangle, \cdots, |u_n\rangle}$ 就称为 $C^n$ 的基(basis)。

内积

在 $C^n$ 上的内积表示为(注意 $a_i^*$ 为 $a_i$ 的共轭!):

$\langle \alpha | \beta \rangle = (|\alpha\rangle, |\beta\rangle) = ((a_1, \cdots ,a_n),(b_1, \cdots, b_n)) = \sum_{i=1}^{n}a_i^*b_i$

可以看做 $\langle \alpha|$ 共轭转置后得到的 $1 \times n$ 的矩阵与 $| \beta \rangle$ 构成的 $n \times 1$ 的矩阵的积,内积的结果是一个值。

外积

外积 $| \alpha \rangle \langle \beta |$ 可以看做 $\langle \alpha|$ 的 $n \times 1$ 的矩阵与 $| \beta \rangle$ 共轭转置后构成的 $1 \times n$ 的矩阵的积,外积的结果是一个矩阵!

张量积

向量 $|\alpha\rangle$ 、 $|\beta\rangle$ 在 $C^n$ 、 $C^m$ 中的张量积为 $C^{n\times m}$ 中的向量: $|\alpha\rangle\otimes|\beta\rangle=|\alpha\rangle|\beta\rangle=|\alpha\beta\rangle$ ,计算方法为:

$\left[ \begin{matrix} a_1 \\ a_2 \end{matrix} \right]\times\left[ \begin{matrix} b_1 \\ b_2 \end{matrix} \right] = \left[ \begin{matrix} a_1 b_1 \\ a_1 b_2 \\ a_2 b_1 \\ a_2 b_2 \end{matrix} \right]$

常用算子(常见量子逻辑门)矩阵形式

单比特量子逻辑门

当单比特量子逻辑门作用于量子比特时,为门在前比特在后进行矩阵相乘,进而改变比特状态。

其中:

  • $I$ 门不改变比特状态
  • $Hadamard$ 门可以使量子比特进入混沌态,即激发与否的概率均为一半
  • $Pauli-X$ 会使量子状态翻转
  • 量子的状态改变通常通过旋转实现

多比特量子逻辑门

当多比特量子逻辑门作用于多个量子比特时,为门在前,多个量子比特的张量积在后,进行矩阵相乘。

量子线路图

基本约定

在关系图中,每条实线都描述一个量子比特,更常见地是描述一个量子比特寄存器。按照约定,最上面那根线是量子比特寄存器0,其余的按顺序标记。根据描述,上面的示例线路作用于两个量子比特(或等效为作用于两个寄存器,每个寄存器由一个量子比特组成)。作用于一个或多个量子比特寄存器的门用一个框表示。例如,符号

量子门按时间顺序排列,最左侧的门是应用于量子比特的第一个门。 也就是说,如果你将线描述为包含量子态,那么这些线将按图中从左到右的顺序带着量子态通过每个门。 也就是说

是酉矩阵 $CBA$ 。矩阵乘法遵守相反的约定,即最先应用最右侧的矩阵。不过,在量子线路图中,最先应用的是最左侧的门。这种差异有时可能会导致混淆,因此有必要记下线性代数表示法和量子关系图之间的这一明显差异。

受控门

多量子比特量子线路图中内置的另一个构造是控制。量子单个受控门表示为 $\Lambda(G)$ ,其中单个量子比特的值控制 $G$ 的应用。要理解该受控门的操作,可查看下面的示例,它是一个乘积态输入 $\Lambda(G)(\alpha|0\rangle+\beta|1\rangle)|\psi\rangle=\alpha|0\rangle|\psi\rangle+\alpha|1\rangle G|\psi\rangle$ 。也就是说,当且仅当控制量子比特采用值时,该受控门才对包含 $\phi$ 的寄存器应用 $G$ 。通常,我们在线路图中将这种受控操作描述为

在这里,黑色圆圈表示门受控的量子位,垂直线表示当控制量子比特采用值1时应用的酉操作。对于 $G=X$ 和 $G=Z$ 的特殊情况,我们引入了以下表示法来描述门的受控版本(请注意,受控 $X$ 门是 $CNOT$ 门):

测量运算符

在线路图中直观呈现的剩余操作是测量。测量采用量子比特寄存器、对其进行测量,然后以经典信息的形式输出结果。测量操作由计量符号表示,它始终将输入看做是一个量子比特寄存器(表示为实线),将输出看做是经典信息(表示为双线)。具体来说,这种子线路如下所示:

References:
https://blog.csdn.net/si_ying/article/details/108303988
https://pyqpanda-toturial.readthedocs.io/
https://docs.microsoft.com/zh-cn/azure/quantum/concepts-circuits
https://www.cxyzjd.com/article/qq_43391414/118766778
https://swardsman.github.io/learning-q-sharp/

本文提炼自:https://zhuanlan.zhihu.com/p/35642367

冠词是置于名词前并限定名词的意义的虚词,分为定冠词和不定冠词,实际使用中,还会出现零冠词,共三种情况。

定冠词:THE

用于表示特指。

一般用法:

  1. 表示特指:特指某(些)人或某(些)物(包括用于上文提到过的人或物之前,以及说话双方都知道的人或物)。如:We have a cat and two dogs. The cat is black and the dogs are white. 我们养了一只猫和两只狗,猫是黑的,狗是白的。
  2. 表示独一无二:用在世界上“独一无二”的事物的名词前。如:The earth goes round the sun. 地球绕着太阳转。
  3. 用于最高级前:即用于形容词或副词的最高级前。如:Who picked the most apples? 谁摘的苹果最多?
  4. 用于序数词或方位词之前。如:He was the first man to think of it. 他是第一个想到这一点的人。
  5. 用于乐器名词前:表示相应乐器的演奏。如:Besides the violin, he plays the piano and the flute. 除了拉提琴,他还能弹钢琴和吹笛子。
  6. 表示人体部位:用于某些介词短语中指身体的某个部位。如:He patted me on the back. 他拍了拍我的背。
  7. 用于表示一家人:用于在姓氏的复数形式之前表示一家人或夫妇二人。如:The Smiths live in the apartment above ours. 史密斯一家住在我们楼上的一套住房里。
  8. 用于江河湖海等前:用于江河湖海、山脉群岛、海湾海峡等地理名词前。如:The Yellow River flows into the Yellow Sea. 黄河流人黄海。
  9. 用于某些含有普通名词的专有名词前:用于某些国名、组织机构、建筑物、报纸杂志、会议条约等含有普通名词与其他词构成的专有名词。如:We visited the Great Wall yesterday. 我们昨天去参观了长城。

其他用法:

  1. 用于整十的复数数词前:表示几十年代。如:This happened in the seventies. 这发生在七十年代。
  2. 用于比较级前:用于“the+比较级,the+比较级”结构中表示“越……就越……”。如:The sooner we operate now the safer. 越早动手术越安全。
  3. 用于表示类别:用于“the+某些形容词或过去分词”中表示一类人。如:Do you think the rich should pay more taxes to help the poor? 你认为富人是否应当多交点税来帮助穷人?
  4. 用于国籍名词前表总称:用于“the+某些国籍的形容词”中表示某国人的总称。如:The French are famous for their food. 法国人因法国菜而出名。
  5. 用于集合名词前表总称:用于“the + police / public等集合名词”中表示这类人的总称。如:The police are looking for the murderer. 警察正在寻找那个凶手。
  6. 用于修饰same, only, very等形容词:即用于“the same / only / very +名词”结构中。如:That’s the only reason. 那是唯一的理由。
  7. 用于单位名词前表标标准:即用于“单位词”(hour, day, month, year, dozen, gallon, ton, yard等)前表示标准,相当于汉语的“按”“论”“每”等。如:They let out cars by the day. 他们按天出租汽车。

但是,by weight(按重量)习惯上不用冠词。如:Bananas are usually sold by weight. 香蕉通常按重量卖。

不定冠词:A、AN

用于表示泛指。

一般用法

  1. 表类别:即指人或事物的类别。如:A teacher is a person who teaches. 教师就是教书的人。
  2. 表数量:即表示数量“一”。如:I’ll be able to finish it in a day or two. 在一两天内我会完成此事。
  3. 表同一性:即表示“同一”,说明事物的同一性质、特征、大小或程度等。如:This hat and that one are of a shape. 这顶帽子和那顶一样大。
  4. 表程度:用于most前表示“非常”“十分”。如:It’s a most boring book. 这是一本非常枯燥乏味的书。

其他用法

  1. 用于序数词前:用在序数词前表示“再一”“又一”。如:She thanked him a second time. 她再次向他道谢。
  2. 用于由动词转化来的名词前:表示一次、一番等义(通常与 have, take, make, give 等动词连用)。如:We’ve already had a try at it. 我们已经试过一下。
  3. 用于专有名词前:相当于a certain,意为“一个”“某个”。如:The house next door has been bought by a Mr Jones. 隔壁的 房子被一个叫琼斯的先生的人买下了。
  4. 用于抽象名词前:使之具体化,表示与该之相关的具体的人或事。如:He was a success in business. 他事业成功。

零冠词

用于表示泛指。

  1. 表泛指的不可数名词或复数名词前。如:Snow was failing. 正在下雪。
  2. 倒装的让步状语从句中:在as(虽然)引导让步状语从句前面的单数可数名词前不用冠词。如:Child as he was, he knew how to help others. 他虽是个孩子,但已知识如何帮助别人。
  3. 某些特殊词前:例如在man(人,人类), word(消息)的前面不用冠词。如:Man is a rational animal. 人是理性的动物。
  4. 又如动词 turn(变成),go(变成)后作表语的名词前通常用不用冠词。如:He was a teacher before he turned writer. 他在成为作家之前是教师。
  5. 独立主格结构中:在表示伴随或补充说明用用的独立主格结构中,名词前不用冠词。如:The teacher came in, book in hand. 老师走进教室,手里拿着书。
  6. “(a) kind [sort] of+名词”结构的“名词”前:该结构中的“名词”不管是单数还是复数,其前都通常用零冠词。如:This kind of book is very interesting. 这种书很有趣。
  7. 表抽象意义的单数名词前:当单数可数名词含义抽象化具有形容词意味时,通常用零冠词。如:I was fool enough to accept his offer. 我接受他的提议真是太傻了。

泡利算符类

泡利算符是一组三个2×2的幺正厄米复矩阵,又称酉矩阵。我们一般都以希腊字母 $\sigma$ 来表示。 在 QPanda 中我们称它们为X门,Y门,Z门。它们对应的矩阵形式如下。

X:
$\sigma_x = \left[\begin{matrix}
0 & 1 \\
1 & 0
\end{matrix}\right]$

Y:
$\sigma_y = \left[\begin{matrix}
0 & -i \\
i & 0
\end{matrix}\right]$

Z:
$\sigma_z = \left[\begin{matrix}
1 & 0 \\
0 & -1
\end{matrix}\right]$

每个抛离矩阵有两个特征值,+1和-1,其对应的归一化特征向量为:

$\psi_{x+}=\frac{1}{\sqrt{2}}\left[\begin{matrix}
1 \\
1
\end{matrix}\right]$

$\psi_{x-}=\frac{1}{\sqrt{2}}\left[\begin{matrix}
1 \\
-1
\end{matrix}\right]$

$\psi_{y+}=\frac{1}{\sqrt{2}}\left[\begin{matrix}
1 \\
i
\end{matrix}\right]$

$\psi_{y-}=\frac{1}{\sqrt{2}}\left[\begin{matrix}
1 \\
-i
\end{matrix}\right]$

$\psi_{z+}=\left[\begin{matrix}
1 \\
0
\end{matrix}\right]$

$\psi_{z-}=\left[\begin{matrix}
0 \\
1
\end{matrix}\right]$

泡利算符的运算规则

  1. 泡利算符与自身相乘得到是单位矩阵
  2. 泡利算符与单位矩阵相乘,无论是左乘还是右乘,其值不变
  3. 顺序相乘的两个泡利算符跟未参与计算的泡利算符是i倍的关系
  4. 逆序相乘的两个泡利算符跟未参与计算的泡利算符是−i倍的关系

接口介绍

1
2
3
4
5
6
7
8
9
10
11
12
13
14
from pyqpanda import *

if __name__=="__main__":
# 构造一个空的泡利算符类
p1 = PauliOperator()

# 2倍的"泡利Z0"张乘"泡利Z1"
p2 = PauliOperator("Z0 Z1", 2)

# 2倍的"泡利Z0"张乘"泡利Z1" + 3倍的"泡利X1"张乘"泡利Y2"
p3 = PauliOperator({"Z0 Z1": 2, "X1 Y2": 3})

# 构造一个单位矩阵,其系数为2,等价于p4 = PauliOperator("", 2)
p4 = PauliOperator(2)

其中PauliOperator p2(“Z0 Z1”, 2)表示的是 $2\sigma_{0}^{z} \otimes \sigma_{1}^{z}$ ,这里的 $\otimes$ 表示克罗内克积(Kronecker product),也称作张量积、张乘。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
from pyqpanda import *

if __name__=="__main__":

a = PauliOperator("Z0 Z1", 2)
b = PauliOperator("X5 Y6", 3)

plus = a + b
minus = a - b
muliply = a * b

print("a + b = ", plus)
print("a - b = ", minus)
print("a * b = ", muliply)

print("Index : ", muliply.getMaxIndex())

index_map = {}
remap_pauli = muliply.remapQubitIndex(index_map)

print("remap_pauli : ", remap_pauli)
print("Index : ", remap_pauli.getMaxIndex())

reference:
https://pyqpanda-toturial.readthedocs.io/zh/latest/PauliOperator.html
https://www.bilibili.com/video/BV124411b7bd?p=3

最优化问题分为连续性的和离散性的。其中离散性的最优化问题又被称为组合最优化问题

数学表达

$$\begin{split}
\min& f(x) &\leftarrow 目标函数 \\
s.t.& g(x) \geq 0 &\leftarrow 约束条件 \\
& x \in D &\leftarrow 定义域
\end{split}$$

常用求解方法

  1. 各种规划方法(线性,非线性)
  2. 蚁群算法
  3. 遗传算法
  4. 退火算法
  5. 粒子群算法
  6. 神经网络
  7. 搜索算法
  8. 拉格朗日松弛算法
  9. 近似算法

问题简介

SAT问题(Boolean Satisfiability Problem)是判断一个以合取范式形式给出的逻辑命题公式是否存在一个真值指派,使得公式为真。
SAT 可满足问题是第一个被证明的NP问题(就是能在多项式时间验证答案正确与否的问题)

解决方法:

  1. 完备方法:枚举法、贪婪算法、局部搜索法等
  2. 不完备方法:各类启发式算法,如演化算法、退火算法、蚁群算法等

P问题:在多项式时间内能够求解,是一类可以通过确定性图灵机在多项式时间(Polynomial time)内解决的问题集合。

NP问题:在多项式时间里能够验证是否有解,可以通过非确定性图灵机(Non-deterministic Turing Machine)在多项式时间(Polynomial time)内解决的决策问题集合。

NOTE:P是NP的子集,也就是说任何可以被图灵机在多项式时间内解决的问题都可以被非确定性的图灵机解决。

如果一个决策问题 L 是 NP-complete的,那么L具备以下两个性质:

  1. L 是 NP(给定一个解决NP-complete的方案(solution,感兴趣的读者可以思考一下solution 和 answer的区别),可以很快验证是否可行,但不存在已知高效的方案 。)
  2. NP里的任何问题可以在多项式时间内转为 L。

而NP-hard只需要具备NP-complete的第二个性质,因此NP-complete是NP-hard的子集。

求解方法

研究中遇到的大部分问题都是NPC问题,选择的方法可以视问题的输入规模而定:

  1. 规模小:搜索法,利用搜索策略在指数时间内求解问题
  2. 规模大:随机算法,在多项式时间内“高概率”地精确求解问题;近似算法,也可以考虑在多项式时间内求得问题的一个近似解

reference:
https://www.cnblogs.com/sancyun/p/4250360.html
https://baike.baidu.com/item/布尔可满足性问题/4715567?fr=aladdin
https://blog.csdn.net/zhushiq1234/article/details/79484280
https://en.wikipedia.org/wiki/NP_(complexity)

金字塔原理:

自下而上的思考,自上而下的表达。

  1. 文章结构中任一层次上的思想必须是其下一层次思想的概括
  2. 每一层次的思想要归属于同一范畴
  3. 每一层次的思想要按逻辑顺序组织

表达的逻辑

框架的构架

在较高层次的主题之间尽量用归纳法进行论述,在低层次用演绎方式论述。

  • 演绎推理:背景(情境)—冲突—问题—解决方案
  • 归纳推理:找到一组具体共同思想的名词,识别并剔除该组思想中与其他思想不相称的观点

深入的过程

通过纵向的思想引出主题和子主题之前的纵向关系。

“思想”定义:向读者发出新信息并引发读者疑问的语句。

纵向的思想实质是“疑问/回答”形式,这样更能吸引读者注意力。

序言的结构

以“情境、冲突、疑问、回答”方式来开篇,情境和冲突是读者熟知的事实。通过明确读者最初关心的问题,让后续的内容能吸引读者注意力。

  • 标准式: 情境—冲突—解决方案
  • 开门见山: 解决方案—情境—冲突
  • 突出忧虑: 冲突—情境—解决方案
  • 突出信心: 疑问—情境—冲突—解决方案

思考的逻辑(内容的填充)

  1. 应用时间顺序、结构顺序、重要程度顺序来构建思考逻辑树
  2. 总结句避免使用“缺乏思想”的句子,要说明行动产生的结果或目标
  3. 找出各结论之间的共性,得出金字塔尖的结论

四种主要的逻辑顺序:

  • 演绎顺序:大前提、小前提、结论—按照演绎推理组织的思想
  • 时间顺序:第一、第二、第三—按因果关系组织的思想
  • 结构顺序:将整体分割为部分进行评论,划分后的各部分需要符合以下要求:MECE
    • 各部分之间相互独立(mutually exclusive)
    • 所有部分完全穷尽(collectively exhaustive)
  • 重要性顺序:最重要、次重要,等等—按类别组织思想

解决问题的逻辑

界定问题:

  • 界定问题的框架
  • 展开问题的各要素
  • 发掘读者的疑问
  • 回答疑问

结构化分析问题:

  • 设计诊断框架
  • 收集信息
  • 建立逻辑树(回答是否问题)
  • 寻找解决方案

经典:建立诊断框架和逻辑树的指导来分析和引导思维,不仅能提高解决问题的效率,而且还简化了把结果构建成金字塔的工作。无目的的收集资料,会造成60%的无用功!!!

设计诊断框架的方法:其本身呈现有行结构/根据因果关系分解构建/归类分组

Reference:
https://www.jianshu.com/p/bdbf71572911
https://book.douban.com/review/7121761/
https://zhuanlan.zhihu.com/p/78548168