多切割重排排序问题研究
1. 多切割重排排序问题概述
多切割重排排序(Sorting by Multi - cut Rearrangements,SMCR)是一个重要的排序问题。当 $\ell = 1$ 时,SMCR 问题可以通过 $O(n^2)$ 次调用参数为 $k - 1$ 的多切割子问题(MCSP)来解决,每次调用使用不同的对 $(a, b)$。需要注意的是,仅检查最长公共前缀和后缀是不够的,例如,$S = a\ acb\ adb\ b$ 可以通过一次 3 - 切割重排转换为 $T = a\ adb\ acb\ b$,但只有 $S_{1,1}$ 和 $T_{1,1}$ 有一个分为 2 块的公共划分。
2. 排列中的多切割重排排序问题
2.1 问题结果总结
在排列的情况下,SMCR 问题的相关算法结果总结如下表:
| $\ell$ | $k$ | 3 | 4 |
| — | — | — | — |
| 1 | P | $O(1)$ |? |
| 参数 | FPT | FPT | W[1] - hard |
| 输入部分 | NP - hard | NP - hard |
2.2 定理 5:SMCR 在排列中关于参数 $\ell + k$ 是固定参数可解的(FPT)
- 证明思路 :使用如下约简规则:如果 $S$ 和 $T$ 中有公共邻接对 $(a, b)$,则从 $S$ 和 $T$ 中移除 $b$。
-
详细证明
:
- 首先,对该规则进行穷举应用能得到期望结果。任何经过该规则穷举约简的肯定实例(Yes - instance)最多有 $O(k\ell)$ 个字母。因为必须在 $S$ 中的每个邻接对之间进行切割,通过 $\ell$ 次 $k$ - 切割重排最多可产生 $2k\ell$ 次切割。所以,如果 $S$ 中的邻接对超过 $2k\ell$ 个,那么 $(S, T)$ 是一个否定实例(No - instance)。
-
然后,证明规则的正确性。考虑应用该规则的排列 $S$ 和 $T$ 的实例,设 $S’$ 和 $T’$ 是结果实例。
- 若 $(S, T)$ 是肯定实例,存在一个长度为 $\ell + 1$ 的排列序列 $(S = S_1, S_2, \cdots, S_{\ell + 1} = T)$,使得 $S_{i + 1}$ 可以通过一次 $k$ - 切割重排从 $S_i$ 得到。从 $S_i$ 中移除 $b$ 得到序列 $(S’ 1, S’_2, \cdots, S’ {\ell + 1} = T)$,且 $S’_{i + 1}$ 可以通过一次 $k$ - 切割重排从 $S’_i$ 得到。
- 若 $(S’, T’)$ 是肯定实例,存在一个长度为 $\ell + 1$ 的排列序列 $(S’ = S’ 1, S’_2, \cdots, S’ {\ell + 1} = T’)$,使得 $S’ {i + 1}$ 可以通过一次 $k$ - 切割重排从 $S’_i$ 得到。在每个排列 $S’_i$ 中用 $ab$ 替换 $a$ 得到序列 $(S = S_1, S_2, \cdots, S {\ell + 1} = T)$,且 $S’_{i + 1}$ 可以通过一次 $k$ - 切割重排从 $S’_i$ 得到。
2.3 定理 6:SMCR 在排列中关于参数 $\ell$ 是 W[1] - 难的
- 证明思路 :通过从一元装箱问题(Unary Bin Packing)进行归约来证明。
-
详细证明
:
- 一元装箱问题的实例是一个用一元编码的整数多重集 $A = {a_1, a_2, \cdots, a_n}$ 以及两个整数 $b$ 和 $C$,目标是判断是否可以将 $A$ 划分为 $b$ 个多重集 $A_1, \cdots, A_b$,使得对于每个 $1 \leq i \leq b$,$\sum_{a_j \in A_i} a_j \leq C$。该问题已被证明关于多重集的数量 $b$ 是 W[1] - 难的,即使 $\sum_{i = 1}^{n} a_i = bC$。
-
取一个一元装箱问题的实例 $I$ 使得 $\sum_{i = 1}^{n} a_i = bC$,在多项式时间内构造 SMCR 的实例 $I^*$。定义 $S$ 为 $[bC + 1]$ 的如下排列:
$S := 1\ X_1\ (a_1 + 1)\ X_2\ (a_1 + a_2 + 1)\ \cdots\ (\sum_{i = 1}^{n - 1} a_i + 1)\ X_n\ (\sum_{i = 1}^{n} a_i + 1)$,其中每个 $X_i$ 是长度为 $(a_i - 1)$ 的递减序列,$X_i[k] := (\sum_{j = 1}^{i} a_j) - (k - 1)$,$1 \leq k \leq a_i - 1$。设 $T$ 是同一字母表 $[bC + 1]$ 上的恒等排列。 - 在 $S$ 中位置 $i$ 的元素如果 $S_i = i$ 则称为锚点(anchor)。每个 $X_i$ 恰好有 $a_i$ 个断点,$S$ 中恰好有 $\ell k$ 个断点。因为一个 $k$ - 切割重排最多移除 $k$ 个断点,所以至少需要 $\ell$ 次这样的重排来对 $S$ 进行排序。
-
最后证明一元装箱问题的实例 $I$ 是肯定实例当且仅当 SMCR 的实例 $I^*$ 是肯定实例:
- 若 $I$ 是肯定实例,存在 $A$ 的划分 $A_1, \cdots, A_b$。为了对 $S$ 进行排序,应用的 $k$ - 切割重排是反转 $S_i$。对于任何 $1 \leq i \leq b$,$\sum_{a_j \in A_i} a_j = C$,可以定义一个 $k$ - 切割重排来反转对应于 $A_i$ 中元素的 $X_{j_1}, X_{j_2}, \cdots, X_{j_p}$。由于有 $b$ 个这样的多重集且 $b = \ell$,$\ell$ 次这样的 $k$ - 切割重排足以对 $S$ 进行排序。
- 若 $I^*$ 是肯定实例,因为 $b(S, T) = \ell k$,使用 $\ell$ 次 $k$ - 切割重排对 $S$ 进行排序意味着每次重排移除恰好 $k$ 个断点。这只有在每个 $X_i$ 一次性反转(即通过一次 $k$ - 切割重排)且使用恰好 $a_i$ 次切割时才可行。通过跟踪 $S$ 排序过程中的移动,能找到对应 $a_i$ 的多重集,从而为一元装箱问题提供解决方案。
2.4 定理 7:对于任何 $k \geq 5$,SMCR 在排列中是 NP - 难的
- 证明思路 :通过从 3 - 循环排列的转置排序问题进行归约来证明。
-
详细证明
:
- 断点和循环图的定义 :对于长度为 $n$ 的排列 $S$,假设其字母表为 ${1, \cdots, n}$,并记 $S_0 = 0$,$S_{n + 1} = n + 1$。排列 $r$ 将 $S$ 转换为 $S’$,记 $r(S) = S’$,$r(S, T) = (S’, T)$。字符串 $S$ 和 $T$ 的循环图 $C(S, T)$ 是一个有 $n + 1$ 个顶点 ${0, \cdots, n}$ 的图,若 $T_{j + 1} = S_{i + 1}$,则有弧 $T_j \to S_i$。每个顶点的入度和出度都为 1,所以该图是不相交循环的并集。自环称为平凡循环(trivial cycles)或邻接对(adjacencies),其他弧是断点(breakpoints)。一个 $k$ - 循环是长度为 $k$ 的循环。
-
相关命题
:
- 命题 1 :一个 $k$ - 切割重排最多解决 $k$ 个断点,所以 $S$ 转换为 $T$ 至少需要 $\frac{d_b(S, T)}{k}$ 次 $k$ - 切割重排,且当且仅当 $(S, T)$ 可以通过有效的 $k$ - 切割重排序列转换时达到该下界。
- 命题 2 :如果 $r$ 解决了一个断点,它会切割循环图中的下一个断点。
- 命题 3 :如果 $r$ 是有效的,它解决一个循环当且仅当它解决该循环中的任何一个断点。并且它解决总大小为 $k$ 的循环并集中的所有断点。
- 命题 4 :如果 $C_1$ 与 $C_2$ 相关联,那么任何解决 $C_1$ 的有效重排必须也解决 $C_2$。
-
单循环扩展
:
-
设 $(S, T)$ 是一对排列,$x$ 是 $C(S, T)$ 中的一个顶点,满足 $x$ 要么是邻接对,要么是长度 $k_x \geq 3$ 的循环中无关联的断点,且 $C(S, T)$ 中的所有 2 - 循环都相关联(称 $x$ 是安全的)。$p$ - 扩展 $\varphi_p^x(S, T)$ 定义如下:
-
当 $p = 2$ 时:
- 若 $x$ 是邻接对,$S’ = (S_1, \cdots, S_i = x, n + 2, S_{i + 1}, \cdots, S_n, n + 1)$;
- 若 $x$ 是断点,$S’ = (S_1, \cdots, S_n, n + 1, n + 2)$;
- $T’ = (T_1, \cdots, T_j = x, n + 2, T_{j + 1} = S_{i + 1}, \cdots, T_n, n + 1)$。
-
当 $p = 3$ 时:
- 若 $x$ 是邻接对,$S’ = (S_1, \cdots, S_i = x, n + 3, n + 2, S_{i + 1}, \cdots, S_n, n + 1)$;
- 若 $x$ 是断点,$S’ = (S_1, \cdots, S_n, n + 1, n + 2, n + 3)$;
- $T’ = (T_1, \cdots, T_j = x, n + 3, n + 2, T_{j + 1} = S_{i + 1}, \cdots, T_n, n + 1)$。
-
当 $p = 2$ 时:
-
引理 1
:$x$ 上的 $p$ - 扩展对循环图有如下影响:
- 若 $x$ 是邻接对,添加 $p$ 个平凡循环。
- 若 $x$ 是断点且 $p = 2$,将 $n + 1$ 和 $n + 2$ 添加到包含 $x$ 的循环中。
- 若 $x$ 是断点且 $p = 3$,将 $n + 2$ 添加到包含 $x$ 的循环中,并添加一个与包含 $x$ 的循环相关联的 2 - 循环 $(n + 1, n + 3)$。其他弧和相关联的循环不变。
-
设 $(S, T)$ 是一对排列,$x$ 是 $C(S, T)$ 中的一个顶点,满足 $x$ 要么是邻接对,要么是长度 $k_x \geq 3$ 的循环中无关联的断点,且 $C(S, T)$ 中的所有 2 - 循环都相关联(称 $x$ 是安全的)。$p$ - 扩展 $\varphi_p^x(S, T)$ 定义如下:
-
高效重排的适应性
:
-
设 $r$ 是 $(S, T)$ 的一个 $k$ - 切割重排,定义 $r’ = \psi_p^x(r)$ 为 $(S’, T’) = \varphi_p^x(S, T)$ 的 $k’$ - 切割重排:
- 若 $r$ 不切割 $x$,则 $k’ = k$,$r’$ 切割与 $r$ 相同的元素,并以相同的顺序重新排列块。
- 若 $r$ 切割 $x$,则 $k’ = k + p$,$r’$ 切割与 $r$ 相同的元素以及 $n + 1$,$n + 2$ 和 $n + 3$(当 $p = 3$ 时),并以与 $r$ 相同的方式重新排列块,将元素 $n + 3$(当 $p = 3$ 时)和 $n + 2$ 插入到 $x$ 之后。
- 引理 2 :如果 $r$ 是 $(S, T)$ 的一个有效 $k$ - 切割重排,那么 $r’ = \psi_x(r)$ 是 $(S’, T’) = \varphi_p^x(S, T)$ 的一个有效 $k’$ - 重排,且 $r’(S’, T’) = \varphi_p^x(r(S, T))$。
- 引理 3 :如果 $r’$ 是 $(S’, T’) = \varphi_p^x(S, T)$ 的一个有效 $k’$ - 重排,$k’ \in {k_x, k_x + p}$,那么存在 $(S, T)$ 的一个有效 $k$ - 切割重排 $r$ 使得 $r’ = \psi_x(r)$,其中 $k = k’ - p = k_x$ 若 $r’$ 切割 $x$,$k = k’$ 否则。并且 $r’(S’, T’) = \varphi_p^x(r(S, T))$。
-
设 $r$ 是 $(S, T)$ 的一个 $k$ - 切割重排,定义 $r’ = \psi_p^x(r)$ 为 $(S’, T’) = \varphi_p^x(S, T)$ 的 $k’$ - 切割重排:
2.5 循环扩展流程
graph TD;
A[取 k - 循环排列 (S, T)] --> B[选择安全顶点 x];
B --> C{确定 p 值};
C -- p = 2 --> D[进行 2 - 扩展 φ_2^x(S, T)];
C -- p = 3 --> E[进行 3 - 扩展 φ_3^x(S, T)];
D --> F[分析循环图变化];
E --> F;
F --> G[构建重排 r' = ψ_p^x(r)];
G --> H[判断 r' 有效性];
H -- 是 --> I[继续扩展其他循环];
H -- 否 --> J[调整参数重新扩展];
I --> K[完成所有循环扩展];
通过以上步骤和证明,我们对排列中的多切割重排排序问题有了更深入的理解,明确了其复杂度和相关性质。
3. 所有循环的扩展
3.1 基本定义
我们使用整数的自然顺序作为节点的任意全序,循环的代表是其最小节点。假设 $(S, T)$ 是 $k$ - 循环的,$(S, T)$ 的一个样本 $X$ 是一个列表,包含每个 $k$ - 循环的代表以及任意数量的邻接对。$(S, T)$ 关于样本 $X = (x_1, \cdots, x_{\ell})$ 的 $p$ - 扩展定义为 $\varPhi_p^X(S, T) = \varphi_p^{x_{\ell}}(\cdots \varphi_p^{x_2}(\varphi_p^{x_1}(S, T)) \cdots)$,重排 $r$ 的 $p$ - 扩展定义为 $\varPsi_p^X(r) = \psi_p^{x_{\ell}}(\cdots \psi_p^{x_2}(\psi_p^{x_1}(r)) \cdots)$。对于样本中的 $x_i$,记 $n_{x_i} = |S| + p \cdot (i - 1)$,即 $n_{x_i}$ 是对其应用 $\varphi_p^{x_i}$ 时字符串的大小。
3.2 相关命题和引理
3.2.1 命题 5
如果 $(S, T)$ 是 $k$ - 循环的,那么 $\varPhi_2^X(S, T)$ 是 $(k + 2)$ - 循环的。
-
证明
:根据引理 1,2 - 扩展会给每个 $k$ - 循环添加 2 个元素,所以 $\varPhi_2^X(S, T)$ 是 $(k + 2)$ - 循环的。
3.2.2 引理 4
如果 $r$ 是 $(S, T)$ 的一个有效 $k$ - 切割重排,那么 $r’ = \varPsi_p^X(r)$ 是 $(S’, T’) = \varPhi_p^X(S, T)$ 的一个有效 $(k + p)$ - 重排。而且,在这种情况下,$r(S, T)$ 是 $k$ - 循环的且样本为 $X$,并且 $\varPhi_p^X(r(S, T)) = r’(\varPhi_p^X(S, T))$。反之,$(S’, T’) = \varPhi_p^X(S, T)$ 的任何有效 $(k + p)$ - 重排 $r’$ 都可以写成 $r’ = \varPsi_p^X(r)$,其中 $r$ 是 $(S, T)$ 的一个有效 $k$ - 切割重排。
-
证明
:
-
正向证明
:给定一个 $k$ - 切割重排 $r$,设 $(S_0, T_0) = (S, T)$,$(S_j, T_j) = \varphi_p^{x_j}(S_{j - 1}, T_{j - 1})$ 对于所有 $0 < j \leq \ell$,$r_0 = r$,$(r_j, r_j) = \psi_p^{x_j}(r_{j - 1})$ 对于所有 $0 < j \leq \ell$。假设 $r$ 是 $(S, T)$ 的一个有效 $k$ - 切割重排,由于 $(S, T)$ 是 $k$ - 循环的,根据命题 3,$r$ 必须解决 $C(S, T)$ 的一个单一循环。设 $x$ 是这个循环的代表,$x$ 是 $X$ 中被 $r$ 切割的唯一断点,且 $x = x_i$ 对于某个 $i$。此外,$C(r(S, T))$ 也是 $k$ - 循环的且样本为 $X$(比 $C(S, T)$ 少一个循环)。由引理 2 可知,对于每个 $j$,$r_j$ 是 $(S_j, T_j)$ 的一个有效 $k_j$ - 切割重排,其中如果 $r_{j - 1}$ 不切割 $x$(即 $j \neq i$),$k_j = k_{j - 1}$,否则 $k_j = k_{j - 1} + p$。所以总体上 $r’ = r_{\ell}$ 是 $\varPhi_p^X(S, T)$ 的一个有效 $(k + p)$ - 切割重排。关系 $\varPhi_p^X(r(S, T)) = r’(\varPhi_p^X(S, T))$ 也由引理 2 得出。
-
反向证明
:使用引理 3 类似地证明,特别注意重排的大小。从 $r’$(有 $(k + p)$ 次切割)开始,切割次数保持不变,除了在 $\psi_p^{x_j}$ 处它下降到 $k$ 然后再次保持不变(所以引理 3 中的条件 $k’ \in {k, k + p}$ 确实满足)。
3.2.3 引理 5
如果 $(S, T)$ 是 $k$ - 循环的且样本为 $X$,那么 $(S, T)$ 可以通过有效的 $k$ - 切割重排排序当且仅当 $\varPhi_p^X(S, T)$ 可以通过有效的 $k$ - 切割重排排序。
-
证明思路
:结合前面的引理,通过正向和反向推导来证明。正向证明从 $(S, T)$ 的有效重排出发,构造出 $\varPhi_p^X(S, T)$ 的有效重排;反向证明从 $\varPhi_p^X(S, T)$ 的有效重排出发,构造出 $(S, T)$ 的有效重排。
3.3 扩展流程总结
| 步骤 | 操作 |
|---|---|
| 1 | 确定 $(S, T)$ 是 $k$ - 循环的,并选取样本 $X$。 |
| 2 | 对样本 $X$ 中的每个 $x_i$ 依次进行 $p$ - 扩展,得到 $\varPhi_p^X(S, T)$。 |
| 3 | 对于 $(S, T)$ 的有效 $k$ - 切割重排 $r$,通过 $\varPsi_p^X(r)$ 得到 $\varPhi_p^X(S, T)$ 的有效 $(k + p)$ - 重排 $r’$;反之,对于 $\varPhi_p^X(S, T)$ 的有效 $(k + p)$ - 重排 $r’$,可以找到 $(S, T)$ 的有效 $k$ - 切割重排 $r$ 使得 $r’ = \varPsi_p^X(r)$。 |
| 4 | 判断 $(S, T)$ 是否可以通过有效的 $k$ - 切割重排排序等价于判断 $\varPhi_p^X(S, T)$ 是否可以通过有效的 $k$ - 切割重排排序。 |
4. 总结与展望
4.1 研究成果总结
通过上述研究,我们对排列中的多切割重排排序问题有了全面的认识。明确了不同参数下问题的复杂度,如 SMCR 在排列中关于参数 $\ell + k$ 是固定参数可解的(FPT),关于参数 $\ell$ 是 W[1] - 难的,对于任何 $k \geq 5$ 是 NP - 难的。同时,我们还研究了循环扩展的方法,包括单循环扩展和所有循环的扩展,以及高效重排在扩展过程中的适应性。这些成果为进一步研究排序问题提供了重要的理论基础。
4.2 未来研究方向
- 算法优化 :尽管我们已经证明了某些情况下问题的复杂度,但可以进一步探索更高效的算法,特别是对于 NP - 难的情况,寻找近似算法或启发式算法来提高求解效率。
- 参数扩展 :可以考虑引入更多的参数,研究这些参数对问题复杂度的影响,以及如何利用这些参数来设计更有效的算法。
- 实际应用 :将多切割重排排序问题应用到实际场景中,如生物信息学中的基因组重排、数据处理中的序列排序等,探索其在实际问题中的应用价值。
graph LR;
A[确定 k - 循环排列 (S, T) 和样本 X] --> B[进行 p - 扩展得到 Φ_p^X(S, T)];
B --> C[验证有效重排的转换关系];
C --> D{判断可排序性};
D -- 是 --> E[应用于实际场景];
D -- 否 --> F[优化算法或调整参数];
F --> B;
E --> G[总结成果并探索新方向];
通过不断深入研究和探索,我们有望在多切割重排排序问题上取得更多的突破,为相关领域的发展提供有力的支持。
超级会员免费看
1738

被折叠的 条评论
为什么被折叠?



