|
1 / 1 / 0
Регистрация: 28.03.2012
Сообщений: 55
|
|
Как можно сократить время вычисления?!20.02.2013, 18:11. Показов 1656. Ответов 19
Метки нет (Все метки)
На ограниченной, но достаточно большой по площади, плоскости есть одна
опорная точка с координатами x0 и y0, а также некоторое число N других точек c известными координатами xi и yi. Требуется найти среди N точек ближайшую к опорной. Известно, что расстояние между двумя точками в декартовых координатах вычисляется как d=sqrt((x2-x1)^2+(y2-y1)^2).
0
|
|
| 20.02.2013, 18:11 | |
|
Ответы с готовыми решениями:
19
Как сократить время выполнения Как сократить время работы процедуры |
|
Модератор
10430 / 5718 / 3404
Регистрация: 17.08.2012
Сообщений: 17,387
|
|
| 20.02.2013, 18:30 | |
|
g=(x2-x1)2+(y2-y1)2. Найти минимум, а потом, если нужно, d=√g.
0
|
|
| 20.02.2013, 19:19 | |
|
"от простого к сложному"
1) Для нахождения ближайших sqrt не нужно, достаточна сумма квадратов 2) Сортируем точки по X, если X равны то по Y (второй ключ). Затем двоичным поиском находим ближайшую по X и смотрим соседние точки спереди и сзади до тех пор пока Х-расстояние не превысит минимальное найденное 3) kd-tree
0
|
|
|
1360 / 988 / 119
Регистрация: 30.07.2010
Сообщений: 5,297
|
|
| 24.02.2013, 12:27 | |
|
0
|
|
|
1360 / 988 / 119
Регистрация: 30.07.2010
Сообщений: 5,297
|
|
| 24.02.2013, 15:55 | |
|
Igor3D, полный перебор вершин — это линия.
0
|
|
| 24.02.2013, 16:09 | ||
|
............******* ............******* ............******* ......A(*)..............B(*) ..................> X "B" - ближайшая к "A" но в сортированном массиве туча точек между ними (вверху). Где тут логарифм, тем более O(N) ?
0
|
||
|
1360 / 988 / 119
Регистрация: 30.07.2010
Сообщений: 5,297
|
||||||
| 25.02.2013, 11:23 | ||||||
|
Igor3D, вы или очень забавно шутите, или у меня для вас плохие новости. Схема выполнения:
0
|
||||||
|
1360 / 988 / 119
Регистрация: 30.07.2010
Сообщений: 5,297
|
|
| 25.02.2013, 18:31 | |
|
Igor3D, я показал, что работает за линию. Признайте свою ошибку и уходите. КД-дерево, господи.
0
|
|
| 25.02.2013, 19:59 | ||
|
0
|
||
|
2838 / 1647 / 254
Регистрация: 03.12.2007
Сообщений: 4,222
|
|
| 25.02.2013, 20:32 | |
|
2
|
|
| 25.02.2013, 21:52 | ||
Ладно, попробуем посчитать:N = миллион, полный перебор = миллион вызовов dist. Вариант с сортировкой - 20 спусков (это log(N)). Плюс просмотр вперед-назад. Сколько их будет - хз, зависит от распределения точек. Может всего 2-3, может и все равно почти все, хотя такой случай редкий. Напр для рандомных точек все хорошо. Обычно сначала выбирают "наилучшую ось" (первый ключ сортировки).
0
|
||
|
2838 / 1647 / 254
Регистрация: 03.12.2007
Сообщений: 4,222
|
||
| 25.02.2013, 22:30 | ||
|
2
|
||
|
1360 / 988 / 119
Регистрация: 30.07.2010
Сообщений: 5,297
|
||
| 25.02.2013, 23:41 | ||
|
Igor3D, существуют эзотерические сортировки чисел с асимптотикой
![]() Но вы говорите абсолютною чушь по той одной причине, что одно считывание займет Не знаете темы — хоть говорите без апломба и пафоса — не так стыдно потом будет. Не по теме: Может еще покажете как KD-дерево быстрее, чем за линию писать?
0
|
||
| 26.02.2013, 11:49 | |||
Давайте проверим на деле, чего бросаться словами? Выкладывайте Ваш вариант и засекайте время напр 10K поисков. А я берусь его ускорить
0
|
|||
|
1360 / 988 / 119
Регистрация: 30.07.2010
Сообщений: 5,297
|
|
| 26.02.2013, 14:38 | |
|
Igor3D, условие читали? Автору нужно отвечать только на один запрос. Без проблем, я пишу линию и вы попытаетесь её переплюнуть на одном запросе, идет?
0
|
|
| 26.02.2013, 15:18 | ||
|
Во-вторых, не вижу где автор говорил об "одном запросе", да и немудрено - такая постановка не имеет никакого смысла. Нельзя строить нужные данные - ну никакого ускорения и не получить. Еще раз обращаю Ваше внимание что речь шла об ускорении, цикл for автор уже благополучно написал и советовать его опять ни к чему. Также могу сообщить что задача "найти ближайших" встречается в жизни часто и во многих областях, поэтому Ваша неосведомленность меня, право, удивляет. Также все эти "O" - примерно такой же бред как и "блок-схема", применимы только для простейших случаев.
0
|
||
|
1360 / 988 / 119
Регистрация: 30.07.2010
Сообщений: 5,297
|
|||||
| 26.02.2013, 17:45 | |||||
|
Добавлено через 1 минуту Так что, не хотите показать ваше мастерство оптимизации?
0
|
|||||
| 26.02.2013, 21:25 | |||
Да, в одном запросе одна опорная точка, в другом уже другая. Если один запрос - проблем со скоростью не возникает вообще, а вот если поиск вызывается многократно - проблемы гарантированы. Предложить перебрать все точки в цикле, да еще и удвоить время вычислений в стремлении записать короче? При всем желании большой мудростью это никак не назвать ![]() Даже если предположить что топик-стартер спрашивал именно об однократном вычислении - все равно Вы неправы, надо ответить: "никак не сократить если ничего нельзя подготовить/предрасчитать". Слово "поиск" автоматически подразумевает ту или иную организацию данных, иначе никакого поиска нет. Почему автоматически подразумевается что вопрос глупый/глупейший (типа "как найти максимум в массиве")? Не стоит так плохо думать о людях
0
|
|||
| 26.02.2013, 21:25 | |
|
Помогаю со студенческими работами здесь
20
Как сократить время работы программы? Как сократить время работы программы? Как сократить время работы программы?!
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога
Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
|
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование
. \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json>
Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом.
# Check if. . .
|
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так:
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347
Основана на STM32F303RBT6.
На борту пять. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|