2024-02-27 13:20:47 -05:00
|
|
|
|
#pragma once
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @file GraphColoring.h
|
|
|
|
|
*
|
|
|
|
|
* @brief Algorithme glouton pour la coloration de graphe.
|
|
|
|
|
*
|
2024-03-12 21:19:55 -04:00
|
|
|
|
* Nom: William Nolin
|
|
|
|
|
* Code permanent : NOLW76060101
|
|
|
|
|
* Email : william.nolin.1@ens.etsmtl.ca
|
2024-02-27 13:20:47 -05:00
|
|
|
|
*
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
#include "ParticleSystem.h"
|
|
|
|
|
#include <vector>
|
|
|
|
|
#include <list>
|
|
|
|
|
|
|
|
|
|
namespace gti320
|
|
|
|
|
{
|
|
|
|
|
typedef std::list<const Particle*> NeighborList; // Type pour les particules voisines
|
|
|
|
|
typedef std::list<int> ColorList; // Type pour stocker la palette de couleurs
|
|
|
|
|
typedef std::vector<std::vector<int>> Partitions; // Type pour stocker les indices des particules dans chaque partition.
|
|
|
|
|
|
|
|
|
|
// Classe pour la coloration de graphe.
|
|
|
|
|
//
|
|
|
|
|
class GraphColoring
|
|
|
|
|
{
|
|
|
|
|
public:
|
2024-03-12 21:19:55 -04:00
|
|
|
|
// Attribuer des couleurs <20> toutes les particules du syst<73>me.
|
2024-02-27 13:20:47 -05:00
|
|
|
|
//
|
|
|
|
|
void color(ParticleSystem& particleSystem);
|
|
|
|
|
|
|
|
|
|
// Retourner l'index des particules de chaque partition. (voir le type @a Partitions)
|
|
|
|
|
//
|
|
|
|
|
const Partitions& getPartitions() const { return m_partitions; }
|
|
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
|
2024-03-12 21:19:55 -04:00
|
|
|
|
// Trouver une couleur qui n'est pas partag<61>e par un voisine pour la particule @a p.
|
2024-02-27 13:20:47 -05:00
|
|
|
|
//
|
|
|
|
|
int findColor(const Particle& p, const std::vector<Particle>& particles, const std::vector<Spring>& springs, ColorList& C) const;
|
|
|
|
|
|
2024-03-12 21:19:55 -04:00
|
|
|
|
// Retourner toutes les particules qui sont directement raccord<72>es <20> la particule @a p par un ressort..
|
2024-02-27 13:20:47 -05:00
|
|
|
|
//
|
|
|
|
|
NeighborList findNeighbors(const Particle& p, const std::vector<Particle>& particles, const std::vector<Spring>& springs) const;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Partitions m_partitions; // Les partitions.
|
|
|
|
|
};
|
|
|
|
|
}
|