Вычислительная стоимость могла быть уменьшена путем изменения представления данных о точках. Вместо того чтобы хранить их ширину и долготу, положение точки на поверхности глобуса можно описать ее координатами в декартовой системе (x,y,z). Поэтому новая структура данных представляла собой массив, в котором хранились как угловые, так и декартовы координаты всех точек. По мере обработки точек последовательности угловые координаты легко преобразовывались в декартовы с помощью нескольких тригонометрических функций, после чего вычислялись расстояния от них до точек из набора S. Расстояние вычислялось как сумма квадратов разностей соответствующих координат, что обычно быстрее, чем вычислять одну тригонометрическую функцию (и уж конечно, быстрее, чем вычислить 10 таких функций). Данные в приложении 3 подтверждают мои слова.
Ответ оказывается правильным, поскольку угловое расстояние между точками монотонно растет с ростом евклидового расстояния между ними.
Хотя этот подход требует дополнительной памяти для хранения данных, он дает значительный выигрыш во времени. Когда Райт внесла требуемые изменения в свою программу, время расчета сложных карт уменьшилось с нескольких часов до 30 секунд. В данном примере оптимизация кода позволила решить задачу в десятке дополнительных строк кода, тогда как изменение алгоритма и структуры данных потребовало бы многих сотен новых строк.
Опубликовал vovan666
April 17 2013 00:01:10 ·
0 Комментариев ·
3702 Прочтений ·
• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •
Комментарии
Нет комментариев.
Добавить комментарий
Рейтинги
Рейтинг доступен только для пользователей.
Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.
Нет данных для оценки.
Гость
Вы не зарегистрированны? Нажмите здесь для регистрации.