Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

35 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

WFN-BosonSampling

State space analysis of the boson sampling problem.

The repository is organized as follows:

/lib

Source code files.

  • /interferometer
    • Scheme.cpp (.h): A class that describes a circuit capable of importing and exporting interferometer matrices.
  • /network
    • ConnectivityComponent.cpp (.h): Describes each connectivity component of the constructed network.
    • Network.cpp (.h): A class that constructs a Wave Function Network (WFN) on a given sample space with a given metric and activation distance.
  • /samplers
    • BFbosonSampler.cpp (.h): A simple brute-force sampler that constructs the entire space of possible outcomes with its probabilities.
    • CoherentSampler.cpp (.h): A sampler that uses the coherent state of light at the input of the interferometer.
    • DistinguishableSampler.cpp (.h): A sampler that uses distinguishable particles.
    • MISampler.cpp (.h): Metropolis Independence Sampler, as discussed in the Supplementary Information to Neville et al. (2017).
    • MeanFieldSampler.cpp (.h): Mean-field sampler, the multi-mode Fock state at the input semi-classically approximated by the macroscopically populated single-particle states with random phases.
    • UniformSampler.cpp (.h): A sampler from a uniform distribution constructed over a given space of possible outcomes.
    • Sampler.cpp (.h): Abstract parent class for all samplers under consideration.
  • /space
    • FockState.cpp (.h):A class describing a multimode Fock state of light.
    • StateSpace.cpp (.h): A class describing the sample space.
  • file_lib.cpp (.h): Some additional functions for exporting data in a specific format.
  • math_lib.cpp (.h): Several necessary special mathematical functions.

/resources

Resources collected during the research.

  • /samples
    • /neville_12_*_batch900
      • *.txt: samples divided into batches of size 900 from Neville et al. (2017), generated by a specific sampler (indicated in the folder name) for a system of 12 photons injected into a 144-mode interferometer. The first digit corresponds to the sampling iteration (0-3) and the last digits correspond to the batch number.
    • /neville_20_*_batch900
      • *.txt: samples divided into batches of size 900 from Neville et al. (2017), generated by a specific sampler (indicated in the folder name) for a system of 20 photons injected into a 400-mode interferometer. The first digit corresponds to the sampling iteration (0-3) and the last digits correspond to the batch number.
    • /neville_7_*_batch900
      • *.txt : samples divided into batches of size 900 from Neville et al. (2017), generated by a specific sampler (indicated in the folder name) for a system of 7 photons injected into a 49-mode interferometer. The first digit corresponds to the sampling iteration (0-3) and the last digits correspond to the batch number.
  • /scheme
    • /diff_u_5 (6)
      • scheme_unitary_5(6)_*.txt: Haar-random unitary interferometer matrices used for averaging over different interferometer matrices (5 and 6 photons injected into 25- and 36-mode interferometers, respectively).
    • scheme_unitary_*.txt: Haar-random unitaries with a given ($"*"$) number of photons and quadratically scaled number of modes ($*^2$).

/tests

Source files that use this library to perform calculations for the article.

  • CloudPositionN.cpp: Dependence of the cloud position on the collected number of samples, averaged over several sampling iterations on the same given scheme.
  • Neville_test.cpp: The validation protocol tests utilizing data from Neville et. al. (2017)
  • diff_unitary.cpp: Dependence of the cloud position on the collected number of samples, averaged over several sampling iterations with different interferometer matrices.
  • mis_test.cpp: Test for the MISampler class.

/vs

VisualStudio files.

bs-StateSpace.h: Header file of this library.

bs-StateSpace.lib: File of the described static library.

/!linux_version

The described project is adapted for compilation on Linux systems.

  • makefile: a general makefile; before running the compiled program, paste the "/resources" folder from this repository into the project.
    • use make main_make to make a main.cpp file corresponding to CloudPositionN.cpp from "/tests"
    • use make neville_test_make to make Neville_test.cpp (see "/tests")
    • use make diff_u_test_make to make diff_unitary.cpp (see "/tests")
    • use make mis_test_make to make mis_test.cpp (see "/tests")

About

The state space analysis of the Boson Sampling Problem

Resources

Stars

Watchers

Forks

Releases

Packages

Used by

Contributors

Languages