-
Notifications
You must be signed in to change notification settings - Fork 8
/
base_initialstate.py
69 lines (53 loc) · 2.06 KB
/
base_initialstate.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
from abc import ABC, abstractmethod
class BaseInitialState(ABC):
"""
Base class for defining initial quantum states.
This is an abstract base class (ABC) that defines the basic structure of
initial quantum states. Subclasses must implement the `create_circuit`
method to create a quantum circuit for the specific initial state.
Attributes:
circuit (QuantumCircuit): The quantum circuit representing the initial state.
N_qubits (int): The number of qubits in the quantum circuit.
"""
def __init__(self) -> None:
"""
Initializes a BaseInitialState object.
The `circuit` attribute is set to None initially, and `N_qubits`
is not defined until `setNumQubits` is called.
"""
self.circuit = None
def setNumQubits(self, n):
"""
Set the number of qubits for the quantum circuit.
Args:
n (int): The number of qubits to set.
"""
self.N_qubits = n
class InitialState(BaseInitialState):
"""
Abstract subclass for defining specific initial quantum states.
This abstract subclass of `BaseInitialState` is meant for defining
concrete initial quantum states. Subclasses of `InitialState` must
implement the `create_circuit` method to create a quantum circuit
representing the specific initial state.
Note:
Subclasses of `InitialState` must provide an implementation
for the `create_circuit` method.
Example:
```python
class MyInitialState(InitialState):
def create_circuit(self):
# Define the quantum circuit for a custom initial state.
...
```
"""
@abstractmethod
def create_circuit(self):
"""
Abstract method to create the quantum circuit for the initial state.
Subclasses must implement this method to define the quantum circuit
for the specific initial state they represent.
Raises:
NotImplementedError: This method must be implemented by subclasses.
"""
pass