<?xml version="1.0" encoding="windows-1251"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
<title>Сумма с минимальным отклонением от среднего значения</title>
<description>Друзья очень нужна помощь. Задача кажется непостижимой, поэтому никаких формул, собственных решений и начинаний.
Есть массив чисел, например (142, 238, 47, 66, 200, 85, 47, 165, 160). Это высоты каких то блоков. Их надо поместить в N колонок. Для примера N=3. 
Поместить надо таким образом, чтобы разница в высоте относительно средней высоты колонки была минимальная. Под средней высотой понимается сумма всех высот деленная на N, 
в нашем примере это 1150/3 = 383,333. То есть надо найти три суммы элементов, с минимальным отклонением от 383,333. 
Заранее спасибо.</description><link>http://www.mathforum.ru/forum/read/1/62348/62348/#62348</link><lastBuildDate>Mon, 11 May 2026 15:19:43 +0300</lastBuildDate>
<generator>Phorum 5.2.10</generator>
<item>
<guid>http://www.mathforum.ru/forum/read/1/62348/62402/#62402</guid>
<title>...</title><link>http://www.mathforum.ru/forum/read/1/62348/62402/#62402</link><description><![CDATA[<blockquote class="bbcode"><div><small>Цитата<br/></small><strong>zklb (Дмитрий)</strong><br/> вы, наверное, смеетесь?</div></blockquote>
Что Вы, я абсолютно серьезен.<br /><blockquote class="bbcode"><div><small>Цитата<br/></small><strong>zklb (Дмитрий)</strong><br/>
то что у вас предложено - это детский лепет, очевидный любому.</div></blockquote>
Я тоже так считаю. Вообще вся математика - это очевидная тавтология для тех кто понимает.<br /><blockquote class="bbcode"><div><small>Цитата<br/></small><strong>zklb (Дмитрий)</strong><br/>
эвристики тут нет но и нет заметного улучшения. ну будет 10^10 вместо 10^18 - толку то?</div></blockquote>
Толк в том, что <span class="math">$10^{10}$</span> вариантов влезут в память средненького компьютера. А <span class="math">$10^{18}$</span> уже нет.<br />А если мы в качестве первоначального варианта для сравнения выберем сразу какой-нибудь вариант, близкий к оптимальному, то практически все ветви перебора будут отсекаться, не доходя до конца. И количество операций уменьшиться весьма значительно. Но это тоже, конечно, очевидное соображение, &quot;детский лепет&quot;.]]></description>
<dc:creator>vpro</dc:creator>
<category>Высшая математика</category><pubDate>Sun, 03 Mar 2013 13:47:16 +0400</pubDate></item>
<item>
<guid>http://www.mathforum.ru/forum/read/1/62348/62401/#62401</guid>
<title>хм</title><link>http://www.mathforum.ru/forum/read/1/62348/62401/#62401</link><description><![CDATA[<blockquote class="bbcode"><div><small>Цитата<br/></small><strong>vpro</strong><br/>
<blockquote class="bbcode"><div><small>Цитата<br/></small><strong>zklb (Дмитрий)</strong><br/>
<blockquote class="bbcode"><div><small>Цитата<br/></small><strong>vpro</strong><br/>
Разумный перебор с отсечением заведомо негодных ветвей перебора называется методом ветвей и границ. Им и нужно воспользоваться. Думаю, что если исходное множество не превосходит нескольких сотен элементов, то такой перебор вполне реален.</div></blockquote><br />я буквально вчера преподавал метод ветвей и границ. правда для задач целочисленного линейного программирования. эта задача другого рода. и отсечение плохих вариантов надо делать на основании эвристик. у разумовского в &quot;дискретном анализе&quot; кажется была подобная задача.</div></blockquote>
Пусть мы имеем <span class="math">$N$</span> чисел <span class="math">$a_i$</span>. Их нужно разбить на <span class="math">$M$</span> групп так, чтобы суммы чисел <span class="math">$S_k, k=1,...M$</span> в группах удовлетворяли условию: <span class="math">$\max_k{|S_k-S_0|}\to \min$</span>. Здесь <span class="math">$S_0=\frac1M\sum_{i=1}^N{a_i} $</span>.<br />Рассмотрим полное дерево вариантов. В вершине дерева - <span class="math">$a_1$</span>. Мы его можем поместить в одну из <span class="math">$M$</span> групп. Значит, из вершины выходит <span class="math">$M$</span> ветвей. Из каждой из этих ветвей исходит снова <span class="math">$M$</span> ветвей - в соответствии с возможным расположением второго числа.... И т. д. для каждого из <span class="math">$N$</span> чисел. Таким образом, построив дерево, мы получаем <span class="math">$M^N$</span> возможных вариантов.<br />Да, многовато...Поэтому начинаем отсекать лишние ветви. Для этого используем совершенно логичные соображения<br />1) Из соображений симметрии первый элемент достаточно оставить только в первой группе. Остальные <span class="math">$M-1$</span> вариантов его расположения мы смело можем отбросить. Так ведь? Мы сразу сократили дерево в <span class="math">$M$</span> раз. Второй элемент может попасть либо в группу к первому, либо в одну из свободных групп, например во вторую. Остальные варианты его размещения (<span class="math">$M-2$</span>) отбрасываем.. И так далее....<br />2)Когда в первый раз достигаем некоторого варианта размещения (проходим дерево до конца по одному из путей), мы вычисляем показатель качества <span class="math">$F=\max_k{|S_k-S_0|}$</span>. Строя дерево, мы также все время вычисляем накопленные суммы <span class="math">$S_k$</span> в каждой группе по каждому пути. Как только мы получим, что <span class="math">$|S_k-S_0|\ge F$</span>, ветвь отбрасывается. Достигнув очередного варианта размещения, снова вычисляем <span class="math">$F$</span> и оставляем меньшее значение из старого и нового.<br /><br />Вот простенький вариант метода ветвей и границ, который гарантированно приведет к успеху и значительно эффективнее полного перебора.<br /><br />И никакой эвристики</div></blockquote><br />вы, наверное, смеетесь? то что у вас предложено - это детский лепет, очевидный любому. эвристики тут нет но и нет заметного улучшения. ну будет 10^10 вместо 10^18 - толку то?]]></description>
<dc:creator>zklb (Дмитрий)</dc:creator>
<category>Высшая математика</category><pubDate>Sun, 03 Mar 2013 13:29:03 +0400</pubDate></item>
<item>
<guid>http://www.mathforum.ru/forum/read/1/62348/62393/#62393</guid>
<title>я же сказал:от сохи</title><link>http://www.mathforum.ru/forum/read/1/62348/62393/#62393</link><description><![CDATA[Примерно по этому алгоритму делают подбор все профессионалы-рабочие (плиточники и т.д.)<br />А уж в терминологии сами разбирайтесь. Не думаю, что есть более эффективные.<br />Другое дело,как я переложил народное творчество на вашу партитуру. Но основную идею (от крупного к мелкому) передал верно.<br />Запутаться это вряд ли. Идешь сверху вниз (от крупного к мелкому) и помнишь только заданный размер (здесь среднее значение).<br />Единственное принципиальное отличие,что этапе строительства на практике наличие в итоге нераспределнного остатка не грех. Главное попасть<br />в размер. Он может быть использован на этапе подгонки,но всегда есть. Здесь иначе. Все задействовано. Впрочем из за того,что<br />размер среднее,существование остатка кажется невозможно.]]></description>
<dc:creator>brimal</dc:creator>
<category>Высшая математика</category><pubDate>Sun, 03 Mar 2013 00:16:44 +0400</pubDate></item>
<item>
<guid>http://www.mathforum.ru/forum/read/1/62348/62392/#62392</guid>
<title>brimal,</title><link>http://www.mathforum.ru/forum/read/1/62348/62392/#62392</link><description><![CDATA[Вы описали эвристический алгоритм или точный? Что-то не хочется разбираться.<br />Если &quot;башен&quot; достаточно много, последовательное улучшение может стать либо очень запутанным, либо неполным (дает только приближенное решение). Кстати, в задачах комбинаторной оптимизации часто не обязательно искать точное решение. Оно &quot;дорогое&quot; по времени.]]></description>
<dc:creator>provincialka</dc:creator>
<category>Высшая математика</category><pubDate>Sun, 03 Mar 2013 00:00:25 +0400</pubDate></item>
<item>
<guid>http://www.mathforum.ru/forum/read/1/62348/62390/#62390</guid>
<title>Для меня это было очень личным.....(С) Заложница.</title><link>http://www.mathforum.ru/forum/read/1/62348/62390/#62390</link><description><![CDATA[Спасибо друг :)]]></description>
<dc:creator>ridzhi</dc:creator>
<category>Высшая математика</category><pubDate>Sat, 02 Mar 2013 22:48:56 +0400</pubDate></item>
<item>
<guid>http://www.mathforum.ru/forum/read/1/62348/62387/#62387</guid>
<title>&quot;Сейчас мы пойдем простым логическим путем... Сегодня в бане мы пили за кого? За Лукашина...&quot; (с)</title><link>http://www.mathforum.ru/forum/read/1/62348/62387/#62387</link><description><![CDATA[<blockquote class="bbcode"><div><small>Цитата<br/></small><strong>zklb (Дмитрий)</strong><br/>
<blockquote class="bbcode"><div><small>Цитата<br/></small><strong>vpro</strong><br/>
Разумный перебор с отсечением заведомо негодных ветвей перебора называется методом ветвей и границ. Им и нужно воспользоваться. Думаю, что если исходное множество не превосходит нескольких сотен элементов, то такой перебор вполне реален.</div></blockquote><br />я буквально вчера преподавал метод ветвей и границ. правда для задач целочисленного линейного программирования. эта задача другого рода. и отсечение плохих вариантов надо делать на основании эвристик. у разумовского в &quot;дискретном анализе&quot; кажется была подобная задача.</div></blockquote>
Пусть мы имеем <span class="math">$N$</span> чисел <span class="math">$a_i$</span>. Их нужно разбить на <span class="math">$M$</span> групп так, чтобы суммы чисел <span class="math">$S_k, k=1,...M$</span> в группах удовлетворяли условию: <span class="math">$\max_k{|S_k-S_0|}\to \min$</span>. Здесь <span class="math">$S_0=\frac1M\sum_{i=1}^N{a_i} $</span>.<br />Рассмотрим полное дерево вариантов. В вершине дерева - <span class="math">$a_1$</span>. Мы его можем поместить в одну из <span class="math">$M$</span> групп. Значит, из вершины выходит <span class="math">$M$</span> ветвей. Из каждой из этих ветвей исходит снова <span class="math">$M$</span> ветвей - в соответствии с возможным расположением второго числа.... И т. д. для каждого из <span class="math">$N$</span> чисел. Таким образом, построив дерево, мы получаем <span class="math">$M^N$</span> возможных вариантов.<br />Да, многовато...Поэтому начинаем отсекать лишние ветви. Для этого используем совершенно логичные соображения<br />1) Из соображений симметрии первый элемент достаточно оставить только в первой группе. Остальные <span class="math">$M-1$</span> вариантов его расположения мы смело можем отбросить. Так ведь? Мы сразу сократили дерево в <span class="math">$M$</span> раз. Второй элемент может попасть либо в группу к первому, либо в одну из свободных групп, например во вторую. Остальные варианты его размещения (<span class="math">$M-2$</span>) отбрасываем.. И так далее....<br />2)Когда в первый раз достигаем некоторого варианта размещения (проходим дерево до конца по одному из путей), мы вычисляем показатель качества <span class="math">$F=\max_k{|S_k-S_0|}$</span>. Строя дерево, мы также все время вычисляем накопленные суммы <span class="math">$S_k$</span> в каждой группе по каждому пути. Как только мы получим, что <span class="math">$|S_k-S_0|\ge F$</span>, ветвь отбрасывается. Достигнув очередного варианта размещения, снова вычисляем <span class="math">$F$</span> и оставляем меньшее значение из старого и нового.<br /><br />Вот простенький вариант метода ветвей и границ, который гарантированно приведет к успеху и значительно эффективнее полного перебора.<br /><br />И никакой эвристики]]></description>
<dc:creator>vpro</dc:creator>
<category>Высшая математика</category><pubDate>Sat, 02 Mar 2013 21:59:08 +0400</pubDate></item>
<item>
<guid>http://www.mathforum.ru/forum/read/1/62348/62381/#62381</guid>
<title>Спасибо</title><link>http://www.mathforum.ru/forum/read/1/62348/62381/#62381</link><description><![CDATA[Друзья, спасибо всем большое за отклик, буду что то пробовать.]]></description>
<dc:creator>ridzhi</dc:creator>
<category>Высшая математика</category><pubDate>Sat, 02 Mar 2013 19:16:34 +0400</pubDate></item>
<item>
<guid>http://www.mathforum.ru/forum/read/1/62348/62378/#62378</guid>
<title>а можно человеку от сохи?</title><link>http://www.mathforum.ru/forum/read/1/62348/62378/#62378</link><description><![CDATA[Прощеньица просим,конешно. Из голой практики очевидно,что мелочью довести проще<br />Поэтому<br />0. Определяем среднее<br />1.&quot;строительство&quot;<br />-ранжируем по величине<br />238<br />200<br />165<br />160<br />142<br />85<br />66<br />47<br />47<br /><br />-Для самого большого подбираем большой ближе всего к среднему<br />200<br />142<br />-повторяем для оставшейся выборки для 200<br />просматривая сверху вниз. Подбор идет до превышения. Если слишком велико,то повторяем подбор начиная со следущего (можно сравниваем два подбора,начиная со следущего и начиная через один) Получаем<br />200<br />85<br />47<br />47<br />-и наконец из оставшихся<br />165<br />160<br />66<br />По идее должна быть вторая стадия &quot;Подгонка&quot;, когда два наиболее разных пытаемся за счет взаимного обмена мелочью получить более равное.<br />Если в результате Строительства остается 1,2 неприкаенных начинаем сначала,меняя среднее, которому стремимся. После Строительства ничего не должно остаться.<br />Извинениьца просим,что влез.<br />Да. При подгонке начинаем с конца. Больший с конца бОльшего пытаемся менять с меньшим с конца мЕньшего<br />Теперь вроде все верно.]]></description>
<dc:creator>brimal</dc:creator>
<category>Высшая математика</category><pubDate>Sat, 02 Mar 2013 18:51:36 +0400</pubDate></item>
<item>
<guid>http://www.mathforum.ru/forum/read/1/62348/62377/#62377</guid>
<title>хм</title><link>http://www.mathforum.ru/forum/read/1/62348/62377/#62377</link><description><![CDATA[<blockquote class="bbcode"><div><small>Цитата<br/></small><strong>vpro</strong><br/>
Разумный перебор с отсечением заведомо негодных ветвей перебора называется методом ветвей и границ. Им и нужно воспользоваться. Думаю, что если исходное множество не превосходит нескольких сотен элементов, то такой перебор вполне реален.</div></blockquote><br />я буквально вчера преподавал метод ветвей и границ. правда для задач целочисленного линейного программирования. эта задача другого рода. и отсечение плохих вариантов надо делать на основании эвристик. у разумовского в &quot;дискретном анализе&quot; кажется была подобная задача.]]></description>
<dc:creator>zklb (Дмитрий)</dc:creator>
<category>Высшая математика</category><pubDate>Sat, 02 Mar 2013 17:42:13 +0400</pubDate></item>
<item>
<guid>http://www.mathforum.ru/forum/read/1/62348/62375/#62375</guid>
<title>Да, именно так</title><link>http://www.mathforum.ru/forum/read/1/62348/62375/#62375</link><description><![CDATA[Разумный перебор с отсечением заведомо негодных ветвей перебора называется методом ветвей и границ. Им и нужно воспользоваться. Думаю, что если исходное множество не превосходит нескольких сотен элементов, то такой перебор вполне реален.]]></description>
<dc:creator>vpro</dc:creator>
<category>Высшая математика</category><pubDate>Sat, 02 Mar 2013 13:24:27 +0400</pubDate></item>
<item>
<guid>http://www.mathforum.ru/forum/read/1/62348/62374/#62374</guid>
<title>Учитывая архитектурную интерпретацию</title><link>http://www.mathforum.ru/forum/read/1/62348/62374/#62374</link><description><![CDATA[могу сказать, что это таки следует решать разумным перебором. Что касается критерия оптимизации, то к минимуму следует устремить сумму модулей отклонений. Хотя можно и сумму квадратов, но в данном случае, боюсь, это не сильно поможет. Разумный перебор - это перебор без повторений, но охватывающий потенциально все варианты. Можно его ускорить, если после построения очередного плана далее уже не рассматривать построения, содержащие большие отклонения.]]></description>
<dc:creator>museum</dc:creator>
<category>Высшая математика</category><pubDate>Sat, 02 Mar 2013 11:49:00 +0400</pubDate></item>
<item>
<guid>http://www.mathforum.ru/forum/read/1/62348/62371/#62371</guid>
<title>Уточнение</title><link>http://www.mathforum.ru/forum/read/1/62348/62371/#62371</link><description><![CDATA[<blockquote class="bbcode"><div><small>Цитата<br/></small><strong>museum</strong><br/>
<blockquote class="bbcode"><div><small>Цитата<br/></small><strong>ridzhi</strong><br/>
Я правильно понимаю, что это достаточно сложная задача ?)</div></blockquote>
Мне кажется, что неправильно. Мне кажется, что задача просто не поставлена, т.к. не указано, что именно минимизируется.<br />Начнем:<br />Имеется набор из m чисел (это число задано), нужно расположить их в n колонок (судя по тому, что Вы написали - это число тоже задано).<br />А вот это уже никуда не годится: <blockquote class="bbcode"><div><small>Цитата<br/></small><strong></strong><br/>чтобы разница в высоте относительно средней высоты колонки была минимальная</div></blockquote>. Согласитесь, что найти <blockquote class="bbcode"><div><small>Цитата<br/></small><strong></strong><br/>три суммы элементов, с минимальным отклонением от 383,333.</div></blockquote> весьма проблематично, ибо суммы эти могут быть и неравными. Если это многокритериальная оптимизация, то при постановке нужно указать иерархию критериев, веса и т.п.<br />Если же это простая оптимизация, то нужно указать критерий: типа минимальной суммы модулей отклонений или их квадратов. Второе легче.</div></blockquote>
Я не указал в задаче что суммы должны быть равными, сочетание сумм должно быть с минимально возможным отклонением. Впрочем давайте на примере и чуть более подробно.<br /><br />(142, 238, 47, 66, 200, 85, 47, 165, 160) - Числа в массиве, это строительные блоки(этажи). Из них надо построить 3 дома таким образом, чтобы линия их крыш была максимально ровной.<br />Очевидно, что максимально ровная линия крыш будет при одинаковой высоте трех домов. Наши строительные блоки(этажи) имеют общую высоту 1150. Соответственно одинаковая высота для трех домов<br />будет 1150/3 = 383,333. Таким образом задача состоит в том, чтобы найти три сочетания блоков для наших трех домов, которые будут давать максимально ровную линию крыш.<br /><br />Методом подбора я нашел такой вариант:<br />[142, 238] - высота 380, отклонение от средней высоты 383,333 - 380 = 3,333<br />[47, 200, 85, 47] - высота 379, отклонение от средней высоты 383,333 - 379 = 4,333<br />[66, 165, 160] - высота 391, отклонение от средней высоты 383,333 - 391 = -7,667<br /><br />Этот вариант имеет масимальное отклонение от идеально ровной линии 7,667.<br /><br />Так вот, я хочу понять возможен ли здесь четкий алгоритм/формула для нахождения сочетания блоков с минимально-возможным отклонением. Разумеется количество строительных блоков, их высота, количество домов могут быть разными.]]></description>
<dc:creator>ridzhi</dc:creator>
<category>Высшая математика</category><pubDate>Sat, 02 Mar 2013 07:42:02 +0400</pubDate></item>
<item>
<guid>http://www.mathforum.ru/forum/read/1/62348/62367/#62367</guid>
<title>Уточните постановку</title><link>http://www.mathforum.ru/forum/read/1/62348/62367/#62367</link><description><![CDATA[<blockquote class="bbcode"><div><small>Цитата<br/></small><strong>ridzhi</strong><br/>
Я правильно понимаю, что это достаточно сложная задача ?)</div></blockquote>
Мне кажется, что неправильно. Мне кажется, что задача просто не поставлена, т.к. не указано, что именно минимизируется.<br />Начнем:<br />Имеется набор из m чисел (это число задано), нужно расположить их в n колонок (судя по тому, что Вы написали - это число тоже задано).<br />А вот это уже никуда не годится: <blockquote class="bbcode"><div><small>Цитата<br/></small><strong></strong><br/>чтобы разница в высоте относительно средней высоты колонки была минимальная</div></blockquote>. Согласитесь, что найти <blockquote class="bbcode"><div><small>Цитата<br/></small><strong></strong><br/>три суммы элементов, с минимальным отклонением от 383,333.</div></blockquote> весьма проблематично, ибо суммы эти могут быть и неравными. Если это многокритериальная оптимизация, то при постановке нужно указать иерархию критериев, веса и т.п.<br />Если же это простая оптимизация, то нужно указать критерий: типа минимальной суммы модулей отклонений или их квадратов. Второе легче.]]></description>
<dc:creator>museum</dc:creator>
<category>Высшая математика</category><pubDate>Fri, 01 Mar 2013 23:55:29 +0400</pubDate></item>
<item>
<guid>http://www.mathforum.ru/forum/read/1/62348/62365/#62365</guid>
<title>хм</title><link>http://www.mathforum.ru/forum/read/1/62348/62365/#62365</link><description><![CDATA[Я правильно понимаю, что это достаточно сложная задача ?)]]></description>
<dc:creator>ridzhi</dc:creator>
<category>Высшая математика</category><pubDate>Fri, 01 Mar 2013 23:29:39 +0400</pubDate></item>
<item>
<guid>http://www.mathforum.ru/forum/read/1/62348/62359/#62359</guid>
<title>Э-э-э...</title><link>http://www.mathforum.ru/forum/read/1/62348/62359/#62359</link><description><![CDATA[<blockquote class="bbcode"><div><small>Цитата<br/></small><strong>zklb (Дмитрий)</strong><br/>
сдается мне, что эта задачка решается только эвристически.</div></blockquote>
Согласитесь, Дмитрий, что &quot;эвристически&quot; и &quot;перебором&quot; это не одно и то же.]]></description>
<dc:creator>vpro</dc:creator>
<category>Высшая математика</category><pubDate>Fri, 01 Mar 2013 21:52:52 +0400</pubDate></item>
<item>
<guid>http://www.mathforum.ru/forum/read/1/62348/62352/#62352</guid>
<title>хм</title><link>http://www.mathforum.ru/forum/read/1/62348/62352/#62352</link><description><![CDATA[сдается мне, что эта задачка решается только эвристически.]]></description>
<dc:creator>zklb (Дмитрий)</dc:creator>
<category>Высшая математика</category><pubDate>Fri, 01 Mar 2013 20:21:33 +0400</pubDate></item>
<item>
<guid>http://www.mathforum.ru/forum/read/1/62348/62348/#62348</guid>
<title>Сумма с минимальным отклонением от среднего значения</title><link>http://www.mathforum.ru/forum/read/1/62348/62348/#62348</link><description><![CDATA[Друзья очень нужна помощь. Задача кажется непостижимой, поэтому никаких формул, собственных решений и начинаний.<br />Есть массив чисел, например (142, 238, 47, 66, 200, 85, 47, 165, 160). Это высоты каких то блоков. Их надо поместить в N колонок. Для примера N=3.<br />Поместить надо таким образом, чтобы разница в высоте относительно средней высоты колонки была минимальная. Под средней высотой понимается сумма всех высот деленная на N,<br />в нашем примере это 1150/3 = 383,333. То есть надо найти три суммы элементов, с минимальным отклонением от 383,333.<br />Заранее спасибо.]]></description>
<dc:creator>ridzhi</dc:creator>
<category>Высшая математика</category><pubDate>Fri, 01 Mar 2013 19:05:14 +0400</pubDate></item>
</channel>
</rss>