Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

работа с массивами

93K
17 июня 2014 года
MarinkaPrikazchikova
1 / / 17.06.2014
Даны два множества точек на плоскости. Выбрать три различные точки первого множества так, чтобы круг, ограниченный окружностью, проходящей через эти точки, содержал все точки второго множества и имел минимальную площадь.
  • Алгоритм не ясен или реализация на Java? от sadovoya, 18 июня 2014 года
326
21 июня 2014 года
sadovoya
757 / / 19.11.2005
По алгоритму.
Три точки однозначно задают единственную окружность, проходящую через них. Крайний случай -- три точки на одной прямой (окружность бесконечного радиуса).
Находишь для окружности радиус и центр. Перебираешь расстояния от центра окружности до всех точек второго множества и сравниваешь с радиусом окружности. Если радиус больше расстояния, следовательно точка внутри окружности. Если все точки попали внутрь окружности, сохраняшь ее радиус. Дальше перебираешь остальные окружности. Если попалась окружность с меньшим радиусом, охватывающим все точки второго множества, то теперь ее радиус сохраняешь как наименьший. И т.д. пока не перебраны все окружности. Минимальный радиус значит и минимальная площадь.

Ясно, что алгоритм очень тормозной, рост времени счета от числа точек резкий.
Возможно лучше использовать методы Монте-Карло (вероятностные), т.е. брать наугад по три точки из первого множества счетное число раз. Но трудно оценить вероятность того, что несколько выборок дают верный ответ...
Либо совершенствуйте предложенный. Я дал так-сказать решение "в лоб".
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог