Realignment

From QETLAB
Jump to navigation Jump to search
Realignment
Computes the realignment of a bipartite operator

Other toolboxes required none
Related functions PartialTranspose
PermuteSystems
Swap
Function category Superoperators

Realignment is a function that computes the realignment of a bipartite operator.

Syntax

  • RX = Realignment(X)
  • RX = Realignment(X,DIM)

Argument descriptions

  • X: A bipartite operator to have its realignment computed.
  • DIM (optional, by default has both subsystems of equal dimension): A specification of the dimensions of the subsystems that X lives on. DIM can be provided in one of three ways:
    • If DIM is a scalar, it is assumed that the first subsystem has dimension DIM and the second subsystem has dimension length(X)/DIM.
    • If $X \in M_{n_1} \otimes M_{n_2}$ then DIM should be a row vector containing the dimensions (i.e., DIM = [n_1, n_2]).
    • If the subsystems aren't square (i.e., $X \in M_{m_1, n_1} \otimes M_{m_2, n_2}$) then DIM should be a matrix with two rows. The first row of DIM should contain the row dimensions of the subsystems (i.e., the mi's) and its second row should contain the column dimensions (i.e., the ni's). In other words, you should set DIM = [m_1, m_2; n_1, n_2].

Examples

A two-qubit example

When viewed as a map on block matrices, the realignment map takes each block of the original matrix and makes its vectorization the rows of the realignment matrix. This is illustrated by the following small example:

>> X = reshape(1:16,4,4)'

X =

     1     2     3     4
     5     6     7     8
     9    10    11    12
    13    14    15    16

>> Realignment(X)

ans =

     1     2     5     6
     3     4     7     8
     9    10    13    14
    11    12    15    16

A non-square example

The realignment map sends $|i\rangle\langle j| \otimes |k\rangle\langle \ell|$ to $|i\rangle\langle k| \otimes |j\rangle\langle \ell|$. Thus it changes the dimensions of matrices if the subsystems aren't square and of the same size. The following code computes the realignment of an operator $X \in M_{5,2} \otimes M_{3,7}$:

>> X = reshape(1:210,14,15)'

X =

     1     2     3     4     5     6     7     8     9    10    11    12    13    14
    15    16    17    18    19    20    21    22    23    24    25    26    27    28
    29    30    31    32    33    34    35    36    37    38    39    40    41    42
    43    44    45    46    47    48    49    50    51    52    53    54    55    56
    57    58    59    60    61    62    63    64    65    66    67    68    69    70
    71    72    73    74    75    76    77    78    79    80    81    82    83    84
    85    86    87    88    89    90    91    92    93    94    95    96    97    98
    99   100   101   102   103   104   105   106   107   108   109   110   111   112
   113   114   115   116   117   118   119   120   121   122   123   124   125   126
   127   128   129   130   131   132   133   134   135   136   137   138   139   140
   141   142   143   144   145   146   147   148   149   150   151   152   153   154
   155   156   157   158   159   160   161   162   163   164   165   166   167   168
   169   170   171   172   173   174   175   176   177   178   179   180   181   182
   183   184   185   186   187   188   189   190   191   192   193   194   195   196
   197   198   199   200   201   202   203   204   205   206   207   208   209   210

>> Realignment(X,[5,3;2,7])

ans =

     1     2     3     4     5     6     7    15    16    17    18    19    20    21    29    30    31    32    33    34    35
     8     9    10    11    12    13    14    22    23    24    25    26    27    28    36    37    38    39    40    41    42
    43    44    45    46    47    48    49    57    58    59    60    61    62    63    71    72    73    74    75    76    77
    50    51    52    53    54    55    56    64    65    66    67    68    69    70    78    79    80    81    82    83    84
    85    86    87    88    89    90    91    99   100   101   102   103   104   105   113   114   115   116   117   118   119
    92    93    94    95    96    97    98   106   107   108   109   110   111   112   120   121   122   123   124   125   126
   127   128   129   130   131   132   133   141   142   143   144   145   146   147   155   156   157   158   159   160   161
   134   135   136   137   138   139   140   148   149   150   151   152   153   154   162   163   164   165   166   167   168
   169   170   171   172   173   174   175   183   184   185   186   187   188   189   197   198   199   200   201   202   203
   176   177   178   179   180   181   182   190   191   192   193   194   195   196   204   205   206   207   208   209   210

Source code

Click here to view this function's source code on github.