private BidirectionalGraph <Point, Edge <Point> > BuildGraph(HashSet <Point> map) { var location = map.First(); var graph = new QuikGraph.BidirectionalGraph <Point, Edge <Point> >(); foreach (var point in map) { graph.AddVertex(point); } foreach (var point in map) { foreach (var dir in Enum.GetValues(typeof(Direction)).Cast <Direction>()) { var target = point.GetPoint(dir); if (map.Contains(target)) { graph.AddEdge(new Edge <Point>(point, target)); } } } return(graph); }