У меня есть объект итератор, который содержит наборы. Мне нужно удалить суперсеты - PullRequest
0 голосов
/ 31 октября 2019

У меня есть объект итератора, который содержит наборы. Мне нужно удалить суперсеты.

input = [{1},{2,3},{1,2},{1,2,3},{2,3,5}]

вывод должен быть [{1},{2,3}]. {1,2} удалено, потому что {1} является подмножеством и т. Д.

Я не могу преобразовать его в список, так как это очень дорогая и временная память для моей системы, поскольку список может содержать миллион элементов. Есть ли операция итератора для выполнения этой операции или какой-либо недорогой способ выполнить это?

1 Ответ

0 голосов
/ 31 октября 2019

Почему бы не осколить ваши данные? Вы также можете использовать многопроцессорность, чтобы ускорить процесс. Исходя из того, что вы имеете в виду, вы можете по существу получить уникальные подмножества всех ваших «пакетов» и снова выполнить перерасчет среди всех подмножеств. Это сэкономит время, если у вас уже есть данные в памяти ... и предполагается, что вы находитесь в потоке. Вы могли бы снова осколить потоки и делать это рекурсивно, что ускорило бы его. Я не понимаю, как сэкономить память, но со временем вы можете легко распараллелить проблему.

Итератор работает над потоком или чем-то?

Вы также можете отметить правила, если len (someset) = 1.

...