首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在QCL中实现两个量子比特的“受控旋转”?

如何在QCL中实现两个量子比特的“受控旋转”?
EN

Stack Overflow用户
提问于 2013-07-30 10:09:41
回答 1查看 164关注 0票数 0

我正在尝试用QCL (量子计算机语言)创建一个程序,它可以随机生成6种状态中的1种(即掷模程序)。在实现此功能时,我发现自己需要编写如下函数:

代码语言:javascript
复制
operator CondRot(qureg r, qureg c) {
    qureg newReg = r & c;
    complex half;

    half = 1/sqrt(2);
    Matrix4x4(1, 0, 0, 0,           // <00|
              0, 1, 0, 0,           // <01|
              0, 0, half, -half,    // <10|
              0, 0, half, half,     // <11|
              newReg);
}

我感到失望的是,我发现自己需要显式地声明一个么正矩阵才能实现我的目标。我已经认识到,使用Hadamard矩阵和受控V矩阵,我应该能够生成任何我想要的么正矩阵。然而,如何做到这一点并不是一目了然的。你们中有谁知道我如何在不显式说明矩阵的情况下重写这个operator

EN

回答 1

Stack Overflow用户

发布于 2013-07-31 04:59:28

经过深思熟虑后,我意识到我可以用复系数实现我想要的东西。下面是我对CondRot的新实现

代码语言:javascript
复制
operator CondRot(qureg r, qureg c) {
    qureg joined = r & c;
    H(r);
    V(pi / 2, joined);
    H(r);
}

请注意,结果将显示为复数矩阵:

代码语言:javascript
复制
[2   0   0   0
 0   2   0   0
 0   0   1+i 1-i
 0   0   1-i 1+i] * 1/2

虽然这个矩阵包含复数值,但它的正方形是C-Not门。此外,它对<10|或<11|进行运算,得到1/sqrt(2)<10| + 1/sqrt(2)<11|。

在创建这个实现之后,我已经认识到,我不一定要生成一个精确的矩阵才能得到我想要的结果。此外,我还学会了拥抱相移门!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17937220

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档