Exemplo n.º 1
0
        private void ConnectByEdge(IEdge edge)
        {
            ISuperNode endANode = this.superNodeCache[edge.EndA.Id];
            ISuperNode endBNode = this.superNodeCache[edge.EndB.Id];

            if (endANode == endBNode)
            {
                // do not connect the same supernodes to themselves
                return;
            }

            // edges between supernodes are not duplicated. weight represent
            // number of edges
            var result = endANode.IsNeighbour(endBNode);

            if (result.Success)
            {
                result.Edge.Weight += 1.0;
            }
            else
            {
                var newedge = endANode.ConnectTo(endBNode, EdgeDirection.Both);
                newedge.Weight = 1.0;
            }
        }