Самый большой набор строк с двумя уникальными столбцами - PullRequest
2 голосов
/ 28 сентября 2019

Учитывая текстовый файл с двумя столбцами, создайте максимально возможное подмножество строк, для которых значение не повторяется ни в одном столбце.Например, с учетом этих четырех строк:

1 a
1 b
2 a
2 b

Можно использовать что-то вроде «sort -u» в командной строке, чтобы уникально сначала в столбце 1, оставляя

1 a
2 a

изатем по второму столбцу, оставляя только

1 a

Это удовлетворяет "никакое значение не повторяется", но не "наибольшему возможному подмножеству". В идеальном мире я бы произвел либо

1 a
2 b

или

1 b
2 a

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

Кто-нибудь может подумать о подходе?

Я также был бы счастлив с "довольно большим подмножеством", если бы я не мог буквально получить "максимально возможное подмножество"

Если я сортирую по (столбец 1 в порядке возрастания, а затем столбец 2 в произвольном порядке), удаление по столбцу 1 даст мне несколько лучшие результаты, но я чувствую, что есть кое-что простое, что я упускаю.

1 Ответ

0 голосов
/ 29 сентября 2019

Для каждого уникального элемента из столбца 1 создайте список уникальных элементов из столбца 2. Затем, начиная с наименьшего из списков, создайте окончательный результат, взяв первое значение из каждого списка и каждого элемента col-1, который не былиспользуется в выводе еще.

...