В информатике и теории графов термин цвет- кодирование относится к алгоритмической технике, которая полезна при обнаружении сетевых мотивов. Например, его можно использовать для обнаружения простого пути длины k в заданном графе. Традиционный алгоритм цветового кодирования - вероятностный, но его можно дерандомизировать без особых накладных расходов во время выполнения.
Цветовое кодирование также применяется к обнаружению циклов заданной длины, и в более общем плане оно применяется к проблеме изоморфизма подграфов (NP- полная проблема), где он дает алгоритмы полиномиального времени, когда образец подграфа, который он пытается обнаружить, имеет ограниченную ширину дерева.
Метод цветового кодирования был предложен и проанализирован в 1994 году Нога Алон и Ури Цвик.
С помощью метода цветового кодирования можно получить следующие результаты:
Для решения задачи поиска подграфа в заданный граф G = (V, E), где H может быть путем, циклом или любым графом с ограниченной шириной дерева, где , метод цветового кодирования начинается со случайного окрашивания каждой вершины G в цветов, а затем пытается найти красочную копию H в цвете G. Здесь граф является красочным, если каждая вершина в нем окрашена отдельным цвет. Этот метод работает, повторяя (1) случайную раскраску графа и (2) находя красочную копию целевого подграфа, и в конечном итоге целевой подграф можно найти, если процесс повторяется достаточное количество раз.
Предположим, что копия H в G становится цветной с некоторой ненулевой вероятностью p. Отсюда сразу следует, что если случайная раскраска повторяется 1 / p раз, то ожидается, что эта копия станет цветной один раз. Обратите внимание, что хотя p мало, показано, что если , p лишь полиномиально мало. Предположим снова, что существует алгоритм, такой, что, учитывая граф G и раскраску, отображающую каждую вершину G в один из k цветов, он находит копию красочного H, если таковая существует, в пределах некоторого времени выполнения O (r). Тогда ожидаемое время нахождения копии H в G, если таковая существует, равно .
Иногда также желательно использовать более ограниченную версию красочности. Например, в контексте поиска циклов в плоских графах можно разработать алгоритм, который находит хорошо раскрашенные циклы. Здесь цикл хорошо раскрашен, если его вершины раскрашены в последовательные цвета.
Примером может быть поиск простого цикла длины k в графе G = (V, E).
При применении метода случайной раскраски вероятность каждого простого цикла равна , чтобы стать красочным, поскольку существует способов раскраски k вершин цикла, среди которых красочных вхождений. Затем можно использовать алгоритм (описанный ниже) найти красочные циклы в случайном раскрашенном графе G во времени , где - постоянная матричного умножения. Следовательно, требуется общее время нахождения простого цикла длины k в G.
Алгоритм красочного поиска циклов работает, сначала находя все пары вершин в V, которые соединены простым путем длины k - 1, а затем проверка того, что две вершины в каждой па ir подключены. Дана функция раскраски c: V → {1,..., k} для раскрашивания графа G, перечислим все разбиения цветового набора {1,..., k} на два подмножества C 1, C 2 размера каждый. Обратите внимание, что V можно разделить на V 1 и V 2 соответственно, и пусть G 1 и G 2 обозначают подграфы, индуцированные V 1 и V 2 соответственно. Затем рекурсивно найдите цветные пути длиной в каждом из G 1 и G 2 <115.>. Предположим, что логическая матрица A 1 и A 2 представляет связность каждой пары вершин в G 1 и G 2 красочным путь, соответственно, и пусть B будет матрицей, описывающей отношения смежности между вершинами V 1 и V 2, логическое произведение дает все пары вершин в V, которые соединены красочным путем длины k - 1. Таким образом, рекурсивное соотношение умножений матриц равно , что дает время выполнения . Хотя этот алгоритм находит только конечные точки цветного пути, в него можно включить другой алгоритм Алона и Наора, который находит сами красочные пути.
Дерандомизация цветового кодирования включает в себя перечисление возможных раскрасок графа G, так что случайность раскраски G больше не требуется. Чтобы целевой подграф H в G можно было обнаружить, перечисление должно включать по крайней мере один экземпляр, в котором H является цветным. Для этого достаточно перечислить k-совершенное семейство F хеш-функций от {1,..., | V |} до {1,..., k}. По определению F является k-совершенным, если для любого подмножества S из {1,..., | V |}, где , существует хеш-функция h в F такая, что h: S → {1,..., k} является идеальным. Другими словами, в F должна существовать хеш-функция, которая окрашивает любые заданные k вершин в k различных цветов.
Существует несколько подходов к созданию такого k-совершенного семейства хешей:
В случае дерандомизирующей раскраски, когда каждая вершина в подграфе окрашивается последовательно, k-совершенное семейство хеш-функций от {1,..., | V |} до {1,..., k!} требуется. Достаточное k-совершенное семейство, которое отображает {1,..., | V |} в {1,..., k}, может быть построено способом, аналогичным подходу 3 выше (первый шаг). В частности, это делается с помощью nklog k случайных битов, которые почти klog k независимы, и размер результирующего k-совершенного семейства будет .
Дерандомизация метода цветового кодирования может быть легко распараллелена, давая эффективные алгоритмы NC.
В последнее время цветовое кодирование привлекло большое внимание в области биоинформатики. Одним из примеров является обнаружение сигнальных путей в сетях белок-белкового взаимодействия (PPI). Другой пример - обнаружение и подсчет количества мотивов в сетях PPI. Изучение как сигнальных путей, так и мотивов позволяет глубже понять сходства и различия многих биологических функций, процессов и структур между организмами.
Из-за огромного количества данных о генах, которые можно собрать, поиск путей или мотивов может занять очень много времени. Однако, используя метод цветового кодирования, мотивы или сигнальные пути с вершинами в сети G с n вершинами могут быть найдены очень эффективно за полиномиальное время. Таким образом, это позволяет нам исследовать более сложные или большие структуры в сетях PPI.