C

KCoreComponents

Calculates the k-cores of an undirected input graph.
Inheritance Hierarchy

Remarks

The k-core of an undirected input graph consists of the subgraph components where each node has at least degree k. The algorithm has runtime complexity O((n+m)log(n)) and requires linear space.

Other Graph Connectivity Algorithms

yFiles for HTML supports a number of other analysis algorithms that partition the graph into components, based on various criteria.

  • ConnectedComponents – Determines components defined by the existence of an undirected path between nodes
  • StronglyConnectedComponents – Determines components defined by the existence of a directed path between nodes
  • BiconnectedComponents – Determines components defined by the existence of at least two separate undirected paths between all nodes
  • Bipartition – Divides a graph into two partitions where all edges have their source and target in different partitions
  • IndependentSets – Divides a graph into partitions where no nodes are connected within a partition

Complexity

O((n+m)log(n))

Examples

Calculating the k-cores of a graph
// prepare the k-core algorithm
const algorithm = new KCoreComponents()
// run the algorithm
const result = algorithm.run(graph)

// highlight the nodes of a given k-cores with different styles
for (const node of result.getKCore(3)) {
  graph.setStyle(node, highlightStyle)
}

See Also

Developer's Guide

API

kCores

Members

No filters for this type

Constructors

Parameters

Properties

Gets or sets the collection of edges which define a subset of the graph for the algorithms to work on.

If nothing is set, all edges of the graph will be processed.

If only the ItemCollection<TItem>.excludes are set, all edges in the graph except those provided in the ItemCollection<TItem>.excludes are processed.

Note that edges which start or end at nodes which are not in the subgraphNodes are automatically not considered by the algorithm.

ItemCollection<T> instances may be shared among algorithm instances and will be (re-)evaluated upon (re-)execution of the algorithm.

The edges provided here must be part of the graph which is passed to the run method.
conversionfinal

Examples

Calculating the k-Cores a subset of the graph
// prepare the k-core algorithm
const algorithm = new KCoreComponents({
  // Ignore edges without target arrow heads
  subgraphEdges: {
    excludes: (edge: IEdge): boolean =>
      edge.style instanceof PolylineEdgeStyle &&
      edge.style.targetArrow instanceof Arrow &&
      edge.style.targetArrow.type === ArrowType.NONE,
  },
})
// run the algorithm
const result = algorithm.run(graph)

// highlight the nodes of a given k-cores with different styles
for (const node of result.getKCore(3)) {
  graph.setStyle(node, highlightStyle)
}
Gets or sets the collection of nodes which define a subset of the graph for the algorithms to work on.

If nothing is set, all nodes of the graph will be processed.

If only the ItemCollection<TItem>.excludes are set, all nodes in the graph except those provided in the ItemCollection<TItem>.excludes are processed.

ItemCollection<T> instances may be shared among algorithm instances and will be (re-)evaluated upon (re-)execution of the algorithm.

The nodes provided here must be part of the graph which is passed to the run method.
conversionfinal

Examples

Calculating the k-Cores of a subset of the graph
// prepare the k-core algorithm
const algorithm = new KCoreComponents({
  subgraphNodes: {
    // only consider elliptical nodes in the graph
    includes: (node: INode): boolean =>
      node.style instanceof ShapeNodeStyle &&
      node.style.shape === ShapeNodeShape.ELLIPSE,
    // but ignore the first node, regardless of its shape
    excludes: graph.nodes.first()!,
  },
})
// run the algorithm
const result = algorithm.run(graph)

// highlight the nodes of a given k-cores with different styles
for (const node of result.getKCore(3)) {
  graph.setStyle(node, highlightStyle)
}

Methods

Determines the k-Cores of a given graph.
Self-loops are ignored.
The result obtained from this algorithm is a snapshot which is no longer valid once the graph has changed, e.g. by adding or removing nodes or edges.
final

Parameters

graph: IGraph
The input graph to run the algorithm on.

Return Value

KCoreComponentsResult
A KCoreComponentsResult from which the k-cores of the graph can be obtained.

Throws

Exception ({ name: 'InvalidOperationError' })
If the algorithm can't create a valid result due to an invalid graph structure or wrongly configured properties.

Complexity

O((n+m)log(n))

Examples

Calculating the k-cores of a graph
// prepare the k-core algorithm
const algorithm = new KCoreComponents()
// run the algorithm
const result = algorithm.run(graph)

// highlight the nodes of a given k-cores with different styles
for (const node of result.getKCore(3)) {
  graph.setStyle(node, highlightStyle)
}