dangraph
Version:
Utilities for directed and undirected graphs
100 lines (78 loc) • 4.31 kB
Markdown
# Undirected graph
## Definition
[Wikipedia - Undirected graph](<https://en.wikipedia.org/wiki/Graph_(discrete_mathematics)>)
## Examples
### The following graph is acyclic and not connected:

```ts
import { UndirectedGraph, CDanNode, CDanArc } from 'dangraph';
const myGraph = new UndirectedGraph.DanUndirectedGraph<number, undefined>();
myGraph.addArcToNode(new CDanNode({ id: 1 }), new CDanArc({ weight: 1, node: new CDanNode({ id: 2 }) }));
myGraph.addArcToNode(new CDanNode({ id: 1 }), new CDanArc({ weight: 1, node: new CDanNode({ id: 3 }) }));
myGraph.addArcToNode(new CDanNode({ id: 5 }), new CDanArc({ weight: 1, node: new CDanNode({ id: 4 }) }));
myGraph.addArcToNode(new CDanNode({ id: 5 }), new CDanArc({ weight: 1, node: new CDanNode({ id: 6 }) }));
myGraph.addArcToNode(new CDanNode({ id: 7 }), new CDanArc({ weight: 1, node: new CDanNode({ id: 8 }) }));
myGraph.addArcToNode(new CDanNode({ id: 7 }), new CDanArc({ weight: 1, node: new CDanNode({ id: 9 }) }));
console.log(myGraph.toString());
if (myGraph.isAcyclic()) {
console.log('The graph is acyclic');
} else {
console.log('The graph is not acyclic');
}
if (myGraph.isConnected()) {
console.log('The graph is connected');
} else {
console.log('The graph is not connected');
}
```
### The following graph is acyclic and connected:

```ts
import { UndirectedGraph, CDanNode, CDanArc } from 'dangraph';
const myGraph = new UndirectedGraph.DanUndirectedGraph<number, undefined>();
myGraph.addArcToNode(new CDanNode({ id: 1 }), new CDanArc({ weight: 1, node: new CDanNode({ id: 2 }) }));
myGraph.addArcToNode(new CDanNode({ id: 1 }), new CDanArc({ weight: 1, node: new CDanNode({ id: 3 }) }));
myGraph.addArcToNode(new CDanNode({ id: 5 }), new CDanArc({ weight: 1, node: new CDanNode({ id: 4 }) }));
myGraph.addArcToNode(new CDanNode({ id: 5 }), new CDanArc({ weight: 1, node: new CDanNode({ id: 6 }) }));
myGraph.addArcToNode(new CDanNode({ id: 7 }), new CDanArc({ weight: 1, node: new CDanNode({ id: 8 }) }));
myGraph.addArcToNode(new CDanNode({ id: 7 }), new CDanArc({ weight: 1, node: new CDanNode({ id: 9 }) }));
myGraph.addArcToNode(new CDanNode({ id: 3 }), new CDanArc({ weight: 1, node: new CDanNode({ id: 7 }) }));
myGraph.addArcToNode(new CDanNode({ id: 6 }), new CDanArc({ weight: 1, node: new CDanNode({ id: 8 }) }));
console.log(myGraph.toString());
if (myGraph.isAcyclic()) {
console.log('The graph is acyclic');
} else {
console.log('The graph is not acyclic');
}
if (myGraph.isConnected()) {
console.log('The graph is connected');
} else {
console.log('The graph is not connected');
}
```
### The following graph is not acyclic and connected:

```ts
import { UndirectedGraph, CDanNode, CDanArc } from 'dangraph';
const myGraph = new UndirectedGraph.DanUndirectedGraph<number, undefined>();
myGraph.addArcToNode(new CDanNode({ id: 1 }), new CDanArc({ weight: 1, node: new CDanNode({ id: 2 }) }));
myGraph.addArcToNode(new CDanNode({ id: 1 }), new CDanArc({ weight: 1, node: new CDanNode({ id: 3 }) }));
myGraph.addArcToNode(new CDanNode({ id: 5 }), new CDanArc({ weight: 1, node: new CDanNode({ id: 4 }) }));
myGraph.addArcToNode(new CDanNode({ id: 5 }), new CDanArc({ weight: 1, node: new CDanNode({ id: 6 }) }));
myGraph.addArcToNode(new CDanNode({ id: 7 }), new CDanArc({ weight: 1, node: new CDanNode({ id: 8 }) }));
myGraph.addArcToNode(new CDanNode({ id: 7 }), new CDanArc({ weight: 1, node: new CDanNode({ id: 9 }) }));
myGraph.addArcToNode(new CDanNode({ id: 3 }), new CDanArc({ weight: 1, node: new CDanNode({ id: 7 }) }));
myGraph.addArcToNode(new CDanNode({ id: 6 }), new CDanArc({ weight: 1, node: new CDanNode({ id: 8 }) }));
myGraph.addArcToNode(new CDanNode({ id: 3 }), new CDanArc({ weight: 1, node: new CDanNode({ id: 5 }) }));
console.log(myGraph.toString());
if (myGraph.isAcyclic()) {
console.log('The graph is acyclic');
} else {
console.log('The graph is not acyclic');
}
if (myGraph.isConnected()) {
console.log('The graph is connected');
} else {
console.log('The graph is not connected');
}
```