0
$\begingroup$

I know that one of the properties of the Kraus Operator is: $$\sum_k A_k^\dagger A_k=I\,.$$

So, in qiskit, I first converted my array to a super operator, and then I found my Kraus operators. However, the sum of the Kraus operator is not equal to the identity. And I do not know if I found my Kraus operator correctly or not. Here is my process matrix:

array([[ 1.   ,  0.   ,  0.   ,  0.   ],
       [ 0.001,  0.986,  0.02 ,  0.04 ],
       [ 0.014,  0.01 ,  0.019, -0.957],
       [-0.028, -0.031,  0.949,  0.008]])

Here is my code:

 q_process=qi.SuperOp(process)
 kraus_=qi.Kraus(q_process)
 kraus_

From kraus_, I put Kraus operators into kraus_list Here is how I found the sum of Kraus operators:

kraus_list = np.array([[[-0.833+0.j,  0.14 +0.j],
         [-0.14 +0.j, -0.821+0.j]],

        [[ 0.134+0.j,  0.812+0.j],
         [-0.806+0.j,  0.139+0.j]],

        [[ 0.14 +0.j, -0.06 +0.j],
         [-0.061+0.j, -0.142+0.j]],

        [[-0.012+0.j, -0.029+0.j],
         [-0.029+0.j,  0.012+0.j]],


       [[-1.168-0.j, -0.026-0.j],
         [ 0.014+0.j, -0.205-0.j]],

        [[ 0.201+0.j, -0.008-0.j],
         [ 0.021+0.j, -1.142-0.j]],

        [[ 0.004+0.j, -0.147-0.j],
         [ 0.16 +0.j,  0.005+0.j]],

        [[ 0.   +0.j, -0.032-0.j],
         [-0.03 -0.j, -0.   -0.j]]])
    sum_of_kraus= np.matmul(kraus_list[0].conj().T,kraus_list[0])+np.matmul(kraus_list[1].conj().T,kraus_list[1])+np.matmul(kraus_list[2].conj().T,kraus_list[2])+np.matmul(kraus_list[3].conj().T,kraus_list[3])+np.matmul(kraus_list[4].conj().T,kraus_list[4])+np.matmul(kraus_list[5].conj().T,kraus_list[5])+np.matmul(kraus_list[6].conj().T,kraus_list[6])+np.matmul(kraus_list[7].conj().T,kraus_list[7])

Here is the result:

array([[2.843+0.j, 0.009+0.j],
       [0.009+0.j, 2.761+0.j]])

As it can be seen, it is not equal to identity. Could someone explain to me why I am finding 2.843 instead of 1. Am I doing something wrong in the code?

$\endgroup$
4
  • 2
    $\begingroup$ I haven't gone through all the details, but I suspect that it's supposed to be np.matmul(kraus_list[0].conj().T, kraus_list[0]) (see that formula that you pasted) $\endgroup$ Commented Feb 14, 2022 at 14:30
  • $\begingroup$ thanks for the comment, you are right but id did not affect my result. I first tried what you suggested and then I inverse the equation just to see if something changes and then I pasted here the last version, As a result even if I write: np.matmul(kraus_list[0].conj().T, kraus_list[0]) nothing changes. BUt I guess I found the problem $\endgroup$
    – quest
    Commented Feb 14, 2022 at 23:10
  • $\begingroup$ @quest do you mind sharing the solution or close the question? $\endgroup$
    – luciano
    Commented Feb 15, 2022 at 9:56
  • $\begingroup$ @luciano I am not so sure for my solution. That is why I need to wait 2 more days and if noone answers, I will add a comment regarding what I found and then I will close the topic $\endgroup$
    – quest
    Commented Feb 15, 2022 at 11:44

1 Answer 1

1
$\begingroup$

Since OP never disclosed their solution let me shed light on what the mistake here was: the process matrix used as input was a Pauli transfer matrix (i.e. representation matrix in the Pauli basis) but qi.SuperOp uses the representation matrix in the computational basis. Converting OP's Pauli transfer matrix into the superoperator representation yields what the input should have been:

array([[ 0.49 +0.j , -0.0155-0.4745j , -0.0155+0.4745j , 0.482 +0.j   ],
       [ 0.0205 -0.4715j , 0.5025 -0.005j , 0.4835 +0.015j , -0.0195+0.4855j ],
       [ 0.0205 +0.4715j , 0.4835 -0.015j , 0.5025 +0.005j , -0.0195-0.4855j],
       [0.51 +0.j , 0.0155 +0.4745j , 0.0155 -0.4745j , 0.518 +0.j]])

Note that the code did what it is supposed to do: it interpreted the input as superoperator with respect to vectorization which leads to a map $\Phi$ that is not even completely positive or even Hermitian-preserving anymore. As a result qi.Kraus output generalized Kraus operators, i.e. matrices $A_1,\ldots,A_4,B_1,\ldots,B_4$ such that $\Phi=\sum_{k=1}^4 A_k(\cdot)B_k^\dagger$. Indeed, it is easy to check that the elements of kraus_list satisfy ${\rm superOp}(\Phi)=\sum_{k=1}^4\overline{B_k}\otimes A_k$ meaning they are indeed generalized Kraus operators of $\Phi$.

$\endgroup$
1
  • 1
    $\begingroup$ you are right. In the end, I solved this problem with qiskit by using PTM class. However, I forgot to update the solution here. It has been almost two years so thanks for reminding this and answering this $\endgroup$
    – quest
    Commented Apr 14 at 23:00

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.