Блог пользователя ilyaraz

Автор ilyaraz, 15 лет назад, По-русски

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

1. Представьте себе, что мы хотим сгенерировать случайный бит следующим странным способом. Возьмем очень-очень большое натуральное n и случайный двудольный граф, в каждой доле которого по n вершин. Посчитаем в нем количество совершенных паросочетаний (наборов из n ребер, которые не имеют общих концов). Четность этого количества и будет нашим битом. Какова вероятность, что этот бит будет равен нулю?

2. Представьте себе, что у нас есть n корзинок, в которые мы случайно бросаем шары. Мы продолжаем процесс, пока в каждой корзинке не будет по крайней мере m шаров. Сколько в среднем шаров мы бросим? Интересует ответ с точностью до константы. Например, хорошо известно, что если m = 1, то в среднем мы бросим шаров.

  • Проголосовать: нравится
  • +42
  • Проголосовать: не нравится

15 лет назад, скрыть # |
Rev. 2  
Проголосовать: нравится +5 Проголосовать: не нравится

1. Четность числа паросоч. в случайном двудольном графе будет равна определителю случайной матрицы над поэтому ответ будет 0 с вероятностью того, что n случайных n-мерных векторов над линейно зависимы. А эта вероятность  < 2n· 1 / 2n. Так что при оч. большом n ответ почти 0.
15 лет назад, скрыть # |
 
Проголосовать: нравится +8 Проголосовать: не нравится
В первой задаче вероятность получилась примерно 0,711211. А есть точная формула для ответа?
15 лет назад, скрыть # |
 
Проголосовать: нравится +10 Проголосовать: не нравится
Очень интересно было бы узнать решение задачи, получаемой из второй заменой "пока в каждой" на "пока хотя бы в одной". Например, для m=2 ответ пропорционален sqrt(n) (парадокс дней рождения).
15 лет назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится
Первую задачу иногда дают в яндексе на собеседовании, в целом она довольно известная.
Во второй задаче (в исходном варианте) у меня получилось \Theta(n\cdot (\log n + m\log m))
15 лет назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится
оценкой вероятности, что вероятность того, что событие еще не произошло <= 1/2
  • 15 лет назад, скрыть # ^ |
     
    Проголосовать: нравится 0 Проголосовать: не нравится
    Я умею доказывать верхнюю оценку, которая меньше твоей нижней. Не знаю уж, у кого ошибка.
    • 15 лет назад, скрыть # ^ |
       
      Проголосовать: нравится 0 Проголосовать: не нравится
      у меня довольно много вычислений, поэтому могу написать только план:

      ответ (обозначим его k) больше n\log n, это из m = 1 легко извлечь
      ответ больше nm\log m, т.к. вероятность того, что в первой ячейке меньше m должна быть меньше 1/2, т.е. C_{k}^{m-1}(n-1)^{k-m+1}/n^k <1/2
      в конечном итоге получим exp(k/n) > С(m)\cdot (k/n)^{m} ч.т.д