The team at 1QBit is focused on the development of novel methods that form the foundation of quantum software development. The 1QBit quantum-ready software development kit enables rapid and systematic development of higher-level software by leveraging the best known methods for interacting with quantum hardware.
Today's quantum computers are special-purpose processors focused on efficiently solving optimization problems using methods drastically different compared to those used by classical computers. When used as a coprocessor, quantum computation presents opportunities to develop new methods for solving optimization, sampling, and machine learning problems.
Managing low-level interactions of independent hardware systems to harness multiple solvers within a single application is highly complex and resource intensive. Interfacing with both quantum and classical processors requires a set of expertise that differs from the highly specialized skills needed to address modern optimization problems, working with large data sets, and machine learning.
1QBit's SDK is a software development kit that provides a unified way to enable people familiar with standard software development environments to build quantum-ready applications that can solve computationally hard optimization problems using a scalable set of classical and quantum solvers.
1QBit’s SDK allows traditional software developers to effortlessly harness quantum computation by building quantum-ready applications without having to learn new languages or become experts in quantum processor design.
New heuristics and solvers are continually integrated into 1QBit's SDK. This enables applications built on top of it to benefit from the latest advances in quantum software development methods without necessitating the arduous process of application refactoring.
The high-level tools included within the SDK are abstracted from the specifics of quantum hardware and are written in both C++ and Python. This allows applications written using the SDK to automatically evolve with advances in quantum processors and improvements in quantum algorithm implementation.
While the SDK provides access to high-level functions spanning a wide range of problems, it also allows developers to dive into quantum machine code and construct new functions from the ground up by interfacing with quantum hardware at the lowest levels.
1QBit’s model is based on the efficient reduction of targeted problems into the native language of quantum processors. Current-generation quantum processors are designed to solve quadratic unconstrained binary optimization (QUBO) problems. The SDK includes a set of tools that help formulate familiar optimization problems in the QUBO format. Once a problem is expressed in QUBO form, the SDK facilitates solving the problem using highly optimized QUBO solvers and mapping the result back to the original problem format. Multiple classical QUBO solvers are provided within the SDK, as well as a native interface to external quantum computing processors which specialize in solving QUBO problems.
The SDK has three main components: the Common Solver Interface, Binary Polynomials, and Algorithms layers. The Common Solver Interface and Binary Polynomials layers can be used to implement new algorithms. Efficient implementations of multiple well known and frequently used algorithms are provided in the Algorithms layer.
For advanced users, the SDK’s modular design allows for customizability at any layer, from the algorithms to the binary polynomials to the underlying solvers. This enables users to customize 1QBit’s pre-developed functions or develop and integrate new entirely new algorithms within the robust SDK framework.
At the highest level of abstraction, users need to understand only high-level algorithms to use 1QBit's quantum-ready software development kit.
An easy-to-use mechanism for algorithm developers to transform problems into polynomial form before being sent to the Common Solver Interface layer.
A common interface to the quantum hardware and classical QUBO solvers. The solver can be switched at any time, while leaving the application-level code intact.
The Minimum K-Cut Partitioning algorithm partitions the vertex set of a graph into k non-empty and fixed-size subsets such that the total weight of edges connecting distinct subsets (edge cut) is minimized. This algorithm has applications in parallel computing and VLSI design.
The Coloring algorithm checks whether a graph can be coloured using k colours. That means finding a mapping of k colours to the nodes of a graph such that no two adjacent nodes have the same colour and all of the nodes are coloured. Both the decision and optimization versions of this algorithm are included in the SDK. This algorithm has applications in airline scheduling and bandwidth allocation.
A clique in a graph is a subgraph in which every node is connected to every other node. A k-plex is a subgraph that relaxes this definition; each node in a k-plex can be disconnected from up to k other nodes in the k-plex. The Maximum K-Plex algorithm finds the largest k-plex in a graph. This algorithm has applications in areas such as social network analysis.
The Clique Cover algorithm determines if the vertices of a graph can be partitioned into k cliques. 1QBit's SDK includes both the decision and optimization versions of the algorithm. This algorithm has applications in computational biology and the semiconductor industry.
The Knapsack algorithm solves the classic linear knapsack problem. The objective of the optimization is to choose a subset of items each with a weight and a value such that the total value is maximized while the total weight does not exceed a certain capacity. This algorithm has many applications, including the selection of investments, budget control, and cargo loading.
The Quasi-K-Clique algorithm finds the maximum number of nodes in a graph for which the vertex-induced subgraph is missing only k edges. This algorithm has applications in areas such as community detection and financial engineering.
This algorithm finds the maximum co-k-plex in a graph. For an input graph G, we call a subset of vertices a co-k-plex if the vertex-induced subgraph has a maximum degree of k. In other words, S is a co-k-plex in G if and only if S is a k-plex in the complement graph of G.
The Graph Similarity algorithm finds the common substructures in two graphs and provides a similarity measure based on these substructures. It has been implemented using the Co-K-Plex algorithm in 1QBit's SDK. The Graph Similarity algorithm has applications in anomaly detection and machine learning methods for molecular classification.
This module automates the process of transforming a higher order polynomial into a quadratic polynomial.
There is a linear transformation from a QUBO formulation to an Ising model and vice versa. The Ising model is the actual problem that gets solved by the quantum computing processor. The transformation between the QUBO formulation and the Ising model is provided by this component.
Operations like adding, multiplying, and exponentiating are provided in the binary polynomial layer. These are useful tools when creating the QUBO formulation that is going to be sent to the Common Solver Interface layer.
This component is a heuristic QUBO solver that provides the same interface as the one provided by D-Wave. It is able to solve QUBO problems with many more variables compared to problems current quantum computing hardware can handle. Although it cannot guarantee the optimality of the solution, heuristic approaches like this are currently used with classical computers to solve problems that will be solvable using quantum processors.
This component is an exhaustive exact QUBO solver. The solver provides the same interface as the one provided by D-Wave. Since it is an exact solver, it can be used to verify the correctness of problem modelling.
This component is a software wrapper that connects to D-Wave’s quantum computing processor. It is meant to abstract away the complexities of directly interfacing with the hardware. This component makes use of helper modules to achieve simplicity and provide an easy-to-use interface.
Embedding is an extremely complex problem that needs to be solved every time a QUBO problem is going to be solved on a quantum computing processor. This module provides users with pre-calculated general embeddings so that they do not have to solve the embedding problem each time.
This component allows users to reuse their previously calculated embeddings to speed up the embedding process.
This component provides user-friendly statistics and information about the status of the quantum processing chip and the architecture.
The quantum-ready software development kit and accompanying documentation provide the tools necessary for users to solve optimization, simulation, and machine learning problems by creating quantum-ready applications. 1QBit's SDK is frequently updated and maintained by our interdisciplinary team, while the detailed documentation is both a technical guide for the SDK and a set of detailed tutorials to facilitate the rapid adoption of quantum hardware.
Explore a limited version of 1QBit’s quantum-ready software development kit prior to the beta release. We have developed tutorials and sample documentation for use alongside an interactive Jupyter Notebook to demonstrate how the components of the SDK work and to spark ideas about what problems will be addressable using 1QBit's quantum-ready SDK.
Prior to its public release, 1QBit will make the quantum-ready software development kit available to partner organizations, specialist communities, industry experts, and universities for them to begin exploring the world of software development for quantum computing through a private beta.
“Quantum computing will disrupt finance in ways not seen since the introduction of algorithmic trading. As with every disruption, there will be a few winners and many losers. 1QBit offers the best platform and services to avoid your company being left behind.”