示例#1
0
        public void BKTreeShouldFindBestNodeWithDistance()
        {
            BKTree <ExampleMetric> tree = new BKTree <ExampleMetric>();

            ExampleMetric search = new ExampleMetric(new int[] { 365, 422, 399 });
            ExampleMetric best   = new ExampleMetric(4, new int[] { 400, 400, 400 });

            tree.Add(new ExampleMetric(1, new int[] { 100, 100, 100 }));
            tree.Add(new ExampleMetric(2, new int[] { 200, 200, 200 }));
            tree.Add(new ExampleMetric(3, new int[] { 300, 300, 300 }));
            tree.Add(best);
            tree.Add(new ExampleMetric(5, new int[] { 500, 500, 500 }));

            Tuple <ExampleMetric, int> result = tree.FindClosestElement(search);

            Assert.AreEqual(58, DistanceMetric.CalculateLeeDistance(search.Data, best.Data));
            Assert.AreEqual(58, result.Item2);
            Assert.AreEqual(4, result.Item1.Id);
            Assert.AreEqual(best.Data, result.Item1.Data);
        }