Package aima.core.logic.fol.inference.otter.defaultimpl

Source Code of aima.core.logic.fol.inference.otter.defaultimpl.DefaultLightestClauseHeuristic

package aima.core.logic.fol.inference.otter.defaultimpl;

import java.util.Comparator;
import java.util.Set;
import java.util.SortedSet;
import java.util.TreeSet;

import aima.core.logic.fol.inference.otter.LightestClauseHeuristic;
import aima.core.logic.fol.kb.data.Clause;

/**
* @author Ciaran O'Reilly
*
*/
public class DefaultLightestClauseHeuristic implements LightestClauseHeuristic {

  private LightestClauseSorter c = new LightestClauseSorter();
  private SortedSet<Clause> sos = new TreeSet<Clause>(c);

  public DefaultLightestClauseHeuristic() {

  }

  //
  // START-LightestClauseHeuristic
  public Clause getLightestClause() {
    Clause lightest = null;

    if (sos.size() > 0) {
      lightest = sos.first();
    }

    return lightest;
  }

  public void initialSOS(Set<Clause> clauses) {
    sos.clear();
    sos.addAll(clauses);
  }

  public void addedClauseToSOS(Clause clause) {
    sos.add(clause);
  }

  public void removedClauseFromSOS(Clause clause) {
    sos.remove(clause);
  }

  // END-LightestClauseHeuristic
  //
}

class LightestClauseSorter implements Comparator<Clause> {
  public int compare(Clause c1, Clause c2) {
    if (c1 == c2) {
      return 0;
    }
    int c1Val = c1.getNumberLiterals();
    int c2Val = c2.getNumberLiterals();
    return (c1Val < c2Val ? -1
        : (c1Val == c2Val ? (compareEqualityIdentities(c1, c2)) : 1));
  }

  private int compareEqualityIdentities(Clause c1, Clause c2) {
    int c1Len = c1.getEqualityIdentity().length();
    int c2Len = c2.getEqualityIdentity().length();

    return (c1Len < c2Len ? -1 : (c1Len == c2Len ? c1.getEqualityIdentity()
        .compareTo(c2.getEqualityIdentity()) : 1));
  }
}
TOP

Related Classes of aima.core.logic.fol.inference.otter.defaultimpl.DefaultLightestClauseHeuristic

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.