private void ComputeAllDeviations() { foreach (var articleA in _articles) { foreach (var articleB in _articles) { if (articleA == articleB) { _deviations[articleA, articleB] = new Deviation(0, 0); _deviations[articleB, articleA] = new Deviation(0, 0); break; } var deviation = ComputeDeviation(articleA, articleB); _deviations[articleA, articleB] = deviation; _deviations[articleB, articleA] = new Deviation(-deviation.Value, deviation.Cardinality); } } }
private Deviation ComputeDeviation(int articleA, int articleB) { var deviation = new Deviation(0, 0); var usersRatedA = _ratedBy[articleA]; var usersRatedB = _ratedBy[articleB]; foreach (var user in usersRatedA) { if (!usersRatedB.Contains(user)) { continue; } deviation.Update(_ratings[user, articleA] - _ratings[user, articleB]); } return(deviation); }