Clusterizator.Krab.Calculators.LinearCalculator.Calculate C# (CSharp) Method

Calculate() public method

Euclidean distance calculation method.
public Calculate ( GraphManager graph ) : void
graph GraphManager /// Connections graph. ///
return void
        public void Calculate(GraphManager graph)
        {
            for (int i = 0; i < graph.Connections.Count; i++)
            {
                double distance = 0;

                for (int j = 0; j < graph.Elements[graph.Connections[i].FirstElementIndex].Content.Length; j++)
                {
                    double substraction = graph.Elements[graph.Connections[i].FirstElementIndex].Content[j] -
                                     graph.Elements[graph.Connections[i].SecondElementIndex].Content[j];

                    distance += substraction * substraction;
                }

                distance = Math.Sqrt(distance);
                graph.Connections[i].Distance = distance;
            }
        }

Usage Example

        public void ThreePoints3DTest()
        {
            var node1 = new GraphElement(new[] { 15.0, 1.0, -20.0 }, "node1");
            var node2 = new GraphElement(new[] { 0.0, -3.0, -4.0 }, "node2");
            var node3 = new GraphElement(new[] { 15.0, 1.0, -25.0 }, "node3");

            var el = new List<GraphElement> { node1, node2, node3 };

            var conn1 = new Connection(0, 1);
            var conn2 = new Connection(0, 2);
            var conn3 = new Connection(1, 2);

            var graph = new List<Connection> { conn1, conn2, conn3 };

            var gm = new GraphManager(graph, el);

            ICalculator calculator = new LinearCalculator();
            calculator.Calculate(gm);
            calculator = new NormalizedLinearCalculator();
            calculator.Calculate(gm);
            calculator = new TauStarCalculator();
            calculator.Calculate(gm);
            calculator = new TauCalculator();
            calculator.Calculate(gm);
            var lambdaCalculator = new LambdaCalculator();
            lambdaCalculator.Calculate(gm, 2, 1);
            Assert.AreEqual(1625, Math.Round(gm.Connections[0].Lambda * 100));
            Assert.AreEqual(9, Math.Round(gm.Connections[1].Lambda * 1000));
            Assert.AreEqual(2612, Math.Round(gm.Connections[2].Lambda * 100));
        }
All Usage Examples Of Clusterizator.Krab.Calculators.LinearCalculator::Calculate
LinearCalculator