Существует ли простой алгоритм для решения такого вопроса?
Ответ на этот вопрос строго "да"; Вы можете выполнить поиск методом грубой силы по всем (R выберите K) подмножествам K строк, где R - количество строк во всей таблице. Этот алгоритм довольно прост и может быть реализован в несколько строк на таком языке, как Python.
Но я не думаю, что это ответ, который вы ищете; Я думаю, вы хотите знать, есть ли простой алгоритм, который занимает меньше экспоненциального времени. Ответ на это почти наверняка нет; проблема является NP-сложной, за счет сокращения от задачи о максимальном независимом множестве , поэтому не существует известного алгоритма, который дает правильные ответы за полиномиальное время, и очень вероятно, что такой алгоритм невозможен.
Сокращение выглядит следующим образом: для данного графика построить таблицу с одной строкой для каждой вершины. Для каждого ребра на графике добавьте один столбец в таблицу; в этом столбце напишите одну и ту же букву в двух строках, к которым присоединяется ребро, а затем напишите разные другие буквы в каждой из оставшихся строк для этого столбца. Результирующая таблица содержит V строк и E столбцов, поэтому ее размер является полиномиальным по размеру исходного графа и строится за полиномиальное время.
Затем любой набор из K строк, имеющих разные значения в каждом столбец дает K вершин в исходном графе, не связанных ни одним ребром. Это означает, что если вы можете ответить да / нет на то, существует ли такой набор из K строк за полиномиальное время, то вы также можете ответить на форму решения задачи о максимальном независимом наборе за полиномиальное время. Последний является NP-полным, поэтому ваша задача - NP-hard.