PIPS
sc-fais-int.c File Reference
#include <stdio.h>
#include <stdlib.h>
#include "boolean.h"
#include "arithmetique.h"
#include "vecteur.h"
#include "contrainte.h"
#include "sc.h"
#include "sommet.h"
#include "matrix.h"
#include "plint.h"
+ Include dependency graph for sc-fais-int.c:

Go to the source code of this file.

Macros

#define MALLOC(s, t, f)   malloc(s)
 package plint More...
 

Functions

bool sys_int_fais (Psysteme sys1)
 bool sys_int_fais(Psysteme sys1): Test de faisabilite d'un systeme lineaire syst1 en nombres entiers par l'algorithme des congruences decroissantes (cf. More...
 

Macro Definition Documentation

◆ MALLOC

#define MALLOC (   s,
  t,
  f 
)    malloc(s)

package plint

Definition at line 45 of file sc-fais-int.c.

Function Documentation

◆ sys_int_fais()

bool sys_int_fais ( Psysteme  sys1)

bool sys_int_fais(Psysteme sys1): Test de faisabilite d'un systeme lineaire syst1 en nombres entiers par l'algorithme des congruences decroissantes (cf.

livre ???, pp. ??? ). Renvoie true si le systeme est satisfiable (i.e. il definit un polyedre convexe non vide), false sinon.

Ce test est exact, mais il est tres couteux en temps CPU.

Le systeme de contrainte syst1 n'est pas modifie

cas ou le systeme est faisable

Definition at line 57 of file sc-fais-int.c.

59 {
60  Psysteme sys2 = NULL;
61  Psommet fonct = fonct_min(sys1->dimension,sys1->base);
62  Psolution sol1 = NULL;
63 
64  bool is_faisable = false;
65 
66  sys2=sc_dup(sys1);
67  /*
68  * Recherche d'une solution par l'algorithme des congruences
69  * decroissantes a partir d'une fonction economique minimale (
70  * recherche du minimum de la premiere variable du systeme)
71  */
72  if ((sys2 != NULL) &&
73  ( (sys2->egalites != NULL) || (sys2->inegalites != NULL)))
74  sys2 = plint(sys2,fonct,&sol1);
75  else
76  is_faisable = true;
77 
78  if ((sys2 != NULL) && ((sys2->egalites != NULL)
79  || (sys2->inegalites != NULL)))
80  is_faisable = true;
81 
82  if (is_faisable)
83  /* cas ou le systeme est faisable */
84  sc_rm(sys2);
85  return (is_faisable);
86 }
Psommet fonct_min(int nbvars, Pbase b)
RGSUSED.
Definition: plfonct-eco.c:78
Psysteme plint(Psysteme first_sys, Psommet fonct, Psolution *sol_fin)
Psysteme plint(Psysteme first_sys, Psommet fonct, Psolution *sol_fin): resolution d'un systeme lineai...
Definition: plint.c:430
void sc_rm(Psysteme ps)
void sc_rm(Psysteme ps): liberation de l'espace memoire occupe par le systeme de contraintes ps;
Definition: sc_alloc.c:277
Psysteme sc_dup(Psysteme ps)
Psysteme sc_dup(Psysteme ps): should becomes a link.
Definition: sc_alloc.c:176
Pcontrainte inegalites
Definition: sc-local.h:71
Pcontrainte egalites
Definition: sc-local.h:70
Pbase base
Definition: sc-local.h:75
int dimension
Definition: sc-local.h:74
structure de donnees Sommet
Definition: sommet-local.h:64

References Ssysteme::egalites, fonct_min(), Ssysteme::inegalites, plint(), sc_dup(), and sc_rm().

Referenced by sys_int_redond().

+ Here is the call graph for this function:
+ Here is the caller graph for this function: