PaddlePaddle / Quantum

Other
567 stars 176 forks source link

【PaddlePaddle Hackathon】81 时间演化电路的性能优化 #28

Closed yangguohao closed 2 years ago

yangguohao commented 2 years ago

task:https://github.com/PaddlePaddle/Quantum/issues/17 单测文件:https://github.com/yangguohao/Quantum1/blob/task81/documents/%E5%8D%95%E6%B5%8B%E6%96%87%E4%BB%B6.py

Quleaf commented 2 years ago

review 了你的代码,有一些还需要改进。__group_hamiltonian_optimial应该是用于判断并将哈密顿量重排列,但是在代码里并没有调用这个函数。以及在判断时,直接使用if pauli_words==['XX','YY','ZZ']可能还不够充分,缺少了对于sites信息的判断,而且这种判断必须要先用__group_hamiltonian_optimial进行重组才行。比如,如果我的泡利项是[Z0, Z1, X1, X2, Y3, Y4],目前的写法可能就会有问题。单独判断写一个__group_hamiltonian_optimial函数可能也不太合适,因为 __group 方法对应这物理上重新排列哈密顿量中每一项的顺序。这里的条件判断可能更应该是和add_n_pauli_gate并列的一个关系。 后续可以考虑用[[1., 'X0, X1'], [1., 'Z2, Z3'], [1., 'Y0, Y1'], [1., 'X1, X2'], [1., 'Y2, Y3'], [1., 'Z0, Z1']]进行测试。

Quleaf commented 2 years ago

目前的代码倒是没有出错,但是会有一些漏掉的情况。当哈密顿量为 h = Hamiltonian([[1, 'X0, X1'], [1, 'Y0, Y1'], [1, 'Z0, Z1'], [1, 'X0, Y1'], ...]) 时,那么就对前三项加一个 optimal_circuit。但是如果我换一下顺序,比如当哈密顿量为 h = Hamiltonian([[1, 'X0, X1'], [1, 'X0, Y1'], [1, 'Y0, Y1'], [1, 'Z0, Z1'], ...]),优化效果可能就不会生效,因此希望可以进一步提升代码情况的覆盖范围。