선형 프로그램으로 정렬


24

놀랍게도 수많은 문제는 선형 프로그래밍 (LP)을 상당히 자연스럽게 감소시킵니다. 네트워크 흐름, 이분법 일치, 제로섬 게임, 최단 경로, 선형 회귀 및 회로 평가와 같은 예는 [1]의 7 장을 참조하십시오 !

회로 평가는 선형 프로그래밍으로 줄어들 기 때문에 모든 문제 에는 선형 프로그래밍 공식이 있어야합니다. 따라서 선형 프로그램으로 축소하여 "새로운"정렬 알고리즘이 있습니다. 그래서 내 질문은P

  1. 실수 배열을 정렬하는 선형 프로그램은 무엇입니까 ?n
  2. LP 축소 및 정렬 알고리즘의 실행 시간은 얼마입니까?

  1. 알고리즘 S. 다스 굽타, C. 파파 디미트리 오우와 U. Vazirani (2006)


3
이미 답을 알고 있다면 왜 질문을합니까?
Yuval Filmus

2
@Joe 답을 알고 있더라도 재미있는 자료를 게시하는 것이 좋습니다. 이를 수행하는 일반적인 방법은 일부 문서에 대한 링크를 게시하지 않고 (정교한) 테이크를 사용하여 자신의 질문에 대답하는 것입니다.
Raphael

@Raphael 다른 사람이 답을 쓰지 않으면 시간이있을 때 드리겠습니다.
Joe

@YuvalFilmus는 스택 교환시 답을 아는 질문을 명시 적으로 권장합니다 .
Joe

답변:


23

다음 답변은 기본적으로 이미 알고있는 것과 동일하지만 다소 "매직적인"것처럼 보일 수 있습니다. 다른 한편으로, 그것은 더 기술적이지만, 일반적인 기술은 "순열 행렬에 대한 최적화로 문제를 작성하고 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}PσPij=1j=σ(i)Pij=0xσy=Pσx . 이제부터y= P σ xσ(x)로표시하겠습니다.yi=xσ(i)y=Pσxσ(x)

하나 더 정의 : 음이 아닌 행렬 M 은 각 행과 각 열의 합이 1이면 이중 확률 적입니다.n×nM

조합 최적화에서 매우 중요한 한 가지 사실-Birkhoff-von Neumann 정리 :

행렬 그것이 순열 행렬, 즉의 볼록 결합 인 경우에만, 이중 스토캐스틱 경우 및 치환이 존재하는 경우에만 σ (1) , ... , σ K 긍정적 실수가 α 1 , ... , α K 되도록 M = Σ (k)를 i = 1 α i P σ iα i = 1 입니다.Mσ1,,σkα1,,αkM=i=1kαiPσiαi=1

이중 확률 행렬은 불평등에 의해 정의됩니다.

j : n i = 1 M i j = 1 i , j : M i j0

i:j=1nMij=1
j:i=1nMij=1
i,j:Mij0

이 모든 불평등이 함께 합쳐져서 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σ)=i=1niaσ(i)
  • 위에서 최대화 하는 σ ( ) (모순 : 그렇지 않으면 두 좌표 전환 할 수 정렬 σ를 ( ) 과 높은 값을 달성).σσ(a)σ(a)

그리고 짜잔, 당신은 정렬을위한 선형 프로그램이 있습니다. 정렬이 어리석은 것처럼 보이지만 실제로는 최적화의 강력한 방법입니다.


1
내가 다루지 않은 것 : 최적의 솔루션이 여러 개있을 때 그중 일부는 순열 행렬이 아닙니다 (물론 일부는 그렇지 않습니다). 섭동에 의해 당신이 중복을 제거 할 수 있음을 해결하기 위해 많은 쉬운 방법이 있습니다 . a
Sasho Nikolov

1
최적의 솔루션이 여러 개인 경우 일부는 순열 행렬이 아닐 수 있지만 항상 최적의 솔루션은 순열 행렬이됩니다. 목적 함수가 일정하면 모든 가능한 솔루션이 최적입니다.
Sasho Nikolov

1
@Turbo 선형 프로그램 이이 답변에 완전히 작성되었습니다. 분명히 그것은 적분 제약이 없습니다. 나는 당신의 두 번째 질문에 대답하려고하지 않을 것입니다. 내가 정렬을 위해 여기에서했던 방식으로 이중 확률 론적 행렬에 대해 선형 함수를 최적화하는 것처럼 GI를 적어보십시오. 실패한 곳을 직접 확인하십시오.
Sasho Nikolov

1
실제로 단순을 사용하고 싶을 수도 있지만 이론적으로는 다항식 시간 LP 솔버 (예 : 내부 포인트 방법 또는 타원체 방법)를 사용하여 다항식 시간 알고리즘을 얻을 수 있습니다. 이것은의 비트의 복잡성이 당신에게 시간 다항식을 줄 것이다 . (경우에 여기로) 제약 행렬 TUM 때, 너무 강하게 polytime 해법이 존재 cstheory.stackexchange.com/questions/4454/...~~V을 . a
Sasho Nikolov

1
그리고 네, 할 수있는 가장 쉬운 방법은 당신이 당신이 작은 임의의 섭동을 추가 할 수있는 고유 최적의 솔루션이 있는지 확인하는 것입니다 . a
Sasho Nikolov
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.