Сведение по Карпу — различия между версиями
(→Пример) |
(→Пример) |
||
Строка 6: | Строка 6: | ||
==Пример== | ==Пример== | ||
Рассмотрим следующие языки: | Рассмотрим следующие языки: | ||
− | <tex>IND</tex> и <tex>CLIQUE</tex> | + | <tex>IND</tex> и <tex>CLIQUE</tex> — множества пар <tex>\langle G, k \rangle </tex>, где <tex>G</tex> — граф, <tex>k</tex> — натуральное число. Пара <tex>\langle G, k \rangle </tex> принадлежит <tex>IND</tex>, если в графе <tex>G</tex> есть подграф с <tex>k</tex> вершинами, в котором все вершины не связаны ребрами. Пара <tex>\langle G, k \rangle </tex> принадлежит <tex>CLIQUE</tex>, если в графе <tex>G</tex> есть подграф с <tex>k</tex> вершинами, в котором между каждой парой вершин проходит ребро. |
− | Существует функция <tex>f</tex> такая, что <tex>f(\langle G, k \rangle ) = \langle H, k \rangle </tex>, где <tex>H</tex> | + | Существует функция <tex>f</tex> такая, что <tex>f(\langle G, k \rangle ) = \langle H, k \rangle </tex>, где <tex>H</tex> — граф, в котором столько же вершин, сколько и в <tex>G</tex>, а ребра расставлены следующим образом: если в графе <tex>G</tex> между вершинами <tex>u</tex> и <tex>v</tex> есть ребро, то в графе <tex>H</tex> это ребро не проводится, если же в графе <tex>G</tex> между этими вершинами его не было, то в <tex>H</tex> оно есть между соответствующими вершинами. Эта функция вычисляется за линейное время от длины входа, если представлять граф в виде матрицы смежности. |
Заметим, что если в графе <tex>G</tex> был независимый подграф с <tex>k</tex> вершинами, то в <tex>H</tex> между всеми вершинами подграфа будут ребра, следовательно, в графе <tex>H</tex> будет клика с <tex>k</tex> вершинами. | Заметим, что если в графе <tex>G</tex> был независимый подграф с <tex>k</tex> вершинами, то в <tex>H</tex> между всеми вершинами подграфа будут ребра, следовательно, в графе <tex>H</tex> будет клика с <tex>k</tex> вершинами. |
Версия 20:34, 14 марта 2010
Определение
Язык
сводится по Карпу к языку , если существует функция такая, что тогда и только тогда, когда .Обычно требуют, чтобы сводящая функция была вычислима за полиномиальное время от длины входа.
Пример
Рассмотрим следующие языки:
и — множества пар , где — граф, — натуральное число. Пара принадлежит , если в графе есть подграф с вершинами, в котором все вершины не связаны ребрами. Пара принадлежит , если в графе есть подграф с вершинами, в котором между каждой парой вершин проходит ребро.Существует функция
такая, что , где — граф, в котором столько же вершин, сколько и в , а ребра расставлены следующим образом: если в графе между вершинами и есть ребро, то в графе это ребро не проводится, если же в графе между этими вершинами его не было, то в оно есть между соответствующими вершинами. Эта функция вычисляется за линейное время от длины входа, если представлять граф в виде матрицы смежности.Заметим, что если в графе
был независимый подграф с вершинами, то в между всеми вершинами подграфа будут ребра, следовательно, в графе будет клика с вершинами.С другой стороны, если в
есть клика с вершинами, значит между всеми вершинами клики проведены ребра, а значит их не было в графе . Т.о. в графе был независимый подграф с вершинами.Из всего сказанного следует, что
.