icentral_subgraph/
muc_update_parent.rs1crate::ix!();
2
3pub trait MucUpdateParent {
4
5 fn muc_update_parent(&mut self,
6 parent: NodeId,
7 v_n: NodeId,
8 source: NodeId,
9 tmp_conn_vertex_map: &ConnVertexMap,
10 scores: &mut BetweennessScores);
11}
12
13impl MucUpdateParent for SubGraph {
14
15 fn muc_update_parent(&mut self,
16 parent: NodeId,
17 v_n: NodeId,
18 source: NodeId,
19 tmp_conn_vertex_map: &ConnVertexMap,
20 scores: &mut BetweennessScores)
21 {
22 let sp_sn = self.path_count_ratio(parent,v_n);
23
24 self.update_pair_dependencies(parent,v_n);
25
26 let new_sp_sn = self.new_path_counts_path_count_ratio(parent,v_n);
27
28 self.update_new_pair_dependencies(parent,v_n);
29
30 if tmp_conn_vertex_map.has_mapping_for_node(source) {
31
32 self.update_all_sigmas(parent,v_n);
33
34 let new_parent: NodeId = self.label_map_inout(parent);
35
36 let new_val = {
37 let map_val = scores.score_for_node(new_parent);
38 let sigma_n = self.sigma_value_for_node(v_n);
39 map_val - sigma_n * sp_sn / 2.0
40 };
41
42 scores.set_score_for_node(
43 new_parent,
44 new_val
45 );
46
47 let new_val = {
48 let map_val = scores.score_for_node(new_parent);
49 let sigma_n = self.new_sigmas_sigma_value_for_node(v_n);
50 map_val + sigma_n * new_sp_sn / 2.0
51 };
52
53 scores.set_score_for_node(new_parent, new_val);
54 }
55 }
56}