배경
두 개의 동일한 대리석 배치가 있다고 가정 합니다. 각 대리석은 인 색상 중 하나 일 수 있습니다 . 하자 색상의 구슬의 수를 나타내는 각 배치에있다.c c ≤ n n i i
하자 MULTISET 수 하나 개의 배치를 나타내는. 에서는 주파수 표현 , 또한로서 기록 될 수있다 .{ n 1 ⏞ 1 , … , 1 ,S(1n1
의 고유 한 순열 수는 다항식으로 제공됩니다 . \ left | \ mfS _ {\ msS} \ right | = \ binom {n} {n_1, n_2, \ dots, n_c} = \ frac {n!} { n_1! \, n_2! \ cdots n_c!} = n! \ prod_ {i = 1} ^ c \ frac1 {n_i!}.
질문
\ msS 의 두 개의 분산 된 배열 순열 와 Q 를 무작위 로 생성하는 효율적인 알고리즘이 있습니까? (분포는 균일해야합니다.)
순열 인 확산 마다 별개의 요소의 경우 의 의 경우 에서 거의 균일하게 이격되는 .
예를 들어, .
- 는 확산되지 않습니다
- 는 확산
더 엄격하게 :
- 경우 , 하나의 인스턴스 만이 "밖으로 공간"에 , 이렇게하자 .i P Δ ( i ) = 0
- 그렇지 않으면 를 의 인스턴스 와 인스턴스 사이의 거리로 둡니다 . 인스턴스 간 예상 거리를 빼고 다음을 정의합니다.
경우 균일하게 이격되는 후 0이어야하거나 매우 가까운 제로 경우 .J J + 1 I P I δ ( I , J ) = D ( I , J ) - N i P Δ ( i ) n i ∤ n
이제 통계량 를 정의 하여 에서 가 균등하게 간격을 두는 정도를 측정하십시오 . 가 0에 가까우거나 대략 경우 확산을 호출 합니다. (하나가 임계 값을 선택할 수 특정 되도록 확산이면 ).I P P S ( P ) 들 ( P ) « N 2 K « 1 P s ( P ) < k n 2
이 제약 조건 은 다중 세트 ( ) 및 밀도 바람개비 문제라고하는보다 엄격한 실시간 스케줄링 문제를 회상합니다. . 목적은 길이 의 임의의 서브 시퀀스 가 적어도 하나의 인스턴스를 포함 하도록 순환 무한 시퀀스 를 스케줄링하는 것이다. 다시 말해서, 실행 가능한 스케줄은 모든 ; 경우 치밀 ( )이면 및 . 바람개비 문제가 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 ) = 0
두 순열 와 된다 미친 경우 A는 교란 의 ; 즉, 모든 인덱스 대해 입니다 .Q P Q P i ≠ Q i i ∈ [ n ]
예를 들어, .
- { 1 , 1 , 2 , 2 } 및 는 정렬되지 않았습니다.
- { 2 , 1 , 2 , 1 } 및 가 분리되었습니다.
탐색 적 분석
대해 및 인 다중 세트 제품군에 관심이 있습니다. 특히, .n i = 4 i ≲ 4 D = ( 1 4
두 랜덤 순열을 확률 및 중 되어 미친은 3 %에 관한 것이다.Q D
가 번째 Laguerre 다항식 인 경우 다음과 같이 계산할 수 있습니다 . 설명 은 여기 를 참조 하십시오 . k | D D |
랜덤 순열 확률 의 인 확산은 거의 임의의 임계 값 설정에 대해 0.01 % 인 .D S ( P ) < 25
아래는 의 100,000 개 샘플에 대한 경험적 확률도입니다. 여기서 는 의 임의 순열입니다 .P D
중간 표본 크기에서 입니다.
두 개의 임의 순열이 유효 할 확률 (확산 및 배열 모두)은 약 입니다.
비효율적 인 알고리즘
세트의 무작위 배열을 생성하는 일반적인 "빠른"알고리즘은 거부 기반입니다.
이렇게 P ← random_permutation ( D를 ) is_derangement ( D , P )까지P를 반환
대략 가능한 배열 이 있기 때문에 대략 반복 이 필요 합니다. 그러나 거부 기반의 무작위 알고리즘은 반복 순서로 수행 문제에는 효율적이지 않습니다 .
Sage가 사용하는 알고리즘 에서, 다중 집합의 무작위 배열은“가능한 모든 배열 목록에서 무작위로 요소를 선택함으로써 형성됩니다.” 그러나 열거 할 유효한 순열 이 있기 때문에 비효율적이며 , 어쨌든이를 수행하는 알고리즘이 필요합니다.
추가 질문
이 문제의 복잡성은 무엇입니까? 네트워크 흐름, 그래프 채색 또는 선형 프로그래밍과 같은 친숙한 패러다임으로 줄일 수 있습니까?