Main Page | Class Hierarchy | Compound List | File List | Compound Members

maxclique.h

00001 /* probleme maxclique : on recherche une clique d'une taille donnée dans un graphe : 
00002 en augmentant la taille de la clique recherchée, on résout le problème maxclique ; les graphes sont donnés
00003 dans le format Dimacs  */
00007 /* classe pour la recherche d'une clique de taille cliquesize 
00008 on essaie de trouver une clique de taille n donnée en minimisant les conflits (aretes manquantes
00009 dans l'ensemble des n sommets candidats
00010 Un mouvement est un échange entre un sommet dans la clique candidate participant à un conflit 
00011 et un sommet hors clique (remainvariables)
00012 Utilisation de ExchangeMove défini  dans move.cc  */
00013 
00018 class CliqueProblem : public BinaryCSProblem
00019 { public :
00020 /* taille de la clique recherchée */
00022   int cliquesize;
00023 /* les cliquesize variables de la configuration candidates pour former une clique */
00025   int* clique(Configuration* configuration);
00026 /* les variables restantes (pas dans le tableau clique) */
00028   int* remainvariables(Configuration* configuration);
00029   CliqueProblem(int nvar, int nconst, int clsize);
00030   int config_evaluation(Configuration*  configuration);
00031   int config_evaluation_verif(Configuration*  configuration);
00032   int move_evaluation (Configuration* configuration, Move* move);
00033   void incr_update_conflicts(IncrCSPConfiguration* configuration,Move* move);
00034   void fullincr_update_conflicts(FullincrCSPConfiguration* configuration,Move* move);
00035   void init_domains(int nbvar);
00036   // int compute_conflict (Configuration* configuration,int var, int val);
00037   //  void compute_var_conflict(Configuration* configuration);
00038 void random_configuration(Configuration* configuration);
00039 void move_execution(Configuration* configuration,Move* move);
00040 void solution_write();
00041   void next_move (Configuration* configuration, Move* move, NeighborhoodSearch* nbhs);
00042 Move* create_move();
00043 Configuration* create_configuration();
00044 int minconflict_invariable(Configuration* configuration);
00045 };
00046 
00047 CliqueProblem* probleme_maxclique(int nbvar,int nbconst,int clsize,int** constraint1);
00048 CliqueProblem* clique_problem_creation (int clsize,ifstream & file);
00049 void lire_debut_fichier_clique(ifstream & file, int& nbvar, int& nbconst);
00050 void lire_fichier_clique (ifstream& file, vector<int>* connexions,int ** constraint1);
00051 
00052 /* configuration pour les cliques (on utilise une structure de données pour les conflits)
00053 a ete implanté comme sous-classe de FullincrCSPConfiguration 
00054 (aurait aussi pu etre sous-classe de IncrCSPConfiguration : 1 seule valeur de conflits stockée par variable :
00055 le nombre d'aretes manquantes avec les variables de la clique
00056 champs spécifiques : les tableaux des variables dans et hors clique
00057 */
00058 
00063 class CliqueConfiguration: public FullincrCSPConfiguration
00064 { public :
00065  int cliquesize;
00066 /* les n variables formant la clique candidate de taille n (evaluation : nombre d'aretes manquantes pour être une clique*/
00069  int* clique;
00070 /* les variables restantes (pas dans le tableau des variables candidates pour former une clique) */
00072  int* remainvariables;
00073  CliqueConfiguration(int nbvar,int cliquesize);
00074  ~CliqueConfiguration();
00075  void copy_element (Configuration* config2);
00076 };

Generated on Fri Sep 26 17:27:25 2003 for INCOP by doxygen 1.3.3