it.unimi.dsi.webgraph.labelling
Class ArcRelabelledImmutableGraph

java.lang.Object
  extended by it.unimi.dsi.webgraph.ImmutableGraph
      extended by it.unimi.dsi.webgraph.labelling.ArcLabelledImmutableGraph
          extended by it.unimi.dsi.webgraph.labelling.ArcRelabelledImmutableGraph
All Implemented Interfaces:
FlyweightPrototype<ImmutableGraph>

public class ArcRelabelledImmutableGraph
extends ArcLabelledImmutableGraph

Exhibits an arc-labelled immutable graph as another arc-labelled immutable graph changing only the kind of labels. Labels of the source graphs are mapped to labels of the exhibited graph via a suitable strategy provided at construction time.


Nested Class Summary
static interface ArcRelabelledImmutableGraph.LabelConversionStrategy
          A way to convert a label into another label.
 
Nested classes/interfaces inherited from class it.unimi.dsi.webgraph.ImmutableGraph
ImmutableGraph.LoadMethod
 
Field Summary
static ArcRelabelledImmutableGraph.LabelConversionStrategy INT_LABEL_CONVERSION_STRATEGY
          A conversion strategy that converts between any two classes extending AbstractIntLabel.
 
Fields inherited from class it.unimi.dsi.webgraph.labelling.ArcLabelledImmutableGraph
UNDERLYINGGRAPH_PROPERTY_KEY, UNDERLYINGGRAPH_SUFFIX
 
Fields inherited from class it.unimi.dsi.webgraph.ImmutableGraph
GRAPHCLASS_PROPERTY_KEY, PROPERTIES_EXTENSION
 
Constructor Summary
ArcRelabelledImmutableGraph(ArcLabelledImmutableGraph wrappedGraph, Label newLabelPrototype, ArcRelabelledImmutableGraph.LabelConversionStrategy conversionStrategy)
          Creates a relabelled graph with given label prototype.
 
Method Summary
 ArcRelabelledImmutableGraph copy()
          Returns a flyweight copy of this immutable graph.
static void main(String[] arg)
           
 ArcLabelledNodeIterator nodeIterator(int from)
          Returns a node iterator for scanning the graph sequentially, starting from the given node.
 int numNodes()
          Returns the number of nodes of this graph.
 int outdegree(int x)
          Returns the outdegree of a node.
 Label prototype()
          Returns a prototype of the labels used by this graph.
 boolean randomAccess()
          Checks whether this graph provides random access to successor lists.
 ArcLabelledNodeIterator.LabelledArcIterator successors(int x)
          Returns a lazy iterator over the successors of a given node.
 
Methods inherited from class it.unimi.dsi.webgraph.labelling.ArcLabelledImmutableGraph
equals, labelArray, load, load, loadOffline, loadOffline, loadOnce, loadSequential, loadSequential, nodeIterator, toString
 
Methods inherited from class it.unimi.dsi.webgraph.ImmutableGraph
basename, hashCode, load, loadMapped, loadMapped, numArcs, outdegrees, store, store, successorArray
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

Field Detail

INT_LABEL_CONVERSION_STRATEGY

public static final ArcRelabelledImmutableGraph.LabelConversionStrategy INT_LABEL_CONVERSION_STRATEGY
A conversion strategy that converts between any two classes extending AbstractIntLabel.

Constructor Detail

ArcRelabelledImmutableGraph

public ArcRelabelledImmutableGraph(ArcLabelledImmutableGraph wrappedGraph,
                                   Label newLabelPrototype,
                                   ArcRelabelledImmutableGraph.LabelConversionStrategy conversionStrategy)
Creates a relabelled graph with given label prototype.

Parameters:
wrappedGraph - the graph we are going to relabel.
newLabelPrototype - the prototype for the new type of labels.
conversionStrategy - the strategy to convert the labels of the wrapped graph into the new labels.
Method Detail

copy

public ArcRelabelledImmutableGraph copy()
Description copied from class: ImmutableGraph
Returns a flyweight copy of this immutable graph.

Specified by:
copy in interface FlyweightPrototype<ImmutableGraph>
Specified by:
copy in class ArcLabelledImmutableGraph
Returns:
a flyweight copy of this immutable graph.
See Also:
FlyweightPrototype

nodeIterator

public ArcLabelledNodeIterator nodeIterator(int from)
Description copied from class: ArcLabelledImmutableGraph
Returns a node iterator for scanning the graph sequentially, starting from the given node.

This implementation strengthens that provided in ImmutableGraph, but calls the labelled random-access method ArcLabelledImmutableGraph.successors(int).

Overrides:
nodeIterator in class ArcLabelledImmutableGraph
Parameters:
from - the node from which the iterator will iterate.
Returns:
an ArcLabelledNodeIterator for accessing nodes, successors and their labels sequentially.
See Also:
ImmutableGraph.nodeIterator()

successors

public ArcLabelledNodeIterator.LabelledArcIterator successors(int x)
Description copied from class: ImmutableGraph
Returns a lazy iterator over the successors of a given node. The iteration terminates when -1 is returned.

This implementation just wraps the array returned by ImmutableGraph.successorArray(int). Subclasses are encouraged to override this implementation.

The semantics of this method has been significantly modified in WebGraph 2.0 to take advantage of the new, faster lazy architecture.

Specified by:
successors in class ArcLabelledImmutableGraph
Parameters:
x - a node.
Returns:
a lazy iterator over the successors of the node.

prototype

public Label prototype()
Description copied from class: ArcLabelledImmutableGraph
Returns a prototype of the labels used by this graph. The prototype can be used to produce new copies, but must not be modified by the caller.

Specified by:
prototype in class ArcLabelledImmutableGraph
Returns:
a prototype for the labels of this graph.

numNodes

public int numNodes()
Description copied from class: ImmutableGraph
Returns the number of nodes of this graph.

Albeit this method is not optional, it is allowed that this method throws an UnsupportedOperationException if this graph has never been entirely traversed using a node iterator. This apparently bizarre behaviour is necessary to support implementations as ArcListASCIIGraph, which do not know the actual number of nodes until a traversal has been completed.

Specified by:
numNodes in class ImmutableGraph
Returns:
the number of nodes.

randomAccess

public boolean randomAccess()
Description copied from class: ImmutableGraph
Checks whether this graph provides random access to successor lists.

Specified by:
randomAccess in class ImmutableGraph
Returns:
true if this graph provides random access to successor lists.

outdegree

public int outdegree(int x)
Description copied from class: ImmutableGraph
Returns the outdegree of a node.

Specified by:
outdegree in class ImmutableGraph
Parameters:
x - a node.
Returns:
the outdegree of the given node.

main

public static void main(String[] arg)
                 throws JSAPException,
                        IOException,
                        IllegalArgumentException,
                        SecurityException,
                        IllegalAccessException,
                        InvocationTargetException,
                        NoSuchMethodException,
                        ClassNotFoundException,
                        InstantiationException
Throws:
JSAPException
IOException
IllegalArgumentException
SecurityException
IllegalAccessException
InvocationTargetException
NoSuchMethodException
ClassNotFoundException
InstantiationException