Note

You can download this notebook here.

Gaussian Boson Sampling#

Gaussian Boson Sampling can be performed as shown by the following example:

[1]:

import numpy as np
import piquasso as pq

d = 5
shots = 5

A = np.array(
[
[0, 1, 0, 1, 1],
[1, 0, 0, 0, 1],
[0, 0, 0, 1, 0],
[1, 0, 1, 0, 1],
[1, 1, 0, 1, 0],
]
)

with pq.Program() as gaussian_boson_sampling:
pq.Q(all) | pq.Graph(A)

pq.Q(all) | pq.ParticleNumberMeasurement()

simulator = pq.GaussianSimulator(d=d)

result = simulator.execute(gaussian_boson_sampling, shots=shots)

print("Samples:", result.samples)

Samples: [(3, 1, 2, 4, 4), (0, 1, 0, 0, 1), (0, 0, 0, 0, 0), (2, 2, 0, 4, 4), (0, 0, 0, 1, 1)]


The generated samples could be used to acquire some denser subgraphs of the generated graph with

[2]:

print("Subgraphs:", result.to_subgraph_nodes())

Subgraphs: [[0, 0, 0, 1, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4], [1, 4], [], [0, 0, 1, 1, 3, 3, 3, 3, 4, 4, 4, 4], [3, 4]]