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

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

, вершины 

  и вершины 

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

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

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

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

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

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

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

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

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