Если я прогул по списку и удалите каждый элемент вне заказа, который я сталкиваюсь, в среднем, сколько элементов останется?

cs.stackexchange https://cs.stackexchange.com/questions/119835

Вопрос

У меня есть равномерно случайно перепутный список длины $ n $ . Я прохожу через элемент элемента списка, и удалите элемент, если он вне заказа (по сравнению с предыдущими элементами в заказах списка). То, что я остался, это более короткий список, который гарантированно будет в порядке.

Пример: снятые элементы этого списка будут удалены во время прогулки.

[1, 4, 2 *, 3 *, 5, 7, 6 *] -> [1, 4, 5, 7]

Мой вопрос: в среднем, что будет длина оставшегося списка? И есть ли какая-то простая / очевидная форма распространения этого?

И как в качестве одного наблюдения: если бы мы использовали это для сортировки алгоритма (называемой SORD), что бы время выполнить? Быть ясным, алгоритм будет что-то вроде этого: $$ \ textit {dropsort} (\ text {list})=textit {merge} (\ text {Оставшийся список}, \ textit {dropsort} (\ text {leteled list} )) $$

Этот вопрос был вдохновлен этим r / programmatherhumor post .

Это было полезно?

Решение

Вы можете вычислить среднее, используя линейность ожидания.

Пусть случайная переменная $ x $ обозначает количество сохраненных элементов. Пусть $ x_i $ Быть индикатором R.V. Это 1, если $ i $ Th сохраняется, или 0 в противном случае. Затем $ x= x_1 + \ dots + x_n $ , поэтому

$$ \ mathbb {e} [x]=mathbb {e} [x_1] + \ dots + \ mathbb {e} [x_n]=pr [x_1= 1] + \ dots + \ pr [x_n= 1]. $$

Теперь $ i $ th Chem сохраняется, если и только если оно самое большое число среди первого $ i $ Элементы в списке. Следовательно, $ \ pr [x_i= 1]=frac {1} {i} $ , поэтому

$$ \ mathbb {e} [x]=frac {1} {1} + \ frac {1} {2} + \ dots + \ frac {1} {n} \ Приблизительно \ log (n) + \ gamma $$

Другими словами, средняя длина оставшегося списка составляет $ O (\ log n) $ .

Я не знаю, что такое распределение.

как эвристическое, ожидаемое время работы падения сорта будет удовлетворять рецидиву что-то вроде $ t (n) \ Прибл. t (n- \ log (n)) + o ( n) $ , который соответствует $ O \ Left (\ frac {n ^ 2} {\ log n} \ vant) $ time. .

Лицензировано под: CC-BY-SA с атрибуция
Не связан с cs.stackexchange
scroll top