페어 단위 거리에서 오차의 합계를 최소화하기위한 반올림


25

다음 문제의 복잡성에 대해 알려진 것 :

  • 주어진 숫자 : 유리수 .x1<x2<<xn
  • 출력 : 정수 .y1y2yn
  • 목표 : 최소화 여기서
    1i<jne(i,j),
    e(i,j)=|(yjyi)(xjxi)|.

즉, 유리수를 정수로 반올림하여 쌍 거리의 오차 합계를 최소화하려고합니다. 각 쌍 대해 우리는 가능한 한 실제 거리 반올림 거리 를 .i,jyjyixjxi


동기 부여 : 지루한 지하철 여행 및 1 분의 이동 시간 해상도로 스테이션의 "위치"를 보여주는 포스터. 여기서 우리는 사람들이 포스터를 사용하여 스테이션 와 사이의 이동 시간을 조회하여 모든 쌍 대해 평균화 하는 오류를 최소화하고 있습니다.iji<j

노선지도

(출처)

예를 들어, 여기에서 4 개의 스테이션 사이의 쌍별 거리에 대한 다음 근사값을 읽을 수 있습니다 (간단하게 A, B, C, D 사용).

  • A–B ≈ 1 분, B–C ≈ 2 분, C–D ≈ 2 분
  • A–C ≈ 3 분, B–D ≈ 4 분
  • A–D ≈ 5 분

이것이 최선의 근사치입니까? 실제 여행 시간을 알고 있다면 더 나은 해결책을 찾을 수 있습니까?


처음에는 동적 프로그래밍에서 간단한 연습처럼 들렸지 만 이제는 약간의 실제 사고가 필요한 것 같습니다.

누구든지이 문제를 알고 있습니까? 아니면 그것을 해결하기위한 영리한 알고리즘을 참조하십시오?


편집 : 의견에 언급 된 질문의 자연스러운 변형이 있습니다. 그들에게 몇 가지 이름을 지어 보자.

  • 바닥 / 천장 버전 : 모든 대해 필요합니다 .yi{xi,xi}i

  • 정수 버전 : 모든 대해 이면 충분합니다 .yiZi

  • 단조로운 버전 : 합니다.y1y2yn

  • 비단 조 버전 : 대해 가있을 수 있습니다 .yi>yji<j

원래 질문은 단조 정수 버전을 고려하지만 이러한 버전과 관련된 답변은 환영합니다.


DP는 인접한 측정에만 관심이있는 경우에 적합합니까?
Suresh Venkat

1
@SureshVenkat : 실제로이 경우 문제는 매우 단순 해집니다 . 각 에 대해 최적의 적분 거리 을 선택하면 됩니다. 즉, 각 독립적으로 최소화 할 수 있습니다 . yiyi1ie(i1,i)
Jukka Suomela

4
Estie Arkin의이 보고서는 관련이있는 것 같습니다 : ams.sunysb.edu/~estie/papers/beautification.pdf 출력에서 고유 한 포인트 간 거리의 수를 최소화하는 것은 NP-hard 인 것으로 입증되었습니다. 이것은이 질문에서와 같이 교대의 총합이 아니지만 보고서의 경도 가젯이이 문제에 대한 경도 증명을 제안 할 수 있습니다.
val

2
잘 알려진 기술을 사용하여이 문제를 해결할 수 있어야합니다. 현상금이 사람들이이 문제를 해결하도록 동기를 부여하기에 충분한 지 알아 봅시다. :)
Jukka Suomela

1
@ vzn :이 문제의 계산 복잡성에 관심이 있습니다. 전 세계 최적을 찾도록 보장 되는 다항식 지역 검색 방법이 있다는 것을 증명할 수 있다면 현상금은 당신의 것입니다.
Jukka Suomela

답변:


9

승인. DP 알고리즘은 불필요하게 복잡해 보입니다. 의견을 읽은 후에는 이것이 Monotonic 버전의 문제를 해결할 수 있다고 생각합니다 (그러나 모든 세부 사항을 확인하지는 않았습니다).

먼저, 각 . 여기서 는 정수 부분이고 는 소수 부분입니다. 가 로 반올림 되었다고 가정합니다 . 여기서 는 음이 아닌 정수입니다 (물론 일반적으로 는 음수 일 수 있지만 가장 작은 가 0이 되도록 항상 이동할 수 있습니다 ).xi=xi+{xi}xi{xi}xixi+vivivivi

이제이 반올림을 수행 할 때 , 쌍의 비용을 고려하십시오 . 비용은xixj

||vivj+xixj||{xi}{xj}+xixj||

절대 값으로 인해 표현이 복잡합니다. 그러나, 우리는 단 조성을 가지므로 두 내부 절대 값 안에있는 것은 SAME 부호를 가져야합니다. 우리는 외부 절대 값을 가지기 때문에 실제로 그 부호가 무엇인지는 중요하지 않습니다. 표현은

|vivj({xi}{xj})|

이제부터는 솔루션이 단조로운 것으로 가정하지 않지만 대신 모든 쌍에 대해 위 항의 합계를 최소화하도록 목표를 변경합니다. 이 문제에 대한 해결책이 단조로운 경우, 물론 단조로운 버전에 대한 최적의 솔루션입니다. (생각 해보자 : 원래 문제는 솔루션이 단조롭지 않을 때 무한한 페널티가 있고, 새로운 문제는 작은 페널티가있다. 단조로운 솔루션이 새 버전에서도 승리하면 단조로운 버전의 솔루션이어야한다)

이제 인 경우 최적의 솔루션으로 가 있어야 함을 합니다.{xi}>{xj}vivj

이것이 사실이 아니라고 가정하면 쌍 이지만 쌍이 있다고 가정하십시오 . 솔루션이 더 좋아진다 는 것을 보여줄 것입니다 .{xi}>{xj}vi<vjvi vj

먼저 우리는 와 사이의 용어를 비교합니다 . 여기서 스왑이 아닌 버전에서는 와 가 절대적으로 같은 부호를 갖기 때문에 스와핑이 엄격히 더 좋습니다. value는 두 절대 값의 합입니다.ijvivj{xj}{xi}

이제 에 대해 쌍 및 의 합을 비교합니다 . 즉, 우리는 비교해야합니다k(i,k)(j,k)

|vivk({xi}{xk})|+|vjvk({xj}{xk})|및.|vjvk({xi}{xk})|+|vivk({xj}{xk})|

사용 , , , 절대 값 안쪽 네 조건을 나타 내기 위해, 그 분명 . 또한. 절대 값의 볼록 함으로. 모든 대한 합계를 취하면 스와핑이 더 나을 수 있다는 것을 알고 있습니다.ABCDA+B=C+D|AB||CD||A|+|B||C|+|D|xk

공지 사항 지금 우리가 이미 모노 토닉 바닥 / 천장을 만들다 버전에 대한 솔루션을 가지고 : 임계 값이 있어야합니다을 때 더 큰 항상 라운드 업이 동일 라운드 때, 그것은 작은 항상 라운드 다운 때, 일부 위로 솔루션 품질은 숫자에만 의존하지만 일부는 감소합니다. 우리는 이러한 모든 솔루션을 열거하고 가장 작은 목적 함수를 가진 솔루션을 선택합니다. (이러한 모든 솔루션은 반드시 단조로운 것입니다).{xi}

마지막으로 우리는 문제의 단조 정수 버전으로 가고 싶습니다. 실제로 최적의 솔루션이 단조로운 바닥 / 천장 버전과 동일 함을 증명할 수 있습니다.

가장 작은 는 0입니다. 모든 를 에 따라 그룹화하고 그룹 합니다. 우리는 먼저 빈 그룹이 없음을 증명해야하지만, 경우에 이것은 간단 번째 그룹이 비어를 들어, 어떤 바로하자 . 목적 함수가 항상 향상되는 것을 쉽게 알 수 있습니다 (기본적으로 이므로 ).vixivi0,1,2,...,max{vi}kvi>kvi=vi1|{xi}{xj}|<1

이제 그룹에서 의 평균이 그룹에서 의 평균에 더한 것을 증명합니다 . 이것이 사실이 아닌 경우, 단순히 모든 대해 을 설정 하면 계산은 목적 함수가 개선되었음을 다시 나타냅니다.{xi}k+1{xi}k1/2vi=vi1vi>k

의 평균이 범위 에 있기 때문에 실제로 바닥 / 천장 버전에 해당하는 최대 2 개의 그룹이 있습니다.{xi}[0,1)


1

확장 된 주석 ... (아마도 사소하거나 잘못되었습니다 :)

경우 및 의 최소 공배수이다 의, 우리는 유리수를 제거 할 수 있습니다 .xi=ai/biMbixi=Mxi

만약 (바닥 올림 제한) 우리는 이진 변수 사용 표현 으로부터의 거리를 사용 ( 또는 ) :yi{xi,xi}viyixiLi=xiMxiRi=xiMxi

yi=xi+Livi+Ri(1vi)=xi+(LiRi)vi+Ri=xi+Divi+Ri

그리고 원래 문제는 (?!?) 다음 을 최소화 하는 를 찾는 것과 같습니다 .vi

1i<jn|DiviDjvj|

vi{0,1},DiZ


위의 오류 fn 아이디어를 사용하여 마지막 합계를 확장 하면 실제로 각 이진 변수 바닥 / 천장이 더 가까운 선택이라는 것이 최적임을 알 수 있습니까? 따라서 형식으로 을 반올림하는 경우 만 남습니다 . 여기서 은 정수입니다. e(i,j)xnxnmn+12m
vzn

1
@ vzn : 이것이 반례라고 생각합니다. 우리가 둥근 경우 라운딩하여 기준 우리 얻을 의 오차 보유 만, 의 오차 보유 (결과의 경우와 동일하다 우리는 LCM을 곱한 합리성을 제거합니다). (0,1.4,8.7)xi(0,1,9)1.4(0,2,9)1.2
Marzio De Biasi

그럼에도 불구하고 새로운 아이디어. 다시 고려 하십시오. 요약을 확장하십시오. 및 로 여러 용어로 축소됩니다 . 그러나 후자는 같습니다 ! 그러므로 최소화의 형태로 문제를 감소 여기서 0/1이고 행 벡터 와 A는 상수 열 벡터 . 참된? 그렇다면 그것은 사소한 것이며 의 해당 요소 가 음수이면 1이되고 양수이면 0이 되도록 선택하십시오 . e(i,j)vivi2viXDXDXD
vzn

1
@vzn : 오류를 사용하여 절대 값 함수를 제거하면 ; 최소화에서 어떻게 처리합니까? ((yiyj)(xixj))22DiDjvivj
Marzio De Biasi

죄송합니다! 당신은 그것을 깨닫고 나서 그 의견을 삭제할 기회를 갖기 전에 대답했습니다. 어쨌든 그것은 여전히 ​​거의 선형 행렬 최적화 문제로 줄이는 것 같습니다. 또한 라는 용어 로 는 열 벡터입니다 ...? VVTV
vzn

1

다른 확장 된 설명 ... 잘못되었을 수 있습니다.

또한 바닥 / 천장 제한이있는 경우를 고려하고 있으며 동적 프로그래밍을 사용하여 문제를 해결하려고합니다 (공통 제수가 작을 때 작동 할 수도 있지만 어쩌면 작동 할 수도 있습니다).

하자 의 소수 부분이 될 , 우리는 작은에서 것을 고려 최대로합니다. 가장 큰 것이 라고 가정 하고 동적 프로그래밍을하고 있기 때문에 이외의 다른 모든 것에 대한 최적의 솔루션에 대해 이미 "뭔가"(이것이 무엇인지 설명하겠습니다)를 알고 있습니다.{xi}xi{xi}{xk}xk

올림 또는 내림 할 때 목적 함수의 차이를 고려하십시오 . 일부 원래 경우 반올림, 그 차이는 (정말 매우 신중하게 확인하지 않은 단지 1 만 이런 경우처럼, 정말 중요 보인다 여부에 상관없이 왼쪽 또는 오른쪽의이다 차이 항상 동일합니다); 원래 일부 가 내림 된 경우 차이는 입니다. 따라서 다음 세 가지 수량을 알고 있다면 어떤 결정을 내려야하는지 알고 있습니다.xkxixixkxi2{xk}2{xi}1

  1. 얼마나 많은 것들이 반올림됩니까?
  2. 얼마나 많은 것들이 반올림됩니까?
  3. 반올림 된 중 의 합계는 입니까?{xi}xi

OK, 1과 2는 본질적으로 동일합니다. f [N, Ndown, Sdown]을 첫 N 개의 점에 대한 최적의 솔루션으로 만들 수 있습니다 (점이 의 오름차순으로 정렬 된 경우 ). 의 반올림은 Ndown이고, 반올림 된 것에 대한 의 합 은 Sdown입니다. 그렇다면 f [N-1]에서 f [N]으로가는 방법을 작성하는 것은 어렵지 않습니다.{xi}xi{xi}

문제는 물론 Sdown은 기하 급수적으로 많은 값을 가질 수 있다는 것입니다. 그러나 공통 제수가 작은 경우 또는 먼저 그리드 포인트로 모든 것을 반올림하고 FPTAS를 얻을 수 있습니다 (위의 동적 프로그램이 올바른 경우 ...)


@Marzio De Biasi의 의견을 방금 주목했습니다. 해당 목적 함수를 사용하여이 동적 프로그래밍에 대해 생각하는 것이 훨씬 쉽습니다. 본질적으로 에 따라 정렬하기 때문에 최종 값을 고려하려고 할 때 모든 절대 값이 사라집니다. 추가 비용은 또는 입니다. DiDivi(N1)DkDivi
Rong Ge

OK 가 양수일 필요는 없습니다. 그러나 그것은 또한 처리 될 수 있습니다. 의 차이점 만 알려면됩니다. 그리고 입니다. Ndown 이전의 개수 0 동등한 S, NUP 이전의 개수 의 1. 동일Di|Divi|Ndown|Dk|+NupDkDivivjvj
룽 게르마늄

이것은 유망 해 보이지만 입력 값이 서로 너무 가까우면 더 어려움이 있다고 생각합니다. 예를 들어 및 고려하십시오 . 우리가 가질 수 이제 경우 반올림과 오류가 정확히 1 여부에 따라 의해 변경 있음을 우리는 더 이상 좋은 속성을 가질 것, 내림하지 반올림 또는 반 내림됩니다. 반면에 (원래 질문에서와 같이) 점의 순서를 변경하는 반올림을 금지하면 동적 프로그램에서 여전히 사용 가능한 반올림을 추적해야 할 것 같습니다. 그렇게 할 수 있습니까? xi=1.1xk=1.9xixkxk
Jukka Suomela

1
@ Juka Suomela, 귀하의 의견을 본 후, 우리는 더 큰 것을 반올림 하지 말고 더 작은 가진 것을 반올림 해서는 안된다는 것을 깨달았 습니다. 모든 경우를 검사하면 증명할 수 있습니다. 그런 다음 문제에 대한 답변 (반올림 제한 포함)이 명확합니다. 임계 값이 있어야합니다. 반올림 해야하는 임계 값 이상, 아래로 반올림해야합니다. 임계 값에서 일부는 반올림하고 일부는 아래로하지만 품질 만 숫자에 따라 다릅니다. 이러한 솔루션은 쉽게 열거 할 수 있습니다. {xi}{xi}
Rong Ge

1
내 말은 모든 경우를 조사하여, 가정 다른 생각, 에 의해 분할 세 지역 중 하나에 와 및 는 반올림 또는 내림되었습니다. 6 가지 경우 모두 와 를 반올림하는 것이 와 반올림하는 것보다 결코 나쁘지 않습니다 . {xi}<{xj}{xk}{xi}{xj}{xk}xixjxjxi
Rong Ge
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.