pub struct IsingModel {
pub num_qubits: usize,
/* private fields */
}Expand description
Represents an Ising model for quantum annealing
The Ising model is defined by:
H = Σ h_i σ_i^z + Σ J_ij σ_i^z σ_j^z
where:
h_iare the local fields (biases)J_ijare the coupling strengthsσ_i^zare the Pauli Z operators
Fields§
§num_qubits: usizeNumber of qubits/spins in the model
Implementations§
Source§impl IsingModel
impl IsingModel
Sourcepub fn new(num_qubits: usize) -> IsingModel
pub fn new(num_qubits: usize) -> IsingModel
Create a new empty Ising model with the specified number of qubits
Sourcepub fn set_bias(&mut self, qubit: usize, bias: f64) -> Result<(), IsingError>
pub fn set_bias(&mut self, qubit: usize, bias: f64) -> Result<(), IsingError>
Set the bias (h_i) for a specific qubit
Sourcepub fn get_bias(&self, qubit: usize) -> Result<f64, IsingError>
pub fn get_bias(&self, qubit: usize) -> Result<f64, IsingError>
Get the bias (h_i) for a specific qubit
Sourcepub fn set_coupling(
&mut self,
i: usize,
j: usize,
strength: f64,
) -> Result<(), IsingError>
pub fn set_coupling( &mut self, i: usize, j: usize, strength: f64, ) -> Result<(), IsingError>
Set the coupling strength (J_ij) between two qubits
Sourcepub fn get_coupling(&self, i: usize, j: usize) -> Result<f64, IsingError>
pub fn get_coupling(&self, i: usize, j: usize) -> Result<f64, IsingError>
Get the coupling strength (J_ij) between two qubits
Sourcepub fn energy(&self, spins: &[i8]) -> Result<f64, IsingError>
pub fn energy(&self, spins: &[i8]) -> Result<f64, IsingError>
Calculate the energy of a specific spin configuration
The energy is calculated as:
E = Σ h_i s_i + Σ J_ij s_i s_j
where s_i ∈ {-1, +1} are the spin values
Sourcepub fn to_qubo(&self) -> QuboModel
pub fn to_qubo(&self) -> QuboModel
Convert the Ising model to QUBO format
The QUBO form is:
E = Σ Q_ii x_i + Σ Q_ij x_i x_j
where x_i ∈ {0, 1} are binary variables
Sourcepub fn from_qubo(qubo: &QuboModel) -> IsingModel
pub fn from_qubo(qubo: &QuboModel) -> IsingModel
Create an Ising model from a QUBO model
Trait Implementations§
Source§impl Clone for IsingModel
impl Clone for IsingModel
Source§fn clone(&self) -> IsingModel
fn clone(&self) -> IsingModel
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for IsingModel
impl Debug for IsingModel
Source§impl Default for IsingModel
Default implementation for IsingModel creates an empty model with 0 qubits
impl Default for IsingModel
Default implementation for IsingModel creates an empty model with 0 qubits
Source§fn default() -> IsingModel
fn default() -> IsingModel
Auto Trait Implementations§
impl Freeze for IsingModel
impl RefUnwindSafe for IsingModel
impl Send for IsingModel
impl Sync for IsingModel
impl Unpin for IsingModel
impl UnwindSafe for IsingModel
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self to the equivalent element of its superset.