Найти итоги подмножеств для огромного набора данных - PullRequest
1 голос
/ 06 февраля 2009

1-й из всех: я не программист, никогда не изучал программирование / алгоритмы. На самом деле я должен программировать, в основном в awk или ruby, в некотором bash.

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

Но я должен найти их / их: поэтому сначала я вычислил правильную общую сумму (с добавлением всех чисел с awk), не заботясь об их знаках. Теперь я теперь разница между первоначальной суммой (которая заботилась о знаках) и моей новой общей суммой. Но я должен найти все подмножества набора данных, который имеет точно такую ​​же сумму, как разница / 2.

например:.

DATA:
1,2,3,4,5

ORIG SUM: 
5  

Теперь мы можем вычислить разницу между 1 + 2 + 3 + 4 + 5 - ORIG SUM: 15-5 = 10. 10/2 = 5, поэтому мне нужно найти все подмножества, которые могут добавить до 5, то есть [1,4], [2,3], [5].

Есть ли правильный способ сделать это? Я предпочитаю скрипты awk, ruby, shell, но и python, и perl приемлемы (без интенсивного использования внешних библиотек, поскольку я не имею права их устанавливать).

Заранее спасибо.

1 Ответ

2 голосов
/ 06 февраля 2009

Вы имеете в виду проблему SUBSET SUM, известную в информатике?

Подсказка: посмотрите в связанных вопросах, есть много вопросов / ответов по этой проблеме.

...