Пример #1
0
        private E CreateEdge(string startVertexId, string endVertexId, double weightValue)
        {
            V startVertex = (V)CreateVertex(startVertexId);
            V endVertex   = (V)CreateVertex(endVertexId);
            W weight      = (W)CreateWeight(weightValue);

            return((E)edgeFactory.CreateEdge(startVertex, endVertex, weight));
        }
Пример #2
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="u"></param>
        /// <param name="v"></param>
        /// <param name="weight"></param>
        private IEdge <T> AddUndirectedEdge(INode <T> u, INode <T> v, decimal weight)
        {
            if (u == null)
            {
                throw new ArgumentNullException("u");
            }

            if (v == null)
            {
                throw new ArgumentNullException("v");
            }

            INode <T> uNode = null;
            INode <T> vNode = null;

            if (Contains(u))
            {
                uNode = Nodes[u.Key];
            }
            else
            {
                AddNode(u);
                uNode = u;
            }

            if (Contains(v))
            {
                vNode = Nodes[v.Key];
            }
            else
            {
                AddNode(v);
                vNode = v;
            }

            IEdge <T> retEdge = null;

            if (EdgeFactory == null)
            {
                retEdge = uNode.AddAdjacentNode(vNode);
                vNode.AddAdjacentNode(uNode);
            }
            else
            {
                retEdge = uNode.AddAdjacentNode(vNode, EdgeFactory.CreateEdge());
                vNode.AddAdjacentNode(uNode, EdgeFactory.CreateEdge());
            }

            uNode[vNode].Cost = weight;
            vNode[uNode].Cost = weight;
            return(retEdge);
        }