Задача формализуется комбинаторной задачей на графах: дано конечное множество элементов

и конечное множество

, вершины

и вершины

соединяем ребром тогда и только тогда, когда

. Получаем двудольный граф и на нем задачу вершинного покрытия (или как она называется, я уже не помню), только с ограничением выбора вершин лишь из множества

. Дальше легко строится задача булева линейного программирования с

переменными (из которых последние

равны нулю по последнему условию) и

условиями. Задача, есс-но, NP-полная.
Ответ напрашивается сам собой: на k-м шаге нужно называть такой элемент, который входит в наименьшее число множеств из

.
Но как это доказать? Хотябы какой подход к доказательству здесь можно применить?
Это скорее всего неверно, это часто выполняется, но не всегда, это т.н. "жадный алгоритм". Контрпримеры обычно имеют число вершин порядка

, я не буду их искать.
Хотя можно утверждать, что если существует элемент, входящий в только одно множество

, то можно смело брать его. И т.д. брать то тех пор, пока все такие не исчезнут. Это известный частичный алгоритм тоже.