1 Отредактировано mincer (2010-03-19 10:26:46)

Тема: Матожидание. GCJ Round 1C: Collecting Cards

Всем привет! Вот никак не могу разобраться с задачей: http://code.google.com/codejam/contest/ … p2&a=2

В разборе написана вот такая формуала:  http://code.google.com/codejam/contest/ … p;c=188266 Просто указана и все. Вопрос такой: какая связь этой формулы с определением матожидания? Почему, вычисляя по ней, мы получаем правильный ответ?

Еще одна задача, на этот раз с NEERC 2006: http://acmicpc-live-archive.uva.es/nuev … php?p=3710 . Решения я смотрел, одно из них содержит очень похожу рекуррентную формулу.

Насколько я понимаю, это какойто очень распространенный прием. Кто-нибудь может его объяснить?

2

Re: Матожидание. GCJ Round 1C: Collecting Cards

Ссылки криво добавились, не открываются

3

Re: Матожидание. GCJ Round 1C: Collecting Cards

Ссылки пофиксил.

4

Re: Матожидание. GCJ Round 1C: Collecting Cards

Неужели никто не может ничего подсказать? Я уже запарился с этим разбираться... sad Может я не очень ясно выразился?

5 Отредактировано cmd (2010-03-24 12:57:36)

Re: Матожидание. GCJ Round 1C: Collecting Cards

2mincer,
"В разборе написана вот такая формуала:":
Допустим надо посчитать матожидание E[x], количество шагов, что мы куда-то дойдем из вершины X, для простоты положим, что у нас ациклический граф. Пусть из нее исходит набор дуг, скажем в Y1, Y2, Y3 и вероятности переходов p1, p2, p3. И обозначим за P[X, steps] - вероятность дойти куда надо из X за steps шагов. Ну и для простоты положим, что пути максимум длины 2.
Тогда будет что-то такое:
E[x] = p1 * P[Y1, 0] * (1 + 0) + p1 * P[Y1, 1] * (1 + 1) + p1 * P[Y1, 2] * (1 + 2) +
p2 * P[Y2, 0] * (1 + 0) + p2 * P[Y2, 1] * (1 + 1) + p2 * P[Y2, 2] * (1 + 2) +
p3 * P[Y3, 0] * (1 + 0) + p3 * P[Y3, 1] * (1 + 1) + p3 * P[Y3, 2] * (1 + 2)
Теперь несколько упростим выражение (разделим его на части, где наш текущий щаг (1 + ), и ту часть которую мы прошли после того, как перешли по ребру)
E[x] = p1 * P[Y1, 0] * 1 + p1 * P[Y1, 1] * 1 + p1 * P[Y1, 2] * 1 +
p2 * P[Y2, 0] * 1 + p2 * P[Y2, 1] * 1 + p2 * P[Y2, 2] * 1 +
p3 * P[Y3, 0] * 1 + p3 * P[Y3, 1] * 1 + p3 * P[Y3, 2] * 1 +

p1 * P[Y1, 0] * 0 + p1 * P[Y1, 1] * 1 + p1 * P[Y1, 2] * 2 +
p2 * P[Y2, 0] * 0 + p2 * P[Y2, 1] * 1 + p2 * P[Y2, 2] * 2 +
p3 * P[Y3, 0] * 0 + p3 * P[Y3, 1] * 1 + p3 * P[Y3, 2] * 2;

Теперь во второй части, вынесем p1, p2, p3:

E[x] = p1 * P[Y1, 0] * 1 + p1 * P[Y1, 1] * 1 + p1 * P[Y1, 2] * 1 +
p2 * P[Y2, 0] * 1 + p2 * P[Y2, 1] * 1 + p2 * P[Y2, 2] * 1 +
p3 * P[Y3, 0] * 1 + p3 * P[Y3, 1] * 1 + p3 * P[Y3, 2] * 1 +

p1 * (P[Y1, 0] * 0 + P[Y1, 1] * 1 + P[Y1, 2] * 2) +
p2 * (P[Y2, 0] * 0 + P[Y2, 1] * 1 + P[Y2, 2] * 2) +
p3 * (P[Y3, 0] * 0 + P[Y3, 1] * 1 + P[Y3, 2] * 2);


P[Yi, 0] * 0 + P[Yi, 1] * 1 + P[Yi, 2] * 2 -- это мат-ожидание дойти куда надо из Yi. Перепишем выражение с учетом этого:


E[x] = p1 * P[Y1, 0] * 1 + p1 * P[Y1, 1] * 1 + p1 * P[Y1, 2] * 1 +
p2 * P[Y2, 0] * 1 + p2 * P[Y2, 1] * 1 + p2 * P[Y2, 2] * 1 +
p3 * P[Y3, 0] * 1 + p3 * P[Y3, 1] * 1 + p3 * P[Y3, 2] * 1 +

p1 * E[Y1] + p2 * E[Y2] + p3 * E[Y3];

Теперь посмотрим на первую часть -- там сумма вероятностей по _всем_ возможным путям из X до "куда надо дойти", а сумма вероятностей по всем путям = 1
Получаем:
E[x] = 1 + p1 * E[Y1] + p2 * E[Y2] + p3 * E[Y3];




"Еще одна задача, на этот раз с NEERC 2006": Там dp'шкой можно решить, состояния это набор связных компонент, если одна компонента, то E = 0, если несколько, то если добавлять ребро между компонентами, то понятно, как, просто по той формуле, что в картинке, а если ребро в самой компоненте, то получается петля, ее нужно разрешить: скажем у нас С ребер которые мы можем провести и они лежат в какой-то компоненте, а E' = sum(E[состояние после соединения вершин ребром, которые в разных компонентах]), тогда матожидание для всех ребер будет E = 1 + E' + E * p * C => E = (E' + 1) / (1 - C * p)
Вот как-то так.

6 Отредактировано mincer (2010-03-31 13:06:21)

Re: Матожидание. GCJ Round 1C: Collecting Cards

cmd, огроменное тебе спасибо! Все прочитал, разобрался. Да, все так и получается. Ты первый человек, который смог по существу мне ответить!

З.Ы. Собсно и в задаче с GCJ нужно точно так же разрешить петлю.
З.Ы.Ы. Еще раз спасибо!