Страницы: 1
RSS
Подбор заданных чисел с общей суммой ноль
 
Добрый день! Подскажите пожалуйста как лучше сделать, задали задачу, где есть квадрат и в нем вписаны цифры, по условию задачи, необходимо расставить цифры так, что б сумма по горизонтали и вертикали была равна нулю. Интересует соответственно не само решение а алгаритм как это сделать при помощи Эксель. пример во вложении.
 
Есть ограничения на сами числа (миниму/максимум)?
Вариантов решения может быть множество, от генерации случайных чисел, до решения через "Поиск решения"
 
Есть! числа необходимо использовать только те, которые в квадрте (во вложении) находятся
 
Как вариант, через генератор случайных чисел (нажимайте F9 до тех пор, пока Вас не устроит решение)
 
Цитата
karter171 написал:
числа необходимо использовать только те, которые в квадрте (во вложении) находятся
Это полностью меняет дело, задача по типу напоминает "Магический квадрат".

Какое число должно быть в D7 - 0?
 
Да сумма в каждом столбики и строке должна быть ноль. а в ячейке D-7 тоже ноль
Изменено: karter171 - 22.08.2015 09:16:44
 
Решать полным перебором 16! перестановок не вариант (почти 21 триллион комбинаций)

Можно попробовать решить частичный перебор.
Всего существует 23 уникальных вариантов сложения четырех слагаемых, когда в результате получается ноль:
=28+10-10-28
=28+8-10-26
=28+3-3-28
=28+3-5-26
=28+0-6-22
=28-3-3-22
=23+13-10-26
=23+10-5-28
=23+8-3-28
=23+8-5-26
=23+3+0-26
=18+13-3-28
=18+13-5-26
=18+10+0-28
=18+10-6-22
=18+8+0-26
=18-3-5-10
=13+10+3-26
=13+3-6-10
=13+0-3-10
=10+3-3-10
=8+3-5-6
=8+0-3-5

Каждый из котрых имеет 24 (4!) перестановок
Далее можно перебирать эти варианты рекурсиями, может быть и получится быстрый алгоритм
 
Цитата
MCH написал:
Каждый из котрых имеет 24 (4!) перестановок
Далее можно перебирать эти варианты рекурсиями, может быть и получится быстрый алгоритм
Спасибо буду пробывать!
 
А для этой задачи решение-то есть? Т.е., для данного набора чисел можно составить искомые комбинации? Ведь не факт, что если сумма всех чисел = 0, то существуют 16 сочетаний, каждое из которых равно 0 и расположены в заданном порядке
F1 творит чудеса
 
именно для тех цифр решение присутствует.
 
Цитата
MCH написал: Всего существует 23 уникальных вариантов
Как их можно узнать, кроме как перебором?
F1 творит чудеса
 
http://www.excelworld.ru/forum/10-5196-1
Один из вариантов решения выдает все возможные комбинации (их 30 штук, из которых уникальных - 23)
Решение основано на переборе, но если задать ограничение в 4 слагвемых, то перебор производится очень быстро
 
Спасибо!
F1 творит чудеса
 
Цитата
karter171 написал: именно для тех цифр решение присутствует.
Пробовал решить перебором на рекурсиях, решение не нашлось.
При этом для магического квадрата (без диагоналей) решение находится быстро
 
По поводу данной задачи была такая мысль (как привести к нормальному алгоритму - не знаю).
Имеем список сочетаний, дающих в сумме 0 (без перестановок). Анализируем частоту попадания каждого из чисел в эти сочетания (например, для тех сочетаний, что привел Михаил, число -22 встречается всего 3 раза, а -26 уже 8 раз).
Берем сочетания, в которых есть наиболее редко встречающееся число (т.е. в данном случае сочетания с -22).
Берем первое из них, принимаем его за строку 1. Отмечаем выпавшие числа и сочетания с ними (как быть с повторяющимися числами - пока непонятно, но, наверное, можно найти решение).
Если у нас остались сочетания с числом -22, то берем следующее из них, не содержащие других выпавших чисел, принимаем его за столбец (пересекающийся с нашей строкой).
Ну и так далее, проверяем оставшиеся сочетания, выбрасывая использованные числа и сочетания с ними.

Так вот с числом -22 у нас всего 3 сочетания дающих 0 в сумме:
28 0 -6 -22
18 10 -6 -22
28 -3 -3 -22

Если первое из них взяли как строку, то в качестве перекрестного мы не можем брать сочетания, в которых есть -6, 0, 28. В таком случае перекрестных сочетаний у нас не остается.
Значит, первое сочетание не подходит в качестве решения.
Берем второе, с ним может пересекаться только одно оставшееся: третье. Ну и так далее.

Если пытаться как-то формализовать задачу, то, наверное, можно записать так:
O - множество всех рассматриваемых чисел X1,..., X16. Надо найти 8 таких подмножеств А, ..., H, каждое из 4 элементов,
  • сумма членов которых равна 0,

  • при этом их можно разделить на 2 подгруппы, для которых:
  • Группа 1: подмножества А, B, C, D не пересекаются (т.е. параллельны, например, строки), Группа 2: подмножества E, F, G, H не пересекаются (столбцы)
  • Любое подмножество первой группы пересекается с любым подмножеством второй группы  в 1 (только) элементе: А ∩ E = Xi
Тут мне уже не хватает математических знаний, но наверняка существует более-менее внятный алгоритм
Как минимум, после вычленения подмножеств, сумма которых равна 0, перепроверить их на пересечения проще, чем перебирать все сочетания
F1 творит чудеса
Страницы: 1
Читают тему
Наверх