다음 답변은 기본적으로 이미 알고있는 것과 동일하지만 다소 "매직적인"것처럼 보일 수 있습니다. 다른 한편으로, 그것은 더 기술적이지만, 일반적인 기술은 "순열 행렬에 대한 최적화로 문제를 작성하고 Birkhoff-von Neumann을 호출합니다"라고 생각하는 것이 좋습니다.
순열 들면 의 { 1 , ... , N } 순열 행렬 정의 P의 σ 0-1 매트릭스 등이 P의 난의 J = 1 의 경우 , J = σ ( I ) 및 P의 난의 J = 0 , 그렇지. 이것은 단순히 σ 에 따라 벡터 x 의 좌표를 치환하는 행렬입니다 : y = P σ x 이면 y i = x σσ{ 1 , … , n }피σ피나는 j= 1j = σ( 나는 )피나는 j= 0엑스σ와이= Pσ엑스 . 이제부터y= P σ x를σ(x)로표시하겠습니다.와이나는= xσ( 나는 )와이= Pσ엑스σ( x )
하나 더 정의 : 음이 아닌 행렬 M 은 각 행과 각 열의 합이 1이면 이중 확률 적입니다.n × n엠
조합 최적화에서 매우 중요한 한 가지 사실-Birkhoff-von Neumann 정리 :
행렬 그것이 순열 행렬, 즉의 볼록 결합 인 경우에만, 이중 스토캐스틱 경우 및 치환이 존재하는 경우에만 σ (1) , ... , σ K 긍정적 실수가 α 1 , ... , α K 되도록 M = Σ (k)를 i = 1 α i P σ i 및 ∑ α i = 1 입니다.엠σ1, … , σ케이α1, … , α케이엠= ∑케이나는 = 1α나는피σ나는∑ α나는= 1
이중 확률 행렬은 불평등에 의해 정의됩니다.
∀ j : n ∑ i = 1 M i j = 1 ∀ i , j : M i j ≥ 0
∀i:∑j=1nMij=1
∀j:∑i=1nMij=1
∀i,j:Mij≥0
이 모든 불평등이 함께 합쳐져서 polytope 결정 하고 Birkhoff-von Neumann 정리는이 polytope의 극단 점 (정점)이 모두 순열 행렬이라고 명시합니다. 기본 선형 프로그래밍에서 우리는 위의 불평등을 제약 조건으로하고 다른 제약 조건이없는 선형 프로그램은 최적 솔루션으로 순열 행렬을 가질 것이라는 것을 알 수 있습니다.P
따라서 입력 을 정렬하려면 다음과 같은 선형 목표 f a ( M ) 을 제시하면됩니다.a=(a1,…,an)fa(M)
- σ ( a ) 가 정렬되었지만 τ ( a ) 가정렬되지않으면 f a ( P τ ) < f a ( P σ )fa(Pτ)<fa(Pσ)σ(a)τ(a)
이어서 최대화 할 목적으로 선형 프로그램을 공식화 과 부등식 제한 위에서, 그리고 최적의 솔루션은 순열 행렬임을 보장 P σ 에 대한 σ 되도록 σ는 ( ) 정렬된다. 물론, P σ 에서 σ 를 쉽게 읽을 수 있습니다 .fa(M)Pσσσ(a)σPσ
대한 하나의 선택 은 v T M a 여기서 v = ( 1 , … , n ) 입니다. 확인fa(M)vTMav=(1,…,n)
- 이것은 에서 선형이다 ;M
- 대 , F ( P σ ) = Σ N 난 = 1 I σ ( I ) ;Pσfa(Pσ)=∑ni=1iaσ(i)
- 위에서 최대화 하는 σ ( ) (모순 : 그렇지 않으면 두 좌표 전환 할 수 정렬 σ를 ( ) 과 높은 값을 달성).σσ(a)σ(a)
그리고 짜잔, 당신은 정렬을위한 선형 프로그램이 있습니다. 정렬이 어리석은 것처럼 보이지만 실제로는 최적화의 강력한 방법입니다.