fundo
Suponha que eu tenha dois lotes idênticos de bolinhas de gude. Cada mármore pode ser uma das cores , onde . Deixe denotam o número de berlindes de cor em cada lote.
Seja o multiset representando um lote. Na representação de frequência , também pode ser escrito como .
O número de permutações distintas de é dado pelo multinomial :
Questão
Existe um algoritmo eficiente para gerar duas permutações difusas e perturbadas e de aleatoriamente? (A distribuição deve ser uniforme.)
Uma permutação é difusa se para cada elemento distinto de , os casos de são espaçados de forma aproximadamente uniforme em .
Por exemplo, suponha que .
- não é difuso
- é difuso
Mais rigorosamente:
- Se , há apenas uma instância de para "espaçar" em , então deixe .i P Δ ( i ) = 0
- Caso contrário, deixe é a distância entre o exemplo e exemplo de em . Subtraia a distância esperada entre as instâncias de , definindo o seguinte:
Se estiver uniformemente espaçado em , então deverá ser zero ou muito próximo de zero se .j j + 1 i P i δ ( i , j ) = d ( i , j ) - n i P Δ ( i )
Agora definir a estatística para medir a quantidade de cada é uniformemente espaçados em . Chamamos difuso se for próximo de zero, ou aproximadamente . (Pode-se escolher um limite específico para para que seja difuso se )i P P s ( P ) s ( P ) ≪ n 2 k ≪ 1 S P s ( P ) < k n 2
Essa restrição lembra um problema mais estrito de agendamento em tempo real chamado problema de cata -vento com multiset (para que ) e densidade . O objetivo é agendar uma sequência infinita cíclica modo que qualquer subsequência de comprimento contenha pelo menos uma instância de . Em outras palavras, uma programação viável requer todos os ; se é densa ( ), então e . O problema do cata-vento parece estar completo com NP.um i = n / n i ρ = Σ c i = 1 n i / n = 1 P um i i d ( i , j ) ≤ um i Um ρ = 1 d ( i , j ) = um i s ( P ) = 0
Duas permutações e são desarranjadas se é uma desarranjo de ; isto é, para cada índice .QP i ≠ Q i i ∈ [
Por exemplo, suponha que .
- e não são perturbados
- e estão desarranjados
Análise exploratória
Estou interessado na família de multisets com e para . Em particular, vamos .
A probabilidade de que duas permutações aleatórias e de sejam perturbadas é de cerca de 3%.
Isso pode ser calculado da seguinte maneira, onde é o polinômio do ésimo Laguerre: Veja aqui uma explicação.
A probabilidade de uma permutação aleatória de ser difusa é de cerca de 0,01%, definindo o limiar arbitrário em aproximadamente .
Abaixo está um gráfico de probabilidade empírica de 100.000 amostras de onde é uma permutação aleatória de .
Em tamanhos médios de amostra, .
A probabilidade de que duas permutações aleatórias sejam válidas (difusas e desarranjadas) é de cerca de .
Algoritmos ineficientes
Um algoritmo "rápido" comum para gerar um desarranjo aleatório de um conjunto é baseado em rejeição:
fazer P ← random_permutation ( D ) até is_derangement ( D , P ) retornar P
que leva aproximadamente iterações, uma vez que existem cerca de possíveis distúrbios. No entanto, um algoritmo aleatório baseado em rejeição não seria eficiente para esse problema, pois levaria na ordem de iterações.
No algoritmo usado pelo Sage , um desarranjo aleatório de um multiset "é formado escolhendo um elemento aleatoriamente da lista de todos os possíveis desarranjos". No entanto, isso também é ineficiente, pois existem permutações válidas para enumerar e, além disso, seria necessário um algoritmo para fazer isso de qualquer maneira.
Outras perguntas
Qual é a complexidade desse problema? Pode ser reduzido a qualquer paradigma familiar, como fluxo de rede, coloração de gráficos ou programação linear?