Algorithm Burrows-Wheeler变换(BWT)-存储数据
使用BWT后,编码数据中需要哪组数据?我们需要对后缀数组进行编码(或导出)吗 输入:Algorithm Burrows-Wheeler变换(BWT)-存储数据,algorithm,burrows-wheeler-transform,Algorithm,Burrows Wheeler Transform,使用BWT后,编码数据中需要哪组数据?我们需要对后缀数组进行编码(或导出)吗 输入: stackoverflow BWT输出: wtavrcfkle$soo 后缀数组: 13、2、3、7、9、4、10、5、11、8、0、1、6、12转换所需的全部是输出字符串(wtavrcfkle$soo在您的示例中)。转换所需的全部是输出字符串(wtavrcfkle$soo)您只需要传输BWT输出 这种转换的惊人之处在于,原始字符串可以仅从经过置换的输出字符串重建 包含执行此反转的示例代码 请注意,正常的操作模
stackoverflow
BWT输出:
wtavrcfkle$soo
后缀数组:
13、2、3、7、9、4、10、5、11、8、0、1、6、12
转换所需的全部是输出字符串(wtavrcfkle$soo
在您的示例中)。转换所需的全部是输出字符串(wtavrcfkle$soo
)您只需要传输BWT输出
这种转换的惊人之处在于,原始字符串可以仅从经过置换的输出字符串重建
包含执行此反转的示例代码
请注意,正常的操作模式是在传输之前使用游程编码对BWT输出进行编码(或者尚未实现任何压缩)
转换的好处在于,它倾向于产生类似字符的长运行(如果源材料中有结构),因此运行长度编码工作良好。您只需要传输BWT输出 这种转换的惊人之处在于,原始字符串可以仅从经过置换的输出字符串重建 包含执行此反转的示例代码 请注意,正常的操作模式是在传输之前使用游程编码对BWT输出进行编码(或者尚未实现任何压缩)
转换的好处在于,它往往会产生类似字符的长串(如果源材料中存在结构),因此运行长度编码工作良好。要反转BWT,您只需要原始最后一个字符的索引,而不需要整个后缀数组。如果没有此索引,我相信选择任意索引将导致原始字符串的旋转版本
请注意,如果包含行尾代码(如示例中所示),则原始的最后一个字符是明显的,因此不需要单独提供索引…要反转BWT,只需要原始的最后一个字符的索引,而不需要整个后缀数组。如果没有此索引,我相信选择任意索引将导致原始字符串的旋转版本
请注意,如果您包括一个行尾代码(如示例中所示),则原始的最后一个字符是明显的,因此不需要单独提供索引…后缀数组仅用于计算bwt转换,转换完成后可以删除它
BWT("stackoverflow")="wtavrcfkle$soo"
UNBWT("wtavrcfkle$soo")="stackoverflow"
如果愿意,您还可以从转换后的输出中恢复后缀数组:)后缀数组仅用于计算bwt转换,转换完成后可以删除它
BWT("stackoverflow")="wtavrcfkle$soo"
UNBWT("wtavrcfkle$soo")="stackoverflow"
如果愿意,还可以从转换后的输出恢复后缀数组:)要清楚,后缀数组和BWT输出是相同的。如果查看示例中的后缀数组,它包含从BWT输入(从1开始)获取的BWT输出中的字母索引:13->w,2->t,3->a,等等。。。
使用后缀数组只是一种在线性时间内计算BWT输出的机制。传输后缀数组或BWT输出意味着传输相同的信息。要清楚,后缀数组和BWT输出是相同的。如果查看示例中的后缀数组,它包含从BWT输入(从1开始)获取的BWT输出中的字母索引:13->w,2->t,3->a,等等。。。 使用后缀数组只是一种在线性时间内计算BWT输出的机制。发送后缀数组或BWT输出意味着发送相同的信息