Разбиение многоугольника
Разбиение многоугольника — это множество примитивных элементов (например, квадратов), которые не накладываются и объединение которых равно многоугольнику. Задача о разбиении многоугольника — это задача поиска разбиения, которое в некотором смысле минимально, например, разбиение с наименьшим числом элементов или разбиение с наименьшей суммой длин сторон.
Разбиение многоугольника является важным классом задач в вычислительной геометрии. Существует много различных задач разбиения многоугольника в зависимости от типа многоугольника и типа разрешённых элементов.
Термин декомпозиция многоугольника часто используется в качестве общего термина для покрытия и разбиения[1].
Приложения
Декомпозиция многоугольника используется в нескольких областях[1]:
- Техника распознавания образов извлекает информацию из объекта в целях описания, идентификации или классификации. Укоренившейся стратегией для распознавания общего многоугольного объекта является декомпозиция его на более простые компоненты, затем компоненты идентифицируются и устанавливается связь между объектами, после чего эта информация используется для определения формы объекта.
- При проектировании СБИС схемы представляются в виде многоугольников и одним из подходов для подготовки схемы к электронно-лучевой литографии является разложение этих многоугольных областей на фундаментальные фигуры. Декомпозиция на многоугольники также используется для разбиения проводящих областей на каналы.
- В вычислительной геометрии алгоритмы для задач на общих многоугольниках часто существенно сложнее, чем алгоритмы для ограниченных видов многочленов, таких как выпуклые или звёздчатые многоугольники. Примером является задача о включении точки. Стратегией для решения задач такого типа на общих многоугольниках является декомпозиция многоугольника на простые части, затем решается задача на каждой компоненте с использованием специальных алгоритмов и полученные частичные решения объединяются.
- Кроме того, декомпозиция используется для сжатия данных, в базах данных, при обработке изображений и в компьютерной графике.
Разбиение многоугольника на треугольники
Наиболее изученная задача разбиения многоугольника — разбиение на наименьшее число треугольников (триангуляция). Для многоугольника без дыр с вершинами триангуляризация может быть вычислена за время . Для многоугольника с дырами существует нижняя оценка .
Связанная задача — разбиение на треугольники с наименьшей суммой сторон (триангуляризация с минимальным весом).
Разбиение многоугольника на псевдотреугольники
Те же два варианта задачи можно поставить для случая, когда вместо треугольников используются псевдотреугольники – многоугольники, которые имеют, как и треугольники, в точности три выпуклых вершины. Варианты: разбиение на меньшее число псевдотреугольников и разбиение на псевдотреугольники с наименьшей суммарной длиной сторон.
Разбиение многоугольника на прямоугольники
Частный случай задачи разбиения многоугольника возникает, когда разбиваемым многоугольником служит ортогональный многоугольник. В этом случае наиболее важным компонентом разбиения служит прямоугольник[1].
Прямоугольные разбиения используются часто. При проектировании СБИС необходимо разложить маску на простые фигуры, имеющиеся в списке литографического генератора. Похожая задача декомпозиции возникает при разработке ДНК-микрочипов. Прямоугольные разбиения могут упростить операции свёртки при обработке изображений и могут быть использованы для сжатия битовых изображений. Тесно связанная задача разбиения матрицы применяется для планирования радиотерапии. Прямоугольное разбиение используется для проектирования последовательности самосборки роботов[2][3].
Известно несколько алгоритмов полиномиального времени работы для этой задачи, см. статьи Марка Кейла[4] и Эппштейна[5] для обзора.
Задача разбиения прямоугольного многоугольника на наименьшее число квадратов (в отличие от произвольных прямоугольников) является NP-трудной задачей[6].
Разбиение многоугольника на трапеции
В разработке СБИС часто требуется разбить многоугольную область на минимальное число трапеций с двумя горизонтальными основаниями. Треугольник с горизонтальным основанием при этом также считается трапецией, одно из оснований которой вырождено. Для многоугольников без дыр с сторонами наименьшее разбиение такого вида можно найти за время [7].
Если не требуется, чтобы число трапеций было минимальным, разбиение можно найти за время как побочный продукт алгоритма триангуляции многоугольника[8].
Если многоугольник имеет дыры, задача становится NP-полной, но 3-аппроксимация может быть найдена за время [7].
Разбиение многоугольника на выпуклые четырёхугольники
Можно поставить задачу о разбиении многоугольника на выпуклые четырёхугольники.
Существенной характеристикой задачи разбиения на четырёхугольники является, разрешены или нет точки Штейнера, т.е. разрешено ли добавлять точки, которые не являются вершинами многоугольника. Если разрешить точки Штейнера, можно получить меньшее разбиение, но существенно труднее гарантировать, что разбиения, найденные алгоритмами, будут иметь минимальный размер.
Для многоугольников без дыр существуют алгоритмы линейного времени работы для разбиения на четырёхугольники с точками Штейнера, но гарантии, что найденное решение будет наименьшим, нет[9][10].
Разбиение многоугольника на m-угольники
Обобщением предыдущей задачи служит задача разбиения многоугольника на многоугольники с точно m сторонами, или не более чем с m сторонами. Целью является минимизация суммарной длины сторон. Задачу можно решить за полиномиальное от n и m время[11][12].
Более общие виды фигур
Изучались и более общие виды фигур, включая произвольные выпуклые многоугольники, спирали, звёздчатые многоугольники и монотонные многоугольники. См. обозрение в статье Марка Кейла[1].
См. также
- Покрытие многоугольника — связанная задача, в которой части могут накладываться.
- Задача упаковки — связанная задача, в которой части помещаются в больший объект, но полное заполнение этого объекта не обязательно.
- Мозаики из выпуклых правильных многоугольников на евклидовой плоскости — задача деления всей плоскости на простые многоугольники, например замощение прямоугольниками.
- Квадрирование квадрата — задача деления квадрата с целочисленной стороной на другие квадраты с целочисленными сторонами.
Примечания
- Mark Keil, 2000, с. 491.
- Eppstein, 2010, с. 1.
- Li, Zhang, 2005, с. 3213-3218.
- Mark Keil, 2000, с. 10–13.
- Eppstein, 2010, с. 3–5.
- Realz Slaw.
- Asano, Asano, Imai, 1986, с. 290.
- Chazelle, 2007, с. 485.
- Everett и др., 1992, с. 77–83.
- Ramaswami, Ramos, Toussaint, 1998, с. 257.
- Lingas, Levcopoulos, Sack, 1987, с. 474.
- Levcopoulos, Lingas, Sack, 1989, с. 181.
Литература
- J. Mark Keil. Handbook of Computational Geometry. — 2000. — С. 491. — ISBN 9780444825377. — doi:10.1016/B978-044482537-7/50012-7.
- David Eppstein. Graph-Theoretic Concepts in Computer Science. — 2010. — Т. 5911. — С. 1. — (Lecture Notes in Computer Science). — ISBN 978-3-642-11408-3. — doi:10.1007/978-3-642-11409-0_1.
- Andrzej Lingas. The power of non-rectilinear holes // Automata, Languages and Programming. — 1982. — Т. 140. — С. 369. — (Lecture Notes in Computer Science). — ISBN 3-540-11576-5. — doi:10.1007/bfb0012784.
- Takao Asano, Tetsuo Asano, Hiroshi Imai. Partitioning a polygonal region into trapezoids // Journal of the ACM. — 1986. — Т. 33, вып. 2. — С. 290. — doi:10.1145/5383.5387.
- Andrzej Lingas, Christos Levcopoulos, Jörg Sack. Algorithms for minimum length partitions of polygons // BIT. — 1987. — Т. 27, вып. 4. — С. 474. — doi:10.1007/bf01937272.
- Christos Levcopoulos, Andrzej Lingas, Jörg-R. Sack. Heuristics for optimum binary search trees and minimum weight triangulation problems (англ.) // Theoretical Computer Science. — 1989. — Iss. 2. — P. 181. — doi:10.1016/0304-3975(89)90134-5.
- Guang Li, Hong Zhang. 2005 IEEE/RSJ Int. Conf. Intelligent Robots and Systems. — 2005.
- Realz Slaw. Tiling an orthogonal polygon with squares . CS stack exchange. Дата обращения: 19 октября 2015.
- Bernard Chazelle. Triangulating a simple polygon in linear time // Discrete & Computational Geometry. — 2007. — Т. 6, вып. 3. — С. 485. — doi:10.1007/bf02574703.
- H. Everett, W. Lenhart, M. Overmars, T. Shermer, J. Urrutia. Proc. 4th Canad. Conf. Comput. Geom. — 1992. — С. 77–83.
- Suneeta Ramaswami, Pedro Ramos, Godfried Toussaint. Converting triangulations to quadrangulations // Computational Geometry. — 1998. — Т. 9, вып. 4. — С. 257. — doi:10.1016/s0925-7721(97)00019-9.