Я работаю над проблемой, которая, по моему мнению, сводится к следующему и надеялась найти структуры данных или алгоритмы, которые могут решить эту проблему с помощью памяти.Проверка надежности потока путем выявления пробелов в последовательности
Скажите, что вы читаете из (бесконечного) пара порядковых номеров. Некоторый производитель испускает числа в этот поток последовательно без повторения, и вы читаете их с другого конца. Однако есть пара проблем.
1.) Есть что-то об этой системе по своей сути ненадежной. Либо поток, либо производитель или что-то промежуточное может отбросить часть данных, чтобы номера не отображались у потребителя, и в целом существует (неизвестная) вероятность p
, что любое заданное число может быть потеряно.
2.) Поток не гарантирует безупречный заказ. Для аргумента предположим, что существует некоторая (известная) константа N
, так что если вы читаете номер x
из потока, вы можете быть уверены, что после этого момента вы никогда не увидите число y < x - N
.
То есть, последовательность чисел может быть только N
значения «не в порядке» в любое время.
В этом случае я бы действительно хотел идентифицировать p
. Или разумная оценка p
- это все, что имеет значение.
Буду признателен за любые ссылки на соответствующие структуры данных или алгоритмы, которые помогли бы решить эту проблему с помощью памяти. Некоторый короткий псевдокод был бы полезен. Благодаря!
EDIT: По соображениям памяти Я имею в виду, что я надеюсь, что смогу решить эту проблему без использования памяти O (N), где N - количество записей, которые я прочитал из потока.
Я нашел этот вопрос, похожий (http://stackoverflow.com/questions/15323362/what-is-the-most-efficient-datastructure-for-an-ordered-sequence-with-gaps-searc) но я не уверен, как использовать проблему вне порядка. – Moodragonx
Вы хотите получить разумную оценку 'p', основываясь только на этом описании? Или вы хотите определить значение 'p' на основе некоторой выборки полученных данных? –
@JimMischel Сэмплирование данных; Я не думаю, что вы могли бы оценить «p» только тем, что я сказал. Это было бы впечатляюще. – Moodragonx