userItemCountMultiplier * Math.log(Math.max(dataModel.getNumUsers(), dataModel.getNumItems())));
FastIDSet possibleItemsIDs = new FastIDSet();
for (long itemID : preferredItemIDs) {
PreferenceArray prefs = dataModel.getPreferencesForItem(itemID);
int prefsConsidered = Math.min(prefs.length(), maxPrefsPerItemConsidered);
Iterator<Preference> sampledPrefs = new FixedSizeSamplingIterator(prefsConsidered, prefs.iterator());
while (sampledPrefs.hasNext()) {
possibleItemsIDs.addAll(dataModel.getItemIDsFromUser(sampledPrefs.next().getUserID()));
}
}
possibleItemsIDs.removeAll(preferredItemIDs);
return possibleItemsIDs;
}