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)); }
/// <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); }