sim_ressorts/labo_physique/GraphColoring.h

50 lines
1.6 KiB
C
Raw Permalink Normal View History

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.
};
}