Раскраска полигонов
-
- Гуру
- Сообщения: 4231
- Зарегистрирован: 10 апр 2006, 22:34
- Репутация: -344969098
- Откуда: Париж
Re: Раскраска полигонов
Нет, давайте все же вернемся к описанию задачи. Что именно должно быть разного цвета - пересечения, или пересекающиеся полигоны? Есть ли наложения в месте пересечения трех и более полигонов?
Потому как если нет наложений и каждый полигон имеет много пересечений, но каждое пересечение образовано только наложением двух полигонов, то задача сводится к задаче о раскраске карты. Что примыкание, что пересечение в этом случае задачи равноценные. И эта задача требует 5 разных красок. Наука говорит, что сейчас все сошлись на том, что их минимум 4. Поиск в гугле чего об этой проблеме на графах дал кучу результатов, один из 8 первых с кодом.
Потому как если нет наложений и каждый полигон имеет много пересечений, но каждое пересечение образовано только наложением двух полигонов, то задача сводится к задаче о раскраске карты. Что примыкание, что пересечение в этом случае задачи равноценные. И эта задача требует 5 разных красок. Наука говорит, что сейчас все сошлись на том, что их минимум 4. Поиск в гугле чего об этой проблеме на графах дал кучу результатов, один из 8 первых с кодом.
-
- Интересующийся
- Сообщения: 23
- Зарегистрирован: 19 окт 2015, 11:10
- Репутация: 1
Re: Раскраска полигонов
Boris,
1) Что именно должно быть разного цвета - пересечения, или пересекающиеся полигоны?
Разного цвета должны быть полигоны.
2) Есть ли наложения в месте пересечения трех и более полигонов?
Есть. Существуют области (места), в которых накладываются около 20 полигонгов.
теорема о четырёх красках здесь не применима - цветов будет больше.
1) Что именно должно быть разного цвета - пересечения, или пересекающиеся полигоны?
Разного цвета должны быть полигоны.
2) Есть ли наложения в месте пересечения трех и более полигонов?
Есть. Существуют области (места), в которых накладываются около 20 полигонгов.
теорема о четырёх красках здесь не применима - цветов будет больше.
-
- Гуру
- Сообщения: 4231
- Зарегистрирован: 10 апр 2006, 22:34
- Репутация: -344969098
- Откуда: Париж
Re: Раскраска полигонов
Тогда картинку в студию. Если пересекаются 20 выпуклых полигонов, то либо пересечение минимально, либо какой то полигон должен быть поглощен в результате пересечения.
-
- Интересующийся
- Сообщения: 23
- Зарегистрирован: 19 окт 2015, 11:10
- Репутация: 1
Re: Раскраска полигонов
Пример полигонов и их раскраски
- Вложения
-
- Раскрашенные полигоны
- ploly_clr.png (7.14 КБ) 9788 просмотров
-
- Полигоны
- ploly.png (8.8 КБ) 9788 просмотров
-
- Гуру
- Сообщения: 810
- Зарегистрирован: 22 авг 2007, 14:58
- Репутация: 123
- Откуда: Казань
Re: Раскраска полигонов
Просто, чтобы лучше понять задачу -- а зачем вам их раскрашивать? Что вы потом собираетесь с этим делать?
-
- Интересующийся
- Сообщения: 23
- Зарегистрирован: 19 окт 2015, 11:10
- Репутация: 1
Re: Раскраска полигонов
На всякий случай. Каждый полигон - одного цвета. При раскраске они не режутся.
Эффект разных цветов в примере - за счёт полупрозрачности.
Эффект разных цветов в примере - за счёт полупрозрачности.
-
- Интересующийся
- Сообщения: 23
- Зарегистрирован: 19 окт 2015, 11:10
- Репутация: 1
Re: Раскраска полигонов
Полигоны это Convex hull + буфер вокруг точек, объединенных по некоторому признаку.
Вот точки и должны быть разного цвета.
Вот точки и должны быть разного цвета.
Показать на карте...KolesovDmitry писал(а):Что вы потом собираетесь с этим делать?
-
- Гуру
- Сообщения: 810
- Зарегистрирован: 22 авг 2007, 14:58
- Репутация: 123
- Откуда: Казань
Re: Раскраска полигонов
Тогда почему их просто не показать на карте так, как вы показали в примере (полупрозрачными)?Alexgis писал(а):Полигоны это Convex hull + буфер вокруг точек, объединенных по некоторому признаку.
Вот точки и должны быть разного цвета.Показать на карте...KolesovDmitry писал(а):Что вы потом собираетесь с этим делать?
-
- Интересующийся
- Сообщения: 23
- Зарегистрирован: 19 окт 2015, 11:10
- Репутация: 1
Re: Раскраска полигонов
Если цветов много (да ещё полупрозрачные) - их на глаз не отличить.
Т.е. невозможно сделать палитру 80 различимых цветов - даже 20 с трудом.
Задача в том, чтобы максимально уменьшить количество уникальных цветов.
На рисунке, цвета проставлены вручную. А хотелось бы, чтобы это делал автомат.
Т.е. невозможно сделать палитру 80 различимых цветов - даже 20 с трудом.
Задача в том, чтобы максимально уменьшить количество уникальных цветов.
На рисунке, цвета проставлены вручную. А хотелось бы, чтобы это делал автомат.
-
- Гуру
- Сообщения: 731
- Зарегистрирован: 12 янв 2011, 22:40
- Репутация: 304
- Ваше звание: ∀
Re: Раскраска полигонов
А в чём проблема? Вы правильно разобрались, что задача сводится к раскраске графа. По запросу "graph coloring algorithm" гуглится куча реализаций приближённого решения задачи:
С++
Python (исходный код библиотеки networkx)
Java
С++
Python (исходный код библиотеки networkx)
Java
-
- Интересующийся
- Сообщения: 23
- Зарегистрирован: 19 окт 2015, 11:10
- Репутация: 1
Re: Раскраска полигонов
Ariki, спасибо - буду смотреть!
Сейчас и используется приближённый - беда в том, что он нестабильный.
Пробовали два варианта. И тот и другой дают не оптимальный результат в зависимости от данных.
Придётся делать точный, 2000 узлов - не так много.
Алгоритм ищется, желательно на pl/sql, чтобы яву не деплоить, но не принципиально...
Сейчас и используется приближённый - беда в том, что он нестабильный.
Пробовали два варианта. И тот и другой дают не оптимальный результат в зависимости от данных.
Придётся делать точный, 2000 узлов - не так много.
Алгоритм ищется, желательно на pl/sql, чтобы яву не деплоить, но не принципиально...
-
- Гуру
- Сообщения: 731
- Зарегистрирован: 12 янв 2011, 22:40
- Репутация: 304
- Ваше звание: ∀
Re: Раскраска полигонов
Приближённым жадный алгоритм раскраски является в том смысле, что он не гарантирует использование минимального количества цветов. Но гарантируется, что, например, если у вас один полигон может пересекаться максимум с 20 другими, то общее количество цветов будет не больше 21.
Точный алгоритм на таком количестве вершин использовать невозможно:
Википедия о сложности точного алгоритма
Точный алгоритм на таком количестве вершин использовать невозможно:
Википедия о сложности точного алгоритма
-
- Интересующийся
- Сообщения: 23
- Зарегистрирован: 19 окт 2015, 11:10
- Репутация: 1
Re: Раскраска полигонов
Жесть - я как-то на цифры не посмотрел сразу (((Ariki писал(а):Википедия о сложности точного алгоритма
Спасибо - похоже вопрос исчерпан...
-
- Гуру
- Сообщения: 4231
- Зарегистрирован: 10 апр 2006, 22:34
- Репутация: -344969098
- Откуда: Париж
Re: Раскраска полигонов
Ну, судя по картинке, если показан типичный результат, то задача сильно легче полного перебора вариантов, т.к. объекты сгруппированы и нет единого непрерывного наложения. Вот если бы все 2000 полигонов создавали непрерывный объект, то дело было бы труба.
-
- Интересующийся
- Сообщения: 23
- Зарегистрирован: 19 окт 2015, 11:10
- Репутация: 1
Re: Раскраска полигонов
Показан нетипичный результат. Как писал выше, непрерывная цепочка может состоять из 90 полигонов - дело труба.
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя