public void ClusterTwoDataObjects() { var nj = new NeighborJoiningClusterer<char>((o1, o2) => 1); IUndirectedGraph<Cluster<char>, ClusterEdge<char>> tree = nj.GenerateClusters(new[] {'A', 'B'}); var edges = new[] { new ClusterEdge<char>(new Cluster<char>('A'), new Cluster<char>('B'), 1.0) }; AssertTreeEqual(tree, edges.ToUndirectedGraph<Cluster<char>, ClusterEdge<char>>()); }
public void Cluster() { var matrix = new double[,] { {0, 1, 2, 3, 3}, {1, 0, 2, 3, 3}, {2, 2, 0, 3, 3}, {3, 3, 3, 0, 1}, {3, 3, 3, 1, 0} }; var nj = new NeighborJoiningClusterer<char>((o1, o2) => matrix[o1 - 'A', o2 - 'A']); IUndirectedGraph<Cluster<char>, ClusterEdge<char>> tree = nj.GenerateClusters(new[] {'A', 'B', 'C', 'D', 'E'}); var vertices = new Dictionary<string, Cluster<char>> { {"root", new Cluster<char> {Description = "root"}}, {"A", new Cluster<char>('A') {Description = "A"}}, {"B", new Cluster<char>('B') {Description = "B"}}, {"C", new Cluster<char>('C') {Description = "C"}}, {"D", new Cluster<char>('D') {Description = "D"}}, {"E", new Cluster<char>('E') {Description = "E"}}, {"DE", new Cluster<char> {Description = "DE"}}, {"AB", new Cluster<char> {Description = "AB"}} }; var edges = new[] { new ClusterEdge<char>(vertices["root"], vertices["C"], 1.0), new ClusterEdge<char>(vertices["root"], vertices["DE"], 1.5), new ClusterEdge<char>(vertices["root"], vertices["AB"], 0.5), new ClusterEdge<char>(vertices["DE"], vertices["D"], 0.5), new ClusterEdge<char>(vertices["DE"], vertices["E"], 0.5), new ClusterEdge<char>(vertices["AB"], vertices["A"], 0.5), new ClusterEdge<char>(vertices["AB"], vertices["B"], 0.5) }; AssertTreeEqual(tree, edges.ToUndirectedGraph<Cluster<char>, ClusterEdge<char>>(false)); }