У меня есть следующая проблема, которую я хочу эффективно решить.Мне дают набор из k-кортежей логических значений, где я заранее знаю, что некоторая доля каждого из значений в каждом из k-кортежей является истинной.Например, у меня могут быть следующие 4 кортежа, где каждый кортеж имеет по крайней мере 60% своих логических значений, установленных в true:
(1, 0, 1, 0)
(1, 1, 0, 1)
(0, 0, 1, 0)
Я заинтересован в поиске наборов индексов, которые имеют определенное свойство: если я посмотрю на каждое из значений в кортежах по указанным индексам, то по крайней мере для данной части этих кортежей будет установлен соответствующий бит.Например, в приведенном выше наборе из 4 кортежей я мог бы рассмотреть набор {0}, поскольку, если вы посмотрите на нулевой элемент каждого из вышеперечисленных кортежей, две трети из них равны 1 и 2/3 ~ =66%> 60%.Я мог бы также рассмотреть набор {2} по той же причине.Однако я не мог рассмотреть {1}, так как по индексу 1 только треть кортежей имеет 1, а 1/3 - менее 60%.Точно так же я не мог использовать {0, 2} в качестве набора, потому что это неправда, что как минимум в 60% кортежей установлены биты 0 и 2.
Моя цель - найти все наборы длякоторый имеет это свойство.У кого-нибудь есть хороший алгоритм для решения этой проблемы?
Спасибо.