A method, performed by a computer system having one or more processors and memory storing instructions for execution on the one or more processors, for parallel searching of probe data in a database of target data, the method comprising:
- storing, as first data at a location within the memory, a first probe data representation expressed in a first orthogonal domain, wherein the first probe data representation is characterized by a length;
- storing, as second data in the memory, a first target data representation expressed in the first orthogonal domain, wherein the first target data includes a plurality of potential probe match data each characterized by the length;
- transforming the first probe data representation and the first target data representation into a second orthogonal domain to produce a second probe data representation and a second target data representation, respectively, wherein transforming the first probe data representation and the first target data representation into the second orthogonal domain comprises applying a first orthogonal domain unitary transform to the first probe data representation and the first target data representation, respectively, wherein the second orthogonal domain is expressible using a basis set that is orthogonal to a basis set of the first orthogonal domain;
- storing the second probe data representation in the memory;
- encoding the second target data representation with a first plurality of modulation functions in the second orthogonal domain, each of the first plurality of modulation functions having an integer position index corresponding to one of the potential probe match data and a respective phase rotation, thereby producing a first plurality of encoded second target data representations encoded at different phase rotations;
- superimposing the first plurality of encoded second target data representations to produce a superposition of the first plurality of encoded second target data representations;
- storing the superposition of the first plurality of encoded second target data representations in the memory;
- encoding the second target data representation with a second plurality of modulation functions in the second orthogonal domain, thereby producing a second plurality of encoded second target data representations, wherein each modulation function in the first plurality of modulation functions has a positive integer position index and corresponds to a modulation function in the second plurality of modulation functions that has a negative integer position index with the same magnitude as the positive integer position index;
- superimposing the second plurality of encoded second target data representations to produce a superposition of the second plurality of encoded second target data representations;
- storing the superposition of the second plurality of encoded second target data representations in memory;
- creating a plurality of program instances, each of which retrieves from memory a different combination of the stored second probe representation and the pair comprising the stored superposition of the first plurality of encoded second target data representations and the stored superposition of the second plurality of encoded second target data representations;
- interfering the superposition of the first plurality of encoded second target data representations with the second probe data representation to produce a first set of one or more interfered data representations;
- interfering the superposition of the second plurality of encoded second target data representations with the second probe data representation to produce a second set of one or more corresponding interfered data representations;
- combining each interfered data representation in the first set with a conjugate of the corresponding interfered data representation in the second set;
- obtaining an inverse transform result characterizing a respective integer position index from a respective interfered data representation, wherein the inverse transform result is obtained from the combination of the interfered data representation in the first set and the corresponding conjugate interfered data representation in the second set;
- determining whether the inverse transform result exceeds a predefined threshold;
- and
- in accordance with a determination that the inverse transform result exceeds the predefined threshold, outputting, as the location in the memory where the first probe data is stored, the respective integer position index.