54、排列生成与回文子序列深度解析

排列生成与回文子序列深度解析

排列生成的排序问题

在排列生成的研究中,排序是其中一个关键环节。为了能在常数时间内访问某些值,我们需要进行一些预处理操作。所有的 (|W_k|) 和 (\sum_{i = 0}^{k}(|W_i| + n - 1))(其中 (k \in {0..n - 4}))都可以在 (O(n)) 的总时间内计算出来,并且之后能够在 (O(1)) 时间内访问。

枢纽种子代表的排名很容易计算。例如,当 (n = 6) 时,有如下结果:
| 排列 | 排名 |
| ---- | ---- |
| 643215 | 1 |
| 632154 | 3 |
| 621543 | 5 |
| 615432 | 7 |
| 654321 | 9 |

对于给定的排列 (\pi),我们可以在 (O(n)) 时间内完成以下计算:
- 如果 (\pi \in perms(\psi)),计算 (rank(\pi) - rank(\hat{\psi}))。
- 如果 (\pi \in perms(\psi)) 且 (\psi \in Hub_n),计算 (rank(\pi))。

接下来,我们重点关注种子代表类型的排列排序。对于非枢纽种子 (\psi),用 (anchor(\psi)) 表示 (\psi) 的最高非枢纽祖先 (\varphi),并令 (hub(\psi) = parent(anchor(\psi)))。这里的 (anchor(\varphi)) 是与枢纽首次接触的种子,即 (\psi) 的第一个祖先,使得 (perms(\varphi) \cap perms(\bet

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值