{ "cells": [ { "cell_type": "markdown", "id": "429e356e", "metadata": {}, "source": [ "# Boson Sampling\n", "\n", "If one wants to run the Boson Sampling algorithm, it is easy to do by using [pq.SamplingSimulator](https://piquasso.readthedocs.io/en/latest/simulators/sampling.html). A simple example is given as follows:" ] }, { "cell_type": "code", "execution_count": 3, "id": "22562b59", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[(1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (0, 1, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (0, 1, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (0, 1, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (0, 1, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (0, 1, 0, 1), (0, 1, 0, 1), (0, 1, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (0, 1, 0, 1), (0, 1, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (0, 1, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (0, 1, 0, 1), (0, 1, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (0, 1, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1), (1, 0, 0, 1), (0, 1, 0, 1)]\n" ] } ], "source": [ "import numpy as np\n", "import piquasso as pq\n", "\n", "\n", "with pq.Program() as program:\n", " pq.Q(all) | pq.StateVector([0, 1, 1, 0])\n", "\n", " pq.Q(0, 1) | pq.Beamsplitter(theta=np.pi / 3, phi=np.pi / 4)\n", " pq.Q(2, 3) | pq.Beamsplitter(theta=np.pi / 2, phi=np.pi / 3)\n", "\n", " pq.Q(all) | pq.ParticleNumberMeasurement()\n", "\n", "simulator = pq.SamplingSimulator(d=4)\n", "\n", "result = simulator.execute(program, shots=1000)\n", "\n", "print(result.samples)" ] }, { "cell_type": "markdown", "id": "c75fbd8b", "metadata": {}, "source": [ "One may also directly providde an interferometer by [pq.Interferometer](https://piquasso.readthedocs.io/en/latest/instructions/gates.html#piquasso.instructions.gates.Interferometer)." ] }, { "cell_type": "code", "execution_count": 4, "id": "1d5b9e46", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[(2, 0, 0, 4, 0, 2, 0), (3, 1, 0, 3, 0, 1, 0), (0, 0, 0, 2, 0, 5, 1), (0, 4, 0, 0, 2, 0, 2), (0, 0, 1, 2, 3, 0, 2), (0, 2, 1, 2, 0, 2, 1), (1, 0, 0, 0, 1, 6, 0), (2, 2, 0, 3, 0, 0, 1), (3, 0, 1, 1, 2, 0, 1), (1, 2, 0, 5, 0, 0, 0), (0, 1, 0, 0, 3, 2, 2), (3, 0, 0, 0, 0, 1, 4), (1, 2, 0, 1, 0, 0, 4), (1, 0, 2, 1, 1, 0, 3), (1, 2, 0, 0, 3, 1, 1), (2, 0, 1, 1, 0, 1, 3), (0, 0, 1, 1, 3, 1, 2), (0, 1, 0, 0, 2, 4, 1), (0, 5, 2, 0, 1, 0, 0), (0, 1, 2, 0, 4, 1, 0)]\n" ] } ], "source": [ "from scipy.stats import unitary_group\n", "\n", "d = 7\n", "\n", "interferometer_matrix = unitary_group.rvs(d)\n", "\n", "with pq.Program() as program:\n", " pq.Q(all) | pq.StateVector([2, 0, 1, 1, 0, 3, 1])\n", "\n", " pq.Q(all) | pq.Interferometer(interferometer_matrix)\n", "\n", " pq.Q(all) | pq.ParticleNumberMeasurement()\n", "\n", "simulator = pq.SamplingSimulator(d=d)\n", "\n", "result = simulator.execute(program, shots=20)\n", "\n", "print(result.samples)" ] } ], "metadata": { "kernelspec": { "display_name": ".venv", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.10.14" } }, "nbformat": 4, "nbformat_minor": 5 }