Graph color solver

This commit is contained in:
FyloZ 2024-03-12 13:35:40 -04:00
parent e43d23a5ea
commit 0984241bff
Signed by: william
GPG Key ID: 835378AE9AF4AE97
1 changed files with 35 additions and 0 deletions

View File

@ -79,7 +79,42 @@ namespace gti320 {
// //
// Implémenter la méthode de Gauss-Seidel avec coloration de graphe. // Implémenter la méthode de Gauss-Seidel avec coloration de graphe.
// Les partitions avec l'index de chaque particule sont stockées dans la table des tables, P. // Les partitions avec l'index de chaque particule sont stockées dans la table des tables, P.
int n = b.size();
x.resize(n);
x.setZero();
bool converged = false;
int k = 0;
do {
Vector<float, Dynamic> nx = x;
for (const auto &indices: P) {
#pragma omp parallel for
for (int i = 0; i < indices.size(); i++) {
nx(i) = b(i);
for (int j = 0; j < i; j++) {
nx(i) = nx(i) - A(i, j) * nx(j);
}
for (int j = i + 1; j < n; j++) {
nx(i) = nx(i) - A(i, j) * x(j);
}
nx(i) = nx(i) / A(i, i);
}
}
k++;
Vector<float, Dynamic> r = A * x - b;
converged = k >= maxIter ||
(nx - x).norm() / nx.norm() < tau ||
r.norm() / b.norm() < eps;
x = nx;
} while (!converged);
} }
/** /**