From 1a7ddb223150f49cb89ffc5d8f242441a63eadb8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Fuhry?= Date: Thu, 1 Jun 2023 12:38:55 +0200 Subject: [PATCH] a bit better --- src/graph.rs | 66 ++++++++++++++++++++++++++-------------------------- 1 file changed, 33 insertions(+), 33 deletions(-) diff --git a/src/graph.rs b/src/graph.rs index 1a8ab17..a6ee20f 100644 --- a/src/graph.rs +++ b/src/graph.rs @@ -4,25 +4,25 @@ pub fn calculate_distanz_matrix(adjazenz_matrix: &Vec>) -> Vec> = vec![]; let mut potenz_matrix = adjazenz_matrix.clone(); - for i in 0..adjazenz_matrix.len() { - distanz_matrix.push(vec![]); - for j in 0..adjazenz_matrix.len() { - if i == j { - distanz_matrix[i].push(0) - } else if adjazenz_matrix[i][j] == 1 { - distanz_matrix[i].push(1); - } else { - distanz_matrix[i].push(usize::MAX); - } - } - } - - for k in 2..adjazenz_matrix.len() { + for k in 1..adjazenz_matrix.len() { potenz_matrix = matrix::mult(&potenz_matrix, &adjazenz_matrix); for i in 0..adjazenz_matrix.len() { + if k == 1 { + distanz_matrix.push(vec![]); + } for j in 0..adjazenz_matrix.len() { - if potenz_matrix[i][j] != 0 && distanz_matrix[i][j] == usize::MAX { - distanz_matrix[i][j] = k; + if k != 1 { + if potenz_matrix[i][j] != 0 && distanz_matrix[i][j] == usize::MAX { + distanz_matrix[i][j] = k; + } + continue; + } + if i == j { + distanz_matrix[i].push(0) + } else if adjazenz_matrix[i][j] == 1 { + distanz_matrix[i].push(1); + } else { + distanz_matrix[i].push(usize::MAX); } } } @@ -34,25 +34,25 @@ pub fn calculate_weg_matrix(adjazenz_matrix: &Vec>) -> Vec let mut weg_matrix: Vec> = vec![]; let mut potenz_matrix = adjazenz_matrix.clone(); - for i in 0..adjazenz_matrix.len() { - weg_matrix.push(vec![]); - for j in 0..adjazenz_matrix.len() { - if i == j { - weg_matrix[i].push(1) - } else if adjazenz_matrix[i][j] == 1 { - weg_matrix[i].push(1); - } else { - weg_matrix[i].push(0); - } - } - } - - for _k in 2..adjazenz_matrix.len() { + for k in 1..adjazenz_matrix.len() { potenz_matrix = matrix::mult(&potenz_matrix, &adjazenz_matrix); for i in 0..adjazenz_matrix.len() { + if k == 1 { + weg_matrix.push(vec![]); + } for j in 0..adjazenz_matrix.len() { - if potenz_matrix[i][j] != 0 { - weg_matrix[i][j] = 1; + if k != 1 { + if potenz_matrix[i][j] != 0 { + weg_matrix[i][j] = 1; + } + continue; + } + if i == j { + weg_matrix[i].push(1) + } else if adjazenz_matrix[i][j] == 1 { + weg_matrix[i].push(1); + } else { + weg_matrix[i].push(0); } } } @@ -68,7 +68,7 @@ pub fn calculate_exzentrizitaeten(distanz_matrix: &Vec>) -> Vec exzentrizitaet && i != j { + if i != j && distanz_matrix[i][j] > exzentrizitaet { exzentrizitaet = distanz_matrix[i][j]; } }