private IList <E> GetReduced(
            IList <E> edges,
            IDictionary <string, IList <E> > map,
            SelectionStrategy <E, V, W> selectionStrategy
            )
        {
            IList <E> edgesToReturn = new List <E>();

            foreach (E edge in edges)
            {
                string key = edge.EdgeId;
                if (map.ContainsKey(key))
                {
                    IList <E> list   = map[key];
                    E         reduce = selectionStrategy.Reduce(list);
                    edgesToReturn.Add(reduce);
                    map.Remove(key);
                }
            }
            return(edgesToReturn);
        }