Defines how to handle the ends of hyperedges, or the source/target ends of directed hyperedges, with respect to equality.
Represents a directed edge (arc / arrow) connecting two nodes.
Represents a directed edge (arc / arrow) connecting two nodes.
Represents a directed edge in a hypergraph with a single source and an unlimited number of taget nodes.
Represents a directed edge in a hypergraph with a single source and an unlimited number of taget nodes. Target nodes are handled as a bag that is an unordered collection of nodes with duplicates allowed.
Template trait for directed edges.
Template trait for directed edges.
Any class representing directed edges must inherit from this trait.
The abstract methods of this trait must be implemented by companion objects of simple (non-weighted, non-labeled) edges.
Marker trait for companion objects of any kind of edge.
This trait is to be mixed in by every class implementing EdgeLike.
Template for Edges in a Graph.
Template for Edges in a Graph.
Implementation note: Irrespective of the containing Graph
all library-provided Edges
are immutable.
the user type of the nodes (ends) of this edge.
Equality for targets handled as a bag that is an unordered collection of nodes with duplicates allowed.
Equality for targets handled as a bag that is an unordered collection of nodes with duplicates allowed. Targets are equal if they contain the same nodes irrespective of their position.
This trait supports extending the default key of an edge with additional attributes.
This trait supports extending the default key of an edge with additional attributes.
As a default, the key - represented by hashCode
- of an edge is made up of the
participating nodes.
Custom edges may need to expand this default key with additional attributes
thus enabling the definition of several edges between the same nodes (multi-edges).
Edges representing flight connections between airports are a typical example
for this requirement because their key must also include something like a flight number.
When defining a custom edge for a multi-graph, this trait must be mixed in.
type of the nodes
Represents an undirected hyperedge (hyperlink) in a hypergraph with unlimited number of nodes.
Represents an undirected hyperedge (hyperlink) in a hypergraph with unlimited number of nodes.
The abstract methods of this trait must be implemented by companion objects of simple (non-weighted, non-labeled) hyperedges.
Marks (directed) hyperedge endpoints to have a significant order.
Marks (directed) hyperedge endpoints to have a significant order.
Represents an undirected edge.
Represents an undirected edge.
Marks a hyperedge, or the source/target ends of a directed hyperedge, to handle the endpoints as an unordered collection of nodes with duplicates allowed.
Factory for directed edges.
Factory for directed edges.
GraphPredef
also supports implicit conversion from node_1 ~> node_2
to DiEdge
.
Factory for directed hyper-edges.
Factory for directed hyper-edges.
GraphPredef
also supports implicit conversion from node_1 ~> node_2 ~> node_3
to DirectedHyperEdge
.
Factory for undirected hyper-edges.
Factory for undirected hyper-edges.
GraphPredef
also supports implicit conversion from node_1 ~ node_2 ~ node_3
to HyperEdge
.
Helper object to convert edge-factory parameter-lists to tuple-n or list.
Marks a hyperedge, or the source/target ends of a directed hyperedge, to handle the endpoints as an ordered collection of nodes with duplicates allowed.
Factory for undirected edges.
Factory for undirected edges.
GraphPredef
also supports implicit conversion from node_1 ~ node_2
to UnDiEdge
.
Allows to replace the edge object with it's shortcut like edge match {case n1 ~ n2 => f(n1, n2)}
.
Allows to replace the edge object with it's shortcut like edge match {case source ~> target => f(source, target)}
.
Allows to replace the edge object with it's shortcut like hyperedge match {case n1 ~~ (n2, n3) => f(n1, n2, n3)}
.
Allows to replace the edge object with it's shortcut like diHyperedge match {case source ~~> (t1, t2) => f(source, t1, t2)}
.
Container for basic edge types to be used in the context of
Graph
. You will usually simply import all its members along with the members of Param:import scalax.collection.GraphPredef._, scalax.collection.GraphEdge,_