Considérez ensembles de valeurs (représentés comme des tableaux triés sans doublons et avec une taille connue (c'est-à-dire que la taille peut être obtenue en O (1)). Les valeurs peuvent être testées pour l'égalité en temps O (1). Je veux pour obtenir l'ensemble des valeurs présentes dans au moins k ensembles différents parmi les n .
L'algorithme évident pour ce faire est de parcourir tous les ensembles, de compter le nombre d'occurrences de chaque valeur et de renvoyer ceux dont le nombre est supérieur à . Pourtant, dans certains cas, vous pouvez faire mieux: par exemple, lorsque n = k = 2 et lorsqu'un ensemble S 1 est beaucoup plus petit que l'autre ensemble S 2 , il est plus efficace de regarder tous les éléments de S 1 et d'effectuer une recherche binaire pour chacun d'eux dans S 2 : l'approche de recherche binaire coûte O ( | S 1 | log ( | S 2 | alors que l'approche naïve coûte O ( | S 1 | + | S 2 | ) qui est pire lorsque | S 1 | < < | S 2 | .
Dans cet esprit, dans quelles situations peut-on faire mieux que l'algorithme naïf? (S'il s'agit d'un problème bien connu, je serais heureux de connaître son nom habituel et d'avoir des références.)