public virtual void Learn(Pair <Clusterer.CandidateAction, Clusterer.CandidateAction> actions)
            {
                Clusterer.CandidateAction goodAction = actions.first;
                Clusterer.CandidateAction badAction  = actions.second;
                if (badAction.cost == 0)
                {
                    Clusterer.CandidateAction tmp = goodAction;
                    goodAction = badAction;
                    badAction  = tmp;
                }
                ICounter <string> features = new ClassicCounter <string>(goodAction.features);

                foreach (KeyValuePair <string, double> e in badAction.features.EntrySet())
                {
                    features.DecrementCount(e.Key, e.Value);
                }
                Learn(features, 0, badAction.cost);
            }