![]() |
|
|
![]()
|
|
| Joni |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 21.11.2004 Репутация: нет Всего: нет |
Всем здрасте!
Подскажите алгоритм. Нужно найти простую фигуру минимальной площади, охватывающей две другие |
|||
|
||||
| maxim1000 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 33 Всего: 110 |
поконкретнее надо описать класс подходящих фигур тогда уже можно что-то думать... -------------------- qqq |
|||
|
||||
| Joni |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 21.11.2004 Репутация: нет Всего: нет |
Прстой фигурой можно считать произвольный треугольник, четырехугольник, круг и элипс.
|
|||
|
||||
| maxim1000 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 33 Всего: 110 |
тогда это уже пять задач:
1. минимальный треугольник 2. минимальный четырехугольник 3. минимальный эллипс 4. минимальный круг 5. выбрать из них фигуру с минимальной площадью (ну это, в общем-то, и не задача 4 задачу можно и не решать, т.к. любой круг является эллипсом задачу 1 можно тоже не решать: треугольник можно считать предельным случаем четырехугольника есть два возможных варианта решения этих задач: 1. аналитический 2. численный 1й требует описания тех двух фигур, и уже по их свойствам находит решение для четырехугольника и эллипса плюсы: достаточно просто подставить параметры в формулу, соответствующую ситуации, и получить точные значения параметров минусы: поиск решения может оказаться довольно сложным, а в некотором случае аналитическое решение невозможно, кроме того, скорее всего, придется решать отдельно задачи для разных фигур 2й способ: строится функция - значение площади в зависимости от параметров фигур, потом ее минимизируют обычными численными методами плюсы: вся разница в типе покрывающей фигуры вкладывается в функцию, алгоритм минимизации остается тем же (еще нужно будет отдельно написать функцию проверки того, что фигура действительно покрывает две другие) минусы: часто численные методы имеют ограниченную область применения (накладываются ограничения на минимизируемую функцию) -------------------- qqq |
|||
|
||||
| val |
|
|||
![]() Program developer ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 992 Регистрация: 14.1.2003 Где: г. Киев Репутация: 1 Всего: 7 |
Есть такая вещь, как рекурсивный алгоритм заливки области. В самом общем виде выглядит таким образом:
Так вот, выбираем центр тяжести наших фигур и начинаем от туда выполнять рекурсивный алгоритм заливки. Процесс будет продолжаться пока мы не покроем все фигуры. Мне кажется, что полученная область заливки может претендовать на минимальную. Управлять ходом процесса заливки можно довольно-таки гибко, при желании можем получить как округлые формы, так и прямоугольные... Это сообщение отредактировал(а) val - 22.11.2004, 10:47 -------------------- Терпимость - величайшее благо человечества... Ярчайший признак интеллекта – постоянно хорошее настроение… |
|||
|
||||
| maxim1000 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 33 Всего: 110 |
не подходит. пример: есть две фигуры - прямоугольники с одинаковыми шинами и высотами расположены так, что образуют букву Т для того, чтобы покрыть эту фигуру минимальным прямоугольником, его чентр должен быть на половине высоты вертикального прямоугольника, а центр тяжести буджет несколько выше на самом деле выбор центра покрывающей фигуры и есть основная задача (зная его все остальное можно посчитать) -------------------- qqq |
|||
|
||||
| val |
|
|||
![]() Program developer ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 992 Регистрация: 14.1.2003 Где: г. Киев Репутация: 1 Всего: 7 |
Согласан. Тогда, скажем так, что центр тяжести будем искать с какой-то дельтой относительно вычисленного. Все случаи, конечно, не покрыть, но для стандартного набора расположений подойдёт... Это сообщение отредактировал(а) val - 22.11.2004, 14:11 -------------------- Терпимость - величайшее благо человечества... Ярчайший признак интеллекта – постоянно хорошее настроение… |
|||
|
||||
| Joni |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 21.11.2004 Репутация: нет Всего: нет |
Всем огромное спасибо за предложенные идеи!
А можно ведь те две произвольны фигуры задать так: Создать файл с набором некоторых точек, считать их произвольно а затем соеденить прямыми линиями (по некоторому правилу). Ведь можно разбить любую фигуру на отрезки? И еще эти две фигуры не пересекаются. |
|||
|
||||
| val |
|
|||
![]() Program developer ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 992 Регистрация: 14.1.2003 Где: г. Киев Репутация: 1 Всего: 7 |
Joni, но так нет гарантии, что полученная фигура будет правильной...
-------------------- Терпимость - величайшее благо человечества... Ярчайший признак интеллекта – постоянно хорошее настроение… |
|||
|
||||
| Joni |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 21.11.2004 Репутация: нет Всего: нет |
Что-то я совсем запутался уже.
А что же является ПРАВИЛЬНОЙ фигурой. По моему любую фигуру можно охватить простой (НЕ описать) Или я что-то недопонимаю?! |
|||
|
||||
| val |
|
|||
![]() Program developer ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 992 Регистрация: 14.1.2003 Где: г. Киев Репутация: 1 Всего: 7 |
Просто не совсем понятно, по какому закону соединять прямыми линиями? -------------------- Терпимость - величайшее благо человечества... Ярчайший признак интеллекта – постоянно хорошее настроение… |
|||
|
||||
| EKoshelev |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 509 Регистрация: 1.9.2004 Репутация: нет Всего: нет |
А я вообще нефига не понял из ваших базаров. Кстати, вопросик у меня. У четырёхугольника один из углов может быть больше 180 градусов? Или нет.
-------------------- Вежливым и адекватным предлагаю общаться на "ты". |
|||
|
||||
| val |
|
|||
![]() Program developer ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 992 Регистрация: 14.1.2003 Где: г. Киев Репутация: 1 Всего: 7 |
Да, например 30 градусов может соответвовать 360 + 30 = 390 градусам... -------------------- Терпимость - величайшее благо человечества... Ярчайший признак интеллекта – постоянно хорошее настроение… |
|||
|
||||
| Joni |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 21.11.2004 Репутация: нет Всего: нет |
А чтобы решить данную задачу, может для начала нужен алгоритм задания исходных фигур.
|
|||
|
||||
| cardinal |
|
||||||
![]() Инженер ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6003 Регистрация: 26.3.2002 Где: Германия Репутация: 5 Всего: 99 |
А может 330 градусам? Описываем эллипс и треугольник
Берем минимальные значения x и y (y отчет сверху) у этих двух фигур за левую верхнюю точку прямоугольника и максимальные значения x и y (y отчет сверху) у этих двух фигур за правую нижнюю точку прямоугольника. Этот прямоугольник и есть самый маленький по площади.
Находим треугольники которые зажимают (как розовый треугольник на картинке) обе фигуры, так, чтобы нельзя было ее повернуть. Их будет четыре, как я понял. Один из них я сконструировал подвинув диагональ до окружности круга, а потом повернув ее вокруг окружности пока линия не коснулась второй фигуры. Также можно сконструировать и другие три треугольника. Самый маленький по площади и будет думаю ответом... но не уверен. Вот мои соображения по этому поводу Присоединённый файл ( Кол-во скачиваний: 2 )
zad_alg.jpg-------------------- Немецкая оппозиция потребовала упростить натурализацию иммигрантов В моем блоге: Разные истории из жизни в Германии "Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино". А. и Б. Стругацкие |
||||||
|
|||||||
| EKoshelev |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 509 Регистрация: 1.9.2004 Репутация: нет Всего: нет |
val, четырёхугольник может быть не выпуклым? (не знаю как правильно сказать)
-------------------- Вежливым и адекватным предлагаю общаться на "ты". |
|||
|
||||
| val |
|
||||
![]() Program developer ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 992 Регистрация: 14.1.2003 Где: г. Киев Репутация: 1 Всего: 7 |
Да. Вот пример невыпуклого четырёхугольника...
Добавлено @ 10:29 Пришлось воспользоваться тегом для кода, чтобы картинка не испортилась... Это сообщение отредактировал(а) val - 26.11.2004, 10:28 -------------------- Терпимость - величайшее благо человечества... Ярчайший признак интеллекта – постоянно хорошее настроение… |
||||
|
|||||
| EKoshelev |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 509 Регистрация: 1.9.2004 Репутация: нет Всего: нет |
val Может ты не понял. Это перефразировка моего вопроса об угле больше 180 градусов.
-------------------- Вежливым и адекватным предлагаю общаться на "ты". |
|||
|
||||
| Guest |
|
|||
|
Unregistered |
А полученный прямоугольник не бедет ведь наименьшим четырехугольником?
Тогда нужно искать четырк точки: верх-низ и лево-право. Кстати, Cardinal, на чем вы реализовали данный алгоритм? |
|||
|
||||
| cardinal |
|
||||
![]() Инженер ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6003 Регистрация: 26.3.2002 Где: Германия Репутация: 5 Всего: 99 |
Кстати о птичках... Ты прав... Что делать... Наверно нумерически решать придется, то есть касательные к крайним точкам вертеть и смотреть на результат.
Начем? Не знаю... -------------------- Немецкая оппозиция потребовала упростить натурализацию иммигрантов В моем блоге: Разные истории из жизни в Германии "Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино". А. и Б. Стругацкие |
||||
|
|||||
| Joni |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 21.11.2004 Репутация: нет Всего: нет |
Вот засада!
Мысль насчет четырех крайних точках не в счет. Ведь можно получить случаи отсечения заданных фигур. Cardinal, рисунок вы в графичем редакторе нарисовали? |
|||
|
||||
| cardinal |
|
||||
![]() Инженер ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6003 Регистрация: 26.3.2002 Где: Германия Репутация: 5 Всего: 99 |
Это помоему нет, но вот минимальную площадь таким образом не получить. То есть этот прямоугольник не будет иметь наименьшую площадь...
Можно на ты -------------------- Немецкая оппозиция потребовала упростить натурализацию иммигрантов В моем блоге: Разные истории из жизни в Германии "Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино". А. и Б. Стругацкие |
||||
|
|||||
| Joni |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 21.11.2004 Репутация: нет Всего: нет |
А может провести четыре линии так, чтобы каждая содержала максимальное число точек.
Получим какое-то множество четырехугольников (т.к. линий может окакзаться больше чем 4) Посчитать площади. И выбрать минимальный. |
|||
|
||||
| cardinal |
|
|||
![]() Инженер ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6003 Регистрация: 26.3.2002 Где: Германия Репутация: 5 Всего: 99 |
А вообще четырехугольник с прямыми углами или нет? -------------------- Немецкая оппозиция потребовала упростить натурализацию иммигрантов В моем блоге: Разные истории из жизни в Германии "Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино". А. и Б. Стругацкие |
|||
|
||||
| Joni |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 21.11.2004 Репутация: нет Всего: нет |
Необязательно.
Можно рассматривать любой четырехугольник. |
|||
|
||||
| Joni |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 21.11.2004 Репутация: нет Всего: нет |
Val вы говорили:
Есть такая вещь, как рекурсивный алгоритм заливки области Итак зальем данные фигуры, но ведь они не будут простыми |
|||
|
||||
| cardinal |
|
|||
![]() Инженер ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6003 Регистрация: 26.3.2002 Где: Германия Репутация: 5 Всего: 99 |
Joni, то что предложил val не прокатит... Зальется офигенная площадь, а не минимальная
Надо было по крайней мере так написать:
-------------------- Немецкая оппозиция потребовала упростить натурализацию иммигрантов В моем блоге: Разные истории из жизни в Германии "Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино". А. и Б. Стругацкие |
|||
|
||||
| Joni |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 21.11.2004 Репутация: нет Всего: нет |
Ой-ой что же делать!
Вот не ммогу найти как по координатам фигуры найти её центр (н-р, тяжести) Думаю, что эта найденная точка поможет в нахождении минимыльной окружности. |
|||
|
||||
| cardinal |
|
|||
![]() Инженер ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6003 Регистрация: 26.3.2002 Где: Германия Репутация: 5 Всего: 99 |
Ладно... Смотрим на картинку и не пугаемся
У нас два объекта, в этом примере это будет треугольник и "почтикруг" Залиты они или нет разницы не имеет (если я ошибаюсь, то поправьте меня Теперь есть две формулы, по которым мы получим x и y координату точки равновесия (центр тяжести). На картинке попытался объяснить кто такие xi и yi. Это координаты каждой точки Pi, которая пренадлежит той или иной фигуре (какой без разницы). Gi эта сила, которая давит на каждую точку. Здесь все силу равны поэтому все Gi = 1, то есть сумма Gi просто равна кол-ву точек. Ну короче я сейчас подумал, что все вообще просто становится О... Идея Половина того, что написано выше делать не надо Действуй. Присоединённый файл ( Кол-во скачиваний: 1 )
schwerp.jpg-------------------- Немецкая оппозиция потребовала упростить натурализацию иммигрантов В моем блоге: Разные истории из жизни в Германии "Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино". А. и Б. Стругацкие |
|||
|
||||
| ~FoX~ |
|
|||
![]() НЕ рыжий!!! ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2819 Регистрация: 8.10.2003 Где: Зеленоград Репутация: 2 Всего: 68 |
А не овал ли будет с наименьшей площадью?
|
|||
|
||||
| cardinal |
|
|||
![]() Инженер ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6003 Регистрация: 26.3.2002 Где: Германия Репутация: 5 Всего: 99 |
Пока думаю что нет
А потом Joni это все реализует и нам расскажет -------------------- Немецкая оппозиция потребовала упростить натурализацию иммигрантов В моем блоге: Разные истории из жизни в Германии "Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино". А. и Б. Стругацкие |
|||
|
||||
| ~FoX~ |
|
|||
![]() НЕ рыжий!!! ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2819 Регистрация: 8.10.2003 Где: Зеленоград Репутация: 2 Всего: 68 |
А если сопряжение по двум противоположным сторонам элипса не одинвакове?
|
|||
|
||||
| cardinal |
|
|||
![]() Инженер ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6003 Регистрация: 26.3.2002 Где: Германия Репутация: 5 Всего: 99 |
~FoX~, пока не понял о чем ты... Нарисуй картинку как я и попробуй объяснить
Пока все еще думаю, что круг будет -------------------- Немецкая оппозиция потребовала упростить натурализацию иммигрантов В моем блоге: Разные истории из жизни в Германии "Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино". А. и Б. Стругацкие |
|||
|
||||
| ovr2000 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 30.11.2004 Репутация: нет Всего: нет |
По поводу простых фигур (треугольник, четырех угольник, эллипс)
Если мы описали минимальный треугольник, вокруг двух фигур может быть случай, когда углы треугольника полностью совпадают с одной из фигур. Правда это очень крайний случай. На столько невероятный, как и крайний случай четырех угольника, у которого одна из строн имеет длину 0. В остальных случаях, мы можем провести касательную, к одной из вписанных фигур, которая отделит свободный угол треугольника. В результате мы получим четырехугольник меньшей площади, чем треугольник, который описывает те же фигуры. ВЫВОД: Площадь минимального четырехугольника не меньше, чем площадь минимального треугольника, описывающих две другие фигуры. PS В общем виде задача настолько сложна, что её еще не решили академики. Поэтому нужно все таки начать с нормальной постановки задачи |
|||
|
||||
| Joni |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 21.11.2004 Репутация: нет Всего: нет |
Всем огромное спасибо за предложенные идеи.
Я уже пытаюсь только вникать. :-) Вот и пытаюсь на Pascal построить окружность. Да задачу вроде еще не решили. Но ведь пытаться надо. |
|||
|
||||
![]()
|
| Правила форума "Алгоритмы" | |
|
|
Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Алгоритмы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |