Ну, я трохи розважився цим. Перше, про що я згадав, коли вперше прочитав проблему, це теорія груп (зокрема, симетрична група S n ). Цикл for просто будує перестановку σ в S n , складаючи транспозиції (тобто свопи) на кожній ітерації. Моя математика не така вражаюча, і я трохи іржавий, тож якщо мої позначення не відповідають.
Огляд
Нехай A
буде подією того, що наш масив не змінився після перестановки. Ми в кінцевому рахунку , прошу знайти ймовірність події A
, Pr(A)
.
Моє рішення намагається виконати наступну процедуру:
- Розглянемо всі можливі перестановки (тобто переупорядкування нашого масиву)
- Розбийте ці перестановки на непересечені набори на основі кількості так званих транспозицій ідентичності, які вони містять. Це допомагає зменшити проблему до рівномірного перестановок.
- Визначте ймовірність отримання перестановки тотожності, враховуючи, що перестановка є парною (і має певну довжину).
- Підсумуйте ці ймовірності, щоб отримати загальну ймовірність масиву незмінною.
1) Можливі результати
Зверніть увагу, що кожна ітерація циклу for створює обмін (або транспозицію ), що призводить до однієї з двох речей (але ніколи не обох):
- Два елементи поміняні місцями.
- Елемент міняється місцями між собою. Для наших цілей масив незмінний.
Ми позначаємо другий випадок. Давайте визначимо транспонування ідентичності наступним чином:
Транспозиції ідентичності виникає , коли число обміняно з самими собою. Тобто, коли n == m у наведеному вище циклі for.
Для будь-якого даного циклу перерахованого коду ми складаємо N
транспозиції. У 0, 1, 2, ... , N
цьому "ланцюжку" можуть бути перенесення ідентичності.
Наприклад, розглянемо N = 3
випадок:
Given our input [0, 1, 2].
Swap (0 1) and get [1, 0, 2].
Swap (1 1) and get [1, 0, 2]. ** Here is an identity **
Swap (2 2) and get [1, 0, 2]. ** And another **
Зверніть увагу, що існує непарна кількість неідентичних транспозицій (1), і масив змінено.
2) Розділення на основі кількості транспозицій ідентифікаційних даних
Нехай K_i
буде подією, коли i
транспозиції ідентичності з’являються у певній перестановці. Зверніть увагу, що це утворює вичерпний розділ усіх можливих результатів:
- Жодна перестановка не може мати дві різні величини транспозицій тотожності одночасно, і
- Всі можливі перестановки повинні мати між
0
і N
посвідченням транспозиції.
Таким чином, ми можемо застосувати закон повної ймовірності :
Тепер ми нарешті можемо скористатися розділом. Зверніть увагу, що коли кількість неідентичних транспозицій непарна, масив не може залишитися незмінним *. Отже:
* З теорії груп перестановка є парною або непарною, але ніколи не обома. Тому непарна перестановка не може бути перестановкою тотожності (оскільки перестановка тотожності є парною).
3) Визначення ймовірностей
Отже, ми повинні визначити дві ймовірності для N-i
парних:
Перший термін
Перший член, представляє ймовірність отримання перестановки з i
транспозиціями ідентичності. Це виявляється двочленним, оскільки для кожної ітерації циклу for:
- Результат не залежить від результатів до нього, і
- Імовірність створення транспозиції ідентичності однакова, а саме
1/N
.
Таким чином, для N
випробувань ймовірність отримання i
транспозицій ідентичності становить:
Другий термін
Так що, якщо ви зробили це настільки далеко, ми звели задачу до знаходження для N - i
парне. Це представляє ймовірність отримання заданої перестановки ідентичностіi
того, що транспозиції є тотожностями. Я використовую наївний підхід підрахунку, щоб визначити кількість способів досягнення перестановки тотожності над кількістю можливих перестановок.
Спочатку розглянемо перестановки (n, m)
та (m, n)
еквівалент. Тоді нехай M
буде можливою кількість неідентичних перестановок. Ми будемо використовувати цю кількість часто.
Мета тут - визначити кількість способів поєднання колекцій транспозицій для формування перестановки ідентичності. Я спробую побудувати загальне рішення поряд із прикладом N = 4
.
Давайте розглянемо N = 4
випадок з усіма транспозиціями ідентичності ( тобто i = N = 4
). Нехай X
представляють транспонування ідентичності. Для кожного з них X
є свої N
можливості (вони:) n = m = 0, 1, 2, ... , N - 1
. Таким чином, є N^i = 4^4
можливості для перестановки ідентичності. Для повноти ми додамо біноміальний коефіцієнт, C(N, i)
щоб розглянути порядок транспозицій тотожності (тут він просто дорівнює 1). Я намагався зобразити це нижче з фізичним розташуванням елементів зверху та кількістю можливостей нижче:
I = _X_ _X_ _X_ _X_
N * N * N * N * C(4, 4) => N^N * C(N, N) possibilities
Тепер явно не підмінюючи N = 4
і i = 4
, ми можемо розглянути загальний випадок. Поєднуючи вищезазначене із знайденим раніше знаменником, знаходимо:
Це інтуїтивно зрозуміло. Насправді, будь-яке інше значення, крім того, що, 1
напевно, мало б вас насторожити. Подумайте: нам дана ситуація, в якій, N
як кажуть, усі транспозиції є ідентичністю. Що, мабуть, не змінило масив у цій ситуації? Очевидно, що 1
.
Тепер, знову ж таки N = 4
, давайте розглянемо 2 транспозиції ідентичності ( тобто i = N - 2 = 2
). Як домовленість, ми розмістимо дві ідентичності в кінці (і будемо замовляти їх пізніше). Зараз ми знаємо, що нам потрібно вибрати дві транспозиції, які при складанні стануть перестановкою ідентичності. Давайте розмістимо будь-який елемент у першому місці, назвемо його t1
. Як зазначено вище, існують M
можливості, якщо припустити, що t1
це не ідентичність (це не може бути, оскільки ми вже розмістили дві).
I = _t1_ ___ _X_ _X_
M * ? * N * N
Єдиним елементом, який міг би потрапити у друге місце, є зворотне значення t1
, яке є насправді t1
(і це єдине за унікальністю зворотного). Ми знову включаємо біноміальний коефіцієнт: у цьому випадку ми маємо 4 відкритих розташування, і ми хочемо розмістити 2 ідентифікаційні перестановки. Скільки способів ми можемо це зробити? 4 оберіть 2.
I = _t1_ _t1_ _X_ _X_
M * 1 * N * N * C(4, 2) => C(N, N-2) * M * N^(N-2) possibilities
Знову дивлячись на загальний випадок, це все відповідає:
Нарешті, ми робимо N = 4
справу без жодної транспозиції ідентичності ( тобто i = N - 4 = 0
). Оскільки можливостей дуже багато, це починає бути складним, і ми повинні бути обережними, щоб не подвоїти рахунок. Починаємо так само, розміщуючи один елемент у першому місці та розробляючи можливі комбінації. Спочатку візьміть найпростіший: те саме транспонування 4 рази.
I = _t1_ _t1_ _t1_ _t1_
M * 1 * 1 * 1 => M possibilities
Давайте тепер розглянемо два унікальних елементи t1
і t2
. Є M
можливості для t1
і тільки M-1
можливості для t2
(оскільки t2
не може бути рівним t1
). Якщо ми вичерпаємо всі домовленості, ми залишимо такі схеми:
I = _t1_ _t1_ _t2_ _t2_
M * 1 * M-1 * 1 => M * (M - 1) possibilities (1)st
= _t1_ _t2_ _t1_ _t2_
M * M-1 * 1 * 1 => M * (M - 1) possibilities (2)nd
= _t1_ _t2_ _t2_ _t1_
M * M-1 * 1 * 1 => M * (M - 1) possibilities (3)rd
Тепер давайте розглянемо три унікальних елементів, t1
, t2
, t3
. Давайте розмістимо t1
спочатку, а потім t2
. Як завжди, ми маємо:
I = _t1_ _t2_ ___ ___
M * ? * ? * ?
Ми поки не можемо сказати, скільки можливо t2
може бути ще, і ми побачимо, чому через хвилину.
Зараз ми займаємо t1
третє місце. Зверніть увагу, t1
треба їхати туди, оскільки якби ми йшли в останньому місці, ми б просто відтворили (3)rd
угоду вище. Подвійний підрахунок - це погано! Це залишає третій унікальний елемент t3
у кінцевій позиції.
I = _t1_ _t2_ _t1_ _t3_
M * ? * 1 * ?
То чому нам довелося взяти хвилину, щоб t2
уважніше розглянути кількість s? Транспозиції t1
та t2
не можуть бути несуміжними перестановками ( тобто вони повинні спільно використовувати одну (і лише одну, оскільки вони також не можуть бути рівними) своїх n
або m
). Причиною цього є те, що якби вони були несумісними, ми могли б поміняти місцями перестановки. Це означає, що ми будемо двічі підраховувати (1)st
домовленості.
Say t1 = (n, m)
. t2
повинен мати форму (n, x)
або (y, m)
для деяких x
і y
для того, щоб бути несуміжними. Зверніть увагу , що x
не може бути n
або m
й y
багато з них НЕ буде n
або m
. Таким чином, кількість можливих перестановок, які t2
можуть бути, є насправді2 * (N - 2)
.
Отже, повертаючись до нашого макету:
I = _t1_ _t2_ _t1_ _t3_
M * 2(N-2) * 1 * ?
Тепер t3
має бути зворотне до складу t1 t2 t1
. Давайте зробимо це вручну:
(n, m)(n, x)(n, m) = (m, x)
Так t3
повинно бути (m, x)
. Зверніть увагу, що це не є несумісним t1
і не дорівнює жодному, t1
або t2
тому для цього випадку немає подвійного підрахунку.
I = _t1_ _t2_ _t1_ _t3_
M * 2(N-2) * 1 * 1 => M * 2(N - 2) possibilities
Нарешті, поклавши все це разом:
4) Склавши все це разом
От і все. Працюйте назад, підставивши те, що ми знайшли, у вихідне підсумовування, подане на кроці 2. Я обчислив відповідь наN = 4
випадок нижче. Він дуже точно відповідає емпіричному числу, знайденому в іншій відповіді!
N = 4
М = 6 _________ _____________ _________
| Pr (K_i) | Pr (A | K_i) | Товар |
_________ | _________ | _____________ | _________ |
| | | | |
| i = 0 | 0,316 | 120/1296 | 0,029 |
| _________ | _________ | _____________ | _________ |
| | | | |
| i = 2 | 0,211 | 6/36 | 0,035 |
| _________ | _________ | _____________ | _________ |
| | | | |
| i = 4 | 0,004 | 1/1 | 0,004 |
| _________ | _________ | _____________ | _________ |
| | |
| Сума: | 0,068 |
| _____________ | _________ |
Правильність
Було б круто, якби тут був застосований результат теорії груп - і, можливо, він є! Це, безумовно, допомогло б повністю зникнути весь цей нудний підрахунок (і скоротити проблему до чогось набагато елегантнішого). Я перестав працювати в N = 4
. Бо N > 5
те, що наведено, лише наближує (наскільки добре, я не впевнений). Цілком зрозуміло, чому саме це, якщо задуматися: наприклад, з огляду на N = 8
транспозиції, існують чітко способи створення ідентичності з чотирма унікальними елементами, які не враховані вище. Кількість способів стає, здається, складнішим для підрахунку, оскільки перестановка стає довшою (наскільки я можу зрозуміти ...).
У будь-якому випадку, я точно не міг зробити щось подібне в рамках інтерв’ю. Якби мені пощастило, я дійшов би до кроку знаменника. Крім цього, це здається досить неприємним.
N
та фіксованого насіння ймовірність є0
або1
тому, що це зовсім не випадково.