linear-algebra


Calculating the coefficients of a separable state


Given a separable 2-qubit state
φ = φ0 ⊗ φ1
with
φi= ai0|0> + ai1|1>
φ thus can be written as
φ = b00|00> + b01|01> + b10|10> + b11|11>
with
bij = a0ia1j.
Now let some bij be given, i.e. an arbitrary 2-qubit state
φ = b00|00> + b01|01> + b10|10> + b11|11>
Let B = (bij). By Schmidt decomposition there are 2x2 matrices U, V, Σ, such that
U, V unitary
Σ positive semidefinite diagonal
B = U ∘ Σ ∘ V*
Let σ0, σ1 be the two diagonal elements of Σ.
The state φ = b00|00> + b01|01> + b10|10> + b11|11> is entangled if and only if σ0 + σ1 > 1.
QUESTION
Given a state φ = b00|00> + b01|01> + b10|10> + b11|11> and its Schmidt decomposition B = U ∘ Σ ∘ V*, such that σ0 + σ1 ≤ 1, i.e. the state is separable. This means there are φi= ai0|0> + ai1|1>, such that φ can be written as
φ = φ0 ⊗ φ1
How do I calculate A = (aij) from B = (bij), i.e. from U, V, Σ?
This is the reverse of
bij = a0ia1j
given that bij defines a separable state.
If you're given a pure state and promised that it's separable, you don't need the Schmidt decomposition to compute the parts. Just lay the amplitudes out in a grid, read off the proportions between the columns for one part and read off the proportions between the rows for the other.
That is to say, the statement that a 2-qubit system φ is separable so φ = αβ guarantees that φ₀₀/φ₀₁ = φ₁₀/φ₁₁ = β₀/β₁ and that φ₀₀/φ₁₀ = φ₀₁/φ₁₁ = α₀/α₁. And knowing α₀/α₁ is enough to solve for α, except for the global phase factor. (Note: work with proportions α₀:α₁ instead of ratios α₀/α₁ if α₁ might be zero.)
This generalizes to systems with more qubits. A given subset of qubits is separable if and only if grouping by all the other qubits gives you a bunch of parts with agreeing proportions between their pieces. And the proportions between the pieces constrain everything except the global phase factor.
Using the Schmidt decomposition as a shortcut
The Schmidt decomposition does make this easier. It does all the hard 'reconstructing the proportions' work. If a pure system is separable then its SVD decomposition should only have one non-zero singular value, and that singular value should equal 1. So you have something like:
|1 0 0 ...|
U |0 0 0 ...| V
|0 0 0 ...|
|... . ...|
But that's just multiplying the first column of U by the first row of V! So we have a system with n*m entries being created from a system with n entries and a system with m entries... Yup, the first column and the first row contain the amplitudes of α and β.
Example
My circuit simulator Quirk has built-in inline amplitude displays that perform this kind of separation (without doing an SVD). You can see the code that does it on github, though it's all GPU based so not particularly clear.
(It was by far the most complicated display to write, since it has to do the grouping then compare all the groups. But some groups might have no amplitude so they have to be ignored, and there may be noise in the system from float errors so you should focus on the big groups and... blergh.)
Also you can play with it in the simulator itself. Here's an example circuit using those displays:
You might also find this blog post intuitively useful.

Related Links

conjugate gradient with a positive semidefinite matrix
Most efficient way to solve SEVERAL linear systems Ax=b with SMALL A (minimum 3x3 maximum 8x8)
Assigning a sparse matrix in Eigen
The significance of the rotation matrix after computing structure from motion
Changing the LAPACK implementation used by IDL linear algebra routines?
approximate polynomial by linear inequalities
Maximization in quadratic programming using CGAL
Efficient recalculation of weighted least squares regression when weights change
How does ATLAS tuning work?
Vector direction on 3d line
hlsl dot function
How do units flow through matrix operations?
Quaternion relative error measurement
gcc 2.95 floating point linear algebra not matching gcc 4.3.2
How do I find the plane at which two hyperplanes intersect?
How can I do blind fitting on a list of x, y value pairs if I don't know the form of f(x) = y?

Categories

HOME
uml
url-redirection
design-patterns
cheerio
angular-formly
jmx
components
solaris
ms-access-2016
cublas
rom
limit
python-multithreading
nstableheaderview
lanczos
elasticsearch-5
spin
fabric.io
jxl
pybossa
symmetricds
do-while
dreamweaver
vuejs
identity-management
oledb
backpack-for-laravel
exploit
interpreter
angularjs-components
has-and-belongs-to-many
outliers
gp
uitapgesturerecognizer
autodesk-designautomation
turfjs
dsx-desktop
classcastexception
getpixel
sessionstorage
amazon-ses
resolution
levenshtein-distance
microsoft-metro
photos
monkey-testing
vaadin-elements
clarifai
reindex
custom-font
subnet
headless
template-toolkit
vibrate
usart
actor-platform
async.js
vulcanize
adafruit
resourcemanager
cifilter
mediametadataretriever
query-by-example
ikiwiki
createprocess
grass
false-sharing
r-package
dnssec
entity-framework-4.3
jquery-forms-plugin
java-security
ssis-data-flow
addressing-mode
easyrtc
rickshaw
ora-00904
mintty
lnk
draw2d-js
radiant
renderer
high-resolution
time.h
octal
joomla-template
composite-component
booksleeve
pstack
fragmenttransaction
monotouch.dialog
gobject-introspection
procedures
ikimagebrowserview
promotion-code
appledoc
request-headers
glui
firefox-3
great-circle

Resources

Mobile Apps Dev
Database Users
javascript
java
csharp
php
android
MS Developer
developer works
python
ios
c
html
jquery
RDBMS discuss
Cloud Virtualization
Database Dev&Adm
javascript
java
csharp
php
python
android
jquery
ruby
ios
html
Mobile App
Mobile App
Mobile App