Раскраска полигонов
-
- Гуру
- Сообщения: 5292
- Зарегистрирован: 09 апр 2010, 19:30
- Репутация: 1015
- Ваше звание: просто мимо прохожу
- Откуда: Ё-бург
Re: Раскраска полигонов
а если реализовать жадный алгоритм раскраски графа используя инструменты Oracle для графов?
-
- Интересующийся
- Сообщения: 23
- Зарегистрирован: 19 окт 2015, 11:10
- Репутация: 1
Re: Раскраска полигонов
А вот не нашёл там ничего. Да и жадный алгоритм на таблицах делается на раз два.
- ginpetr
- Завсегдатай
- Сообщения: 379
- Зарегистрирован: 21 июн 2011, 12:07
- Репутация: 140
- Откуда: Орск
- Контактная информация:
Re: Раскраска полигонов
Попробовал придумать алгоритм на mapbasice для Mapinfo (чертовски любопытно стало).
На картинка видно, как получается. Рассмотрел два случая: когда запрещены любые пересечения и когда пересечение в одной точке разрешено. Внёс элемент случайности, так что результат каждый раз разный.
Работает только со структурой приложенной таблицы.
Перед запуском нужно выбрать полигоны.
На картинка видно, как получается. Рассмотрел два случая: когда запрещены любые пересечения и когда пересечение в одной точке разрешено. Внёс элемент случайности, так что результат каждый раз разный.
Работает только со структурой приложенной таблицы.
Перед запуском нужно выбрать полигоны.
- Вложения
-
- GR.zip
- (12.35 КБ) 374 скачивания
-
- Пересечения в точке разрешены.JPG (102.25 КБ) 8251 просмотр
-
- Без пересечений.JPG (103.03 КБ) 8251 просмотр
-
- Интересующийся
- Сообщения: 23
- Зарегистрирован: 19 окт 2015, 11:10
- Репутация: 1
Re: Раскраска полигонов
Когда: "Пересечение в точке разрешено" - "Да"
Не работает. Где-то ошибка - цвета могут пересекаться
Не работает. Где-то ошибка - цвета могут пересекаться
-
- Интересующийся
- Сообщения: 23
- Зарегистрирован: 19 окт 2015, 11:10
- Репутация: 1
Re: Раскраска полигонов
Когда: "Пересечение в точке разрешено" - "Нет"
Очевидно использован приблизительный алгоритм По теореме о четырех красках можно раскрасить более оптимальным способом: 4 цвета вместо 5
Очевидно использован приблизительный алгоритм По теореме о четырех красках можно раскрасить более оптимальным способом: 4 цвета вместо 5
- Вложения
-
- GR2.zip
- (5.09 КБ) 345 скачиваний
- ginpetr
- Завсегдатай
- Сообщения: 379
- Зарегистрирован: 21 июн 2011, 12:07
- Репутация: 140
- Откуда: Орск
- Контактная информация:
Re: Раскраска полигонов
В первом случае дело может быть в нетопологичности полигонов. Проверить сейчас не могу.
Во втором случае, при повторном запуске алгоритм может уложиться в четыре краски (случайный выбор начала перебора).
Ну и, разумеется, алгоритм придуман из любопытства и не совершенен(постоянные запросы-переборы, все-таки нужно строить и анализировать граф). В существующих алгоритмах не разбирался.
Во втором случае, при повторном запуске алгоритм может уложиться в четыре краски (случайный выбор начала перебора).
Ну и, разумеется, алгоритм придуман из любопытства и не совершенен(постоянные запросы-переборы, все-таки нужно строить и анализировать граф). В существующих алгоритмах не разбирался.
Последний раз редактировалось ginpetr 30 окт 2015, 08:08, всего редактировалось 1 раз.
- ginpetr
- Завсегдатай
- Сообщения: 379
- Зарегистрирован: 21 июн 2011, 12:07
- Репутация: 140
- Откуда: Орск
- Контактная информация:
Re: Раскраска полигонов
Попробовал.
В первом случае, действительно, топология не совершенна, поэтому Мапинфо считает, что красные полигоны пересекаются в одной точке.
Во втором случае со второго запуска получил 4 цвета (топология также поправлена).
В любом случае для большого количества полигонов нужно оптимизировать (например, сохранить после первого перебора для каждого полигона "отношения" с соседями, чтобы исключить повторные ресурсоёмкие геозапросы)
В первом случае, действительно, топология не совершенна, поэтому Мапинфо считает, что красные полигоны пересекаются в одной точке.
Во втором случае со второго запуска получил 4 цвета (топология также поправлена).
В любом случае для большого количества полигонов нужно оптимизировать (например, сохранить после первого перебора для каждого полигона "отношения" с соседями, чтобы исключить повторные ресурсоёмкие геозапросы)
- Вложения
-
- Без пересечений.JPG (31.23 КБ) 8089 просмотров
-
- Интересующийся
- Сообщения: 23
- Зарегистрирован: 19 окт 2015, 11:10
- Репутация: 1
Re: Раскраска полигонов
Действительно, топология...
-
- Интересующийся
- Сообщения: 23
- Зарегистрирован: 19 окт 2015, 11:10
- Репутация: 1
Re: Раскраска полигонов
Классическая жадная раскраска на MapBasic )))))
Через объединение таблиц.
Раскрашиваются все полигоны в таблице.
1) Строится таблица с rowID пересекающихся объектов.
2) Сортируем в зависимости от количества пересечений
3) Раскрашиваем объект
спасибо ginpetr, за команду для нахождения пересечений Относительно точного алгоритма
В программе, полигоны сортируются в зависимости от количества связанных полигонов в обратном порядке.
Всегда существует такой порядок, который приводит жадный алгоритм к оптимальному числу.
Однако количество перестановок равно n!
т.е. для 10 полигонов - количество перестановок = 3628800 )))
Через объединение таблиц.
Раскрашиваются все полигоны в таблице.
1) Строится таблица с rowID пересекающихся объектов.
2) Сортируем в зависимости от количества пересечений
3) Раскрашиваем объект
спасибо ginpetr, за команду для нахождения пересечений Относительно точного алгоритма
В программе, полигоны сортируются в зависимости от количества связанных полигонов в обратном порядке.
Всегда существует такой порядок, который приводит жадный алгоритм к оптимальному числу.
Однако количество перестановок равно n!
т.е. для 10 полигонов - количество перестановок = 3628800 )))
- Вложения
-
- Polygons.zip
- (13.68 КБ) 348 скачиваний
-
- Гуру
- Сообщения: 5292
- Зарегистрирован: 09 апр 2010, 19:30
- Репутация: 1015
- Ваше звание: просто мимо прохожу
- Откуда: Ё-бург
Re: Раскраска полигонов
деревья!
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 36 гостей