Максимальное соответствие подграфа - PullRequest
2 голосов
/ 09 июля 2019

Даны два графика G=(V,E), например:

G

и G'=(V',E'), например:

G'

Мне нужно найти максимальное совпадение подграфа между ними.Рассмотрим G в качестве целевого графа и G' в качестве графа набережных.Каждый узел и каждое ребро имеет набор атрибутов, но это не слишком важно, поскольку у меня есть функция, которая дает два узла (или два ребра), она будет возвращать значение, представляющее сходство между обоими элементами (более высокое значение, более высокое сходство).

Максимальное совпадение совпадений будет совпадением с наибольшим сходством, в этом случае, поскольку у нас есть 2 узла и 1 ребро в качестве запроса, добавление значений сходства для этих 2 узлов и 1 ребра с элементамив целевом графике (G) должно быть максимумом.

Выполнение этого методом грубой силы вернет правильное решение, но его слишком сложно вычислить, поэтому я открыт не глобальному максимуму, ахорошее решение (например, алгоритм Жадного или алгоритм, который руководствуется чем-то для выполнения поиска), но алгоритм должен возвращать лучшее значение без ущерба для времени вычислений.

Ответы [ 2 ]

1 голос
/ 10 июля 2019

Ваша проблема аналогична проблеме максимального сокращения . Так как проблема NP-трудна, вы не можете ожидать алгоритм полиномиального времени, который бы возвращал оптимальный ответ, если P = NP.
Но существует несколько приближенных алгоритмов. Среди них есть жадный алгоритм 1/2 -приложения, который очень прост в реализации.
Он описан здесь и представляет собой простой жадный алгоритм, в котором вы начинаете со случайного разбиения набора вершин, а затем перемещаете вершины из одного набора в другой, если это улучшает разрез. Если вы больше не можете улучшить текущее решение, у вас есть приблизительное решение.

0 голосов
/ 19 июля 2019

Попробуйте некоторые алгоритмы общего покрытия

На самом деле ваша проблема не может иметь алгоритм полиномиального времени, который даст вам ответ "ВЫ". Вы все еще можете найти множество других жизнеспособных решений

(возможно, возвращаемся назад?)

...