Qiskit originally starts calculations with all the qubits in the zero states. Our dm_simulator provides the option for the user to initialise to some very common states (density matrix) used in quantum computations. If no options are set then states defaults to the zero states.
from qiskit import *
backend = BasicAer.get_backend('dm_simulator')
qc1 = QuantumCircuit(1)
options1 = {
'custom_densitymatrix': 'max_mixed'
}
run1 = execute(qc1,backend,**options1)
result1 = run1.result()
print('Density Matrix: \n',result1['results'][0]['data']['densitymatrix'])
No measurements in circuit "circuit0", classical register will remain all zeros.
Density Matrix: [[0.5+0.j 0. +0.j] [0. +0.j 0.5+0.j]]
Simllarly, uniformly superposed state can be created by replacing 'max_mixed' with 'uniform_superpos'
qc2 = QuantumCircuit(2)
options2 = {
'custom_densitymatrix': 'binary_string',
'initial_densitymatrix': '01'
}
backend = BasicAer.get_backend('dm_simulator')
run2 = execute(qc2,backend,**options2)
result2 = run2.result()
print('Density Matrix: \n',result2['results'][0]['data']['densitymatrix'])
No measurements in circuit "circuit0", classical register will remain all zeros.
Density Matrix: [[0.+0.j 0.+0.j 0.+0.j 0.+0.j] [0.+0.j 0.+0.j 0.+0.j 0.+0.j] [0.+0.j 0.+0.j 1.+0.j 0.+0.j] [0.+0.j 0.+0.j 0.+0.j 0.+0.j]]