edu.uci.ics.jung.algorithms.scoring.util.ScoringUtils.java Source code

Java tutorial

Introduction

Here is the source code for edu.uci.ics.jung.algorithms.scoring.util.ScoringUtils.java

Source

/*
 * 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;
    }
}