mrgloom 242 Жалоба Опубликовано August 21, 2012 как быстро найти максимальное расстояние в наборе точек?(быстрее чем перебирать каждую с каждой) пробовал найти максимумы и минимумы по х,у, но такое решение, не всегда дает правильный результат, когда максимум по диагонали. возможно стоит найти центр масс и из этого центра перевести в полярные координаты, но тут опять же расстояние между точками с макс радиусом не всегда максимальное, возможно можно проводить через центр масс прямую и находить ближайшие точки на другом конце, так уменьшим кол-во точек для проверки. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано August 21, 2012 Я думаю достаточно близкой аппроксимацией этого расстояния будет диаметр графа (или я Вас не правильно понял?). Погуглите по поводу алгоритма нахождения диаметра графа, их достаточно много. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
mrgloom 242 Жалоба Опубликовано August 21, 2012 а какой граф в данном случае, все со всеми? у меня просто набор точек, или контур допустим. не думаю, что тут графы замешаны, тут чисто вычислительно-геометрическая задача. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано August 21, 2012 Можно попробовать через ConvexHull, это прилично сократит кол-во рассматриваемых точек. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Pavia00 32 Жалоба Опубликовано August 21, 2012 Оно через ConvexHull и делается. Вычислительная геометрия введение (1989)Препарата Ф., Шеймос М. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
mrgloom 242 Жалоба Опубликовано August 23, 2012 ну ConvexHull это мы получаем выпуклый многогранник вокруг точек, а потом всё равно надо все вершины перебирать? Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано August 23, 2012 Так максимальное расстояние будет между точками, принадлежащими этой оболочке. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
mrgloom 242 Жалоба Опубликовано August 23, 2012 я имел ввиду все вершины оболочки. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано August 23, 2012 Да,решается полным перебором, но вершин в оболочке не так много. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Pavia00 32 Жалоба Опубликовано August 23, 2012 а потом всё равно надо все вершины перебирать? Да перебирать. В книжке приведен алгоритм как сделать такой перебор за N - число точек выпуклой оболочки. Объяснения в книжке сложные, но алгоритм простой. Страница 221 Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах