public Edge CreateUndirectedEdge(INode _NodeOne, INode _NodeTwo, IWeight _Weight)
        {
            var hNewUndirectedEdge = new UndirectedEdge(_NodeOne, _NodeTwo, _Weight);

            FEdgeIndices.Add(hNewUndirectedEdge);
            _NodeOne.AddEdge(hNewUndirectedEdge);
            _NodeTwo.AddEdge(hNewUndirectedEdge);

            return(hNewUndirectedEdge);
        }
        public Edge CreateUndirectedEdge(int _NodeOneId, int _NodeTwoId, IWeight _Weight)
        {
            var hNodeOne = FNodeIndices[_NodeOneId];
            var hNodeTwo = FNodeIndices[_NodeTwoId];

            var hNewUndirectedEdge = new UndirectedEdge(hNodeOne, hNodeTwo, _Weight);

            FEdgeIndices.Add(hNewUndirectedEdge);
            hNodeOne.AddEdge(hNewUndirectedEdge);
            hNodeTwo.AddEdge(hNewUndirectedEdge);

            return(hNewUndirectedEdge);
        }