Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Задача Дидоны 
:(
    Опции темы
Coder
Дата 15.10.2007, 06:54 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 733
Регистрация: 13.12.2004

Репутация: нет
Всего: 11



Мне необходимо найти решение задачи Дидоны (http://ru.wikipedia.org/wiki/Задача_Дидоны) для различных входных данных. 
Цитата

Решением является дуга окружности, если концы нельзя двигать по побережью, и полуокружностью в противном случае.

В моем случае концы можно двигать по побережью. Значит решение - полуокружность. Тогда мне нужно научиться изгибать исходную веревку различными способами, не меняя ее длину. И для каждого изгиба знать координаты узлов, чтобы найти отсеченную площадь.

Еще можно решать эту задачу по формулам, которые можно найти в Интернете, но не совсем ясно, что в них значит каждый параметр и какая функция используется.

На правильном я пути? И есть ли идеи по решению этой задачи?

Это сообщение отредактировал(а) maxim1000 - 15.10.2007, 12:10
PM MAIL   Вверх
kali
Дата 15.10.2007, 11:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 139
Регистрация: 9.11.2006
Где: Минск

Репутация: нет
Всего: 20



Цитата(Coder @  15.10.2007,  05:54 Найти цитируемый пост)
Тогда мне нужно научиться изгибать исходную веревку различными способами, не меняя ее длину. И для каждого изгиба знать координаты узлов, чтобы найти отсеченную площадь.

Не совсем понятно зачем.

Если
Цитата(Coder @  15.10.2007,  05:54 Найти цитируемый пост)
В моем случае концы можно двигать по побережью.

то единственным входным параметром будет длина каната L.

Тогда для охвата максимальной площади точки a и b должны находится на расстоянии D=2*L/Pi друг от друга, а канат описывать полуокружность радиуса R=D/2 с центром между a и b.
--------------------
Работая над решением задачи, всегда полезно знать ответ.
PM MAIL Skype   Вверх
Coder
Дата 15.10.2007, 13:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 733
Регистрация: 13.12.2004

Репутация: нет
Всего: 11



Цитата(kali @  15.10.2007,  19:18 Найти цитируемый пост)
Тогда для охвата максимальной площади точки a и b должны находится на расстоянии D=2*L/Pi друг от друга, а канат описывать полуокружность радиуса R=D/2 с центром между a и b.

А если таких точек нет? А есть на расстоянии меньше, чем D, тогда уже не получиться построить полуокружность. Здесь придется строить полуовал (как бы вытягивать нить вниз) и притом сохранить длину нити. Вот это я и имел в виду под изгибанием каната.
PM MAIL   Вверх
kali
Дата 15.10.2007, 17:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 139
Регистрация: 9.11.2006
Где: Минск

Репутация: нет
Всего: 20



Цитата(Coder @  15.10.2007,  05:54 Найти цитируемый пост)
Мне необходимо найти решение задачи Дидоны (http://ru.wikipedia.org/wiki/Задача_Дидоны) для различных входных данных. 


Если линия берега прямая, то для любых входных данных задача решается аналитически.
Ответ:

Цитата(Coder @  15.10.2007,  05:54 Найти цитируемый пост)
Цитата
Решением является дуга окружности, если концы нельзя двигать по побережью, и полуокружностью в противном случае.

 Допустим заданы а, b и L, тогда 
    
    если L<Pi*(a-b)/2 то канат описывает дугу окружности ограниченную углом<Pi (центр окружности лежит за пределами берега)

    если L>Pi*(a-b)/2 то канат описывает дугу окружности ограниченную углом>Pi (центр окружности лежит на берегу)

    Если a и b не заданы, а известна только L то

Цитата(kali @  15.10.2007,  10:18 Найти цитируемый пост)
Тогда для охвата максимальной площади точки a и b должны находится на расстоянии D=2*L/Pi друг от друга, а канат описывать полуокружность радиуса R=D/2 с центром между a и b. 


Численное интегрирование необходимо только в случае когда линия берега задана какой-нибудь хитрой функцией.

--------------------
Работая над решением задачи, всегда полезно знать ответ.
PM MAIL Skype   Вверх
Coder
Дата 16.10.2007, 01:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 733
Регистрация: 13.12.2004

Репутация: нет
Всего: 11



Цитата(kali @  16.10.2007,  01:08 Найти цитируемый пост)
Если линия берега прямая, то для любых входных данных задача решается аналитически.

Нет, линия берега не прямая - она произвольная (координаты берега читаются из входного файла).
Я привожу рисунок. На нем нужно отсечь максимальную площадь коричневого куска со стороны моря (синий цвет) канатом длиной L.
Здесь еще такая проблема: я могу пройтись по набору координат и рассчитать площадь, отсекаемую прямой между ними. Но так как многоугольник не правильный, то вычислить правильно площадь удастся не везде, а канатом обогнуть вогнутую вершину можно!

Цитата(kali @  16.10.2007,  01:08 Найти цитируемый пост)
Численное интегрирование необходимо только в случае когда линия берега задана какой-нибудь хитрой функцией.

Это этот случай?

Присоединённый файл ( Кол-во скачиваний: 12 )
Присоединённый файл  qwerty.jpg 7,56 Kb
PM MAIL   Вверх
kali
Дата 16.10.2007, 10:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 139
Регистрация: 9.11.2006
Где: Минск

Репутация: нет
Всего: 20



Цитата(kali @  15.10.2007,  16:08 Найти цитируемый пост)

Численное интегрирование необходимо только в случае когда линия берега задана какой-нибудь хитрой функцией.


Это я  фигню сморозил.

Вобщем ИМХО канат изгибать, в любом случае ненужно.

Известно, что максимальную площадь, при заданной L, отсекает полуокружность.
Получается задача сводится к перебору всех точек на линии берега, отстоящих друг от друга на расстоянии D, и выбору тех, у которых разница между выступающими и вогнутыми областями будет максимальна.

Присоединённый файл ( Кол-во скачиваний: 14 )
Присоединённый файл  qqq.GIF 3,89 Kb
--------------------
Работая над решением задачи, всегда полезно знать ответ.
PM MAIL Skype   Вверх
Coder
Дата 16.10.2007, 10:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 733
Регистрация: 13.12.2004

Репутация: нет
Всего: 11



kali, спасибо за советы. попробую реализовать. потом отпишусь.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Алгоритмы | Следующая тема »


 




[ Время генерации скрипта: 0.0465 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.