ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Четверг
28 ноября
405430 Топик полностью
Ксения (26.04.2013 15:24, просмотров: 75) ответил Пaлыч на Можно немного уменьшить количество вычислений.
Сэкономить можно только на корнях, работая не с расстояниями, а с их квадратами. Что же касается массива, в котором расстояние (или его квадрат) уже просчитаны, это это имеет смысл только тогда, когда точки в это множество добавляются или изымаются, а задачу приходится решать каждый раз при внесении или удалении одной из точек. Если множество "живое", а задачу требуется решать многократно, то можно пуститься и во все тяжкие - создать матрицу кросс-расстояний между всеми точками. Считать придется только половину, т.к. такая матрица симметрична. Тогда при добавлении новой точки в матрицу добавляется новая строки и стобец, которые заполняются расчетами, а остальная часть матрицы остается низменной. И, наоборот, если точка удаляется, то вместе с ней из матрицы удаляется строка и столбец, где она была. Такая система позволяет с минимальными накладными расходами постоянно поддерживать информацию о взаимных расстояниях между точками в процессе их добавления и удаления. Ну, а найти минимум по строке - процедура простая и тривиальная.