## Superposition and Measurement

A qubit register state of $n$ qubits can be thought of as a complex vector space:

Scotty uses this idea to represent the superposition of all qubit states by introducing a trait called `Superposition`

. It extends `State`

and declares an array of complex numbers with several helpers like `qubitCount`

, `probabilities`

to get a sequence of probabilities for each possible state, and `applyGate`

to apply a gate to the current state.

The `State`

trait itself references a `QubitRegister`

, which is a convenience for the user if they need to get the original state quickly or map qubit labels to the current superposition or the final collapsed state.

Each value in the superposition vector represents a probability for a given state. For example, if you have a vector representing the state of three qubits then the first vector value represents the probability of $\lvert000\rangle$, the second $\lvert001\rangle$…all the way up to $\lvert111\rangle$. In this case there is a total of $2^{3} = 8$ states.

Another possible `State`

is `Collapsed`

, which represents a collapsed state—duh! `Collapsed`

has properties for the original qubit count and the index of the collapsed probability from `Superposition`

. Since the index can be represented as a binary number it’s trivial to generate an actual list of classical bits. For example, index 6 corresponds to the binary number 110, which represents state $\lvert110\rangle$.

Classical bits are represented by a sum type `Bit`

that has two members `One`

and `Zero`

. If your original qubits had labels then the final bits will preserve those labels.

`Collapsed`

can be converted to `BinaryRegister`

, which is a helper container with `Bit`

values representing a collapsed state that maps classical bits directly to the original `QubitRegister`

qubits.

There are two ways to make a measurement and collapse the superposition. The first is to use the `runAndMeasure`

method of `QuantumContext`

. It will run the whole circuit, make a probabilistic measurement of the superposition, and return a collapsed state. The second way is to use the `Measure`

operation that we’ll cover in more detail in the next section.

- Getting Started
- Quantum Context and Simulator
- Circuits and Qubits
- Superposition and Measurement
- Operations
- Standard Gates
- Modifiers and Custom Gates
- State Readers