# KirchhoffGraph

KirchhoffGraph[kmat]

gives the graph with Kirchhoff matrix kmat.

KirchhoffGraph[{v1,v2,},kmat]

gives the graph with vertices vi and Kirchhoff matrix kmat.

# Details and Options • KirchhoffGraph[kmat] is equivalent to KirchhoffGraph[{1,2,,n},kmat] where kmat has dimensions × .
• KirchhoffGraph takes the same options as Graph.

# Background & Context

• KirchhoffGraph constructs a graph from a valid Kirchhoff matrix representation of an undirected or directed graph. Here, a Kirchhoff matrix corresponding to a graph on n vertices is a square n×n matrix defined in terms of the vertex degrees of the graph and its adjacency matrix. The Kirchhoff matrix plays a central role in spectral graph theory, which is the study of graphs based on the eigenvalues of their adjacency or Kirchhoff matrices. It can also be used for calculating resistance distances between vertices of a graph, which are defined as the effective resistances between vertices (as when a battery is attached across them) when each graph edge is replaced by a unit resistor.
• The option DirectedEdges may be used to control whether an undirected or directed graph is constructed. By default, KirchhoffGraph returns an undirected graph if the input matrix is symmetric and a directed graph otherwise. KirchhoffGraph takes the same basic options as Graph.
• The Kirchhoff matrix of a given graph (including one constructed using KirchhoffGraph) may be returned using KirchhoffMatrix. Similar functions include AdjacencyGraph (which constructs a graph from an adjacency matrix), WeightedAdjacencyGraph, and IncidenceGraph (which constructs a graph from an incidence matrix).

# Examples

open allclose all

## Basic Examples(2)

Construct a graph from a Kirchhoff matrix:

A symmetric Kirchhoff matrix results in an undirected graph:

## Scope(6)

Symmetric Kirchhoff matrices are interpreted as undirected graphs:

Unsymmetric Kirchhoff matrices are interpreted as directed graphs:

Use DirectedEdges to construct a directed graph from a symmetric matrix:

Use a SparseArray object to specify the adjacency matrix:

By default, the vertices are taken to be the integers 1 through n:

Use an explicit vertex list to give vertex names:

KirchhoffGraph works with large matrices:

## Options(82)

### AnnotationRules(3)

Specify an annotation for vertices:

Edges:

Graph itself:

### DirectedEdges(3)

By default, a symmetric matrix generates an undirected graph:

Use to generate a directed graph:

By default, a nonsymmetric matrix generates a directed graph:

### EdgeLabels(7)

Label the edge 12:

Label all edges individually:

Use any expression as a label:

Use Placed with symbolic locations to control label placement along an edge:

Use explicit coordinates to place labels:

Vary positions within the label:

Place multiple labels:

Use automatic labeling by values through Tooltip and StatusArea:

### EdgeShapeFunction(6)

Get a list of built-in settings for EdgeShapeFunction:

Undirected edges including the basic line:

Lines with different glyphs on the edges:

Directed edges including solid arrows:

Line arrows:

Open arrows:

Specify an edge function for an individual edge:

Combine with a different default edge function:

Draw edges by running a program:

EdgeShapeFunction can be combined with EdgeStyle:

EdgeShapeFunction has higher priority than EdgeStyle:

### EdgeStyle(2)

Style all edges:

Style individual edges:

### EdgeWeight(2)

Specify a weight for all edges:

Use any numeric expression as a weight:

### GraphHighlight(3)

Highlight the vertex 1:

Highlight the edge 23:

Highlight vertices and edges:

### GraphHighlightStyle(2)

Get a list of built-in settings for GraphHighlightStyle:

Use built-in settings for GraphHighlightStyle:

### GraphLayout(5)

By default, the layout is chosen automatically:

Specify layouts on special curves:

Specify layouts that satisfy optimality criteria:

VertexCoordinates overrides GraphLayout coordinates:

Use AbsoluteOptions to extract VertexCoordinates computed using a layout algorithm:

### PlotTheme(4)

#### Base Themes(2)

Use a common base theme:

Use a monochrome theme:

#### Feature Themes(2)

Use a large graph theme:

Use a classic diagram theme:

### VertexCoordinates(3)

By default, any vertex coordinates are computed automatically:

Extract the resulting vertex coordinates using AbsoluteOptions:

Specify a layout function along an ellipse:

Use it to generate vertex coordinates for a graph:

VertexCoordinates has higher priority than GraphLayout:

### VertexLabels(13)

Use vertex names as labels:

Label individual vertices:

Label all vertices:

Use any expression as a label:

Use Placed with symbolic locations to control label placement, including outside positions:

Symbolic outside corner positions:

Symbolic inside positions:

Symbolic inside corner positions:

Use explicit coordinates to place the center of labels:

Place all labels at the upper-right corner of the vertex and vary the coordinates within the label:

Place multiple labels:

Any number of labels can be used:

Use the argument to Placed to control formatting including Tooltip:

Or StatusArea:

Use more elaborate formatting functions:

### VertexShape(5)

Use any Graphics, Image, or Graphics3D as a vertex shape:

Specify vertex shapes for individual vertices:

VertexShape can be combined with VertexSize:

VertexShape is not affected by VertexStyle:

VertexShapeFunction has higher priority than VertexShape:

### VertexShapeFunction(10)

Get a list of built-in collections for VertexShapeFunction:

Use built-in settings for VertexShapeFunction in the "Basic" collection:

Simple basic shapes:

Common basic shapes:

Use built-in settings for VertexShapeFunction in the "Rounded" collection:

Use built-in settings for VertexShapeFunction in the "Concave" collection:

Draw individual vertices:

Combine with a default vertex function:

Draw vertices using a predefined graphic:

Draw vertices by running a program:

VertexShapeFunction can be combined with VertexStyle:

VertexShapeFunction has higher priority than VertexStyle:

VertexShapeFunction can be combined with VertexSize:

VertexShapeFunction has higher priority than VertexShape:

### VertexSize(8)

By default, the size of vertices is computed automatically:

Specify the size of all vertices using symbolic vertex size:

Use a fraction of the minimum distance between vertex coordinates:

Use a fraction of the overall diagonal for all vertex coordinates:

Specify size in both the and direction:

Specify the size for individual vertices:

can be combined with VertexShapeFunction:

can be combined with VertexShape:

### VertexStyle(4)

Style all vertices:

Style individual vertices:

VertexShapeFunction can be combined with VertexStyle:

VertexShapeFunction has higher priority than VertexStyle:

VertexShape is not affected by VertexStyle:

### VertexWeight(2)

Set the weight for all vertices:

Use any numeric expression as a weight:

## Properties & Relations(2)

Use VertexCount and EdgeCount to count vertices and edges:

Use VertexList and EdgeList to enumerate vertices and edges in standard order: