Учитывая несоответствующий список $ n $ Petes, сколько случайных сравнений необходимо в среднем, чтобы иметь возможность сортировать список?

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

Вопрос

Существует несортированный список $ n $ items $ x_1, \ ldots, x_n $ . До тех пор, пока вы не сможете отсортировать список, вам предоставляется один из $ {n \ Выберите 2} $ Возможные двоичные сравнения равномерно случайно (с заменой).

В среднем, сколько из этих случайных сравнений вам нужно будет сортировать список?

Некоторые следующие вопросы:

  1. Что требуется распределение для количества сравнений?
  2. Что такое ответ, если вы используете $ K $ Сравнение вместо двоичных.
  3. Что такое ответ, если сравнения сделаны без замены (то есть. Вы не получите одно и то же сравнение дважды)?
  4. Учитывая набор сравнений, как можно проверить, может ли список сортировать? Я почти уверен, что ответ - построить dag и топологический сорт, но я просто хочу подтвердить.
  5. Точный ответ - это был бы хороший, но большой $ 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) $ наблюдения.

Разумный способ проверить, является ли список сортируется, это сделать топологическую сортировку, то убедитесь, что вы наблюдали сравнение между каждой парой соседних элементов в топологически отсортированном порядке.

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