Ефективний алгоритм для генерування випадкових двох дифузних, впорядкованих перестановок мультисети


13

Фон

Припустимо, у мене дві однакові партії з n мармуру. Кожен мармур може бути одним із c кольорів, де cn . Нехай ni позначає кількість мармурів кольору i в кожній партії.

Нехай S - мультисетка {1,,1n1,2,,2n2,,1c,,cnc} представляє одну партію. У частотному поданні , S також може бути записана в вигляді (1n12n2cnc) .

Кількість чітких перестановок S задається мультиномією :

|SS|=(nn1,n2,,nc)=n!n1!n2!nc!=n!i=1c1ni!.

Питання

Існує чи ефективний алгоритм для генерації два дифузних, несамовитий перестановки P і Q з S у випадковому порядку? (Розподіл має бути рівномірним.)

  • Перестановка P є дифузним , якщо для кожного окремого елемента i з P , екземпляри i рознесені приблизно рівномірно в P .

    Наприклад, припустимо, S=(1424)={1,1,1,1,2,2,2,2} .

    • {1,1,1,2,2,2,2,1} не розсіяні
    • {1,2,1,2,1,2,1,2} розсіяно

    Більш суворо:

    • Якщо , у є лише один екземпляр щоб «пробіл» , тож нехай .i P Δ ( i ) = 0ni=1iPΔ(i)=0
    • В іншому випадку, нехай буде відстань між примірника  і примірника  з в . Відніміть із нього очікувану відстань між екземплярами , визначивши наступне: Якщо рівномірно розміщений у , то має бути нульовим або дуже близьким до нуля, якщо .j j + 1 i P i δ ( i , j ) = d ( i , j ) - nd(i,j)jj+1iPi i P Δ ( i ) n in
      δ(i,j)=d(i,j)nniΔ(i)=j=1ni1δ(i,j)2
      iPΔ(i)nin

    Тепер визначимо статистики , щоб визначити , скільки кожен рівномірно рознесені в . Ми називаємо дифузним, якщо близький до нуля, або приблизно . (Можна вибрати поріг характерний для так що дифузно, якщо )i P P s ( P ) s ( P ) n 2 k 1 S P s ( P ) < k n 2s(P)=i=1cΔ(i)iPPs(P)s(P)n2k1SPs(P)<kn2

    Це обмеження нагадує більш жорстку проблему планування в режимі реального часу, яку називають проблемою з мультисетом (так що ) та щільністю . Завдання полягає в плануванні циклічної нескінченної послідовності таким чином, щоб будь-яка послідовність довжини містила щонайменше один екземпляр . Іншими словами, здійсненний графік вимагає всіх ; якщо щільна ( ), тоді і . Проблема з шарнірним колесом видається NP-завершеною.a i = n / n i ρ = c i = 1 n i / n = 1 P a i i d ( i , j ) a i A ρ = 1 d ( i , j ) = a i s ( P ) = 0A=n/Sai=n/niρ=i=1cni/n=1Paiid(i,j)aiAρ=1d(i,j)=ais(P)=0

  • Дві перестановок і є ненормальними , якщо являє собою психоз з ; тобто для кожного індексу .Q P Q P iQ i i [ n ]PQPQPiQii[n]

    Наприклад, припустимо, .S=(1222)={1,1,2,2}

    • { 1 , 1 , 2 , 2 }{1,2,1,2} і не збиваються з поля{1,1,2,2}
    • { 2 , 1 , 2 , 1 }{1,2,1,2} і знецінені{2,1,2,1}

Дослідницький аналіз

Мене цікавить сімейство мультисетів з та для . Зокрема, нехай .n i = 4 i 4 D = ( 1 4n=20ni=4i4D=(1424344352617181)

  • Імовірність того, що два випадкові перестановки і з є ненормальними становить близько 3%.Q DPQD

    Це можна обчислити так, де - й поліном Лагера: Пояснення тут див . k | D D |Lkk

    |DD|=0dteti=1cLni(t)=0dtet(L4(t))3(L3(t))(L2(t))(L1(t))3=4.5×1011|SD|=n!i=1c1ni!=20!(4!)3(3!)(2!)(1!)3=1.5×1013p=|DD|/|SD|0.03
  • Імовірність того, що випадкова перестановка з є дифузним становить близько 0,01%, встановивши довільний поріг приблизно .D s ( P ) < 25PDs(P)<25

    Нижче наведено емпіричний графік ймовірності 100 000 зразків де - випадкова перестановка .P Ds(P)PD

    При середніх розмірах вибірки, .s(P)Gamma(α8,β18)

    Ps(P)cdf(s(P)){1,8,2,3,4,1,5,2,3,6,1,4,2,3,7,1,5,2,4,3}1191<105{8,2,3,4,1,6,5,2,3,4,1,7,1,2,3,5,4,1,2,3}140916<104{3,6,5,1,3,4,2,1,2,7,8,5,2,4,1,3,3,2,1,4}650972<10.05{3,1,3,4,8,2,2,1,1,5,3,3,2,6,4,4,2,1,7,5}12239136<10.45{4,1,1,4,5,5,1,3,3,7,1,2,2,4,3,3,8,2,2,6}16979189<10.80

Ймовірність того, що дві випадкові перестановки є дійсними (як дифузні, так і дифференцировані), становить приблизно .v(0.03)(0.0001)21010

Неефективні алгоритми

Поширений алгоритм "швидкого" для створення випадкової дегрунтування набору є на основі відкидання:

do
     P ← випадкова_перестановка ( D )
поки не буде_порядження ( D , P )
повернути Р

яка займає приблизно ітерацій, так як є приблизно можна розлад. Однак рандомізований алгоритм на основі відкидання не буде ефективним для цієї проблеми, оскільки він матиме порядок ітерацій.en!/e1/v1010

В алгоритмі, використовуваному Sage , випадкове дерангування мультисети "формується шляхом вибору випадкового елемента зі списку всіх можливих дерангувань". Але це теж неефективно, оскільки для перерахування є дійсні перестановки , і до того ж, для цього потрібен був би алгоритм.v|SD|21016

Подальші питання

У чому полягає складність цієї проблеми? Чи можна її звести до будь-якої звичної парадигми, такої як мережевий потік, забарвлення графіків або лінійне програмування?


Що стосується вашого визначення поняття "пробіл", ви не хочете, щоб для з як дозорці? Тобто один елемент повинен знаходитися посередині, два повинні перегороджувати перестановку на третини тощо. d(i,j)n/(ni+1)0ijn+1P0=Pn+1=i
Рафаель

Що відбувається, якщо для зла (невеликий, але досить великий); у нас навіть є дифузні перестановки, ніж? Ми, звичайно, не витримуємо змін, щоб знайти двох знедолених! Здається, що жоден елемент не може виникати більше разів. S={1nk,2k}kn/2
Рафаель

1
Яке співвідношення всіх пар впорядкованих перестановок серед усіх пар дифузних перестановок? Аналогічно, з усіх пар бездоганних перестановок, скільки складається з двох дифузних? (Якщо будь-яке співвідношення "високе", ми можемо сконцентрувати зусилля на одній половині процесу, залишивши іншу на відхиленні.)
Рафаель

1
@Raphael (# 3а) З 1 мільйона випадкових перестановок , ці 561 дифузні ті мали . пар . Ds(P)306118/(5612)=6118/1570803.9%
hftf

1
@Raphael (# 3b) З 10 мільйонів випадкових пар перестановок 306893 пар були винищені. Тільки 29 з цих пар мали обидві перестановки з . Ось гістограма ( значення ). Ds(P)50
hftf

Відповіді:


3

Один із підходів: ви можете звести це до наступної проблеми: Враховуючи булеву формулу , виберіть завдання рівномірно серед усіх задовольняючих завдань . Ця проблема є важкою для NP, але є стандартні алгоритми для генерування який приблизно рівномірно розподілений, запозичуючи методи з #SAT алгоритмів. Наприклад, одна методика полягає в тому, щоб вибрати хеш-функцію , діапазон якої має ретельно обраний розмір (приблизно такий же розмір, як кількість задовольняючих призначень ), вибирати рівномірно випадкове значення з діапазонуx φ ( x ) x h φ y h φ ( x ) ( h ( x ) = y ) hφ(x)xφ(x)xhφyh, а потім використовуйте розв'язувач SAT, щоб знайти задовольняюче завдання формулі . Щоб зробити його ефективним, ви можете обрати для розрідженої лінійної карти.φ(x)(h(x)=y)h

Це може бути зйомка блохи з гармати, але якщо у вас немає інших підходів, які здаються працездатними, ви можете спробувати.


мені важко слідувати. - булеве значення, а - двійковий рядок (набір двійкових змінних)? тому підсумкове рівняння означає ...? h ( x )φ(x)h(x)
vzn

0

деяке розширене обговорення / аналіз цієї проблеми розпочалося в чаті cs з подальшим підґрунтям, яке виявило деяку суб'єктивність у складних вимогах проблеми, але не виявило явних помилок чи пропусків. 1

ось деякий тестований / проаналізований код, який порівняно з іншим рішенням, заснованим на SAT, є відносно "швидким та брудним", але нетривіальним / складним для налагодження. його слабо концептуально заснована на локальній схемі оптимізації псевдовипадкових / жадібних, дещо схожа на наприклад, 2-OPT для TSP . основна ідея полягає в тому, щоб почати з випадкового рішення, яке відповідає деяким обмеженням, а потім заважати локально шукати удосконалення, жадібно шукати вдосконалення та повторювати їх, і закінчувати, коли всі локальні удосконалення вичерпані. критеріями проектування було те, що алгоритм повинен бути максимально ефективним / максимально уникати відхилення.

є деякі дослідження алгоритмів дезорганізації [4], наприклад, які використовуються в SAGE [5], але вони не орієнтовані на багатоскладові.

просте збурення - це лише "заміна" двох положень у кортежах. реалізація в рубіні. далі наведено деякі огляди / примітки із відсиланнями до номерів рядків.

qb2.rb (gist-github)

підхід тут полягає у тому, щоб почати з двох безглуздих кортежів (№ 106), а потім локально / жадібно покращити дисперсію (№ 107), поєднану в концепцію, що називається derangesperse(# 97), зберігаючи збідність. зауважимо, що заміна двох однакових позицій у парі кортежів зберігає розчарування і може покращити дисперсію, і це (частина) дисперсного методу / стратегії.

derangeпідпрограма працює зліва направо на масиві (мультімножество) і свопи з елементами пізніше в масиві , де своп не з тим же елементом (# 10). алгоритм досягає успіху, якщо без подальших замінів у останньому положенні два кортежі все ще знеструмлені (№16).

Існують 3 різні підходи до відшарування початкових кортежів. 2-й кортеж p2завжди перемішують. можна починати з кортежу 1 ( p1), упорядкованого a."найвищими силами 1-го порядку" (# 128), b.перетасованого порядку (№ 127) c.та "найнижчих потужностей 1-го порядку" ("найвищі сили останнього порядку") (# 126).

розпорошення розповсюдження disperseє більш задіяним, але концептуально не таким складним. знову він використовує свопи. а не намагатися оптимізувати дисперсію взагалі над усіма елементами, вона просто намагається ітеративно полегшити поточний гірший випадок. ідея полягає у пошуку перших найменш дисперсних елементів, зліва направо. збурення полягає в тому, щоб поміняти лівий або правий елементи ( x, yіндекси) найменш дисперсної пари іншими елементами, але ніколи між парою (що завжди зменшить дисперсію), а також пропустити спробу заміни однаковими елементами ( selectв # 71) . m- середній показник пари (№65).

однак дисперсія вимірюється / оптимізується над обома кортежами в парі (№40), використовуючи дисперсію "найменший / лівий" у кожній парі (№25, №44).

алгоритм намагається поміняти місцями "найдальші" елементи 1- го ( sort_by / reverse# 71).

є дві різні стратегії true, falseдля вирішення питання про те, щоб замінити лівий або правий елемент найменш дисперсної пари (№80), або лівий елемент для позиції підміни на лівий / правий елемент на правий бік, або найдальший лівий або правий елемент в дисперсійній парі від елемента swap.

алгоритм закінчується (# 91), коли він більше не може покращити дисперсію (або переміщення найгіршого місця розташування вправо, або збільшення максимальної дисперсії по всій парі кортежів (# 85)).

статистичні дані виводяться для відхилень понад c= 1000 дерангувань за 3 підходи (# 116) та c= 1000 дераншперс (# 97), дивлячись на 2 алгоритми диспергування для розрядженої пари від відхилення (№19, №106). останній відстежує загальну середню дисперсію (після гарантованої деградації). приклад запуску такий

c       0.661000
b       0.824000
a       0.927000
[2.484, 2, 4]
[2.668, 2, 4]

це показує, що a-trueалгоритм дає найкращі результати при ~ 92% відхилення і середньому найгіршому відстані дисперсії ~ 2,6, і гарантованому мінімумі 2 понад 1000 випробувань, тобто щонайменше 1 нерівний елемент, що втручається між усіма парами однакових елементів. він знайшов рішення аж до 3 нерівних втручаються елементів.

алгоритм дерангування є лінійним попереднім відхиленням часу, а алгоритм дисперсії (працює на похилому вході), здається, можливо ~ .O(nlogn)

1 проблема полягає у пошуку домовленостей пакетів quizbowl, які задовольняють так званий "фен-шуй" [1] або "приємне" випадкове впорядкування, де "приємно" є дещо суб'єктивним і ще не "офіційно" кількісно визначеним; автор проблеми проаналізував / звів її до критеріїв "деранш / дисперсія" на основі досліджень спільноти quizbowl та "експертів фен-шуй". [2] існують різні ідеї щодо "правил фен-шуй". Деякі "опубліковані" дослідження були проведені на алгоритмах, але вони з'являються на ранніх стадіях. [3]

[1] Пакет фен-шуй / QBWiki

[2] Пакети Quizbowl та фен-шуй / Ліфшиц

[3] Розміщення питань , форум ресурсних центрів HSQuizbowl

[4] Створення випадкових дерангацій / Мартінес, Панхолцер, Продінгер

[5] Алгоритм відкладання шавлії (пітон) / Мак-Андрю


Fyi далі думка, там глюк в дивному режимі, і це не завжди дивно. положення своп може просуватися, не змінюючи нічого. є просте виправлення, щоб правильно перевірити успіх.
vzn
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.