问题标签 [quantum-computing]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
quantum-computing - 在 Q# 中循环遍历数组
如何循环遍历数组的元素并在 Q# 语言中通过索引访问它们,因为 C++ 中的常规循环在这里不起作用。
quantum-computing - S 门对 3 个量子位的组合(可能是纠缠)状态的一个量子位的影响
假设我有一个 3 个量子位的寄存器(qs)(前 2 个仅用于控制,最后一个是输入)。前两个控制量子位处于|+>
状态,第三个输入的状态未知。顺其自然a|0> + b|1>
。
现在我应用 CCNOT(qs[0],qs[1],qs[2]) 使它们的组合状态变为0.5(a,b,a,b,a,b,b,a)
转置矩阵形式 [请纠正,如果我在这里错了]。现在我将 S-gate 应用于转换的第三个量子位|1> -> i|1>
。
我现在无法猜测“qs”组合状态的状态。
我的想法:
- 一种逻辑是将每个状态乘以“i”,如果它具有以下形式
|XY1>
,则组合状态变为0.5(a,ib,a,ib,a,ib,b,ia) [Transposed]
- 另一个逻辑是找到的张量积,
(I x I x S)
因为我没有改变前 2 个量子位。执行此操作会产生不同的结果,即0.5(a,b,a,b,ia,ib,ib,ia) [Transposed]
[再次,如果我错了,请纠正我]。
通过 S 门(如果有)后哪个是正确的输出?
quantum-computing - 量子 V 门 1/sqrt(5) ( I + 2iZ)
根据定义,门 1/sqrt(5) (I + 2iZ) 应该作用于量子位a|0> + b|1>
以将其转换为,1/sqrt(5) ((1+2i)a|0> + (1-2i)b|1>)
但每个 RUS 步骤的转换执行以下操作 - 辅助首先处于 |+> 状态
- 起始形式:
1/sqrt(2) (a,b,a,b,a,b,a,b)
- CCNOT(辅助,输入):
1/sqrt(2) (a,b,a,b,a,b,b,a)
- S(输入):
1/sqrt(2) (a,ib,a,ib,a,ib,b,ia)
- CCNOT(辅助,输入):
1/sqrt(2) (a,ib,a,ib,a,ib,ia,b)
- Z(输入):
1/sqrt(2) (a,-ib,a,-ib,a,-ib,ia,-b)
现在,在 PauliX 基础上测量 ancillas 等效于将 H() 应用于状态后的 PauliZ 测量。现在我有两个困惑,我应该申请H x H x I
还是H x H x H
合并状态。同样,当两个测量值都为零时,这些转换都不等同于第一段中定义的 V 门。我哪里做错了?
参考:https ://github.com/microsoft/Quantum/blob/master/samples/diagnostics/unit-testing/RepeatUntilSuccessCircuits.qs (第一个示例代码)
quantum-computing - 如何通过 Q# 中的 Oracle 对象传递量子位寄存器
假设我使用 ReflectionStart() 函数创建了一个 ReflectionOracle 对象,该函数反映了 |00...00> 轴。但是我如何通过这个预言机传递我的量子比特寄存器?由于这个 Oracle 是一个对象,我不能将它用作函数。是否有类似于 UseOracle(reflectionoracle,register) 的标准库工具?
visual-studio-2015 - 在 Q# Quantum Dev kit 中出现错误“已发布的 qubits 未处于零状态”
当运行以下简单的量子程序以将 Hadamard 门应用于单个量子位时:
我收到以下错误:
Microsoft.Quantum.Simulation.Simulators.Exceptions.ReleasedQubitsAreNotInZeroState:“释放的量子位不处于零状态。”
我正在使用Microsoft 的教程,其中没有提及使此类程序正常工作所需的任何其他内容。
我很感激 Q# 仍处于发布模式,但如果有人为此找到解决方案,那就太好了。
quantum-computing - Microsoft Q# 输出到 WPF 或 Windows 窗体
可以将 Q# 类与 Windows 窗体或 WPF 接口吗?Microsoft 在其 Quantum 开发工具包中提供的示例似乎仅与控制台交互。
.net - 尝试使用 Q# 设置元组时出现错误“设置语句必须具有变量或数组元素目标”
我正在使用 Q# 和量子开发套件。
我已经声明了这个方法
我尝试使用mutable
变量,然后set
保存调用此方法的结果,如下所示:
但这样做我得到这个编译时错误:
一个 set 语句必须有一个变量或数组元素目标
如果我改用let
它,它工作正常
谁能告诉我为什么我不能以这种方式使用mutable
+set
来保存(Result,Result)
我的方法的元组类型结果?
提前谢谢了。
quantum-computing - Q#如何在不破坏量子位状态的情况下读取它?
第一个 Q# 代码示例提供了一个方法“Set”,其编写如下(链接):
此方法将量子位设置为所需值。为此,测量量子比特值,如果该值与预期不同,则“交换”量子比特状态。
但是在量子物理学中,你不能在不破坏粒子的情况下测量它。这是《量子计算与量子信息》一书的引述:
...测量改变了量子比特的状态,将其从 |0> 和 |1> 的叠加折叠到与测量结果一致的特定状态。例如,如果 |+> 的测量结果为 0,那么量子比特的测量后状态将为 |0>。
但是使用 Q#,您可以测量一个量子比特并继续使用它。
为什么 Q# 语言可以让我们实现现实中不可能的操作?
预先感谢您的回答。