我在 Burrows-Wheeler 逆向转换中的逻辑有啥问题?

Posted

技术标签:

【中文标题】我在 Burrows-Wheeler 逆向转换中的逻辑有啥问题?【英文标题】:What is wrong with my logic in Burrows-Wheeler reverse transformation?我在 Burrows-Wheeler 逆向转换中的逻辑有什么问题? 【发布时间】:2016-08-03 19:23:16 【问题描述】:

我正在研究 Burrows-Wheeler 转换,到目前为止,我可以从一些 Text 中得到它。现在是反向过程的时候了,这就是我遇到的麻烦。

这是输入:TTCCTAACG$A。

这是我的想法:

1) 计算输入中As、Cs、Gs、Ts的个数:A: 3, C: 3, G: 1, T: 3

2) 让我们写下 Burrows-Wheeler 变换的第一列和最后一列。最后一列是我们的输入。所以这里是:

      F    L

[0]   $    T
[1]   A    T
[2]   A    C
[3]   A    C
[4]   C    T
[5]   C    A
[6]   C    A
[7]   G    C
[8]   T    G
[9]   T    $
[10]  T    A

这是我的逻辑:

    最初,输出 = '$' L[0] = 'T' => 输出 = 'T$' F 中的第一个 T 的索引为 8 => 我们需要 L[8] => 输出 = 'GT$' F 中的第一个 G 的索引为 7 => 我们需要 L[7] => 输出 = 'CGT$' F 中的第一个 C 的索引为 4 => 我们需要 L[4] => 输出 = 'TCGT$' 这是我们的第二个 T。F 中的第二个 T 的索引为 9,但 L[9] = '$',因此 我们应该停下来。

显然,事情还没有结束,这里出了点问题。你能解释一下吗?

【问题讨论】:

【参考方案1】:

我对这种方法的理解过于简单。在第 4 步中,由于 C 是第三个 C,我们需要 F[6]。

【讨论】:

【参考方案2】:

最后一列看起来不对 - 它应该是符号前面的第一列。 您也不要使用 BWT 的特殊符号。这样一来,之前的规则就被打破了,你会扰乱你的 lf 映射。

D.

【讨论】:

以上是关于我在 Burrows-Wheeler 逆向转换中的逻辑有啥问题?的主要内容,如果未能解决你的问题,请参考以下文章

Burrows-Wheeler 压缩

Burrows-Wheeler 变换 (BWT) - 存储数据

哪种算法最适合 Burrows-Wheeler 变换?

使用 StarUML 逆向工程 C# 代码

逆向工程方程将密文转换为明文

Hibernate 逆向工程未生成正确的域代码 STS