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