Majorana particles and topological quantum computation.

In this article, we will discuss the Majorana particle and topological computation. The Majorana particle is a qubit that Microsoft has been studying as a quantum bit in quantum computers, but this year it was discovered that the paper on which it was based was wrong. Since then, the paper has been retracted and has become infamous, but the possibility of using the Majorana particle as a qubit has not disappeared. Nevertheless, the Majorana particle is a strong candidate for a topological qubit. The main points of this article are as follows

Majorana particles appear when a pair of zero-point crossings in the Fermi surface occur.

Majorana particles can be moved to perform quantum calculations.

Topological quantum computation has not yet found a quantum system directly, so various quantum computation methods have been proposed.

Although the Majorana particle is a virtual particle without mass and charge, it can be treated as a qubit, and the transport phenomena specific to it have been confirmed. The Majorana particle is a virtual particle without mass and charge, but it can be treated as a qubit, and its specific transport phenomena have been confirmed. This particle is commutative and always appears in pairs. However, the positions and distances of each pair of particles are movable and can be calculated. The system in which this particle appears is a Josephson device made of a topological superconductor and a topological insulator. They appear there in pairs, each at a different position. Another way is to produce them as vortex threads in defects in a two-dimensional system. A pair of Majorana particles can be generated there, one moving toward the other, and both observed simultaneously to complete the calculation. The above is just one example described in reference [1]. In practice, various methods have been proposed and vary depending on how the particle pair is generated.

The particles are defined by topological parameters and are therefore supposed to be robust to noise. In fact, theoretical predictions estimate that the error rate in Clifford gates other than phase gates is about 10-12 [2]. When this is completed, the performance of quantum computers will improve dramatically, and we may be able to go all the way to the third generation. I hope that Microsoft will not give up on this possibility.


[2][1501.02813] Majorana Zero Modes and Topological Quantum Computation (arxiv.org)

【PR】初心者も安心のサポート充実【DMM FX】



Quantum Integrable System.

In this article, we will talk about integrable systems, especially quantum integrable systems. An integrable system is a system that can be solved by combining integration, differentiation, transformation of variables, solving differential equations, and the four arithmetic operations, and can be expressed as a fully integrable total differential equation [1]. In such a system, as the number of elements increases, the expression for the conservation law increases. Therefore, in the limit of infinite number of elements, the number of conserved quantities diverges to positive infinity. This is the case for the Toda lattice and the KdV equation in soliton fields. The latter can be solved by Fourier series expansion in terms of trigonometric functions including coordinates and time [2].

In quantum integrable systems, the number of conserved quantities commutative with the Hamiltonian increases with the number of elements. Examples include quantum solitons, one-dimensional quantum gases, and one-dimensional Hubbard models (such as the XXZ system) [3]. One of the most familiar is the nonlinear engineering interaction of carrier waves in optical fibers [4]. Since optical fiber is a medium that cannot be described by the Lorentz model, the dielectric susceptibility becomes a nonlinear tensor and nonlinear optical effects occur. This is the sum of the interaction of the light waves through the medium and the interaction of the light waves with the medium itself. Examples include self-modulation, self-steepening (interaction of light with the medium), Raman scattering, induced Raman scattering (interaction of multiple light waves with the medium through the medium), and four-light wave mixing (interaction between light waves through the medium). The result is a nonlinear Schrodinger equation whose complex amplitude is a quantum integrable system [5].

The title of this article is "quantum integrable systems," but although each example is simple, the general theory is difficult, and I must admit that I do not understand it well myself.

The examples are simple, but the general theory is difficult, and I have to admit that I do not understand it very well. Originally, this would be defined using a leaf layer structure, but unfortunately I am not familiar with differential geometry, so I cannot guarantee the content. However, there are many examples of integrable systems in the references, and I hope you will refer to them on your own.

[1] http://www.nara-wu.ac.jp/initiative-MPI/images/nwu_only/Inoue-file.pdf

[2] http://gandalf.math.kyushu-u.ac.jp/~kaji/ohp/2007_master.pdf

[3] https://www.math.sci.hokudai.ac.jp/~wakate/mcyr/2018/pd /00100_sato_jun.pdf

[4] https://optipedia.info/laser/fiberlaser/nonlinear-schrodinger/

[5] https://www.nagare.or.jp/download/noauth.html?d=31-5rensai.pdf&dir=160

【PR】初心者も安心のサポート充実【DMM FX】



VQE using pytket, the version of the 2021.

In this presentation, I will introduce pytket, an algorithm development kit for quantum computers from Cambridge Quantum Computing. In this article, we will introduce pytket, an algorithm development kit for quantum computers from Cambridge Quantum Computing, and show how to use it to run the Variational Quantum Eigensolver (VQE), one of the variational quantum algorithms. This pytket, like blueqat, can use various backends, and unusually can submit jobs to Honeywell machines. However, the specification of this pytket changes two or three times with each version update, so the previous writing style will soon no longer work. In this article, we will show the results of the calculations in these environments.

python environment: python3.9.10 (64-bit)

pytket version: pytket0.17.0, pytket-qiskit0.20.0

Runtime environment: Visual Studio 2017

In pytket, a quantum circuit is described as follows.

from pytket import Circuit from pytket.extensions.qiskit.backends import AerBackend, IBMQBackend, AerStateBackend

In this version, the backend is written as follows, and the result of the circuit execution is retrieved like this.

circ = Circuit(2, 2)
circ.Rx(0.3, 0).Ry(0.5, 1).Rz(-0.6, 1).measure_all()

b = AerBackend()
bs = AerStateBackend()
b.compile_circuit(circ)        # performs the minimal compilation to satisfy the device/simulator constraints
handle = b.process_circuit(circ, 1024)   # run the circuit 1024 times
from pytket.utils import probs_from_counts
state = bs.process_circuit(circ).get_state()
nvector = state.round(16)
print(probs_from_counts(b.get_result(handle).get_counts())) # retrieve and return the readouts

By changing the backend, it is possible to run the calculation on various quantum computers and their simulators. However, unfortunately, it is not possible to do calculations without it, as in blueqat. I will explain how to run VQE from here. If you are not familiar with VQE, please see here . The following is the source code distributed by the official source on GitHub , which calculates the ground energy of molecular hydrogen with an interatomic distance of 0.75 (Å). The Hamiltonian is from openfermion, and the basis is STO-3G. The clusters are from UCCSD, and the three variables are two one-electron excitations and one two-electron excitation. Line 120 registers them in the circuit, and line 122 is the part that calculates the energy from the circuit and returns the sum of the Coulomb repulsion potentials.

from pytket import Circuit
from pytket.extensions.qiskit.backends import AerBackend, IBMQBackend, AerStateBackend
import sys
from openfermion import *
from scipy import *
from scipy.optimize import minimize as scipy_minimizer
from scipy import interpolate
import numpy as np
import numpy as np
import copy
from collections import Counter, defaultdict
from functools import reduce
import itertools
import random
import warnings
import time
import csv

# # VQE for Unitary Coupled Cluster using tket

# In this tutorial, we will focus on:
# - building parameterised ansätze for variational algorithms;
# - compilation tools for UCC-style ansätze.

# This example assumes the reader is familiar with the Variational Quantum Eigensolver and its application to electronic structure problems through the Unitary Coupled Cluster approach.
# To run this example, you will need [object Object] and [object Object], as well as [object Object], [object Object], and [object Object].
# We will start with a basic implementation and then gradually modify it to make it faster, more general, and less noisy. The final solution is given in full at the bottom of the notebook.
# Suppose we have some electronic configuration problem, expressed via a physical Hamiltonian. (The Hamiltonian and excitations in this example were obtained using [object Object] version 0.5.2 and [object Object] for H2, bond length 0.75A, sto3g basis, Jordan-Wigner encoding, with no qubit reduction or orbital freezing.)

from openfermion import QubitOperator

from openfermion import QubitOperator
from scipy.optimize import minimize
from sympy import symbols

from pytket.extensions.qiskit import AerBackend
from pytket.circuit import Circuit, Qubit
from pytket.partition import PauliPartitionStrat
from pytket.passes import GuidedPauliSimp, FullPeepholeOptimise
from pytket.pauli import Pauli, QubitPauliString
from pytket.utils import get_operator_expectation_value, gen_term_sequence_circuit
from pytket.utils.operators import QubitPauliOperator

# Obtain electronic Hamiltonian:

hamiltonian = (
    -0.8153001706270075 * QubitOperator("")
    + 0.16988452027940318 * QubitOperator("Z0")
    + -0.21886306781219608 * QubitOperator("Z1")
    + 0.16988452027940323 * QubitOperator("Z2")
    + -0.2188630678121961 * QubitOperator("Z3")
    + 0.12005143072546047 * QubitOperator("Z0 Z1")
    + 0.16821198673715723 * QubitOperator("Z0 Z2")
    + 0.16549431486978672 * QubitOperator("Z0 Z3")
    + 0.16549431486978672 * QubitOperator("Z1 Z2")
    + 0.1739537877649417 * QubitOperator("Z1 Z3")
    + 0.12005143072546047 * QubitOperator("Z2 Z3")
    + 0.04544288414432624 * QubitOperator("X0 X1 X2 X3")
    + 0.04544288414432624 * QubitOperator("X0 X1 Y2 Y3")
    + 0.04544288414432624 * QubitOperator("Y0 Y1 X2 X3")
    + 0.04544288414432624 * QubitOperator("Y0 Y1 Y2 Y3")
nuclear_repulsion_energy = 0.70556961456

hamiltonian_op = QubitPauliOperator.from_OpenFermion(hamiltonian)

# Obtain terms for single and double excitations:

q = [Qubit(i) for i in range(4)]
xyii = QubitPauliString([q[0], q[1]], [Pauli.X, Pauli.Y])
yxii = QubitPauliString([q[0], q[1]], [Pauli.Y, Pauli.X])
iixy = QubitPauliString([q[2], q[3]], [Pauli.X, Pauli.Y])
iiyx = QubitPauliString([q[2], q[3]], [Pauli.Y, Pauli.X])
xxxy = QubitPauliString(q, [Pauli.X, Pauli.X, Pauli.X, Pauli.Y])
xxyx = QubitPauliString(q, [Pauli.X, Pauli.X, Pauli.Y, Pauli.X])
xyxx = QubitPauliString(q, [Pauli.X, Pauli.Y, Pauli.X, Pauli.X])
yxxx = QubitPauliString(q, [Pauli.Y, Pauli.X, Pauli.X, Pauli.X])
yyyx = QubitPauliString(q, [Pauli.Y, Pauli.Y, Pauli.Y, Pauli.X])
yyxy = QubitPauliString(q, [Pauli.Y, Pauli.Y, Pauli.X, Pauli.Y])
yxyy = QubitPauliString(q, [Pauli.Y, Pauli.X, Pauli.Y, Pauli.Y])
xyyy = QubitPauliString(q, [Pauli.X, Pauli.Y, Pauli.Y, Pauli.Y])

# Symbolic UCC ansatz generation:

syms = symbols("p0 p1 p2")
singles_syms = {xyii: syms[0], yxii: -syms[0], iixy: syms[1], iiyx: -syms[1]}
doubles_syms = {
    xxxy: 0.25 * syms[2],
    xxyx: -0.25 * syms[2],
    xyxx: 0.25 * syms[2],
    yxxx: -0.25 * syms[2],
    yyyx: -0.25 * syms[2],
    yyxy: 0.25 * syms[2],
    yxyy: -0.25 * syms[2],
    xyyy: 0.25 * syms[2],
print(singles_syms, doubles_syms)
excitation_op = QubitPauliOperator({**singles_syms, **doubles_syms})
ucc_ref = Circuit(4).X(0).X(2)
ucc = gen_term_sequence_circuit(excitation_op, ucc_ref)

# Circuit simplification:


# Connect to a simulator/device:

backend = AerBackend()

# Objective function:

def objective(params):
    circ = ucc.copy()
    sym_map = dict(zip(syms, params)) #assign parameters.
    return (
        + nuclear_repulsion_energy

# Optimise against the objective function:

initial_params = [1e-4, 1e-4, 4e-1]
result = minimize(objective, initial_params, method="Nelder-Mead")
print("Final parameter values", result.x)
print("Final energy value", result.fun)

# Exercises:
# - Replace the [object Object] call with its implementation and use this to pull the analysis for measurement reduction outside of the objective function, so our circuits can be fully determined and compiled once. This means that the [object Object] method will need to be applied to each measurement circuit instead of just the state preparation circuit.
# - Use the [object Object] class to add some mitigation of the measurement errors. Start by running the characterisation circuits first, before your main VQE loop, then apply the mitigation to each of the circuits run within the objective function.
# - Change the [object Object] by passing in a [object Object] [object Object] to simulate a noisy device. Compare the accuracy of the objective function both with and without the circuit simplification. Try running a classical optimiser over the objective function and compare the convergence rates with different noise models. If you have access to a QPU, try changing the [object Object] to connect to that and compare the results to the simulator.

The result of doing this is roughly -1.13 (Hartree). In addition, there is a homework assignment at the end of this code. You can try it if you feel like it. I'll post the results of my calculations in the future.

【PR】初心者も安心のサポート充実【DMM FX】




今日、RX Japanが開催する量子コンピューティングエキスポにいってきました。



これからは耐エラー量子計算機の時代だから、そこで扱う用のアルゴリズム研究しか生き残らず、仕事も汎用量子人工知能と生成 A I に多くが取って代わられるとのことです。



エキスポの全体に置ける割合は回を追う毎に縮小傾向にあります。今年はとうとう Quantinuum も、QunaSysも、Jijも出店しませんでした。

Jij は唯一、人工知能エキスポの方で出展してました。







【PR】初心者も安心のサポート充実【DMM FX】







それに伴い、量子計算機アルゴリズムの研究成果も全世界から報告されました。4月には密度行列を利用したVariational Quantum State Eigensolver(VQSE)[2]、6月にはMultiobjective Genetic VQE(MoG-VQE)[3]、そして7月には密度行列繰り込み群の性質を応用したDeep-VQE[4]が発表されました。また、ADAPT-VQEの研究は高い精度が出ることから世界中で注目され、様々な形で発展的な内容の研究成果が報告されました。QAOAに応用したADAPT-QAOA[5]、更には時間発展を記述可能な発展型[6]まで発表されました。また、そちらはあまり追っていませんが、量子人工知能分野でも、様々な企業が多くの研究成果を示したようです。



今年、とうとう実験的に量子重力を観測する方法について言及する論文が発表されました[7]。10月に開催されたIOP Quantum 2020でも招待講演でこのテーマを扱った方がいました[8]。既に多くの研究グループがこれを実現しようと試みています。今まではお世辞にも有名とは言い難かった量子重力の研究が、ここにきてブームとなりつつあります。大型加速器ではなく、重力子ビームスプリッタによって重力量子理論の研究が進む日も遠くない様です。





[2]Cerezo, M., and et. al., arXiv quant-ph:2004.01372v1(2020)

[3]Chivilikin, D, and et. al., arXiv quant-ph:2007.04424(2020)

[4]Keisuke, F, and et. al., arXiv quant-ph:2007.19017v1(2020)

[5]Zhu, Tang, Barron, Mayhall, Barnes, Economou, arXiv:2005.10258(2020)

[6]Yao, Y-X, and et. al., arXiv- quant-ph:2011.00622(2020)

[7]van de-camp, T. W. and et. al., arXiv quant-ph:2006.06931v2(2020)

[8]Vedral, V, Quantum totalitarianism and gravity, IOP Quantum 2020, main stage content 22.10(2020)  

【PR】初心者も安心のサポート充実【DMM FX】




今回は、前回に引き続きラビ振動のシミュレーションを行います。今回は位相を持った重ね合わせ状態の作り方を毎説します。 これは照射するレーザーに位相を持たせるだけで実現します。それを$\alpha$とすると、前回における式(3)が、

\begin{eqnarray} E\left( \begin{array}{cc} 0&e^{-i/\hbar(E_1-E_0)t}cos(\omega t + \alpha) \mu{01} \ e^{i/\hbar(E_1-E_0)t}cos(\omega t + \alpha) \mu{01}^* & 0 \ \end{array} \right)=i\hbar\textbf{b}'(t) -(3) \end{eqnarray}


\begin{eqnarray} \frac{1}{2}E\left( \begin{array}{cc} 0&e^{-i\alpha}\mu{01} \ e^{i\alpha}\mu{01}^* & 0 \ \end{array} \right)=i\hbar\textbf{b}'(t) -(4) \end{eqnarray}


\begin{eqnarray} b_0(t)&=&cos\frac{E \mid \mu{01} \mid}{2\hbar}t \ b_1(t)&=&e^{-i\alpha}sin\frac{E \mid \mu{01} \mid}{2\hbar}t \ -(5) \end{eqnarray}


\begin{eqnarray} R(\theta, \alpha)=\left(\begin{array}{cc}

cos2\pi t/T&e^{i\alpha}sin2\pi/T t \ e^{i\alpha}sin2\pi/T t&cos2\pi t/T \


この変換を組み合わせて各種量子ゲートは実装されています 。 今回、blueqatにおいてショットノイズを実装してわかったことがあります。bkueqatはノイズ周りはほとんどバックエンドだよりで独自のノイズシミュレーションが全く実装されていないということです。ノイズのシミュレーションは量子計算のシミュレーションをするうえで避けては通れない過程です。実機における計算の回数は無料利用枠が設定されてウィル化、従量課金制です。そのため、無料で実機の計算を再現する機能はあってほしいというのが本音です。ショットノイズだけでは実機におけるノイズを再現するには不十分であり、相互作用ノイズ、フリップ、位相シフトなど、細かく設定してノイズをシミュレーションする機能の実装をこの場を借りて求めます。

【PR】初心者も安心のサポート充実【DMM FX】







 \mid \Psi \rangle = \sum_{j}e^{-i/\hbar E_j t}b_j(t)\mid j \rangle \tag{1}

となります。ここで ℏ はディラック定数で、プランク定数を 2𝜋 で割ったものです。シュレディンガー方程式を簡略化して、

\begin{eqnarray} \left( \begin{array}{cc} 0 & e^{-i/\hbar(E_1-E_0)t}\langle 0\mid H_D \mid 1 \rangle \\ e^{i/\hbar(E_1-E_0)t}\langle 1 \mid H_D \mid 0 \rangle & 0 \\ \end{array} \right)=i\hbar\textbf{b}'(t) \tag{2} \end{eqnarray}

となります。 非対角項は遷移相互作用です。これは遷移双極子モーメントと電磁波のベクトル内積としてあらわされます。こうして式(2)は、

\begin{eqnarray} E\left( \begin{array}{cc} 0&e^{-i/\hbar(E_1-E_0)t}cos\omega t \mu_{01} \\ e^{i/\hbar(E_1-E_0)t}cos\omega t \mu_{01}^* & 0 \\ \end{array} \right)=i\hbar\textbf{b}'(t) \tag{3} \end{eqnarray}



指数項と外部電磁波の部分は 𝜔 =( 𝐸1 − 𝐸0)/ℏ の場合には、時間依存しない項と2𝜔に依存して時間発展する項の和になります。



\begin{eqnarray} \frac{1}{2}E\left( \begin{array}{cc} 0&\mu_{01} \\ \mu_{01}^* & 0 \\ \end{array} \right)=i\hbar\textbf{b}'(t) \tag{4} \end{eqnarray}

となります。 後は通常のシュレディンガー方程式と同じです。これを解いて、

\begin{eqnarray} b_0(t)&=&cos\frac{E \mid \mu_{01} \mid}{2\hbar}t \\ b_1(t)&=&sin\frac{E \mid \mu_{01} \mid}{2\hbar}t \tag{5} \end{eqnarray}




1量子ビット系においては    𝜎 _0 ^𝑥 𝐸 ∣ 𝜇_{ 01 } ∣ / 2 をこの記事の時間発展ゲートによって量子ビットに印加するだけです。

今回は   𝐸 ∣ 𝜇_{ 01 } ∣ / 2 = 𝜋 / 2 𝑇  とします。


図1を見ると、ラビ振動の1周期が再現できていることがわかります。しかしこれだけでは、 𝑅 𝑦 ゲートのシミュレーションしかできません。次回は、位相付きラビ振動のシミュレーション方法を解説します。


【PR】初心者も安心のサポート充実【DMM FX】