Учитывая несоответствующий список $ n $ Petes, сколько случайных сравнений необходимо в среднем, чтобы иметь возможность сортировать список?
-
28-09-2020 - |
Вопрос
Существует несортированный список $ n $ items $ x_1, \ ldots, x_n $ . До тех пор, пока вы не сможете отсортировать список, вам предоставляется один из $ {n \ Выберите 2} $ Возможные двоичные сравнения равномерно случайно (с заменой).
В среднем, сколько из этих случайных сравнений вам нужно будет сортировать список?
Некоторые следующие вопросы:
- Что требуется распределение для количества сравнений?
- Что такое ответ, если вы используете $ K $ Сравнение вместо двоичных.
- Что такое ответ, если сравнения сделаны без замены (то есть. Вы не получите одно и то же сравнение дважды)?
- Учитывая набор сравнений, как можно проверить, может ли список сортировать? Я почти уверен, что ответ - построить dag и топологический сорт, но я просто хочу подтвердить.
Точный ответ - это был бы хороший, но большой $ o $ Ответ тоже в порядке, я полагаю.
Решение
Асимпотически, вам понадобится $ \ theta (n ^ 2 \ log n) $ Сравнение.
Предположим, $ x _ {(1)}, \ dots, x _ {(n)} $ обозначает элементы в отсортированном порядке. Тогда, если вы не видите сравнение между $ x _ {(1)} $ и $ x _ {((2)} $ , у вас не будет никакого способа сказать, в каком порядке они должны появиться. То же самое относится и к каждой пару соседнего элемента. Таким образом, есть $ N-1 $ Купоны (одна соседняя пара элементов), и вам нужно собрать их все. На основе Проблема коллектора купона , мы знаем, что вам понадобится $ \ theta (n \ log n) $ случайно выбранные купоны, прежде чем мы собрали их все. Каждое наблюдение имеет $ 2 / n $ вероятность того, чтобы быть купоном, поэтому в целом нам понадобится $ \ theta (n ^ 2 \ log n) $ Наблюдения до того, как мы собрали все купоны. Если мы собираем все купоны, мы можем отсортировать $ x $ 's; Если мы пропустим любой купон, мы не можем отсортировать их.
Последующие вопросы сводится к фактам о проблемах купонного коллектора, и вы можете использовать хвостовые границы на Wikipedia, чтобы связать информацию о распространении.
Если сравнения выбираются без замены, вам нужно $ \ theta (n ^ 2) $ наблюдения.
Разумный способ проверить, является ли список сортируется, это сделать топологическую сортировку, то убедитесь, что вы наблюдали сравнение между каждой парой соседних элементов в топологически отсортированном порядке.