Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.06.2011, 21:33   #1
polarity
Пользователь
 
Регистрация: 30.05.2010
Сообщений: 30
Восклицание Алгоритмическое задание - Найти многоугольник минимального периметра для заданного набора точек

Здраствуйте.

Дано N точек на плоскости. Найти многоугольник максимального периметра с непересекающимися сторонами, содержащий внутри себя все заданные точки. Компонент PaintBox служит для графического представления данных.

Было бы очень здорово, если кто-нибудь помог с задачей
polarity вне форума Ответить с цитированием
Старый 15.06.2011, 22:07   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

лмбо условие неправильно сформулировано (пропущена какая-та часть описания данного многоугольника. ну, например, вершинами должны являться только заданные точки),
либо задача не имеет решения.

очевидно, что многоугольник с максимальным периметром должен начинаться (левый нижний угол) где-то в районе ]-бесконечность, -бесконечность[ и заканчиваться (правый верхний угол) где-то в районе ]+бесконечность, +бесконечность[

...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 15.06.2011, 22:12   #3
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Похоже нужно найти многоугольник минимального периметра
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 16.06.2011, 00:30   #4
D-mon
Форумчанин
 
Регистрация: 22.06.2007
Сообщений: 414
По умолчанию

Хотелось бы уточнить:
1. Дано N точек на плоскости. Точки заранее известны(их коордтнаты)?
2. "содержащий внутри себя все заданные точки" - как это понять? Надо с клавиатуры ввести координаты точек, которые должны находиться внутри найденого многоугольника???

Немного подумав, можно предположить, что нужно нарисовать такой многоугольник, который бы содержал в себе все остальные точки. Это что то на подобии игры "Точки", где надо точки противника заключить в многоугольник из своих точек.
Если это так то задача не простая.
Есть идея как это можно реализовать, но заранее высказывать ее не буду, так как не уверен что понял задание.
Нет невыполнимых задач, всё дело времени...

Последний раз редактировалось D-mon; 16.06.2011 в 01:59.
D-mon вне форума Ответить с цитированием
Старый 16.06.2011, 08:25   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

я на 90% уверен, что Аватар прав. Нужно найти многоугольник с минимальным периметром.

D-mon, да. Есть N точек, заданных своими координатами.
И какая разница, откуда они берутся?
Генерятся случайным образом, вводятся с клавиатуры или читаются из файла...

По поводу того, что задача непростая, согласен. Тут и один многоугольник построить досточно муторно, а ещё и перебрать ВСЕ варианты... (особенно если про вершины многоугольника в условии нет оговорок)..


Подобные задачи - это уже олимпийский уровень...


Кстати, вполне могу ошибится, но мне кажется, что минимальным периметром будет обладать всё таки многоугольник,
построенный на заданных точках (разумеется не обязательно всех, а только нужных)...
но расписать алгоритм полностью я не готов...

Последний раз редактировалось Serge_Bliznykov; 16.06.2011 в 08:35.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 16.06.2011, 08:46   #6
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Код:
Подобные задачи - это уже олимпийский уровень...
Сомневаюсь. На бумаге это выглядит так: находишь самую верхнюю точку (если их несколько - то любую из них). Начало луча в эту точку, направление - горизонтально и вправо, вращение по часовой стрелке до первого пересечения с другой точкой, которая и будет вторым концом отрезка. Если таких точек несколько - то выбирать самую дальнюю. Начало луча в эту точку, направление - в продолжение предыдущего отрезка, вращаем по часовой стрелке как в предыдущем случае. И т.д. Задача имеет решение для точек больше 2 и не менее 3 из них лежит не на одной прямой. И это решение единственное
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 16.06.2011, 09:18   #7
polarity
Пользователь
 
Регистрация: 30.05.2010
Сообщений: 30
По умолчанию

Как я понял, несколько точек рандомно появляются на форме и строится многоугольник (скорее всего вы правы - минимального периметра).
Вот с таким условием подскажите что-нибудь - с графикой вообще не очень, прямоугольники полчаса рисую
polarity вне форума Ответить с цитированием
Старый 16.06.2011, 09:32   #8
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Аватар
Цитата:
Подобные задачи - это уже олимпийский уровень...
Сомневаюсь.
зря... )

отсюда:
Вихтенко Эллина Михайловна
ГЕОМЕТРИЧЕСКИЕ ЗАДАЧИ В ОЛИМПИАДАХ ПО ПРОГРАММИРОВАНИЮ (Статья по информатике из журнала МИФ-2 №2 за 2005 год)

Цитата:
Задача 2 «Здесь будет город-сад». Жители одного дома города Х решили высадить у себя во дворе несколько деревьев. Так как жильцы не смогли договориться, как должны быть расположены посадки, то каждый посадил дерево в том месте двора, где ему захотелось. После проведения посадок полученный сад решили обнести забором. Но пока доски не привезли, деревья обвязали одной длинной веревкой.
Исходная информация: N – количество деревьев в саду, (xi, yi) – координаты деревьев, i=1,2, …, N. Так как были высажены молодые саженцы, то их толщиной можно пренебречь.
Требуется определить, к каким из посаженных деревьев надо привязать веревку так, чтобы все деревья оказались внутри обнесенной зоны, а длина веревки была минимальная.
.....

ну и тут ещё: статья "Вычислительная геометрия на плоскости" Е.В. Андреева, Ю.Е. Егоров.

Цитата:
На бумаге это выглядит так: находишь самую верхнюю точку (если их несколько - то любую из них). Начало луча в эту точку...
угу. в вышеприведённой статье чуть другой алгоритм. но идея такая же..
Проблема в том, что то, что ручками на бумаге делается за секунду, в коде на ЯП записывается ой как не просто!!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 16.06.2011, 10:14   #9
D-mon
Форумчанин
 
Регистрация: 22.06.2007
Сообщений: 414
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
D-mon, да. Есть N точек, заданных своими координатами.
И какая разница, откуда они берутся?
Генерятся случайным образом, вводятся с клавиатуры или читаются из файла...
Цитата:
Дано N точек на плоскости.
- эти понятно что не вводятся в ручную...
Цитата:
содержащий внутри себя все заданные точки.
- а эти точки, не исключено, что надо вести самостоятельно.
Нет невыполнимых задач, всё дело времени...
D-mon вне форума Ответить с цитированием
Старый 16.06.2011, 10:16   #10
polarity
Пользователь
 
Регистрация: 30.05.2010
Сообщений: 30
По умолчанию

Цитата:
Сообщение от D-mon Посмотреть сообщение
- эти понятно что не вводятся в ручную...
- а эти точки, не исключено, что надо вести самостоятельно.
Пусть все точки будут.
polarity вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
дано два множества точек.Найти пересечение и разность этих множеств.Координаты точек X и Y вводить с клав Degster Паскаль, Turbo Pascal, PascalABC.NET 1 23.05.2011 16:35
дано два множества точек.Найти пересечение и разность этих множеств.Координаты точек X и Y вводить с клав Degster Паскаль, Turbo Pascal, PascalABC.NET 0 15.05.2011 18:32
Перечислить точки заданного множества точек на плоскости dark999 Помощь студентам 4 01.04.2011 23:50
Для заданного натурального N найти сумму (другая задача) Bombastick Microsoft Office Excel 17 19.12.2010 16:49
определить радиус и центр окружности, на кот. лежит наиб.число точек заданного на плоскости мн-ва точек) kcю Помощь студентам 0 17.11.2009 19:50