EDIT: Именно поэтому я пытаюсь найти два непересекающихся независимых набора известного размера в графе, виде треугольной сетки, которая может иметь отверстия и имеет переменную форму периметра.Перестановка графика так, чтобы определенные узлы не были смежными?
Я не очень хорошо разбираюсь в теории графов, поэтому не уверен, существует ли эффективное решение этой проблемы. Рассмотрим следующие графы:
http://i.imgur.com/Wi5Rfbd.jpg
http://i.imgur.com/0GFzaDl.jpg
http://i.imgur.com/pezW4yk.jpg
Цвета любых двух узлов можно поменять местами. Цель состоит в том, чтобы не было двух соседних красных узлов, и два зеленых узла не смежны. Края, отмеченные восклицательными знаками, недействительны. В принципе, мне нужно написать два алгоритма:
Определить, что узлы в данной графе могут быть расположены таким образом, что красные и зеленые узлы не смежны с узлами одного и того же цвета.
На самом деле переупорядочить узлы.
Я немного потерял, как это реализовать. Не сложно отделить узлы одного цвета, но повторение процесса для второго цвета может испортить первый цвет. Без способа определить, действительно ли график может быть правильно настроен, этот процесс может зависеть навсегда.
Есть ли какой-то алгоритм, который я могу использовать для этого? Меня в основном интересует граф первого изображения (треугольная сетка), но общий алгоритм тоже будет работать.
Это вариация [проблема окраски графа] (http://en.wikipedia.org/wiki/Graph_coloring), которая является NP-Complete. (Основное различие - предопределенное количество # номеров на цвет). Я не думаю, что это облегчает проблему. – amit
Ваш график всегда [planar] (http://en.wikipedia.org/wiki/Planar_graph)? – deniss
@deniss yes Графики, которые я буду использовать, всегда будут плоскими, потому что они действительно просто треугольные сетки, как в первом изображении.Однако могут быть отверстия, а форма периметра является переменной. – sbking