Хобрук: Ваш путь к мастерству в программировании

Существует ли какой-либо алгоритм для вычисления расстояния редактирования между двумя графами, включающими одинаковые узлы?

Во-первых, я знаю, что было проделано много работы по вычислению расстояния редактирования между двумя графами. Но большинство алгоритмов GED применяются в общих случаях.

Теперь, рассматривая мой случай, есть два графика G(V1,E1) и G(V2,E2). Vk — это набор узлов, включающий k вершин (k — константа), и Vk удовлетворяет как Vk⊆V1, так и Vk ⊆В2. Я хочу сохранить соответствие между этими двумя графиками при вычислении расстояния редактирования между ними.

Мне интересно, есть ли какой-либо алгоритм, направленный на эту ситуацию? Если нет, есть ли у кого-нибудь совет для меня? большое спасибо

PS

Предположим, что vi — узел в Vk. Что меня беспокоит, так это то, что vi остается неизменным, когда G1 преобразуется в G2, что означает, что над vi не выполняется никаких операций (например, замена vi в G1 на u в G2, удаление vi в G1, вставка vi в G2) во время последовательности операций. которые преобразуют G1 в G2.


  • Вы имеете в виду V1⊆Vk и V2⊆Vk? 20.10.2016
  • Неа. Я имею в виду, что Vk является подмножеством как V1, так и V2. 20.10.2016
  • Какая польза от этого Вк в решении проблемы? (За исключением того, что сделать это немного сложнее?) 20.10.2016
  • Вы предполагаете, что все ребра Ek, соединяющие два узла в Vk, одинаковы в двух графах? 20.10.2016
  • Предположим, что vi — узел в Vk. Что меня беспокоит, так это то, что vi остается неизменным, когда G1 преобразуется в G2, что означает, что над vi не выполняется никаких операций (например, замена vi в G1 на u в G2, удаление vi в G1, вставка vi в G2) во время последовательности операций. которые преобразуют G1 в G2. 20.10.2016
  • Ребра, соединяющие два узла в Vk, не обязательно должны быть одинаковыми в двух графах. 20.10.2016

Ответы:


1

Нет алгоритма для решения вашей конкретной проблемы, потому что нет варианта использования и нет математической формы. Как бы я решил это:

1) В комментариях вы указываете Vk без изменений, но Ek(1) Ek(2), где Ek(i) — ребра между узлами в Vk для Vi. В этом случае вычислить добавление/удаление/замену ребра, GED(Vk1, Vk2), игнорируя ребра из Vk1/2.

2) вычислить GED(V1-Vk1, V2-Vk2), игнорируя ребра между Vi-Vki и Vki. Где V1-Vk1 — это граф V1 после удаления всех узлов в Vk и всех ребер, связанных с Vk.

3) вычислить ОЭД(E(V1-Vk1 ‹-> Vk1), E(V2-Vk2 ‹-> Vk2)), то есть вычислить ОЭД замены «ребер, соединяющих V1-Vk1 и Vk1» на «ребра, соединяющие V2 -Вк2 и Вк2".

4) Сложите 3 GED вместе.

20.10.2016
Новые материалы

Не зря же это называют интеллектом
Стек — C#, Oracle Опыт — 4 года Работа — Разведывательный корпус Мне пора служить Может быть, я немного приукрашиваю себя, но там, где я живу, есть обязательная военная служба на 3..

LeetCode Проблема 41. Первый пропущенный положительный результат
LeetCode Проблема 41. Первый пропущенный положительный результат Учитывая несортированный массив целых чисел, найдите наименьшее пропущенное положительное целое число. Пример 1: Input:..

Расистский и сексистский робот, обученный в Интернете
Его ИИ основан на предвзятых данных, которые создают предрассудки. Он словно переходит из одного эпизода в другой из серии Черное зеркало , а вместо этого представляет собой хронику..

Управление состоянием в микрофронтендах
Стратегии бесперебойного сотрудничества Микро-фронтенды — это быстро растущая тенденция в сфере фронтенда, гарантирующая, что удовольствие не ограничивается исключительно бэкэнд-системами..

Декларативное и функциональное программирование в стиле LINQ с использованием JavaScript с использованием каррирования и генератора ...
LINQ - одна из лучших функций C #, которая обеспечивает элегантный способ написания кода декларативного и функционального стиля, который легко читать и понимать. Благодаря таким функциям ES6,..

Структуры данных в C ++ - Часть 1
Реализация общих структур данных в C ++ C ++ - это расширение языка программирования C, которое поддерживает создание классов, поэтому оно известно как C с классами . Он используется для..

Как я опубликовал свое первое приложение в App Store в 13 лет
Как все началось Все началось три года назад летом после моего четвертого класса в начальной школе. Для меня, четвертого класса, лето кажется бесконечным, пока оно не закончится, и мой отец..