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) -> Self
pub fn new(num_qubits: usize) -> Self
Create a new empty Ising model with the specified number of qubits
Sourcepub fn set_bias(&mut self, qubit: usize, bias: f64) -> IsingResult<()>
pub fn set_bias(&mut self, qubit: usize, bias: f64) -> IsingResult<()>
Set the bias (h_i) for a specific qubit
Sourcepub fn get_bias(&self, qubit: usize) -> IsingResult<f64>
pub fn get_bias(&self, qubit: usize) -> IsingResult<f64>
Get the bias (h_i) for a specific qubit
Sourcepub fn set_coupling(
&mut self,
i: usize,
j: usize,
strength: f64,
) -> IsingResult<()>
pub fn set_coupling( &mut self, i: usize, j: usize, strength: f64, ) -> IsingResult<()>
Set the coupling strength (J_ij) between two qubits
Sourcepub fn get_coupling(&self, i: usize, j: usize) -> IsingResult<f64>
pub fn get_coupling(&self, i: usize, j: usize) -> IsingResult<f64>
Get the coupling strength (J_ij) between two qubits
Sourcepub fn energy(&self, spins: &[i8]) -> IsingResult<f64>
pub fn energy(&self, spins: &[i8]) -> IsingResult<f64>
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
Trait Implementations§
Source§impl Clone for IsingModel
impl Clone for IsingModel
Source§fn clone(&self) -> IsingModel
fn clone(&self) -> IsingModel
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for IsingModel
impl Debug for 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
Mutably borrows from an owned value. Read more
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>
Converts
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>
Converts
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>
The inverse inclusion map: attempts to construct
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
Checks if
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
Use with care! Same as
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
The inclusion map: converts
self to the equivalent element of its superset.