Я не уверен, действительно ли это проблема «раскраски», поскольку это проблема назначения/линейного программирования. У меня тоже нет опыта, так что прошу прощения за любую нубость, которая могла бы последовать. Но я чувствую, что эта проблема должна была быть почти окончательно решена/исследована раньше, я просто не смог найти ничего, просмотрев многие алгоритмы графа на http://en.wikipedia.org/wiki/Category:Graph_algorithms. Я надеялся получить некоторые указатели в правильном направлении.Vertex-Coloring/Assignment, чтобы свести к минимуму количество «пересечений цветов»
«Проблема-оператор» фактически сводится к:
Есть два типа вершин в графе: маршрутизаторы и сердечников.
Сердечники подключены к маршрутизаторам ТОЛЬКО. Каждое ядро подключается только к одному маршрутизатору. И каждый имеет введенный пользователем/определенный «цвет». (В моей конкретной проблеме цвет ограничен одним из 4/5 возможных цветов). Их цвет не может быть изменен, это входной параметр. (Ядра являются квадратами на изображении ниже)
Маршрутизаторы подключаются к сердечникам, а также к другим маршрутизаторам. У них нет «цвета», назначенного им. Назначение цвета является частью цели программы/алгоритма. (Маршрутизаторы - это круговые вершины на изображении ниже.)
Цель программы - назначить цвета для каждого маршрутизатора на графике таким образом, чтобы количество «пересечений»/ребер между вершинами разных цветов минимизировалось ,
(Альтернативный вид:. В сущности, вы получаете график, где некоторые вершины окрашены, а другие не являются Цель состоит в том, чтобы окрасить те, которые не являются такими, что число ребер между вершинами разного цвета сведено к минимуму.)
Я смог сформулировать это (довольно плохо уверен) в качестве Integer-Linear-Program и установить решение/подход, используя LP-Solve. У меня тоже есть эвристика. Я хотел бы знать «правильные»/известные/другие подходы к решению этого ?!
Большое спасибо!
Вы могли бы уточнить 4. немного больше? Мне кажется, что вы можете раскрасить каждую вершину красного цвета, а ответ будет равен 0 (или если вам не разрешат два цвета рядом друг с другом, тогда ответ должен быть равен количеству ребер между маршрутизаторами). –
is граф ациклический? – goat
@robertking: Я должен был быть яснее. Вы не можете изменить/назначить цвета «сердечников» (квадратные вершины на диаграмме). На самом деле вам предоставляется частично окрашенный граф. Цель состоит в том, чтобы окрасить остальную часть (маршрутизаторы). Надеюсь, это лучше? – ryecatcher