Skip to content

SeregPie/NearestNeighborChain

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

NearestNeighborChain

NearestNeighborChain(values, distance)

Builds a hierarchy of the clusters.

argument description
values An iterable of the values to build the hierarchy of the clusters from.
distance A function to calculate the distance between two values. The value pairs with the lowest distance build a cluster.

Returns the clustered values as a nested array.

dependencies

setup

npm

npm install @seregpie/nearest-neighbor-chain

ES module

import NearestNeighborChain from '@seregpie/nearest-neighbor-chain';

Node

let NearestNeighborChain = require('@seregpie/nearest-neighbor-chain');

browser

<script src="https://unpkg.com/@seregpie/bron-kerbosch"></script>
<script src="https://unpkg.com/@seregpie/nearest-neighbor-chain"></script>

The module is globally available as NearestNeighborChain.

usage

let array = [4, 90, 12, 61, 29];
let clusters = NearestNeighborChain(array, (a, b) => Math.abs(a - b));
// => [[29, [4, 12]], [90, 61]]

Overlapping clusters are merged together.

let intersection = function(a, b) {
  a = new Set(a);
  b = new Set(b);
  return [...a].filter(v => b.has(v));
};
let array = ['ac', 'ab', 'baab', 'aba', 'bc'];
let clusters = NearestNeighborChain(array, (a, b) => -intersection(a, b).length);
// => ['ac', 'bc', ['ab', 'baab', 'aba']]

see also