Полігон в рамках задачі узагальнення полігонів


9

Я хочу вибачитися за всі публікації нижче. Вибрали неправильний форум, щоб опублікувати це спочатку. Однак замість того, щоб зробити це повноцінним відходом, я переробив це питання, щоб бути справжньою проблемою "Теоретичної інформатики".

Проблема: Створіть алгоритм, який приймає набір з n упорядкованих точок у двовимірній площині, які утворюють контур простого многокутника A, який може бути, а може бути і не увігнутим, і створює новий багатокутник B з m точками таким чином:

  1. всі точки А містяться в B
  2. 3 <= m <n
  3. B - багатокутник у множині всіх Bs з найменшою площею
  4. B повинен бути простим багатокутником (тобто відсутність самоперехрестя).
  5. Вхід до алгоритму - багатокутник A і "m".
  6. Допускається збіг відрізків у В з відрізками в А.

Деякі приклади входів та очікувані результати:

  1. Якщо A - квадрат, а m дорівнює 3, то B буде трикутником з найменшою площею поверхні, що містить A.
  2. Якщо A - це шестикутник, а m - 4, то B буде чотирикутником з найменшою площею поверхні, яка містить A.

Успіхів усім, хто намагається вирішити цю проблему. Можу пообіцяти, що це буде дуже важко, особливо зараз, коли рішення має бути оптимальним.


1
@Joe: Неправда: якщо A - квадрат, то Тіріан просить трикутник мінімальної площі, що містить A. З іншого боку, якщо A - трикутник ( ), то дійсно немає правильного рішення. н=3
Jeffε

3
Додаю 17 до мого першого коментаря, я думаю. Чому 20?
Jeffε

3
Не є FFT низьким порогом для "складних"?
Сашо Ніколов

2
Я не думаю, що це абсолютно правда, що проблема взагалі не змінюється, якщо ви (скажімо) встановили m = 3. Проблема полягає в тому, що вам може знадобитися експоненція часу в m, і це нормально, якщо m закріплено на деякому числі, але непогано, якщо m є частиною вхідних даних.
Суреш Венкат

5
"всі знають, у чому проблема" - це неправда. Ми запитуємо, оскільки вибір, не вказаний, має значення.
Суреш Венкат

Відповіді:


10

Я не знаю, як виглядають ваші багатокутники, але, можливо, достатньо спрощеної версії алгоритму Рамер – Дуглас – П’юкер :

  • для кожної опуклої частини обчисліть площуAj з трикутників PiPi+1Пi+2 утворені трьома поспіль пунктами;
  • для кожної увігнутої частини обчисліть площуБк з двох трикутників ПiПi'Пi+1 і Пi+1Пi+2'Пi+2 утворена розширенням двох точок Пi,Пi+2 і середня точка Пi+1
  • обчислити мiн{Аj,Бк} і видалити відповідну точку (і точки зсуву, якщо операція виконана на увігнутій частині);
  • петлю до тих пір, поки н-м бали видалено.

введіть тут опис зображення
Кордон полігону (Аj зелені трикутники, Бкчервоні трикутники). Праворуч кордон після усунення двох точок.

Для більш складних алгоритмів ви можете шукати " методи узагальнення полігонів ", хоча ваша перша умова (точки в А містяться у В) передбачає додаткові операції масштабування.


@Suresh: Я майже впевнений, що нинішні 4 оновлення стосуються прозорості, а не алгоритму (майже тривіального) :)
Marzio De Biasi

1
Це страждає від тієї ж проблеми, що й алгоритми Рамера-Дугласа-Пюкера: Вихід не гарантовано буде простим багатокутником!
Jeffε

1
@Jeffe: ти маєш рацію, але (далеко не оптимально, якщо полігон складний) можна уникнути спрощень, які призводять до конфлікту . Зрештою, якщо є інші точки, які необхідно видалити, але непростий багатокутник неможливо уникнути, скористайтеся методом вирішення конфлікту (наприклад, обчисліть точки перетину та повністю відкиньте «дірки»). Однак я хотів би бачити реальний приклад з ОП.
Марціо Де Біасі

1
@MarzioDeBiasi Це може спрацювати. Але це не може. Я думаю, що можливе, щоб кожне описуване вами спрощення спричинило самоперетин. А "викидання петель" може зробити гірше, а не краще. Це, мабуть, прекрасне рішення на практиці, але пам’ятайте, де ми знаходимося!
Jeffε

Дякую Марціо, я, принаймні, знаю, як зараз називаються такі проблеми! На жаль, рішення, яке ви дали, - це те, що (3) і (4) є у запропонованих нами рішеннях, і (4) має проблему з цим. Еліпси, які дуже розтягнуті, і, таким чином, мають гострі кінчики з кутами приблизно 30 градусів і менше, легко порушать вимогу (1).
Тірлан

6

Я давно написав статтю, в якій детально розглядався алгоритм лінійного часу для пошуку найменшої трикутника площі, що охоплює набір точок (або багатокутник):

Дж. О'Рурк, Алок Аггарвал, Сандєєв Мадділа, Майкл Болдуін, "Оптимальний алгоритм пошуку мінімальних огороджувальних трикутників", Дж. Алгоритми , 1986, 7 : 258--269. Link .

Нашу роботу супроводжував загальний алгоритм:

"Мінімальна площа, що обкладає багатокутники", Алок Агарвал, Дж. С. Чанг та Ч. Яп, "Візуальний комп'ютер" , том 1, номер 2 (1985), 112-117. Link .

Ви можете використовувати Google Scholar для відстеження тих пізніших робіт, які цитують їх, щоб знайти вдосконалення та пов’язану роботу.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.