Транзитивный остов — различия между версиями
(→Алгоритм для антисимметричных отношений) |
|||
Строка 13: | Строка 13: | ||
Пусть <tex> (k, m) \in E' </tex>. Тогда <tex> k \neq m </tex> (иначе после удаления ребра <tex> (k, m) </tex> из <tex> E' </tex> получится меньший граф с тем же транзитивным замыканием, что противоречит определению). Поэтому в пути от <tex> k </tex> к <tex> m </tex> в графе <tex> G </tex> есть как минимум одно ребро. | Пусть <tex> (k, m) \in E' </tex>. Тогда <tex> k \neq m </tex> (иначе после удаления ребра <tex> (k, m) </tex> из <tex> E' </tex> получится меньший граф с тем же транзитивным замыканием, что противоречит определению). Поэтому в пути от <tex> k </tex> к <tex> m </tex> в графе <tex> G </tex> есть как минимум одно ребро. | ||
Возьмём <tex> l </tex> такую, что <tex> l </tex> достижима из <tex> k </tex>, и есть ребро из <tex> l </tex> в <tex> m </tex>. Предположим, что <tex> k \neq l </tex>. Так как граф ацикличен, <tex> l \neq m </tex>. Так же так как транзитивное замыкание <tex> G </tex> равно транзитивному замыканию <tex> G' </tex>, в графе <tex> G' </tex> вершина <tex> l </tex> достижима из <tex> k </tex>, а <tex> m </tex> — из <tex> l </tex>. <tex> G' </tex> также ацикличен, поэтому в пути от <tex> k </tex> к <tex> l </tex> не может быть ребра <tex> (k, m) </tex>. Также в пути от <tex> l </tex> к <tex> m </tex> не может быть ребра <tex> (k, m) </tex>. Поэтому существует путь в <tex> G' </tex> от <tex> k </tex> к <tex> m </tex>, который не содержит ребро <tex> (k, m) </tex>. Поэтому удаление ребра не изменяет транзитивное замыкание. | Возьмём <tex> l </tex> такую, что <tex> l </tex> достижима из <tex> k </tex>, и есть ребро из <tex> l </tex> в <tex> m </tex>. Предположим, что <tex> k \neq l </tex>. Так как граф ацикличен, <tex> l \neq m </tex>. Так же так как транзитивное замыкание <tex> G </tex> равно транзитивному замыканию <tex> G' </tex>, в графе <tex> G' </tex> вершина <tex> l </tex> достижима из <tex> k </tex>, а <tex> m </tex> — из <tex> l </tex>. <tex> G' </tex> также ацикличен, поэтому в пути от <tex> k </tex> к <tex> l </tex> не может быть ребра <tex> (k, m) </tex>. Также в пути от <tex> l </tex> к <tex> m </tex> не может быть ребра <tex> (k, m) </tex>. Поэтому существует путь в <tex> G' </tex> от <tex> k </tex> к <tex> m </tex>, который не содержит ребро <tex> (k, m) </tex>. Поэтому удаление ребра не изменяет транзитивное замыкание. | ||
− | Теперь предположим, что <tex> (k, m) \ | + | Теперь предположим, что <tex> (k, m) \in E </tex>. Так как <tex> G </tex> ацикличен, <tex> k \neq m </tex> и отсюда в <tex> G' </tex> вершина <tex> m </tex> достижима из <tex> k </tex>. Поскольку <tex> (k, m) \notin E' </tex>, существует вершина <tex> l </tex> такая, что есть путь из <tex> k </tex> в <tex> l </tex> и из <tex> l </tex> в <tex> m </tex>, и <tex> k \neq l \neq m </tex>. Это значит, что в <tex> G </tex> что есть путь из <tex> k </tex> в <tex> l </tex> и из <tex> l </tex> в <tex> m </tex> (причём в каждом пути будет как минимум по одному ребру). Поскольку <tex> G </tex> ацикличен, это значит, что в <tex> G </tex> существует вершина <tex> l' </tex> такая, что есть путь как минимум в одно ребро из <tex> k </tex> в <tex> l' </tex> и есть ребро <tex> (l', m) </tex>. Это противоречит нашему предположению. |
}} | }} | ||
Версия 23:13, 11 апреля 2012
Определение: |
Транзитивным остовом (transitive reduction) отношения на множестве называется минимальное отношение на такое, что транзитивное замыкание равно транзитивному замыканию . |
Алгоритм для антисимметричных отношений
Для удобства представим отношение в виде графа:
. Его транзитивным остовом будет граф . Так как отношение антисимметрично, то граф ацикличен.Теорема: |
вершина достижима из |
Доказательство: |
Пусть Теперь предположим, что . Тогда (иначе после удаления ребра из получится меньший граф с тем же транзитивным замыканием, что противоречит определению). Поэтому в пути от к в графе есть как минимум одно ребро. Возьмём такую, что достижима из , и есть ребро из в . Предположим, что . Так как граф ацикличен, . Так же так как транзитивное замыкание равно транзитивному замыканию , в графе вершина достижима из , а — из . также ацикличен, поэтому в пути от к не может быть ребра . Также в пути от к не может быть ребра . Поэтому существует путь в от к , который не содержит ребро . Поэтому удаление ребра не изменяет транзитивное замыкание. . Так как ацикличен, и отсюда в вершина достижима из . Поскольку , существует вершина такая, что есть путь из в и из в , и . Это значит, что в что есть путь из в и из в (причём в каждом пути будет как минимум по одному ребру). Поскольку ацикличен, это значит, что в существует вершина такая, что есть путь как минимум в одно ребро из в и есть ребро . Это противоречит нашему предположению. |
Псевдокод
R' = R foreach a in X foreach b in X foreach c in X if aRb and bRc and aRc R'.delete(pair(a, c))
Источники
- Wikipedia: Transitive reduction
- J.A. La Poutré and J. van Leeuwen «Maintenance of transitive closures and transitive reductions of graphs», 1987