Проверка возможности установки крышки

У меня есть набор массивов:

[1,2,3]
[1,2]
[1]

Мне нужно выяснить, существует ли "покрывающий набор" уникальных значений, каждое из которых соответствует значению в массиве. В этом случае набор покрытия может быть [3,2,1], Мне на самом деле не нужен набор, мне просто нужно знать, возможно ли это или нет.

Например, в этом случае это невозможно:

[1,2]
[1,2]
[1,2]

ВОПРОС: Какой самый быстрый способ определить, есть ли решение (не обязательно, что это решение)?


Дополнительная информация:

Я работаю в node и у меня есть более 100 000 таких наборов, которые мне нужно протестировать, и я надеялся на решение O(n), но, похоже, это невозможно.

Я попытался оптимизировать, проверив, что у объединения массивов есть длина>= количество массивов в наборе и обрезка массивов, которые имеют длину>= количество массивов в наборе. Но прав ли я, что тогда это всего лишь грубые попытки найти решение?

PS У меня нет математического фона, чтобы по-настоящему понять проблему покрытия множества, но я считаю, что она связана, следовательно, с ссылками на нее.

0 ответов

Другие вопросы по тегам