summaryrefslogtreecommitdiff
path: root/src/de/lmu/ifi/dbs/elki/algorithm/clustering/ClusteringAlgorithm.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/de/lmu/ifi/dbs/elki/algorithm/clustering/ClusteringAlgorithm.java')
-rw-r--r--src/de/lmu/ifi/dbs/elki/algorithm/clustering/ClusteringAlgorithm.java50
1 files changed, 50 insertions, 0 deletions
diff --git a/src/de/lmu/ifi/dbs/elki/algorithm/clustering/ClusteringAlgorithm.java b/src/de/lmu/ifi/dbs/elki/algorithm/clustering/ClusteringAlgorithm.java
new file mode 100644
index 00000000..deac96ed
--- /dev/null
+++ b/src/de/lmu/ifi/dbs/elki/algorithm/clustering/ClusteringAlgorithm.java
@@ -0,0 +1,50 @@
+package de.lmu.ifi.dbs.elki.algorithm.clustering;
+/*
+This file is part of ELKI:
+Environment for Developing KDD-Applications Supported by Index-Structures
+
+Copyright (C) 2011
+Ludwig-Maximilians-Universität München
+Lehr- und Forschungseinheit für Datenbanksysteme
+ELKI Development Team
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU Affero General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU Affero General Public License for more details.
+
+You should have received a copy of the GNU Affero General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+import de.lmu.ifi.dbs.elki.algorithm.Algorithm;
+import de.lmu.ifi.dbs.elki.data.Clustering;
+import de.lmu.ifi.dbs.elki.data.model.Model;
+import de.lmu.ifi.dbs.elki.database.Database;
+
+/**
+ * Interface for Algorithms that are capable to provide a {@link Clustering
+ * Clustering} as Result. in general, clustering algorithms are supposed to
+ * implement the {@link de.lmu.ifi.dbs.elki.algorithm.Algorithm}-Interface. The
+ * more specialized interface {@link ClusteringAlgorithm} requires an
+ * implementing algorithm to provide a special result class suitable as a
+ * partitioning of the database. More relaxed clustering algorithms are allowed
+ * to provide a result that is a fuzzy clustering, does not partition the
+ * database complete or is in any other sense a relaxed clustering result.
+ *
+ * @author Arthur Zimek
+ *
+ * @apiviz.uses Clustering
+ * @apiviz.uses Model
+ *
+ * @param <C> Clustering type
+ */
+public interface ClusteringAlgorithm<C extends Clustering<? extends Model>> extends Algorithm {
+ @Override
+ C run(Database database) throws IllegalStateException;
+} \ No newline at end of file