sfondo
Supponiamo che io abbia due lotti identici di biglie. Ogni marmo può essere di uno dei colori , dove c≤n . Lascia che n_i indichi il numero di biglie di colore i in ciascun lotto.
Sia il multiset rappresenta un batch. Nella rappresentazione della frequenza , può anche essere scritto come .
Il numero di permutazioni distinte di è dato dal multinomiale :
Domanda
Esiste un algoritmo efficiente per generare casualmente due permutazioni diffuse e squilibrate e di ? (La distribuzione dovrebbe essere uniforme.)
Una permutazione è diffusa se per ogni elemento distinto di , le istanze di vengano ripartite abbastanza regolare in .
Ad esempio, supponiamo .
- non è diffuso
- è diffuso
Più rigorosamente:
- Se , c'è solo un'istanza di per “spaziare” in , quindi lascia .
- Altrimenti, lasciare che la distanza tra dell'istanza e istanza di in . Sottrai da essa la distanza prevista tra le istanze di , definendo quanto segue:
Se è uniformemente spaziato in , allora dovrebbe essere zero, o molto vicino a zero se .
Definire la statistica per misurare la quantità di ogni è equamente distanziati in . Chiamiamo diffuso se è vicino a zero, o approssimativamente . (Si può scegliere una soglia specifica di modo che sia diffusa se )
Questo vincolo richiama un problema di pianificazione in tempo reale più rigoroso chiamato problema pinwheel con multiset (in modo che ) e densità . L'obiettivo è programmare una sequenza infinita ciclica tale che qualsiasi sottosequenza di lunghezza contenga almeno un'istanza di . In altre parole, un programma fattibile richiede tutto ; se è denso ( ), quindi e . Il problema della girandola sembra essere NP-completo.
Due permutazioni e sono distorte se è una variazione di ; cioè, per ogni indice .
Ad esempio, supponiamo che .
- e non sono distorti
- e sono squilibrati
Analisi esplorativa
Sono interessato alla famiglia di multiset con e per . In particolare, .
La probabilità che due permutazioni casuali e di siano squilibrate è di circa il 3%.
Questo può essere calcolato come segue, dove è il polinomio di Laguerre: Vedi qui per una spiegazione.
La probabilità che una permutazione casuale di sia diffusa è di circa lo 0,01%, impostando la soglia arbitraria a circa .
Di seguito è riportato un diagramma della probabilità empirica di 100.000 campioni di cui è una permutazione casuale di .
A campioni di dimensioni medie, .
La probabilità che siano valide due permutazioni casuali (sia diffusa che distorta) è di circa .
Algoritmi inefficienti
Un algoritmo "veloce" comune per generare un disordine casuale di un set è basato sul rifiuto:
do P ← random_permutation ( D ) fino a is_derangement ( D , P ) ritorno P
che richiede approssimativamente iterazioni, poiché ci sono all'incirca possibili variazioni. Tuttavia, un algoritmo randomizzato basato sul rifiuto non sarebbe efficace per questo problema, in quanto prenderebbe l'ordine delle iterazioni .
Nell'algoritmo utilizzato da Sage , un disordine casuale di un multiset "si forma scegliendo un elemento a caso dall'elenco di tutti i possibili disordini". Eppure anche questo è inefficiente, in quanto vi sono permutazioni valide per enumerare, e inoltre, uno avrebbe bisogno di un algoritmo solo per farlo comunque.
Ulteriori domande
Qual è la complessità di questo problema? Può essere ridotto a qualsiasi paradigma familiare, come flusso di rete, colorazione dei grafici o programmazione lineare?