import { createGraph, getMinimumSpanningTree } from '@statelyai/graph';
const buildings = createGraph({
type: 'undirected',
nodes: [
{ id: 'building-a' },
{ id: 'building-b' },
{ id: 'building-c' },
{ id: 'building-d' },
],
edges: [
{ id: 'ab', sourceId: 'building-a', targetId: 'building-b',
data: { distance: 100 } },
{ id: 'ac', sourceId: 'building-a', targetId: 'building-c',
data: { distance: 150 } },
{ id: 'ad', sourceId: 'building-a', targetId: 'building-d',
data: { distance: 200 } },
{ id: 'bc', sourceId: 'building-b', targetId: 'building-c',
data: { distance: 120 } },
{ id: 'bd', sourceId: 'building-b', targetId: 'building-d',
data: { distance: 180 } },
{ id: 'cd', sourceId: 'building-c', targetId: 'building-d',
data: { distance: 140 } },
],
});
const network = getMinimumSpanningTree(buildings, {
getWeight: (e) => e.data.distance,
});
const totalLength = network.edges.reduce(
(sum, e) => sum + e.data.distance,
0
);
console.log(`Minimum cable length: ${totalLength}m`);
console.log('Connections:');
network.edges.forEach(e => {
console.log(` ${e.sourceId} - ${e.targetId}: ${e.data.distance}m`);
});