我正在寻找解决以下问题的有效算法或NP硬度的证明。
令为一个集合,为的子集。找到一个最小长度的序列,使得对于每个,都有一个使得。
例如,对于,单词是该问题的解决方案,因为对于存在,对于,。w = b a c { a ,b } k = 0 { a ,c } k = 1
至于我的动机,我试图表示一个有限自动机的边集,其中每个边都可以用输入字母中的一组字母来标记。我想存储一个字符串,然后在每个边缘保留一对指向该字符串的指针。我的目标是最小化该字符串的长度。
我正在寻找解决以下问题的有效算法或NP硬度的证明。
令为一个集合,为的子集。找到一个最小长度的序列,使得对于每个,都有一个使得。
例如,对于,单词是该问题的解决方案,因为对于存在,对于,。w = b a c { a ,b } k = 0 { a ,c } k = 1
至于我的动机,我试图表示一个有限自动机的边集,其中每个边都可以用输入字母中的一组字母来标记。我想存储一个字符串,然后在每个边缘保留一对指向该字符串的指针。我的目标是最小化该字符串的长度。
Answers:
我相信我从哈密顿路径中得到了减少,从而证明了NP-hard问题。
如果单词满足的条件,则称它为见证人(对于中的每个,都有使得)。甲大号∈ 甲米≥ 1 { 瓦特米+ 我 | 0 ≤ 我< | L | } = L
考虑原始问题的决策版本,即,确定对于某个和,是否有一个证人的长度最大为。可以使用原始问题作为多项式时间内的预言来解决此问题(找到最短的见证人,然后将其长度与进行比较)。ķ ≥ 0 甲ķ ķ
现在为减少的核心。令是一个简单的,无向的连通图。对于每个,令为包含顶点及其所有相邻边的集合。设置和。那么,当且仅当存在见证者的的长度至多为才具有哈密顿路径。v ∈ V 大号v = { v } ∪ { Ê ∈ Ë | v ∈ ë } v Σ = Ë 甲= { 大号v | v ∈ V } g ^ 阿2 | E | + 1
证明。令是的哈密顿路径,并且是路径上所有边的集合。对于每一个顶点,定义该组。选择任意排序每个。字为证人,由于由子表示,乘,对于每个,, ģ ħ = { ë 1,ë 2,... ,ë ñ - 1 } v Ù v = 大号v ∖ ħ α v Ù v瓦特= α v 1 Ë 1个α v 2 ë 2 ... ë ñ - 1 α v甲大号 v 1 α1Ë1大号 v ñ ë ñ - 1个 αÑv我我∉{1,Ñ}大号 v 我 ë我- 1 ü v 我 ë我È瓦特| V| −1HV| w| =2| E| +1由。此外,每个边缘在出现两次,但的边缘出现一次,而每个顶点出现一次,给出。
对于另一个方向,令成为长度最大为的任意证明。显然,每个和至少在中出现一次。在不失一般性的前提下,假设每个最多在中出现两次,而每个恰好出现一次。否则,可以通过从删除元素来找到较短的见证人。令是在出现一次的所有边的集合。给定以上假设,可以认为。A 2 | E | + 1 Ë ∈ Ë v ∈ V 瓦特Ë ∈ Ë 瓦特v ∈ V 瓦特ħ ⊆ ë 瓦特| w | = 2 | E | - | H | + | V |
考虑的一个连续串形式的,其中,。我们说是相邻的。注意,如果,则,因为仅发生一次,但它与两个顶点相邻。因此,最多可以在。类似地,在第一个顶点之前或最后一个顶点之后的中,任何边都不会出现。ü ë 1 Ë 2 ... Ë ķ v ü ,v ∈ V ë 我 ∈ é ù ,v È 我 ∈ ħ Ê 我 = { ü ,v } È 我 ģ ë 我 ħ ħ 瓦特
现在,顶点,因此。从那里开始,。由于我们假设,我们得到相等。从那里我们得到。根据鸽洞原理,在相邻的每对顶点之间有一个从到的边。表示从所有元素在它们出现的顺序。因此,是的哈密顿路径。| H | ≤ | V | − 1 | w | ≥ 2 | E | + 1 | w | ≤ 2 | E | + 1 | H | = | V | − 1 H w h 1 h 2 … h n − 1 H w v 1 h 1 v 2 h ģ ◻
由于确定哈密顿路径存在性的问题是NP-hard,而上述归约是多项式,因此原来的问题也是NP-hard。