|
|
|
Зарядка для ума ( алгоритмическая задача)
|
|||
|---|---|---|---|
|
#18+
ДохтаР, Вас интересует решение на сфере (эллипсоиде, геоиде, ...) или на плоскости тоже подойдет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.09.2013, 16:39 |
|
||
|
Зарядка для ума ( алгоритмическая задача)
|
|||
|---|---|---|---|
|
#18+
HoBTIDДохтаР, Вас интересует решение на сфере (эллипсоиде, геоиде, ...) или на плоскости тоже подойдет? Это не реальная задача , во времени на размышления ограничений нет , любое решение подходит. И чем больше будет вариантов, тем больше будет возможность выбрать самое оптимальное с точки зрения получени конечного результати и поиска компромисов ресурсы-производительность. Единстенное ограничение, запрещено одновременное хранение всех возможных вариантов ( декартового произведения обьектов ), кроме случая когда его создание есть решением задачи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.09.2013, 16:54 |
|
||
|
Зарядка для ума ( алгоритмическая задача)
|
|||
|---|---|---|---|
|
#18+
HoBTIDДохтаР, Вас интересует решение на сфере (эллипсоиде, геоиде, ...) или на плоскости тоже подойдет? В общем случае на плоскости , как самое простое , если оно буде масштабироваться на N мерные пространства, то его автор может смело писать резюме в гугл, яндекс или боинг со ссылкой на этот топик. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.09.2013, 17:07 |
|
||
|
Зарядка для ума ( алгоритмическая задача)
|
|||
|---|---|---|---|
|
#18+
Могут быть ошибки, но в целом идея, думаю, понятна. Как-то так: Код: java 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. 71. 72. 73. 74. 75. 76. 77. 78. Осталось придумать, как хранить такую матрицу в разреженном виде и как ее изначально заполнить. Пошел устраиваться в Гугл... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.09.2013, 17:43 |
|
||
|
Зарядка для ума ( алгоритмическая задача)
|
|||
|---|---|---|---|
|
#18+
HoBTIDМогут быть ошибки, но в целом идея, думаю, понятна. Как-то так: Код: java 1. 2. 3. 4. Осталось придумать, как хранить такую матрицу в разреженном виде и как ее изначально заполнить. Пошел устраиваться в Гугл... Хранение декартового произведения обьектов вы заменили на факториал итераций цикла. Формально это постановку не нарушает , но Ваше решение нельзя назвать оптимальным для массива из 6000 обьектов. Например, зачем ганять все итерации цикла , для случая когда зона влияния в одной из точек покрывает всю матрицу целяком. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.09.2013, 18:47 |
|
||
|
Зарядка для ума ( алгоритмическая задача)
|
|||
|---|---|---|---|
|
#18+
ДохтаРХранение декартового произведения обьектов вы заменили на факториал итераций цикла. Здесь нет факториала итераций цикла. Вообще непонятно, откуда взялся факториал. Если дано n точек, самый тупой алгоритм (с декартовым произведением) будет иметь сложность O(n^2) (O от n в квадрате). Действительно, в худшем случае, мой алгоритм имеет такую же сложность, но может быть лучше, если зоны влияния точек находятся не все вместе рядом, а разбиты на относительно удаленные группы. ДохтаРНапример, зачем ганять все итерации цикла , для случая когда зона влияния в одной из точек покрывает всю матрицу целяком. Для любого алгоритма в худшем случае сложность будет O(n^2), это случай, когда абсолютно все зоны влияния попарно пересекаются. И тогда обязательно гонять цикл по максимуму. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.09.2013, 19:23 |
|
||
|
Зарядка для ума ( алгоритмическая задача)
|
|||
|---|---|---|---|
|
#18+
ДохтаРНапример, зачем ганять все итерации цикла , для случая когда зона влияния в одной из точек покрывает всю матрицу целяком. Кроме того, приведенные пример, непонятен (видимо вы неверно поняли задачу). Даже если зона влияния одной из точек покрывает всю матрицу, Из исходной задачи: evgenius_bТребуется получить перечень пар всех взаимовлияющих объектов по принципу: расстояние между парой объектов не более, чем сумма их максимальных зон влияния. Предположим, есть точки, A, B, C, D. И зона точки A покрывает всю матрицу. Тогда все равно требуется найти, пересекаются ли зоны влияния точек B и C, B и D, C и D. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.09.2013, 19:28 |
|
||
|
Зарядка для ума ( алгоритмическая задача)
|
|||
|---|---|---|---|
|
#18+
ДохтаР, Но кое в чем вы правы, мой алгорим можно улучшить. Сейчас он отсекает точки, когда они гарантированно не пересекаются. А можно по другой ветке обрабатывать точки, когда они гарантированно пересекаются. И вычислять расстояния, только для пар, попадающих в сомнительную зону. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.09.2013, 19:31 |
|
||
|
Зарядка для ума ( алгоритмическая задача)
|
|||
|---|---|---|---|
|
#18+
HoBTIDДохтаР, Но кое в чем вы правы, мой алгорим можно улучшить. Сейчас он отсекает точки, когда они гарантированно не пересекаются. А можно по другой ветке обрабатывать точки, когда они гарантированно пересекаются. И вычислять расстояния, только для пар, попадающих в сомнительную зону. Да , похожий подход к алгоритмическому решению как один из вариантов я предполагал ранее 14804926 ДохтаРалгоритмика выбора начинала перебора вариантов , от минимального растояния между точками или или от максимальной площади области вляния ? зы с таким ходом мыслей есть шанс изобрести велосипед на тему стоимостного оптимизатора Что бы получать пары на первых итерациях, а в лучшем случае прекратить перебор по кондишину. При равномероном распределении зон влияния по площади , придется перебирать все варианты, в плодь пополучения декартового произведения обьектов. в качестве результата в самом худшем случае. Исходя из этого у меня возникла мысль , пердварительно посчитать сумму площадей зон влияния и сравнить с площадью прямоугольника на котором расположены точки. Это можно сделать достаточно быстро, и имперически оценить насколько долгим может быть полный расчет пар. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.09.2013, 20:04 |
|
||
|
Зарядка для ума ( алгоритмическая задача)
|
|||
|---|---|---|---|
|
#18+
HoBTID HoBTIDТаким образом, любая прямоугольная область между точками на плоскости соотвествует прямоугольной области в матрице. Если дано n точек, самый тупой алгоритм (с декартовым произведением) будет иметь сложность O(n^2) (O от n в квадрате). Хочу обратить ваше внимание, что цикл у вас не по точкам, а по масштабной сетке мартицы. n =6000 точек в матрице 100500 Х 100500 имеет сложность чуть :) больше O(n^2) (O от n в квадрате). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.09.2013, 20:48 |
|
||
|
Зарядка для ума ( алгоритмическая задача)
|
|||
|---|---|---|---|
|
#18+
Это ж вроде классическая задача для BSP? делим "пространство" пополам, точки, целиком попадающие в проверяем только с соседями по "половинке" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2013, 15:33 |
|
||
|
Зарядка для ума ( алгоритмическая задача)
|
|||
|---|---|---|---|
|
#18+
ЛагманЭто ж вроде классическая задача для BSP? делим "пространство" пополам, точки, целиком попадающие в проверяем только с соседями по "половинке" Пространства в постановке нет , есть только координаты множества точек. Воссозавать все пространство из мax(X) max(Y) я считаю не совсем оптимальным решением. Координаты могуть быть неравномерно распределены по пространству. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2013, 16:31 |
|
||
|
Зарядка для ума ( алгоритмическая задача)
|
|||
|---|---|---|---|
|
#18+
ДохтаРВоссозавать все пространство из мax(X) max(Y) я считаю не совсем оптимальным решением. 1 проход ДохтаРКоординаты могуть быть неравномерно распределены по пространству. для этого и придуман BSP Код: java 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. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2013, 16:45 |
|
||
|
|

start [/forum/topic.php?fid=16&startmsg=38389374&tid=1341659]: |
0ms |
get settings: |
8ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
327ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
54ms |
get tp. blocked users: |
1ms |
| others: | 248ms |
| total: | 677ms |

| 0 / 0 |
