Closed ajz34 closed 2 years ago
开发者好呀 :smiley:
在当前的程序中,ChemiQ::prepareInitialState 所使用的初始化 Hartree-Fock 波函数的方法是对于 n 个占据的电子,在对应的 (前) n 个量子比特中引入 X gate。这个做法的前提应该是对于每个 Fermion 产生算符,其 Pauli 表示的 X gate 或 Y gate 作用在 (前) n 个量子比特。这对于 Jordan-Wigner Transform 是正确的。
但若对于 Parity 或 Bravyi-Kiteav Transform,譬如对于 LiH/STO-3G (基组数 6,需 12 个量子比特),对前 4 个占据电子,构造 Hartree-Fock 初态时应该只需要在第 0, 2 个量子比特上作用 X gate。我想这样做可以保证若对 UCC 拟设,参数使用零初猜时,能够复现 Hartree-Fock 能量。
这个问题应该不是 bug,因为大概在 UCC 的变分下还是能给出正确的结果;只是在零初猜时,有可能因为偏离 Hartree-Fock 态较远而增加迭代优化次数。所以就 label 了 enhancement 哈。
你这个问题在于mapping时,其它软件只对Hamiltonian和ansatz做了mapping,而不初态做,这是不对的,所以在我们的软件中,对初态同样做了mapping,可得到正确的初态
开发者好呀 :smiley:
新功能的预期行为是什么?
在当前的程序中,ChemiQ::prepareInitialState 所使用的初始化 Hartree-Fock 波函数的方法是对于 n 个占据的电子,在对应的 (前) n 个量子比特中引入 X gate。这个做法的前提应该是对于每个 Fermion 产生算符,其 Pauli 表示的 X gate 或 Y gate 作用在 (前) n 个量子比特。这对于 Jordan-Wigner Transform 是正确的。
但若对于 Parity 或 Bravyi-Kiteav Transform,譬如对于 LiH/STO-3G (基组数 6,需 12 个量子比特),对前 4 个占据电子,构造 Hartree-Fock 初态时应该只需要在第 0, 2 个量子比特上作用 X gate。我想这样做可以保证若对 UCC 拟设,参数使用零初猜时,能够复现 Hartree-Fock 能量。
这个问题应该不是 bug,因为大概在 UCC 的变分下还是能给出正确的结果;只是在零初猜时,有可能因为偏离 Hartree-Fock 态较远而增加迭代优化次数。所以就 label 了 enhancement 哈。