我在Burrows Wheeler转换中使用什么EOF字符?

问题描述

| 我正在尝试实现块排序。在论文Burrows Wheeler变换中,块排序要求在原始字符串S上附加k个EOF字符,而EOF不在S中出现。 但是由于我将处理二进制文件,因此可能会有任何位组合,因此我无法提前选择一个EOF字符以确保它不会出现在S中。 我该如何解决? 由于该EOF字符用于一步一步地对后缀进行排序,因此我读到可以对后缀树进行排序而无需该EOF字符。我应该改用后缀树吗?     

解决方法

        您可以使用数据容器的长度来创建\“虚拟\” EOF,也可以使用单独的EOF表来跟踪虚拟EOF字符的字符位置。 [更新另一个想法] ... 另一个选择是,选择一个EOF字符,将其称为0x00,将一个转义字符,将其称为0xFF。扫描您的输入,所有0xFF和0x00都以0xFF开头。也就是说,只需逃避它们。回写数据时进行相反操作