【发布时间】:2012-02-24 10:14:38
【问题描述】:
我正在开发一种算法来重新排序传输中的数据包。每个数据包在 [0, 256) 中都有一个关联的序列号。第一个数据包的序列号可以取其中任何一个值,之后下一个数据包取下一个值,下一个数据包取其后的值,依此类推(在 255 之后翻转)。
数据包的序列号,按照正确的顺序,如下所示,其中“n”是第一个数据包的序列号:
n, n+1, n+2, ..., 254, 255, 0, 1, 2, ..., 254, 255, 0, 1, 2, ..., 254, 255, 0 , 1, ...
每个数据包到达其目的地时都会被赋予一个时间戳,并且它们都大致按顺序到达。 (我没有确切的数字,但给定一个按到达时间戳排序的数据包列表,可以肯定地说,一个数据包与其在列表中由其序列号指示的位置相距不超过五个位置。)
鉴于电信的普及及其对计算机科学发展的历史重要性,我觉得我不可能是第一个处理此类问题的人。那么我的问题是:
在给定一个循环变化的密钥的情况下,是否有一种众所周知的算法可以重新排序近似有序的序列(例如上述算法)?
此算法是否有一种变体可以容忍大块的缺失项?让我们假设这些块可以是任意长度。我特别担心丢失 256 件或更多的物品。
我对第一个算法有一些想法,但对第二个没有。然而,在我投入工时来验证我的算法是否正确之前,我想确保贝尔实验室(或其他任何地方)的某个人在 30 年前还没有做得更好。
【问题讨论】:
标签: algorithm sorting language-agnostic telecommunication