Exemple #1
0
 /**
  * Remove rules are the same ina semantic way(At = 1, At <> 0, At = [0,1])
  *
  * @param tam int Size of the star
  */
 public void eliminaSubsumidos(int tam) {
   // for (int i = 0; i < this.size() - 1; i++) {
   for (int i = 0; i < tam; i++) {
     Complejo aux = this.getRegla(i);
     boolean seguir = true;
     for (int j = i + 1; (j < this.size()) && (seguir); j++) {
       Complejo aux2 = this.getRegla(j);
       seguir = false;
       boolean parar = false;
       for (int l = 0; (l < aux.size()) && (!parar); l++) {
         Selector s = aux.getSelector(l);
         boolean salir = false;
         for (int h = 0; (h < aux2.size()) && (!salir); h++) {
           Selector s2 = aux2.getSelector(h);
           if ((s.compareTo(s2) == -3) || (s.compareTo(s2) == 0)) { // mirar compareTo en Selector
             salir = true; // paso a ver el siguiente selector (si eso)
             if ((l == aux.size() - 1)
                 && (aux.getDistribucionClase(0) == aux2.getDistribucionClase(0))) {
               // if (l == aux.size() - 1) {
               /*
               System.out.println("\nEstos son los complejos subsumidos:");
               aux.print();
               aux2.print();
               */
               seguir = false;
               this.deleteRegla(
                   i); // tienen los mismos atributos y misma distribucion (son semanticament =)
               i--;
             }
           }
         }
         parar = !salir; // si salir == true -> no paro (parar = false)
       }
     }
   }
 }
Exemple #2
0
 /** Remove complex with repetitive attributes */
 public void eliminaNulos() {
   boolean salir;
   for (int i = 0; i < this.size(); i++) {
     Complejo aux = this.getRegla(i);
     salir = false;
     for (int j = 0; (j < aux.size() - 1) && (!salir); j++) {
       Selector s = aux.getSelector(j);
       for (int h = j + 1; (h < aux.size()) && (!salir); h++) {
         Selector s2 = aux.getSelector(h);
         if (s.compareTo(s2) < 2) { // mismo atributo
           this.deleteRegla(i); // borrando
           salir = true;
           i--;
         }
       }
     }
   }
 }
Exemple #3
0
  /**
   * Remove repetitive complex(at1 = 0 ^ at2 = 0 -- at2 = 0 ^ at1 = 0)
   *
   * @param tam Size of the star
   */
  public void eliminaRepetidos(int tam) {
    for (int i = 0; i < this.size() - 1; i++) {
      // for (int i = 0; i < tam; i++) {
      Complejo aux = this.getRegla(i);
      boolean seguir = true;
      for (int j = i + 1; (j < this.size()) && (seguir); j++) {
        Complejo aux2 = this.getRegla(j);
        // seguir = false;
        boolean parar = false;
        for (int l = 0; (l < aux.size()) && (!parar); l++) {
          Selector s = aux.getSelector(l);
          boolean salir = false;
          for (int h = 0; (h < aux2.size()) && (!salir); h++) {
            Selector s2 = aux2.getSelector(h);
            // System.out.println("Comparando ");

            if (s.compareTo(s2) == 0) { // son iguales
              salir = true; // paso a ver el siguiente selector (si eso)
              /* System.out.println("selectores iguales");
                 System.out.println("regla "+(i+1)+" y "+(j+1));
              s.print();s2.print();*/
              if (l == aux.size() - 1) {

                /* System.out.println("\nEstos son los complejos repetidos:");
                aux.print();
                aux2.print();*/

                seguir = false;
                this.deleteRegla(i); // borro porque est�repe totalmente
                /*System.out.println("Se borra la regla "+(i+1));
                aux.print();*/
                i--;
              }
            }
          }
          parar = !salir; // si salir == true -> no paro (parar = false)
        }
      }
    }
  }