2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему
 
 Кодирование графов для тех, кому нечего делать
Сообщение25.09.2019, 02:13 
Заслуженный участник


27/04/09
28128
Здесь нет единственного ответа, но вам может доставить удовольствие найти любой или в некотором смысле минимальный.

Придумайте способ кодирования $c$ ориентированных графов с вершинами, помеченными натуральными числами, с помощью неориентированных графов без пометки вершин. Этот способ должен быть таким, что:
(1) Коды разных графов разные, то есть $c$ инъективная (ну, это очевидно из слова «кодирование»).
(2) Есть некоторое число $s$, что для любых графов $G_1, G_2$, если они отличаются одним ребром, степень отличия графов $c(G_1), c(G_2)$ ограничена $s$. (Степень отличия двух графов можно определить как наименьшее число удалений и добавлений вершин и рёбер в них, делающих оба графа изоморфными.)
(3) Аналогично, есть некоторое число $s$, что если мы получили из графа $G_1$ граф $G_2$ добавлением изолированной вершины с меткой $n$, степень отличия $c(G_1), c(G_2)$ меньше $ns$.
(4) Есть некоторая функция $c^*$ оттуда же и туда же, что и $c$, что в $c(G_1)$ столько же подграфов, изоморфных $c^*(G_2)$, сколько в $G_1$ подграфов, изоморфных $G_2$. То есть кодирование достаточно аккуратное.

А ещё можно подумать о допущении петель, более чем одного ребра между каждой парой вершин (мультиграфы), пометке рёбер (подкорректировать условие 2 под 3) и т. д.. Наоборот, можно начать с кодирования графов без помеченных вершин (новое — только ориентация рёбер). Можно позариться на кодирование гиперграфов (опять же подкорректировать условие 2, учитывая кратность гиперребра).

 Профиль  
                  
 
 Re: Кодирование графов для тех, кому нечего делать
Сообщение03.10.2019, 14:45 


21/05/16
4292
Аделаида
arseniiv в сообщении #1417205 писал(а):
без пометки вершин

Т.е. с точностью до их перестановки?

 Профиль  
                  
 
 Re: Кодирование графов для тех, кому нечего делать
Сообщение03.10.2019, 18:13 
Заслуженный участник


27/04/09
28128
Да, перестановка любого множества непомеченных вершин даёт тот же граф. Это заставит нас кодировать разные пометки с помощью каких-то неизоморфных подграфов; неориентированность рёбер заставит кодировать ориентированные тоже какими-то более сложными чем одно ребро штуками.

 Профиль  
                  
 
 Re: Кодирование графов для тех, кому нечего делать
Сообщение03.10.2019, 18:50 
Заслуженный участник
Аватара пользователя


16/07/14
9216
Цюрих
Заводим в $G_2$ несколько вспомогательных вершин:
-$d$ для задания направления
-$x$, $y$ и $t_1, \ldots, t_n$ для задания пометок
Соединим $x$ со всеми $t_i$ (чтобы не перепутать их с остальными вершинами), соединим $t_i$ цепью $t_1, t_2, \ldots, t_n$, соединим $t_1$ с $y$ для выделения начала

Для каждой вершины $v_i$ в $G_1$ заведем в $G_2$ вершину $v'_i$, для ребра $e_j$ - пару вершин $e'_j, e''_j$. Если было ребро $e_j: v_i \to v_j$, то соединим вершины $v'_i, e'_j$, $e'_j, e''_j$ и $e''_j, v_j$. Соединим $e'_j$ и $d$ для задания направления.
Соединим $v'_i$ с $t_i$ для задания нумерации.

Вроде бы этого достаточно. При добавлении ребра достаточно добавить две вершины и три ребра, при добавлении вершины - две вершины и три ребра. Автоморфизмы $G_1$ и $G_2$ соответствуют друг другу взаимно однозначно.

Граф растет в несколько раз. Самое сложное - аккуратно пометить $d$, $x$ и $y$, чтобы не спутать их с остальными. Можно например так: в нашем построенном графе нет листов, сосед которых имеет степень $2$ (если размер графа хотя бы $2$; для графа из одной вершины придумаем что-то отдельно). Соответственно можно подвесить к $d$ цепочку длины $2$, к $x$ - длины $3$ и к $y$ - длины $4$, это их однозначно задаст.

 Профиль  
                  
 
 Re: Кодирование графов для тех, кому нечего делать
Сообщение03.10.2019, 20:10 
Заслуженный участник


27/04/09
28128
mihaild в сообщении #1418875 писал(а):
Самое сложное - аккуратно пометить $d$, $x$ и $y$, чтобы не спутать их с остальными.
Да, как раз читая на полпути решил спросить, будут ли они защищены. Интересная конструкция, такого типа мне искать в голову не приходило.

Я предполагал найти несколько графов $A, B, C, D$, не являющихся подграфами друг друга, и потом соединять $A$ с произвольным количеством $B$ для помеченной вершины, $C$ с $D$ как начало и конец ребра, и соединять их между собой каким-то аккуратным способом и надеяться, что можно подобрать $A, B, C, D$ и способы соединения, чтобы всё прошло.

Ещё мне наверно стоило задать условия более однородным и близким к тому, откуда родилась задача, образом: пусть есть правила переписывания графов $G\to G'$, задаваемые двумя графами, в которых каждая вершина дополнительно помечена именем, и применение правила заменяет произвольный изоморфный $G$ подграф на $G'$ так, что вершины $G$ с именами, которые не встречаются в $G'$, удаляются, вершины с именами, имеющимися и там, и там, остаются связанными с остальной частью графа так как были, а рёбра, соединяющие их между собой меняются на те, которые между ними есть в $G'$, и вершины с именами, уникальными для $G'$, добавляются. Тогда условие на кодирование простое: надо чтобы любое правило $R$ для помеченных орграфов можно было транслировать в правило $R'$ для их кодов, чтобы выполнялось $R'(c(G)) = \{ c(G') \mid G'\in R(G) \}$, где $R(G)$ — множество всех возможных результатов применения $R$ к $G$.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 5 ] 

Модератор: Модераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group