pub struct QuantumClusterer { /* private fields */ }Expand description
Quantum-Inspired Clustering Algorithm
This structure implements a quantum-enhanced version of k-means clustering that uses quantum superposition for centroid representation and quantum interference effects to improve convergence. The algorithm maintains both classical and quantum representations of cluster centroids.
§Features
- Quantum superposition for exploring multiple centroid configurations
- Quantum interference effects for enhanced convergence
- Quantum-enhanced distance calculations
- Configurable quantum circuit depth and superposition states
§Example
use scirs2_core::ndarray::Array2;
use scirs2_spatial::quantum_inspired::algorithms::QuantumClusterer;
let points = Array2::from_shape_vec((6, 2), vec![
0.0, 0.0, 1.0, 0.0, 0.0, 1.0,
5.0, 5.0, 6.0, 5.0, 5.0, 6.0
]).unwrap();
let mut clusterer = QuantumClusterer::new(2)
.with_quantum_depth(4)
.with_superposition_states(16)
.with_max_iterations(50);
let (centroids, assignments) = clusterer.fit(&points.view()).unwrap();Implementations§
Source§impl QuantumClusterer
impl QuantumClusterer
Sourcepub fn with_quantum_depth(self, depth: usize) -> Self
pub fn with_quantum_depth(self, depth: usize) -> Self
Configure quantum circuit depth
Higher depth allows for more complex quantum operations but increases computational cost. Typical values range from 3-10.
§Arguments
depth- Quantum circuit depth
Sourcepub fn with_superposition_states(self, states: usize) -> Self
pub fn with_superposition_states(self, states: usize) -> Self
Configure superposition states
Number of quantum superposition states to maintain during clustering. More states provide better exploration but increase memory usage.
§Arguments
states- Number of superposition states
Sourcepub fn with_max_iterations(self, max_iter: usize) -> Self
pub fn with_max_iterations(self, max_iter: usize) -> Self
Configure maximum iterations
Maximum number of iterations for the quantum clustering algorithm.
§Arguments
max_iter- Maximum number of iterations
Sourcepub fn with_tolerance(self, tolerance: f64) -> Self
pub fn with_tolerance(self, tolerance: f64) -> Self
Configure convergence tolerance
Algorithm stops when the change in cost function is below this threshold.
§Arguments
tolerance- Convergence tolerance
Sourcepub fn fit(
&mut self,
points: &ArrayView2<'_, f64>,
) -> SpatialResult<(Array2<f64>, Array1<usize>)>
pub fn fit( &mut self, points: &ArrayView2<'_, f64>, ) -> SpatialResult<(Array2<f64>, Array1<usize>)>
Fit quantum clustering to data points
Performs quantum-enhanced k-means clustering on the input points. Returns cluster centroids and point assignments.
§Arguments
points- Input points to cluster (n_points × n_dims)
§Returns
Tuple of (centroids, assignments) where:
- centroids: Array of cluster centers (num_clusters × n_dims)
- assignments: Cluster assignment for each point (n_points,)
§Errors
Returns error if number of points is less than number of clusters
Sourcepub fn predict(
&self,
points: &ArrayView2<'_, f64>,
) -> SpatialResult<Array1<usize>>
pub fn predict( &self, points: &ArrayView2<'_, f64>, ) -> SpatialResult<Array1<usize>>
Sourcepub fn num_clusters(&self) -> usize
pub fn num_clusters(&self) -> usize
Get number of clusters
Sourcepub fn quantum_depth(&self) -> usize
pub fn quantum_depth(&self) -> usize
Get quantum circuit depth
Sourcepub fn superposition_states(&self) -> usize
pub fn superposition_states(&self) -> usize
Get number of superposition states
Sourcepub fn quantum_state(&self) -> Option<&QuantumState>
pub fn quantum_state(&self) -> Option<&QuantumState>
Get the quantum centroid state (if fitted)
Trait Implementations§
Source§impl Clone for QuantumClusterer
impl Clone for QuantumClusterer
Source§fn clone(&self) -> QuantumClusterer
fn clone(&self) -> QuantumClusterer
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreAuto Trait Implementations§
impl Freeze for QuantumClusterer
impl RefUnwindSafe for QuantumClusterer
impl Send for QuantumClusterer
impl Sync for QuantumClusterer
impl Unpin for QuantumClusterer
impl UnwindSafe for QuantumClusterer
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.