Interface IndexGraphFactory
-
- All Superinterfaces:
GraphFactory<Integer,Integer>
,IntGraphFactory
public interface IndexGraphFactory extends IntGraphFactory
A factory for Index graphs.The factory can be used to create new empty graphs, with different options and capabilities. Few methods are available to optimize the graph implementation choice. The factory can also be used to create a copy of an existing graphs, with the same vertices and edges, with/without copying the vertices/edges weights.
Both the graph factory and
IndexGraphBuilder
are used to create new graphs. The difference is that vertices and edges can be added to the builder, which is then used to construct non empty graphs, while the factory is only used to choose a graph implementation and create an empty graph.This interface is a specific version of
IntGraphFactory
forIndexGraph
.- Author:
- Barak Ugav
- See Also:
newDirected()
,newUndirected()
,IndexGraph
,IndexGraphBuilder
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from interface com.jgalgo.graph.GraphFactory
GraphFactory.Hint
-
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Default Methods Modifier and Type Method Description IndexGraphFactory
addHint(GraphFactory.Hint hint)
Add a hint to this factory.IndexGraphFactory
allowParallelEdges(boolean parallelEdges)
Determine if graphs built by this factory should be support parallel edges.IndexGraphFactory
allowSelfEdges(boolean selfEdges)
Determine if graphs built by this factory should be support self edges.IndexGraphFactory
expectedEdgesNum(int expectedEdgesNum)
Set the expected number of edges that will exist in the graph.IndexGraphFactory
expectedVerticesNum(int expectedVerticesNum)
Set the expected number of vertices that will exist in the graph.IndexGraphBuilder
newBuilder()
Create a new graph builder with the factory parameters.default IndexGraph
newCopyOf(Graph<Integer,Integer> g)
Create a copy of a given graph, with the same vertices and edges, without copying weights.IndexGraph
newCopyOf(Graph<Integer,Integer> g, boolean copyWeights)
Create a copy of a given graph, with the same vertices and edges, with/without copying weights.static IndexGraphFactory
newDirected()
Create a directed index graph factory.static IndexGraphFactory
newFrom(IndexGraph g)
Create a new index graph factory based on a given implementation.IndexGraph
newGraph()
Create a new empty graph.static IndexGraphFactory
newUndirected()
Create an undirected index graph factory.IndexGraphFactory
removeHint(GraphFactory.Hint hint)
Remove a hint from this factory.IndexGraphFactory
setDirected(boolean directed)
Determine if graphs built by this factory should be directed or not.default IndexGraphFactory
setOption(String key, Object value)
[TL;DR Don't call me!] Set an option.
-
-
-
Method Detail
-
newGraph
IndexGraph newGraph()
Description copied from interface:GraphFactory
Create a new empty graph.- Specified by:
newGraph
in interfaceGraphFactory<Integer,Integer>
- Specified by:
newGraph
in interfaceIntGraphFactory
- Returns:
- a new graph with the factory options
-
newCopyOf
default IndexGraph newCopyOf(Graph<Integer,Integer> g)
Description copied from interface:GraphFactory
Create a copy of a given graph, with the same vertices and edges, without copying weights.An identical copy of the given graph will be created, with the same vertices and edges, without copying the vertices/edges weights. The returned Graph will always be modifiable, with no side affects on the original graph.
Differing from
Graph.copy()
, the capabilities of the new graph are determined by the factory configuration, rather than copied from the given graph. Note for example that if the factory chooses to use an implementation that does not (have to) support self edges (ifGraphFactory.allowSelfEdges(boolean)
was not called withtrue
), attempting to create a copy of a graph that does contains self edges will result in an exception.- Specified by:
newCopyOf
in interfaceGraphFactory<Integer,Integer>
- Specified by:
newCopyOf
in interfaceIntGraphFactory
- Parameters:
g
- the original graph to copy- Returns:
- an identical copy of the given graph, with the same vertices and edges, without the original graph weights
-
newCopyOf
IndexGraph newCopyOf(Graph<Integer,Integer> g, boolean copyWeights)
Description copied from interface:GraphFactory
Create a copy of a given graph, with the same vertices and edges, with/without copying weights.An identical copy of the given graph will be created, with the same vertices and edges, with/without copying the vertices/edges weights. The returned Graph will always be modifiable, with no side affects on the original graph.
Differing from
Graph.copy(boolean)
, the capabilities of the new graph are determined by the factory configuration, rather than copied from the given graph. Note for example that if the factory chooses to use an implementation that does not (have to) support self edges (ifGraphFactory.allowSelfEdges(boolean)
was not called withtrue
), attempting to create a copy of a graph that does contains self edges will result in an exception.- Specified by:
newCopyOf
in interfaceGraphFactory<Integer,Integer>
- Specified by:
newCopyOf
in interfaceIntGraphFactory
- Parameters:
g
- the original graph to copycopyWeights
- iftrue
, the weights of the vertices and edges will be copied to the new graph- Returns:
- an identical copy of the given graph, with the same vertices and edges, with/without the original graph weights
-
newBuilder
IndexGraphBuilder newBuilder()
Description copied from interface:GraphFactory
Create a new graph builder with the factory parameters.The created builder can be used to add vertices and edges, and then build a (mutable or immutable) non empty graph, differing from the factory which only builds empty graphs. The capabilities such as un/directed, support of self edges, support of parallel edges, and hints such as expected number of vertices and edges, other hints, etc. are copied from the factory to the builder.
- Specified by:
newBuilder
in interfaceGraphFactory<Integer,Integer>
- Specified by:
newBuilder
in interfaceIntGraphFactory
- Returns:
- a new graph builder with the factory parameters
-
setDirected
IndexGraphFactory setDirected(boolean directed)
Description copied from interface:GraphFactory
Determine if graphs built by this factory should be directed or not.- Specified by:
setDirected
in interfaceGraphFactory<Integer,Integer>
- Specified by:
setDirected
in interfaceIntGraphFactory
- Parameters:
directed
- iftrue
, graphs built by this factory will be directed- Returns:
- this factory
-
allowSelfEdges
IndexGraphFactory allowSelfEdges(boolean selfEdges)
Description copied from interface:GraphFactory
Determine if graphs built by this factory should be support self edges.- Specified by:
allowSelfEdges
in interfaceGraphFactory<Integer,Integer>
- Specified by:
allowSelfEdges
in interfaceIntGraphFactory
- Parameters:
selfEdges
- iftrue
, graphs built by this factory will support self edges- Returns:
- this factory
-
allowParallelEdges
IndexGraphFactory allowParallelEdges(boolean parallelEdges)
Description copied from interface:GraphFactory
Determine if graphs built by this factory should be support parallel edges.- Specified by:
allowParallelEdges
in interfaceGraphFactory<Integer,Integer>
- Specified by:
allowParallelEdges
in interfaceIntGraphFactory
- Parameters:
parallelEdges
- iftrue
, graphs built by this factory will support parallel edges- Returns:
- this factory
-
expectedVerticesNum
IndexGraphFactory expectedVerticesNum(int expectedVerticesNum)
Description copied from interface:GraphFactory
Set the expected number of vertices that will exist in the graph.- Specified by:
expectedVerticesNum
in interfaceGraphFactory<Integer,Integer>
- Specified by:
expectedVerticesNum
in interfaceIntGraphFactory
- Parameters:
expectedVerticesNum
- the expected number of vertices in the graph- Returns:
- this factory
-
expectedEdgesNum
IndexGraphFactory expectedEdgesNum(int expectedEdgesNum)
Description copied from interface:GraphFactory
Set the expected number of edges that will exist in the graph.- Specified by:
expectedEdgesNum
in interfaceGraphFactory<Integer,Integer>
- Specified by:
expectedEdgesNum
in interfaceIntGraphFactory
- Parameters:
expectedEdgesNum
- the expected number of edges in the graph- Returns:
- this factory
-
addHint
IndexGraphFactory addHint(GraphFactory.Hint hint)
Description copied from interface:GraphFactory
Add a hint to this factory.Hints do not change the behavior of the graphs built by this factory, by may affect performance.
- Specified by:
addHint
in interfaceGraphFactory<Integer,Integer>
- Specified by:
addHint
in interfaceIntGraphFactory
- Parameters:
hint
- the hint to add- Returns:
- this factory
-
removeHint
IndexGraphFactory removeHint(GraphFactory.Hint hint)
Description copied from interface:GraphFactory
Remove a hint from this factory.Hints do not change the behavior of the graphs built by this factory, by may affect performance.
- Specified by:
removeHint
in interfaceGraphFactory<Integer,Integer>
- Specified by:
removeHint
in interfaceIntGraphFactory
- Parameters:
hint
- the hint to remove- Returns:
- this factory
-
newUndirected
static IndexGraphFactory newUndirected()
Create an undirected index graph factory.- Returns:
- a new factory that can build undirected index graphs
-
newDirected
static IndexGraphFactory newDirected()
Create a directed index graph factory.- Returns:
- a new factory that can build directed index graphs
-
newFrom
static IndexGraphFactory newFrom(IndexGraph g)
Create a new index graph factory based on a given implementation.The new factory will build graphs with the same capabilities as the given graph, possibly choosing to use a similar implementation. The factory will NOT copy the graph itself (the vertices, edges and weights), for such use case see
IndexGraph.copy()
ornewCopyOf(Graph)
.- Parameters:
g
- a graph from which the factory should copy its capabilities- Returns:
- a new graph factory that will create graphs with the same capabilities of the given graph
-
setOption
default IndexGraphFactory setOption(String key, Object value)
Description copied from interface:GraphFactory
[TL;DR Don't call me!] Set an option.The builder might support different options to customize its implementation. These options never change the behavior of the algorithm, only its internal implementation. The possible options are not exposed as 'public' because they are not part of the API and may change in the future.
These options are mainly for debug and benchmark purposes.
- Specified by:
setOption
in interfaceGraphFactory<Integer,Integer>
- Specified by:
setOption
in interfaceIntGraphFactory
- Parameters:
key
- the option keyvalue
- the option value- Returns:
- this builder
-
-