|
разбить массив на n частей, чтобы длина массива макс. длины была минимальной)
|
|||
---|---|---|---|
#18+
Всем здравствуйте, подскажите, как решить задачу: есть массив L размерности n, массив заполнен элементами длины L-i Надо разделить массив на P частей ( p - фиксированное, задаётся ручками) так, чтобы минимизировать длину массива максимальной длины. Сортировать массив нельзя. Пример: массив размерности 5, элементы - 1,2,3,7,5. P = 3. Тогда результат такой : 1,2,3 - 7 - 5 Если поможет, то P не может быть более 10. Подскажите, какие идеи.. Заранее спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2011, 09:57 |
|
разбить массив на n частей, чтобы длина массива макс. длины была минимальной)
|
|||
---|---|---|---|
#18+
Неясно, что такое "длина элемента", "L-i" и "минимизировать длину массива максимальной длины" ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2011, 10:08 |
|
разбить массив на n частей, чтобы длина массива макс. длины была минимальной)
|
|||
---|---|---|---|
#18+
...мне кажется, что где-то тут пропущено слово "Сумма" ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2011, 10:12 |
|
разбить массив на n частей, чтобы длина массива макс. длины была минимальной)
|
|||
---|---|---|---|
#18+
длина элемента i = значение i-го элемента массива, длина массива = сумма элементов массива минимизировать длину массива максимальной длины - разбить массив на подмассивы таким образом, чтобы минимизировать длину подмассива максимальной длины. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2011, 10:14 |
|
разбить массив на n частей, чтобы длина массива макс. длины была минимальной)
|
|||
---|---|---|---|
#18+
И зачем одни понятия заменять другими????????? Вместо приближения к решению задачи, ты отдаляешь от него, в том числе потенциальных участников. Ну ПРИЧЕМ ТУТ "длина", когда на самом деле это "сумма". Ну причем тут "длина элемента", когда на самом деле это "значение элемента"? ну причем тут "длина массива", когда это "размер массива"? Ты три разных понятия обозвал одним словом и хочешь, чтобы кто-то в этом разобрался. Предлагаю переписать ТЗ с учетом вышесказанного и ни разу не употребив слово "длина" , ибо оно там ни разу не нужно. Тогда можно будет заняться решением задачи. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2011, 10:27 |
|
разбить массив на n частей, чтобы длина массива макс. длины была минимальной)
|
|||
---|---|---|---|
#18+
ок, ещё раз: есть массив L размерности N. Надо разделить массив на p частей ( p - фиксированное, задаётся ручками) так, чтобы минимизировать РАЗМЕР наибольшего массива (массива максимального размера) . Сортировать массив нельзя. Пример: массив размерности 5, элементы - 1,2,3,7,5. P = 3. Тогда результат такой : 1,2,3 - 7 - 5 Если поможет, то P не может быть более 10. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2011, 10:35 |
|
разбить массив на n частей, чтобы длина массива макс. длины была минимальной)
|
|||
---|---|---|---|
#18+
Vadim111Пример: массив размерности 5, элементы - 1,2,3,7,5. P = 3. Тогда результат такой : 1,2,3 - 7 - 5 Согласно ТЗ пример некорректен должно быть так 1,2 - 3,7 - 5 (ЗЫ: размерность и размер - не одно и то же, в данном случае - размер) ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2011, 11:08 |
|
разбить массив на n частей, чтобы длина массива макс. длины была минимальной)
|
|||
---|---|---|---|
#18+
аааа, капец, вы съедаете мой мозг по частям, как впрочем и я ваш) ещё раз: есть массив L размерности N. Надо разделить массив на p подмассивов ( p - фиксированное, задаётся ручками) так, чтобы минимизировать сумму элементов подмассива наибольшей суммы . Сортировать массив нельзя. Пример: массив размерности 5, элементы - 1,2,3,7,5. P = 3. Тогда результат такой : 1,2,3 - 7 - 5 Если поможет, то P не может быть более 10. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2011, 11:12 |
|
разбить массив на n частей, чтобы длина массива макс. длины была минимальной)
|
|||
---|---|---|---|
#18+
Vadim111аааа, капец, вы съедаете мой мозг по частям, как впрочем и я ваш) это не означает, что не следует читать то, что я пишу, а также то, что пишешь ты сам Vadim111есть одномерный массив L размерностиразмера N. Надо разделить массив на p подмассивов ( p - фиксированное, задаётся ручками) так, чтобы минимизировать сумму элементов подмассива наибольшего суммыразмера. Сортировать массив нельзя.так? Vadim111Пример: массив размерности 5, элементы - 1,2,3,7,5. P = 3. Тогда результат такой : 1,2,3 - 7 - 5 но это не меняет сути дела, правильный ответ: 1,2 - 3,7 - 5 ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2011, 11:19 |
|
разбить массив на n частей, чтобы длина массива макс. длины была минимальной)
|
|||
---|---|---|---|
#18+
Уважаемый Shocker.Pro. Помогите мне, пожалуйста, составить техзадание, давайте я напишу своими словами, а вы поможете облечь это в грамотную форму. Может так: разделить массив на P частей так, чтобы суммы значений элементов каждой части были максимально близки ? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2011, 11:24 |
|
разбить массив на n частей, чтобы длина массива макс. длины была минимальной)
|
|||
---|---|---|---|
#18+
у вас есть массив чисел предлагаю следующий алгоритм строите по заданному массиву новый массив нарастающих сумм последний элемент в этом массиве = сумме всех элементов S сумму делите на нужное число частей ( P ) нарисуйте график нарастающих сумм абцисса нарастающая сумма номер элемента координата проведите горизонтальные линии с шагов S/P элементы попадающие в полосу суммируем относим к одной группе сделайте это на графике и все станет понятно нужно только грамотно учесть когда точки попадают на горизонтальные линии ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2011, 11:46 |
|
разбить массив на n частей, чтобы длина массива макс. длины была минимальной)
|
|||
---|---|---|---|
#18+
Valer, спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2011, 11:54 |
|
разбить массив на n частей, чтобы длина массива макс. длины была минимальной)
|
|||
---|---|---|---|
#18+
Vadim111Может так: разделить массив на P частей так, чтобы суммы значений элементов каждой части были максимально близки ? Может. Я-то откуда знаю, что требуется. По крайней мере, эта задача кардинально отличается от предыдущей. Ну раз все ясно, что сказал Valer - вперед. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2011, 12:16 |
|
разбить массив на n частей, чтобы длина массива макс. длины была минимальной)
|
|||
---|---|---|---|
#18+
Vadim111разделить массив на P частей так, чтобы суммы значений элементов каждой части были максимально близки ?Задача интересна, но пока никакой красивый метод в голову так и не пришел, только брутфорсить - перебрать все возможные варианты. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2011, 15:06 |
|
разбить массив на n частей, чтобы длина массива макс. длины была минимальной)
|
|||
---|---|---|---|
#18+
ну, допустим, при брутфорсе, можно сразу отбрасывать варианты, заведомо худшие, чем уже были раньше, это сэкономит, мне кажется, процентов 80 телодвижений ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2011, 15:25 |
|
разбить массив на n частей, чтобы длина массива макс. длины была минимальной)
|
|||
---|---|---|---|
#18+
Ну вот кажется вот так. Алгоритм крайне неоптимальный по времени, основная неоптимальность - поиск очередного варианта разреза - вынесен в отдельную функцию, можно над ним поколдовать. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70.
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24.
... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2011, 23:47 |
|
разбить массив на n частей, чтобы длина массива макс. длины была минимальной)
|
|||
---|---|---|---|
#18+
Shocker.Pro, спасибо, алгоритм работает, но очень очень медленно.... на массиве 73 элемента вообще висит уже очень долго ... |
|||
:
Нравится:
Не нравится:
|
|||
16.06.2011, 11:24 |
|
разбить массив на n частей, чтобы длина массива макс. длины была минимальной)
|
|||
---|---|---|---|
#18+
Vadim111, еще бы прогрессия даже не геометрическая, а факториальная оптимизируй NextParts - ее можно сильно поджать по времени при желании ... |
|||
:
Нравится:
Не нравится:
|
|||
16.06.2011, 12:46 |
|
разбить массив на n частей, чтобы длина массива макс. длины была минимальной)
|
|||
---|---|---|---|
#18+
Shocker.Pro, ок, понятно, вначале в коде бы вашем разобраться)) ... |
|||
:
Нравится:
Не нравится:
|
|||
16.06.2011, 13:16 |
|
разбить массив на n частей, чтобы длина массива макс. длины была минимальной)
|
|||
---|---|---|---|
#18+
Vadim111очень очень медленно.... на массиве 73 элемента вообще висит уже очень долгоЕще бы, при P=10 и N=73 перебрать надо за 620 миллиардов вариантов ... |
|||
:
Нравится:
Не нравится:
|
|||
16.06.2011, 18:02 |
|
разбить массив на n частей, чтобы длина массива макс. длины была минимальной)
|
|||
---|---|---|---|
#18+
Вообще (ИМХО), правильной формулировкой данной задачи можно считать следующее: "Разбить последовательность из N чисел на P частей (P>1 & P<N) так, чтобы отклонения сумм частей от среднего (сумм частей) были минимальны". "Тупым" "брутфорсом" задача, конечно же, решаема. Достаточно перебрать все варианты разбивки множества на части, рассчитывая суммы частей, и считая сумму квадратов отклонений... первая оптимизация тоже делается сразу - достаточно при расчете КВАДРОТКЛ контролировать выход за расчетный минимум... - вся проблема в том, что количество инвариантов растет (как правильно замечено ранее) пропорционально n!/p! Так что можно посоветовать? - скажем, статистические функции для первого приближения, далее - анализ полученных вариантов. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.06.2011, 22:26 |
|
разбить массив на n частей, чтобы длина массива макс. длины была минимальной)
|
|||
---|---|---|---|
#18+
спасибо, а почему именно сумму квадратов отклонений? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.06.2011, 11:58 |
|
разбить массив на n частей, чтобы длина массива макс. длины была минимальной)
|
|||
---|---|---|---|
#18+
Vadim111спасибо, а почему именно сумму квадратов отклонений? Потому что, ты там кое где оговорился, что нужно подобрать примерно одинаковые суммы. Ну а так то цель - найти разбиение, у которого, максимальная сумма (мера) подмассивов будет минимальной среди множества других разбиений. Хотя может возможно доказать, что эти цели совпадают и мини-максная мера обнаруживается у таких разбиений, у которых меры элементов разбиения близки друг к дружке. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.06.2011, 12:12 |
|
разбить массив на n частей, чтобы длина массива макс. длины была минимальной)
|
|||
---|---|---|---|
#18+
Vadim111спасибо, а почему именно сумму квадратов отклонений? педивикия ... |
|||
:
Нравится:
Не нравится:
|
|||
21.06.2011, 12:12 |
|
|
start [/forum/topic.php?fid=60&msg=37303889&tid=2158606]: |
0ms |
get settings: |
10ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
116ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
53ms |
get tp. blocked users: |
1ms |
others: | 362ms |
total: | 575ms |
0 / 0 |