|
| 1 | +# Query Complexity Framework |
| 2 | +The following is a simple framework for the empirical exploration of |
| 3 | +query complexity questions. |
| 4 | + |
| 5 | +The project consists of an abstract framework for programatically |
| 6 | +analyzing query complexity functions, and provides a number of example |
| 7 | +instantiations of the framework on a few generalizations of GPW to 3D. |
| 8 | + |
| 9 | + |
| 10 | +## Project structure |
| 11 | +``` |
| 12 | +. |
| 13 | +|-- dune |
| 14 | +|-- dune-project |
| 15 | +|-- gpw.ml |
| 16 | +|-- majority_gpw.ml |
| 17 | +|-- majority_alg.ml |
| 18 | +|-- generalized_gpw.ml |
| 19 | +|-- utils.ml |
| 20 | +|-- main.ml |
| 21 | +`-- readme.md |
| 22 | +``` |
| 23 | + |
| 24 | +The framework is logically decomposed into small modular reusable |
| 25 | +components by file: |
| 26 | +- `gpw.ml` - Defines the abstract interface of a query complexity |
| 27 | + problem generator - any such component should provide functions to |
| 28 | + generate true, false and random values. |
| 29 | +- `majority_gpw.ml` - Implementation of a problem generator for an |
| 30 | + extension of the Göös-Pitassi-Watson function to 3D by taking |
| 31 | + the majority of multiple instances of 2D GPW on seperate planes. |
| 32 | +- `majority_alg.ml` - Implementation of a solver algorithm for |
| 33 | + majority GPW, implementing Muks et al.'s 1-sided GPW solution |
| 34 | + strategy internally for each plane. |
| 35 | +- `generalized_gpw.ml` - Implementation of a problem generator for an |
| 36 | + extension of the Göös-Pitassi-Watson function to 3D by replacing columns |
| 37 | + with sub-cubes of the input instead. |
| 38 | +- `utils.ml` - Utility functions used throughout the project |
| 39 | +- `main.ml` - Example instantiations of the framework to run some experiments |
| 40 | + |
| 41 | +## Requirements |
| 42 | +In order to run this project, you must have OCaml installed (version `>= 4.09.0`) |
| 43 | +with opam, and the following packages installed: |
| 44 | +- `core` |
| 45 | +- `gnuplot` |
| 46 | + |
| 47 | +## Running |
| 48 | +To run the sample experiments, simply run the following from the project root: |
| 49 | +``` |
| 50 | +dune exec ./main.exe |
| 51 | +``` |
0 commit comments