Class DIMACSEventDrivenImporter

  • All Implemented Interfaces:
    EventDrivenImporter<Integer,​Triple<Integer,​Integer,​Double>>

    public class DIMACSEventDrivenImporter
    extends BaseEventDrivenImporter<Integer,​Triple<Integer,​Integer,​Double>>
    implements EventDrivenImporter<Integer,​Triple<Integer,​Integer,​Double>>
    A generic importer using consumers for 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> 
     
     

    By default this importer recomputes node identifiers starting from $0$ as they are encountered in the file. It is also possible to instruct the importer to keep the original file numbering of the nodes simply by reducing them by one in order to make them zero-based. 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

      • DIMACSEventDrivenImporter

        public DIMACSEventDrivenImporter()
        Construct a new importer
    • Method Detail

      • renumberVertices

        public DIMACSEventDrivenImporter renumberVertices​(boolean renumberVertices)
        Set whether to renumber vertices or not. If true then the vertices are assigned new numbers from $0$ to $n-1$ in the order that they are first * encountered in the file. Otherwise, the original numbering (minus one in order to get a zero-based numbering) of the DIMACS file is kept. Defaults to true.
        Parameters:
        renumberVertices - whether to renumber vertices or not
        Returns:
        the importer
      • mapVertexToInteger

        protected Integer mapVertexToInteger​(String id)
        Map a vertex identifier to an integer.
        Parameters:
        id - the vertex identifier
        Returns:
        the integer