Class DIMACSImporter<V,​E>

  • Type Parameters:
    V - the graph vertex type
    E - the graph edge type
    All Implemented Interfaces:
    GraphImporter<V,​E>

    public class DIMACSImporter<V,​E>
    extends BaseEventDrivenImporter<V,​E>
    implements GraphImporter<V,​E>
    Imports a graph specified in DIMACS format.

    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).
    Author:
    Michael Behrisch (adaptation of GraphReader class), Joris Kinable, Dimitrios Michail
    • Constructor Detail

      • DIMACSImporter

        public DIMACSImporter​(double defaultWeight)
        Construct a new DIMACSImporter
        Parameters:
        defaultWeight - default edge weight
      • DIMACSImporter

        public DIMACSImporter()
        Construct a new DIMACSImporter
    • Method Detail

      • importGraph

        public void importGraph​(Graph<V,​E> graph,
                                Reader input)
                         throws ImportException
        Import a graph.

        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.

        Specified by:
        importGraph in interface GraphImporter<V,​E>
        Parameters:
        graph - the output graph
        input - the input reader
        Throws:
        ImportException - in case an error occurs, such as I/O or parse error