BosonSampling.classical_samplerMethod
classical_sampler(ev::Event{TIn, TOut}; occupancy_vector = true) where {TIn<:InputType, TOut <: FockSample}

Sampler for an Event. Note the difference of behaviour if occupancy_vector = true.

source
BosonSampling.clifford_unoptimisedMethod
clifford_unoptimised(A, n; occupancy_vector = true)

Naive implementation of the Clifford algorithm. Computes a sample if n photons are sent in the first n modes of a m mode interferometer A.

source
BosonSampling.cliffords_samplerMethod
cliffords_sampler(;input::Input, interf::Interferometer, nthreads=1)

Sample photons according to the Bosonic case following Clifford & Clifford algorithm performed (at most) in $O(n2^m + Poly(n,m))$ time and $O(m)$ space. The optional parameter nthreads is used to deploy the algorithm on several threads.

source
BosonSampling.cliffords_samplerMethod
cliffords_sampler(ev::Event{TIn, TOut}; occupancy_vector = true) where {TIn<:InputType, TOut <: FockSample}

Sampler for an Event. Note the difference of behaviour if occupancy_vector = true.

source
BosonSampling.metropolis_samplerMethod
metropolis_sampler(;target_pdf, known_pdf, known_sampler, starting_state, n_iter, n_burn = 100, n_thinning = 100)

Implement a metropolis independent sampler for standard boson sampling following. The burn in period n_burnand the thinning interval n_thinning both have default value of 100.

Reference

https://arxiv.org/abs/1705.00686: As the paper is limited to collinionless events, we keep track of this thanks to iterate_until_collisionless.

Warning

Burn in perdiod and thinning interval must have the same value.

source