NP-полнота задачи о гамильтоновом пути в графе — различия между версиями

Материал из Викиконспекты
Перейти к: навигация, поиск
Строка 12: Строка 12:
 
==Формулировка задачи о гамильтоновом пути в графе==
 
==Формулировка задачи о гамильтоновом пути в графе==
 
В '''задаче об (ориентированном) гамильтоновом пути в графе''' ([U]HAMP) в качестве входных данных выступает (ориентированный) граф <math>G</math>. Требуется выяснить, есть ли в заданном (ориентированном) графе <math>G</math> (ориентированный) гамильтонов путь.
 
В '''задаче об (ориентированном) гамильтоновом пути в графе''' ([U]HAMP) в качестве входных данных выступает (ориентированный) граф <math>G</math>. Требуется выяснить, есть ли в заданном (ориентированном) графе <math>G</math> (ориентированный) гамильтонов путь.
 
 
  
 
==Доказательство NP-полноты задачи об ориентированном гамильтоновом пути в графе (HAMP)==
 
==Доказательство NP-полноты задачи об ориентированном гамильтоновом пути в графе (HAMP)==
 
Для доказательства того, что HAMP <math>\in</math> [[NPC]], необходимо доказать два факта:
 
Для доказательства того, что HAMP <math>\in</math> [[NPC]], необходимо доказать два факта:
 
*HAMP <math>\in</math> [[NP]]  
 
*HAMP <math>\in</math> [[NP]]  
*HAMP<math>\in</math>[[NPH]]  
+
*HAMP <math>\in</math> [[NPH]]
 +
===Доказательство принадлежности к NP===
 +
В качестве сертификата возьмем ориентированный гамильтонов путь в графе <math>G</math>. Очевидно, он удовлетворяет всем требованиям, налагаемым на сертификат. Проверяющая функция строится очевидным образом, работает за полиномиальное от размера входа время.
 +
===Доказательство принадлежности к NPH===
 +
Сведем задачу об ориентированном гамильтоновом цикле (HAM) к HAMP. Пусть дан граф <math>G</math>. Выберем произвольную вершину графа <math>G</math> и раздвоим ее, и входящие дуги направим в одну из полученных вершин, а исходящие пустим из другой. Теперь, если в исходном графе был ориентированный гамильтонов цикл, то в полученном будет ориентированный гамильтонов путь. В обратную сторону, если в полученном графе будет ориентированный гамильтонов путь, то на первом и последнем местах в этом пути окажутся новые вершины, соответствующие раздвоенной, поскольку ни одна из них не может оказаться в середине пути (у неё есть либо входящие, либо исходящие дуги). Таким образом, если в полученном графе будет гамильтонов путь, то в исходном графе <math>G</math> был гамильтонов цикл.
 +
 
 +
==Доказательство NP-полноты задачи об гамильтоновом пути в графе (UHAMP)==
 +
Для доказательства того, что UHAMP <math>\in</math> [[NPC]], необходимо доказать два факта:
 +
*UHAMP <math>\in</math> [[NP]]
 +
*UHAMP <math>\in</math> [[NPH]]  
 
===Доказательство принадлежности к NP===
 
===Доказательство принадлежности к NP===
 
В качестве сертификата возьмем гамильтонов путь в графе <math>G</math>. Очевидно, он удовлетворяет всем требованиям, налагаемым на сертификат. Проверяющая функция строится очевидным образом, работает за полиномиальное от размера входа время.
 
В качестве сертификата возьмем гамильтонов путь в графе <math>G</math>. Очевидно, он удовлетворяет всем требованиям, налагаемым на сертификат. Проверяющая функция строится очевидным образом, работает за полиномиальное от размера входа время.
 
===Доказательство принадлежности к NPH===
 
===Доказательство принадлежности к NPH===
Сведем задачу о гамильтоновом цикле (HAM) к HAMP. Пусть дан граф <math>G</math>. Выберем произвольную вершину графа <math>G</math> и раздвоим ее и входящие ребра направим в одну из полученных вершин, а исходящие пустим из другой. Теперь, если в исходном графе был гамильтонов цикл, то в полученном будет гамильтонов путь. В обратную сторону, если в полученном графе будет гамильтонов путь, то на первом и последнем местах в этом пути окажутся новые вершины, соответствующие раздвоенной, поскольку ни одна из них не может оказаться в середине (у неё есть либо входящие, либо исходящие дуги). Таким образом, если в полученном графе будет гамильтонов путь, то в исходном графе <math>G</math> был гамильтонов цикл.
 

Версия 14:07, 13 марта 2010

Определения

Определение 1

Гамильтоновым путем в графе [math]G[/math] называется упорядочение всех узлов [math]n_{1}[/math], [math]n_{2}[/math], ..., [math]n_{k}[/math], при котором для каждого [math]i = 1, 2, ..., k - 1[/math] существует ребро из [math]n_{i}[/math] в [math]n_{i+1}[/math].

Ориентированным гамильтоновым путем называется то же самое для ориентированного графа (должна существовать дуга из [math]n_{i}[/math] в [math]n_{i+1}[/math]).

Определение 2

Гамильтоновым циклом в графе [math]G[/math] называется упорядочение всех узлов [math]n_{1}[/math], [math]n_{2}[/math], ..., [math]n_{k}[/math], при котором для каждого [math]i = 1, 2, ..., k - 1[/math] существует ребро из [math]n_{i}[/math] в [math]n_{i+1}[/math], а также существует ребро из [math]n_{k}[/math] в [math]n_{1}[/math].

Ориентированным гамильтоновым циклом называется то же самое для ориентированного графа (должна существовать дуга из [math]n_{i}[/math] в [math]n_{i+1}[/math] и дуга из [math]n_{k}[/math] в [math]n_{1}[/math]).

Формулировка задачи о гамильтоновом пути в графе

В задаче об (ориентированном) гамильтоновом пути в графе ([U]HAMP) в качестве входных данных выступает (ориентированный) граф [math]G[/math]. Требуется выяснить, есть ли в заданном (ориентированном) графе [math]G[/math] (ориентированный) гамильтонов путь.

Доказательство NP-полноты задачи об ориентированном гамильтоновом пути в графе (HAMP)

Для доказательства того, что HAMP [math]\in[/math] NPC, необходимо доказать два факта:

  • HAMP [math]\in[/math] NP
  • HAMP [math]\in[/math] NPH

Доказательство принадлежности к NP

В качестве сертификата возьмем ориентированный гамильтонов путь в графе [math]G[/math]. Очевидно, он удовлетворяет всем требованиям, налагаемым на сертификат. Проверяющая функция строится очевидным образом, работает за полиномиальное от размера входа время.

Доказательство принадлежности к NPH

Сведем задачу об ориентированном гамильтоновом цикле (HAM) к HAMP. Пусть дан граф [math]G[/math]. Выберем произвольную вершину графа [math]G[/math] и раздвоим ее, и входящие дуги направим в одну из полученных вершин, а исходящие пустим из другой. Теперь, если в исходном графе был ориентированный гамильтонов цикл, то в полученном будет ориентированный гамильтонов путь. В обратную сторону, если в полученном графе будет ориентированный гамильтонов путь, то на первом и последнем местах в этом пути окажутся новые вершины, соответствующие раздвоенной, поскольку ни одна из них не может оказаться в середине пути (у неё есть либо входящие, либо исходящие дуги). Таким образом, если в полученном графе будет гамильтонов путь, то в исходном графе [math]G[/math] был гамильтонов цикл.

Доказательство NP-полноты задачи об гамильтоновом пути в графе (UHAMP)

Для доказательства того, что UHAMP [math]\in[/math] NPC, необходимо доказать два факта:

  • UHAMP [math]\in[/math] NP
  • UHAMP [math]\in[/math] NPH

Доказательство принадлежности к NP

В качестве сертификата возьмем гамильтонов путь в графе [math]G[/math]. Очевидно, он удовлетворяет всем требованиям, налагаемым на сертификат. Проверяющая функция строится очевидным образом, работает за полиномиальное от размера входа время.

Доказательство принадлежности к NPH