2009-02-06 3 views
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 scripting, но оба python и perl приемлемы (без использования внешних библиотек, поскольку я не имею права устанавливать их).

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

ответ

2

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

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

+0

Похоже, мне это нужно. –

Смежные вопросы