将数据的结构特征从数据中剥离出来,单独用另一种数据结构存储起来。这个提取出来的结构特征就是路径。换句话说,路径就是用来描述如何组织数据的信息。剩下的纯数据则紧密地堆码在一起。
通过路径,程序可以将输入的索引转化成数据堆码区中的线性地址,从而提取出想要的数据。
路径与数据的解耦可以增加信息编码效率。通常,数据的组织方式是相似的,大量重复的。例如,在图像中,所有的像素都是由 RGB 三个分量组成,而且所有的 RGB 分量都是由八个 bit 组成的。如果不分离路径和数据,这些规定数据组织方式的数据将会重复很多遍,浪费很多空间。
路径有两种编码方式,并且可以方便地互相转换。最常见的是路径树(path tree)。但是,如果数据样式过于单一,但数据量很大的话,树的编码效率会很低。还是用关于图像编码的例子。假如用树来编码一个像素,那么树根处会分三个支,分别代表 RGB。然后 RGB 各自都分出八个支,代表每个单独的 bit。问题在于,RGB 三个分量的分支(分出八个 bit)都是一样的形状,却需要重复地存储三次。同理,对整个二维图像的编码也会出现相同形状的分支重复存储 n 多次的情况。
上述问题的解决方案是路径束图(path beam graph)。简单地说,就是把后续形状完全相同的分支绑成一个路径束,路径束中绑的分支数量就是该路径束在图中的权重。同时,路径束图还是一个有向图,每个路径束的方向是原来的路径树树根朝向树叶的方向。路径束图只有一个起点,它是路径树中的树根。路径束图也只有一个终点,它代表的是数据的最小编码单位,一般就是 bit。