Remarks
0.0 and 1.0.Definitions
- The local clustering coefficient of a node depends on the number of edges between its neighbors. A value of
1indicates that the node's neighbors form a clique (i.e., there is an edge between each pair of neighbors). - Average clustering coefficient is the average of all the local clustering coefficient values of a graph.
- Average weighted clustering coefficient is the average of all the local clustering coefficient values of a graph where each local value of a node is weighted by the maximum possible number of edges between its neighbors.
Examples
// prepare the algorithm
const algorithm = new ClusteringCoefficient({ directed: true })
// run the algorithm
const result = algorithm.run(graph)
// add the result as label
for (const node of graph.nodes) {
graph.addLabel(node, String(result.clusteringCoefficients.get(node)))
}See Also
Members
Constructors
Properties
true.Property Value
true if the graph should be considered as directed, false otherwise.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.
Examples
// prepare the algorithm
const algorithm = new ClusteringCoefficient({
// 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)
// add the result as label
for (const node of graph.nodes) {
graph.addLabel(node, String(result.clusteringCoefficients.get(node)))
}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.
Examples
// prepare the algorithm
const algorithm = new ClusteringCoefficient({
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)
// add the result as label
result.clusteringCoefficients.forEach(
({ key: node, value: coefficient }) =>
graph.addLabel(node, String(coefficient)),
)Methods
Calculates the local clustering coefficient for each node and returns the average clustering coefficient.
0.0 and 1.0.Parameters
- graph: IGraph
- the input graph
Return Value
- ClusteringCoefficientResult
- The coefficients for each node and the average coefficient.
Throws
- Exception ({ name: 'InvalidOperationError' })
- If the algorithm can't create a valid result due to an invalid graph structure or wrongly configured properties.
Examples
// prepare the algorithm
const algorithm = new ClusteringCoefficient({ directed: true })
// run the algorithm
const result = algorithm.run(graph)
// add the result as label
for (const node of graph.nodes) {
graph.addLabel(node, String(result.clusteringCoefficients.get(node)))
}