Я разрабатываю алгоритм для переупорядочения пакетов в передаче.Каждый пакет имеет связанный порядковый номер в [0, 256).Порядковый номер первого пакета может принимать любое из этих значений, после чего следующий пакет принимает следующее значение, а следующий пакет - значение после этого и т. Д. (Переворачивание после 255).
порядковые номера пакетов в правильном порядке будут выглядеть следующим образом, где «n» - порядковый номер первого пакета:
n, n + 1, n + 2, ...,254, 255, 0, 1, 2, ..., 254, 255, 0, 1, 2, ..., 254, 255, 0, 1, ...
Каждый пакетдается временная метка, когда он прибывает в пункт назначения, и все они прибывают примерно по порядку.(У меня нет точной цифры, но учитывая список пакетов, отсортированных по отметке времени прибытия, можно с уверенностью сказать, что пакет никогда не будет находиться на расстоянии более пяти точек от его позиции в списке, указанном его порядковым номером.)
Я чувствую, что не мог быть первым человеком, который столкнулся с такой проблемой, учитывая распространенность телекоммуникаций и ее историческое значение для развития информатики.Тогда мой вопрос:
Существует ли хорошо известный алгоритм для переупорядочения приблизительно упорядоченной последовательности, такой как описанная выше, с учетом циклически изменяющегося ключа?
Есть ли вариант этого алгоритма, который допускает большие фрагменты отсутствующих элементов? Предположим, что эти фрагменты могут быть любой длины.Я особенно обеспокоен кусками из 256 или более пропущенных элементов.
У меня есть несколько идей для алгоритмов для первого, но не для второго.Прежде чем я потрачу трудозатраты на проверку правильности своих алгоритмов, я хотел убедиться, что кто-то в Bell Labs (или где-либо еще) еще не сделал этого лучше тридцать лет назад.