it.unimi.dsi.webgraph.examples
Class IntegerTriplesArcLabelledImmutableGraph

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.ArcLabelledImmutableSequentialGraph
              extended by it.unimi.dsi.webgraph.examples.IntegerTriplesArcLabelledImmutableGraph
All Implemented Interfaces:
FlyweightPrototype<ImmutableGraph>

public class IntegerTriplesArcLabelledImmutableGraph
extends ArcLabelledImmutableSequentialGraph

A class exposing a list of triples as an ArcLabelledImmutableGraph. The triples are interpreted as labelled arcs: the first element is the source, the second element is the target, and the third element must be a nonnegative integer that will be saved using a GammaCodedIntLabel.

This class is mainly a useful example of how to expose of your data via an ArcLabelledImmutableGraph, and it is also used to build test cases, but it is not efficient or particularly refined.

A main method reads from standard input a list of TAB-separated triples and writes the corresponding graph using BVGraph and BitStreamArcLabelledImmutableGraph.


Nested Class Summary
 
Nested classes/interfaces inherited from class it.unimi.dsi.webgraph.ImmutableGraph
ImmutableGraph.LoadMethod
 
Field Summary
 
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
IntegerTriplesArcLabelledImmutableGraph(int[][] triple)
          Creates a new arc-labelled immutable graph using a specified list of triples.
 
Method Summary
static void main(String[] arg)
           
 ArcLabelledNodeIterator nodeIterator()
          Returns a node iterator for scanning the graph sequentially, starting from the first node.
 ArcLabelledNodeIterator nodeIterator(int from)
          Throws an UnsupportedOperationException.
 int numNodes()
          Returns the number of nodes of this graph.
 Label prototype()
          Returns a prototype of the labels used by this graph.
 
Methods inherited from class it.unimi.dsi.webgraph.labelling.ArcLabelledImmutableSequentialGraph
copy, labelArray, outdegree, randomAccess, successorArray, successors
 
Methods inherited from class it.unimi.dsi.webgraph.labelling.ArcLabelledImmutableGraph
equals, load, load, loadOffline, loadOffline, loadOnce, loadSequential, loadSequential, toString
 
Methods inherited from class it.unimi.dsi.webgraph.ImmutableGraph
basename, hashCode, load, loadMapped, loadMapped, numArcs, outdegrees, store, store
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

Constructor Detail

IntegerTriplesArcLabelledImmutableGraph

public IntegerTriplesArcLabelledImmutableGraph(int[][] triple)
Creates a new arc-labelled immutable graph using a specified list of triples.

Note that it is impossible to specify isolated nodes with indices larger than the largest node with positive indegree or outdegree, as the number of nodes is computed by maximising over all indices in triple.

Parameters:
triple - a list of triples specifying labelled arcs (see the class documentation); order is not relevant, but multiple arcs are not allowed.
Method Detail

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.

nodeIterator

public ArcLabelledNodeIterator nodeIterator(int from)
Description copied from class: ArcLabelledImmutableSequentialGraph
Throws an UnsupportedOperationException.

Overrides:
nodeIterator in class ArcLabelledImmutableSequentialGraph
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()

nodeIterator

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

Overrides:
nodeIterator in class ArcLabelledImmutableGraph
Returns:
a NodeIterator for accessing nodes and successors sequentially.

main

public static void main(String[] arg)
                 throws JSAPException,
                        IOException
Throws:
JSAPException
IOException