--- /dev/null
+/*
+ * Created on Jul 12, 2007
+ *
+ * Copyright (c) 2007, the JUNG Project and the Regents of the University
+ * of California
+ * All rights reserved.
+ *
+ * This software is open-source under the BSD license; see either
+ * "license.txt" or
+ * http://jung.sourceforge.net/license.txt for a description.
+ */
+package edu.uci.ics.jung.algorithms.scoring.util;
+
+import java.util.Collection;
+
+import org.apache.commons.collections15.Transformer;
+
+import edu.uci.ics.jung.algorithms.scoring.HITS;
+
+/**
+ * Methods for assigning values (to be interpreted as prior probabilities) to vertices in the context
+ * of random-walk-based scoring algorithms.
+ */
+public class ScoringUtils
+{
+ /**
+ * Assigns a probability of 1/<code>roots.size()</code> to each of the elements of <code>roots</code>.
+ * @param <V> the vertex type
+ * @param roots the vertices to be assigned nonzero prior probabilities
+ * @return
+ */
+ public static <V> Transformer<V, Double> getUniformRootPrior(Collection<V> roots)
+ {
+ final Collection<V> inner_roots = roots;
+ Transformer<V, Double> distribution = new Transformer<V, Double>()
+ {
+ public Double transform(V input)
+ {
+ if (inner_roots.contains(input))
+ return new Double(1.0 / inner_roots.size());
+ else
+ return 0.0;
+ }
+ };
+
+ return distribution;
+ }
+
+ /**
+ * Returns a Transformer that hub and authority values of 1/<code>roots.size()</code> to each
+ * element of <code>roots</code>.
+ * @param <V> the vertex type
+ * @param roots the vertices to be assigned nonzero scores
+ * @return a Transformer that assigns uniform prior hub/authority probabilities to each root
+ */
+ public static <V> Transformer<V, HITS.Scores> getHITSUniformRootPrior(Collection<V> roots)
+ {
+ final Collection<V> inner_roots = roots;
+ Transformer<V, HITS.Scores> distribution =
+ new Transformer<V, HITS.Scores>()
+ {
+ public HITS.Scores transform(V input)
+ {
+ if (inner_roots.contains(input))
+ return new HITS.Scores(1.0 / inner_roots.size(), 1.0 / inner_roots.size());
+ else
+ return new HITS.Scores(0.0, 0.0);
+ }
+ };
+ return distribution;
+ }
+}