1use super::*;
4
5#[derive(Debug, Clone, Serialize, Deserialize)]
7pub struct SciRS2MappingResult {
8 pub initial_mapping: HashMap<usize, usize>,
10 pub final_mapping: HashMap<usize, usize>,
12 pub swap_operations: Vec<SwapOperation>,
14 pub graph_analysis: GraphAnalysisResult,
16 pub spectral_analysis: Option<SpectralAnalysisResult>,
18 pub community_analysis: CommunityAnalysisResult,
20 pub centrality_analysis: CentralityAnalysisResult,
22 pub optimization_metrics: OptimizationMetrics,
24 pub performance_predictions: Option<PerformancePredictions>,
26 pub realtime_analytics: RealtimeAnalyticsResult,
28 pub ml_performance: Option<MLPerformanceResult>,
30 pub adaptive_insights: AdaptiveMappingInsights,
32 pub optimization_recommendations: OptimizationRecommendations,
34}
35
36#[derive(Debug, Clone, Serialize, Deserialize)]
38pub struct GraphAnalysisResult {
39 pub density: f64,
41 pub clustering_coefficient: f64,
43 pub diameter: usize,
45 pub radius: usize,
47 pub average_path_length: f64,
49 pub connectivity_stats: ConnectivityStats,
51 pub topological_properties: TopologicalProperties,
53}
54
55#[derive(Debug, Clone, Serialize, Deserialize)]
57pub struct SpectralAnalysisResult {
58 pub laplacian_eigenvalues: Array1<f64>,
60 pub embedding_vectors: Array2<f64>,
62 pub spectral_radius: f64,
64 pub algebraic_connectivity: f64,
66 pub spectral_gap: f64,
68 pub embedding_quality: EmbeddingQuality,
70}
71
72#[derive(Debug, Clone, Serialize, Deserialize)]
74pub struct CommunityAnalysisResult {
75 pub communities: HashMap<usize, usize>,
77 pub modularity: f64,
79 pub num_communities: usize,
81 pub community_sizes: Vec<usize>,
83 pub inter_community_edges: usize,
85 pub quality_metrics: CommunityQualityMetrics,
87}
88
89#[derive(Debug, Clone, Serialize, Deserialize)]
91pub struct CentralityAnalysisResult {
92 pub betweenness_centrality: HashMap<usize, f64>,
94 pub closeness_centrality: HashMap<usize, f64>,
96 pub eigenvector_centrality: HashMap<usize, f64>,
98 pub pagerank_centrality: HashMap<usize, f64>,
100 pub centrality_correlations: Array2<f64>,
102 pub centrality_statistics: CentralityStatistics,
104}
105
106#[derive(Debug, Clone, Serialize, Deserialize)]
108pub struct ConnectivityStats {
109 pub edge_connectivity: usize,
111 pub vertex_connectivity: usize,
113 pub algebraic_connectivity: f64,
115 pub is_connected: bool,
117 pub num_components: usize,
119 pub largest_component_size: usize,
121}
122
123#[derive(Debug, Clone, Serialize, Deserialize)]
125pub struct TopologicalProperties {
126 pub is_planar: bool,
128 pub is_bipartite: bool,
130 pub is_tree: bool,
132 pub is_forest: bool,
134 pub has_cycles: bool,
136 pub girth: usize,
138 pub chromatic_number: usize,
140 pub independence_number: usize,
142}
143
144#[derive(Debug, Clone, Serialize, Deserialize)]
146pub struct EmbeddingQuality {
147 pub stress: f64,
149 pub distortion: f64,
151 pub preservation_ratio: f64,
153 pub embedding_dimension: usize,
155}
156
157#[derive(Debug, Clone, Serialize, Deserialize)]
159pub struct CommunityQualityMetrics {
160 pub silhouette_score: f64,
162 pub conductance: f64,
164 pub coverage: f64,
166 pub performance: f64,
168}
169
170#[derive(Debug, Clone, Serialize, Deserialize)]
172pub struct CentralityStatistics {
173 pub max_betweenness: f64,
175 pub max_closeness: f64,
177 pub max_eigenvector: f64,
179 pub max_pagerank: f64,
181 pub mean_betweenness: f64,
183 pub mean_closeness: f64,
185 pub mean_eigenvector: f64,
187 pub mean_pagerank: f64,
189}
190
191#[derive(Debug, Clone, Serialize, Deserialize)]
193pub struct PathAnalysisResult {
194 pub distance_matrix: Array2<f64>,
196 pub efficiency_measures: EfficiencyMeasures,
198 pub routing_quality: RoutingQualityMetrics,
200}
201
202#[derive(Debug, Clone, Serialize, Deserialize)]
204pub struct EfficiencyMeasures {
205 pub global_efficiency: f64,
207 pub local_efficiency: f64,
209 pub average_efficiency: f64,
211 pub efficiency_distribution: Vec<f64>,
213}
214
215#[derive(Debug, Clone, Serialize, Deserialize)]
217pub struct RoutingQualityMetrics {
218 pub average_path_length: f64,
220 pub path_length_distribution: HashMap<usize, usize>,
222 pub routing_overhead: f64,
224 pub load_balancing_index: f64,
226}
227
228#[derive(Debug, Clone, Serialize, Deserialize)]
230pub struct FlowAnalysisResult {
231 pub max_flows: HashMap<(usize, usize), f64>,
233 pub min_cuts: Vec<MinCutResult>,
235 pub bottlenecks: Vec<BottleneckInfo>,
237 pub flow_metrics: FlowMetrics,
239}
240
241#[derive(Debug, Clone, Serialize, Deserialize)]
243pub struct MinCutResult {
244 pub source_sink: (usize, usize),
246 pub cut_value: f64,
248 pub cut_edges: Vec<(usize, usize)>,
250 pub partition: (Vec<usize>, Vec<usize>),
252}
253
254#[derive(Debug, Clone, Serialize, Deserialize)]
256pub struct BottleneckInfo {
257 pub location: BottleneckLocation,
259 pub severity: f64,
261 pub flow_impact: f64,
263 pub improvement_suggestions: Vec<String>,
265}
266
267#[derive(Debug, Clone, Serialize, Deserialize)]
269pub enum BottleneckLocation {
270 Edge(usize, usize),
271 Node(usize),
272 Region(Vec<usize>),
273}
274
275#[derive(Debug, Clone, Serialize, Deserialize)]
277pub struct FlowMetrics {
278 pub total_capacity: f64,
280 pub utilized_capacity: f64,
282 pub utilization_efficiency: f64,
284 pub flow_entropy: f64,
286}