1use crate::dimensionality_reduction::{QuantumDistanceMetric, QuantumEnhancementLevel};
4
5#[derive(Debug, Clone, Copy, PartialEq)]
7pub enum ClusteringAlgorithm {
8 QuantumKMeans,
10 QuantumHierarchical,
12 QuantumDBSCAN,
14 QuantumSpectral,
16 QuantumFuzzyCMeans,
18 QuantumGMM,
20 QuantumMeanShift,
22 QuantumAffinityPropagation,
24}
25
26#[derive(Debug, Clone)]
28pub struct QuantumClusteringConfig {
29 pub algorithm: ClusteringAlgorithm,
31 pub n_clusters: usize,
33 pub max_iterations: usize,
35 pub tolerance: f64,
37 pub num_qubits: usize,
39 pub random_state: Option<u64>,
41}
42
43impl Default for QuantumClusteringConfig {
44 fn default() -> Self {
45 Self {
46 algorithm: ClusteringAlgorithm::QuantumKMeans,
47 n_clusters: 3,
48 max_iterations: 100,
49 tolerance: 1e-4,
50 num_qubits: 4,
51 random_state: None,
52 }
53 }
54}
55
56#[derive(Debug, Clone, Copy, PartialEq)]
58pub enum AffinityType {
59 RBF,
61 Linear,
63 Polynomial,
65 QuantumKernel,
67 NearestNeighbors,
69}
70
71#[derive(Debug, Clone, Copy, PartialEq)]
73pub enum CovarianceType {
74 Full,
76 Diagonal,
78 Tied,
80 Spherical,
82 QuantumEnhanced,
84}
85
86#[derive(Debug, Clone, Copy, PartialEq)]
88pub enum EnsembleCombinationMethod {
89 MajorityVoting,
91 WeightedVoting,
93 ConsensusClustering,
95 QuantumConsensus,
97}
98
99#[derive(Debug, Clone, Copy, PartialEq)]
101pub enum MeasurementStrategy {
102 Standard,
104 AdaptiveMeasurements,
106 OptimalMeasurements,
108}
109
110#[derive(Debug, Clone, Copy, PartialEq)]
112pub enum StatePreparationMethod {
113 AngleEncoding,
115 AmplitudeEncoding,
117 VariationalStatePreparation,
119}
120
121#[derive(Debug, Clone, Copy, PartialEq)]
123pub enum EntanglementStructure {
124 Linear,
126 Circular,
128 HardwareEfficient,
130 AllToAll,
132}
133
134#[derive(Debug, Clone, Copy, PartialEq)]
136pub enum GraphMethod {
137 Standard,
139 QuantumGraph,
141 KNearestNeighbors,
143 EpsilonNeighborhood,
145}
146
147#[derive(Debug, Clone, Copy, PartialEq)]
149pub enum CommunityAlgorithm {
150 Modularity,
152 QuantumCommunityDetection,
154 Louvain,
156 LabelPropagation,
158}
159
160#[derive(Debug, Clone, Copy, PartialEq)]
162pub enum TimeSeriesDistanceMetric {
163 DTW,
165 Euclidean,
167 QuantumTemporal,
169}
170
171#[derive(Debug, Clone, Copy, PartialEq)]
173pub enum DimensionalityReduction {
174 PCA,
176 QuantumPCA,
178 TSNE,
180 UMAP,
182}
183
184#[derive(Debug, Clone)]
186pub struct QuantumKMeansConfig {
187 pub n_clusters: usize,
189 pub max_iterations: usize,
191 pub tolerance: f64,
193 pub distance_metric: QuantumDistanceMetric,
195 pub quantum_reps: usize,
197 pub enhancement_level: QuantumEnhancementLevel,
199 pub seed: Option<u64>,
201}
202
203#[derive(Debug, Clone)]
205pub struct QuantumDBSCANConfig {
206 pub eps: f64,
208 pub min_samples: usize,
210 pub distance_metric: QuantumDistanceMetric,
212 pub enhancement_level: QuantumEnhancementLevel,
214 pub seed: Option<u64>,
216}
217
218#[derive(Debug, Clone)]
220pub struct QuantumSpectralConfig {
221 pub n_clusters: usize,
223 pub affinity: AffinityType,
225 pub gamma: f64,
227 pub enhancement_level: QuantumEnhancementLevel,
229 pub seed: Option<u64>,
231}
232
233#[derive(Debug, Clone)]
235pub struct QuantumFuzzyCMeansConfig {
236 pub n_clusters: usize,
238 pub fuzziness: f64,
240 pub max_iterations: usize,
242 pub tolerance: f64,
244 pub distance_metric: QuantumDistanceMetric,
246 pub enhancement_level: QuantumEnhancementLevel,
248 pub seed: Option<u64>,
250}
251
252#[derive(Debug, Clone)]
254pub struct QuantumGMMConfig {
255 pub n_components: usize,
257 pub covariance_type: CovarianceType,
259 pub max_iterations: usize,
261 pub tolerance: f64,
263 pub enhancement_level: QuantumEnhancementLevel,
265 pub seed: Option<u64>,
267}
268
269#[derive(Debug, Clone)]
271pub struct ClusteringEnsembleConfig {
272 pub base_algorithms: Vec<ClusteringAlgorithm>,
274 pub n_members: usize,
276 pub combination_method: EnsembleCombinationMethod,
278 pub seed: Option<u64>,
280}
281
282#[derive(Debug, Clone)]
284pub struct GraphClusteringConfig {
285 pub graph_method: GraphMethod,
287 pub community_algorithm: CommunityAlgorithm,
289 pub n_neighbors: usize,
291 pub enhancement_level: QuantumEnhancementLevel,
293 pub seed: Option<u64>,
295}
296
297#[derive(Debug, Clone)]
299pub struct TimeSeriesClusteringConfig {
300 pub n_clusters: usize,
302 pub ts_distance_metric: TimeSeriesDistanceMetric,
304 pub window_size: usize,
306 pub seed: Option<u64>,
308}
309
310#[derive(Debug, Clone)]
312pub struct HighDimClusteringConfig {
313 pub n_clusters: usize,
315 pub dim_reduction: DimensionalityReduction,
317 pub target_dim: usize,
319 pub seed: Option<u64>,
321}
322
323#[derive(Debug, Clone)]
325pub struct StreamingClusteringConfig {
326 pub n_clusters: usize,
328 pub batch_size: usize,
330 pub memory_size: usize,
332 pub forgetting_factor: f64,
334 pub seed: Option<u64>,
336}
337
338#[derive(Debug, Clone)]
340pub struct QuantumNativeConfig {
341 pub num_qubits: usize,
343 pub circuit_depth: usize,
345 pub state_preparation: StatePreparationMethod,
347 pub measurement_strategy: MeasurementStrategy,
349 pub entanglement_structure: EntanglementStructure,
351 pub seed: Option<u64>,
353}
354
355impl Default for QuantumKMeansConfig {
357 fn default() -> Self {
358 Self {
359 n_clusters: 3,
360 max_iterations: 100,
361 tolerance: 1e-4,
362 distance_metric: QuantumDistanceMetric::QuantumEuclidean,
363 quantum_reps: 2,
364 enhancement_level: QuantumEnhancementLevel::Moderate,
365 seed: None,
366 }
367 }
368}
369
370impl Default for QuantumDBSCANConfig {
371 fn default() -> Self {
372 Self {
373 eps: 0.5,
374 min_samples: 5,
375 distance_metric: QuantumDistanceMetric::QuantumEuclidean,
376 enhancement_level: QuantumEnhancementLevel::Moderate,
377 seed: None,
378 }
379 }
380}
381
382impl Default for QuantumSpectralConfig {
383 fn default() -> Self {
384 Self {
385 n_clusters: 3,
386 affinity: AffinityType::RBF,
387 gamma: 1.0,
388 enhancement_level: QuantumEnhancementLevel::Moderate,
389 seed: None,
390 }
391 }
392}
393
394impl Default for QuantumFuzzyCMeansConfig {
395 fn default() -> Self {
396 Self {
397 n_clusters: 3,
398 fuzziness: 2.0,
399 max_iterations: 100,
400 tolerance: 1e-4,
401 distance_metric: QuantumDistanceMetric::QuantumEuclidean,
402 enhancement_level: QuantumEnhancementLevel::Moderate,
403 seed: None,
404 }
405 }
406}
407
408impl Default for QuantumGMMConfig {
409 fn default() -> Self {
410 Self {
411 n_components: 3,
412 covariance_type: CovarianceType::Full,
413 max_iterations: 100,
414 tolerance: 1e-4,
415 enhancement_level: QuantumEnhancementLevel::Moderate,
416 seed: None,
417 }
418 }
419}