Розглянемо наборів значень (представлених як відсортовані масиви без дублікатів, і з відомим розміром (тобто розмір можна отримати в O (1)). Значення можна перевірити на рівність за час O (1). Я хочу для отримання набору значень, присутніх принаймні різних множин серед .k n
Очевидний алгоритм для цього полягає в тому, щоб пройти всі набори, порахувати кількість входів кожного значення і повернути ті, які мають кількість, вищу від . Тим не менш, у деяких випадках ви можете зробити краще: наприклад, коли і коли один набір набагато менший, ніж інший множина , ефективніше переглянути всі елементи і здійснити двійковий пошук для кожного з них у : підхід бінарного пошуку коштує тоді як наївний підхід коштує що гірше, коли.n = k = 2 S 1 S 2 S 1 S 2 O ( | S 1 | log ( | S 2 | ) ) O ( | S 1 | + | S 2 | ) | S 1 | < < | S 2 |
Зважаючи на це, в яких ситуаціях ми можемо зробити краще, ніж наївний алгоритм? (Якщо це добре відома проблема, я би радий знати її звичайну назву та мати посилання.)