All Downloads are FREE. Search and download functionalities are using the official Maven repository.

aima.core.logic.fol.inference.otter.defaultimpl.DefaultLightestClauseHeuristic Maven / Gradle / Ivy

Go to download

AIMA-Java Core Algorithms from the book Artificial Intelligence a Modern Approach 3rd Ed.

The newest version!
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 sos = new TreeSet(c);

	public DefaultLightestClauseHeuristic() {

	}

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

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

		return lightest;
	}

	public void initialSOS(Set 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 {
	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));
	}
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy