Get nodes with max degree first
This commit is contained in:
parent
9ec5e10c0b
commit
67fcde4309
1 changed files with 7 additions and 6 deletions
|
|
@ -77,10 +77,11 @@ impl Graph {
|
||||||
self.vertices[(self.vertices.len() - n)..].iter()
|
self.vertices[(self.vertices.len() - n)..].iter()
|
||||||
}
|
}
|
||||||
|
|
||||||
fn get_vertex_with_degree_greater(&self, min_degree: u16) -> Option<u16> {
|
fn get_vertex_with_max_degree_greater_equal(&self, min_degree: u16) -> Option<u16> {
|
||||||
self.vertices
|
self.vertices
|
||||||
.iter()
|
.iter()
|
||||||
.find(|&v| v.edges.len() >= min_degree as usize)
|
.max_by_key(|&v| v.edges.len())
|
||||||
|
.filter(|&v| v.edges.len() >= min_degree as usize)
|
||||||
.map(|v| v.name)
|
.map(|v| v.name)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -107,12 +108,12 @@ impl Graph {
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn binary_vertex(graph: &mut Graph, k: u16) -> Option<Vec<u16>> {
|
pub fn binary_vertex(graph: &mut Graph, k: u16) -> Option<Vec<u16>> {
|
||||||
let vertex = match graph.get_vertex_with_degree_greater(2) {
|
let vertex = match graph.get_vertex_with_max_degree_greater_equal(2) {
|
||||||
Some(vertex) => vertex,
|
Some(vertex) => vertex,
|
||||||
None => {
|
None => {
|
||||||
return {
|
return {
|
||||||
let mut c = 0;
|
let mut c = 0;
|
||||||
while let Some(vertex) = graph.get_vertex_with_degree_greater(1) {
|
while let Some(vertex) = graph.get_vertex_with_max_degree_greater_equal(1) {
|
||||||
graph.remove_vertex(vertex);
|
graph.remove_vertex(vertex);
|
||||||
c += 1;
|
c += 1;
|
||||||
}
|
}
|
||||||
|
|
@ -195,7 +196,7 @@ pub fn reduction(graph: &mut Graph, k: u16) -> Option<Vec<u16>> {
|
||||||
}
|
}
|
||||||
|
|
||||||
r
|
r
|
||||||
} else if let Some(vertex) = graph.get_vertex_with_degree_greater(2) {
|
} else if let Some(vertex) = graph.get_vertex_with_max_degree_greater_equal(2) {
|
||||||
graph.remove_vertex(vertex);
|
graph.remove_vertex(vertex);
|
||||||
|
|
||||||
match reduction(graph, k - 1) {
|
match reduction(graph, k - 1) {
|
||||||
|
|
@ -347,7 +348,7 @@ pub fn reduction2(graph: &mut Graph, k: u16) -> Option<Vec<u16>> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if let Some(vertex) = graph.get_vertex_with_degree_greater(3) {
|
} else if let Some(vertex) = graph.get_vertex_with_max_degree_greater_equal(3) {
|
||||||
if k < 1 {
|
if k < 1 {
|
||||||
return None;
|
return None;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue