4

Recently, I came across ZX calculus. It is an interesting method to describe quantum circuits. However, it seems to me, too complicated for day-to-day use in circuit design (something like to program an application in assembler instead of in higher level language) because it uses only few quantum gates ($Rx$, $Ry$, $H$ and $CNOT$).

My question is for what purposes the ZX calculus was developed?

met927
  • 3,251
  • 1
  • 9
  • 22
Martin Vesely
  • 13,891
  • 4
  • 28
  • 65

3 Answers3

7

The ZX calculus was not designed to be a programming language, or a language in which to specify things at a high level. It is a language for reasoning about things on a relatively low level, albeit without digging into the actual physics.

What it was designed for is hinted at in your observations, and by the name of the ZX calculus itself.

  • It can describe individual quantum gates: so it is a notation for circuits (and other quantum procedures — one of the things the ZX calculus was explicitly designed for was to analyse measurement based quantum computing [arXiv:0906.4725]; and Dom Horsman and I showed that it has a very close connection to surface code lattice surgery [arXiv:1704.08670]).

  • It is a calculus : it is a notation in which you can actually do calculations. If you're good with reasoning about commutation relations, you can do this to a limited extent with ordinary circuit diagrams; for the ZX calculus you can in principle do this entirely with diagrams.

There are people who are working on higher-level ZX descriptions of procedures on multiple qubits — eg. [arXiv:1905.00041] — which might become suitable to actually program with if developed further. But the existing version of the ZX calculus is more suitable for an intermediate representation of a compiler, or indeed performing computations or analysis by hand, than as a programming language.

Niel de Beaudrap
  • 12,052
  • 1
  • 31
  • 69
  • Do you have some references about higher-level ZX versions? I saw this extention of ZX for multiple wires & matrices, but I'd love to here more about extensions. – Léo Colisson Feb 10 '20 at 21:41
  • 1
    @tobiasBora: what you describe is exactly what I have in mind. (I'll add links to references when I get a moment later today.) I couldn't tell you what other people are working on to extend that, but I and others agree that further developments in that direction are one of the better ways to further develop the ZX calculus. If you are looking at [zxcalculus.com], then you'll be relatively up to date. – Niel de Beaudrap Feb 11 '20 at 09:08
  • Ok thanks! If you want to save some time I guess the reference is "SZX-calculus: Scalable Graphical Quantum" by Titouan Carette, Dominic Horsman and Simon Perdrix https://arxiv.org/pdf/1905.00041.pdf – Léo Colisson Feb 11 '20 at 10:44
2

Since the question was for what purpose the ZX-calculus was developed, let me answer this with the original use case: understanding Measurement-Based Quantum Computation (MBQC). The ZX-calculus was originally introduced by Bob Coecke and Ross Duncan in a 2007 preprint here and first appeared in a published paper here.

Bob and Ross told me that they were looking for a way to better understand MBQC and graph states. When working on a language for this they noticed the connection between the strong complementarity of the Z and X observables, and the already established rewrite rules of bialgebras and Hopf algebras. The first paper wherein ZX was used to describe MBQC was this paper.

John
  • 472
  • 2
  • 5
1

To complete the answer of Niel de Beaudrap, note that the book "Picturing Quantum Processes: A First Course in Quantum Theory and Diagrammatic Reasoning" (Coecke, Kissinger) presents a more top-down/high-level view of diagrammatic reasoning, where we can reason on arbitrary quantum process: the ZX-calculus is then just seen as a way to "open the box" and describe quantum processes on a more low level basis, but is not strictly necessary to reason on arbitrary processes.

Léo Colisson
  • 656
  • 4
  • 12