V
- the graph vertex typeE
- the graph edge typepublic class DIMACSImporter<V,E> extends Object implements GraphImporter<V,E>
See DIMACSFormat
for a description of all the supported DIMACS formats.
In summary, one of the most common DIMACS formats was used in the 2nd DIMACS challenge and follows the following structure:
DIMACS G {
c <comments> ignored during parsing of the graph
p edge <number of nodes> <number of edges>
e <edge source 1> <edge target 1>
e <edge source 2> <edge target 2>
e <edge source 3> <edge target 3>
e <edge source 4> <edge target 4>
...
}
Although not specified directly in the DIMACS format documentation, this implementation also
allows for the a weighted variant:
e <edge source 1> <edge target 1> <edge_weight>
Note: the current implementation does not fully implement the DIMACS specifications! Special
(rarely used) fields specified as 'Optional Descriptors' are currently not supported (ignored).Constructor and Description |
---|
DIMACSImporter(VertexProvider<V> vertexProvider,
EdgeProvider<V,E> edgeProvider)
Construct a new DIMACSImporter
|
DIMACSImporter(VertexProvider<V> vertexProvider,
EdgeProvider<V,E> edgeProvider,
double defaultWeight)
Construct a new DIMACSImporter
|
Modifier and Type | Method and Description |
---|---|
EdgeProvider<V,E> |
getEdgeProvider()
Get the edge provider
|
VertexProvider<V> |
getVertexProvider()
Get the vertex provider
|
void |
importGraph(Graph<V,E> graph,
Reader input)
Import a graph.
|
void |
setEdgeProvider(EdgeProvider<V,E> edgeProvider)
Set the edge provider.
|
void |
setVertexProvider(VertexProvider<V> vertexProvider)
Set the vertex provider
|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
importGraph, importGraph
public DIMACSImporter(VertexProvider<V> vertexProvider, EdgeProvider<V,E> edgeProvider, double defaultWeight)
vertexProvider
- provider for the generation of vertices. Must not be null.edgeProvider
- provider for the generation of edges. Must not be null.defaultWeight
- default edge weightpublic DIMACSImporter(VertexProvider<V> vertexProvider, EdgeProvider<V,E> edgeProvider)
vertexProvider
- provider for the generation of vertices. Must not be null.edgeProvider
- provider for the generation of edges. Must not be null.public VertexProvider<V> getVertexProvider()
public void setVertexProvider(VertexProvider<V> vertexProvider)
vertexProvider
- the new vertex provider. Must not be null.public EdgeProvider<V,E> getEdgeProvider()
public void setEdgeProvider(EdgeProvider<V,E> edgeProvider)
edgeProvider
- the new edge provider. Must not be null.public void importGraph(Graph<V,E> graph, Reader input) throws ImportException
The provided graph must be able to support the features of the graph that is read. For example if the file contains self-loops then the graph provided must also support self-loops. The same for multiple edges.
If the provided graph is a weighted graph, the importer also reads edge weights. Otherwise edge weights are ignored.
importGraph
in interface GraphImporter<V,E>
graph
- the output graphinput
- the input readerImportException
- in case an error occurs, such as I/O or parse errorCopyright © 2017. All rights reserved.