Округлення, щоб мінімізувати суму помилок на парних відстанях


25

Що відомо про складність наступної проблеми:

  • Дано: раціональні числа .x1<x2<<xn
  • Вихід: цілі числа .y1y2yn
  • Мета: мінімізувати де
    1i<jne(i,j),
    e(i,j)=|(yjyi)(xjxi)|.

Тобто, ми б хотіли округлити раціональні числа до цілих чисел, щоб ми мінімізували суму помилок на парних відстанях. Для кожної пари ми хотіли б, щоб округлена відстань максимально наближена до істинної відстані .i,jyjyixjxi


Мотивація: нудна поїздка на метро та плакат, який показує "локації" станцій з роздільною здатністю хвилини подорожі. Тут ми мінімізуємо помилку, яку роблять люди, якщо вони використовують плакат для пошуку часу подорожі між станціями та , усереднюючи всі пара .iji<j

карта маршруту

(джерело)

Наприклад, тут ми можемо прочитати наступні наближення парних відстаней між чотирма станціями (використовуючи стислість A, B, C, D):

  • A – B ≈ 1 хвилина, B – C ≈ 2 хвилини, C – D ≈ 2 хвилини
  • A – C ≈ 3 хвилини, B – D ≈ 4 хвилини
  • A – D ≈ 5 хвилин

Це найкраще можливе наближення? Якби ви знали фактичний час подорожі, чи могли б ви знайти краще рішення?


Спочатку це звучало як проста вправа в динамічному програмуванні, але зараз здається, що потрібна деяка кількість фактичного мислення.

Хтось визнає цю проблему? Або бачите розумний алгоритм її вирішення?


Редагувати: Є кілька природних варіантів питання, які були згадані в коментарях; давайте дамо їм кілька імен:

  • версія для підлоги / стелі : потрібно, щоб для всіх .iyi{xi,xi}i

  • ціла версія: достатньо для всіх . iyiZi

  • монотонна версія: потрібно, щоб .y1y2yn

  • немонотонна версія: ми можемо мати для . i < jyi>yji<j

В оригінальному запитанні розглядається монотонна ціла версія, але відповіді, пов'язані з будь-якою з цих версій, вітаються.


Чи працює DP у випадку, коли ви дбаєте лише про суміжні вимірювання?
Суреш Венкат

1
@SureshVenkat: Насправді, у такому випадку проблема стає дуже простою: ви вибираєте найкраще цілісне відстань для кожного . Тобто ви можете мінімізувати кожен незалежно. i e ( i - 1 , i )yiyi1ie(i1,i)
Jukka Suomela

4
Цей звіт Есті Аркіна здається пов'язаним: ams.sunysb.edu/~estie/papers/beautification.pdf Доведено, що мінімізація кількості чітких міжточкових відстаней на виході є важкою для NP. Це не загальна сума змін, як у цьому питанні, але, можливо, гаджети твердості у звіті можуть запропонувати твердість для цієї проблеми.
val

2
У мене є відчуття, що ця проблема, безумовно, повинна бути вирішена за допомогою відомих методик. Давайте подивимось, чи достатньо винагороди, щоб мотивувати людей на вирішення цього питання. :)
Jukka Suomela

1
@vzn: Мене цікавить обчислювальна складність цієї проблеми. Якщо ви зможете довести, що існує локальний підхід до поліноміального часу, який гарантовано знайде глобальний оптимум, виграш за вами.
Jukka Suomela

Відповіді:


9

ДОБРЕ. Алгоритм DP здається надмірно складним. Прочитавши коментарі, я думаю, що це може вирішити монотонну версію проблеми (але я не перевіряв кожну деталь).

Спочатку припустимо, що кожен , де є невід'ємною частиною, - дробова частина. Припустимо, що округляється до , де - це негативне ціле число (звичайно, може бути негативним, але ми завжди можемо зміщуватися так, що найменший дорівнює 0).x i{ x i } xxi=xi+{xi}xi{xi}x i+ v i v i v i v i vxixi+vivivivi

А тепер врахуйте вартість пари , коли робите це округлення. Вартість повинна бутиx jxixj

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

Вираз складний через абсолютні значення. Однак зауважте, що ми маємо монотонність, тому речі, що знаходяться у двох внутрішніх абсолютних значеннях, повинні мати знак САМО. Оскільки у нас є зовнішнє абсолютне значення, воно насправді не має значення, що це за знак, вираз просто спрощується

|vivj({xi}{xj})|

Відтепер ми не вважаємо, що рішення є монотонним, але замість цього ми змінюємо ціль, щоб мінімізувати суму вищевказаного члена для всіх пар. Якщо рішення цієї проблеми буде монотонним, то, звичайно, це також є оптимальним рішенням для монотонної версії. (Подумайте про це як: оригінальна проблема має нескінченне покарання, коли рішення не є монотонним; нова проблема має менший штраф, якщо монотонне рішення перемагає навіть у новій версії, воно повинно бути рішенням монотонної версії)

Тепер ми хотіли б довести, якщо , в оптимальному рішенні ми повинні мати .v iv j{xi}>{xj}vivj

Припустимо, це неправда, що у нас є пара але . Ми покажемо, що якщо ми рішення стає суворо кращим.v i < v j v i v j{xi}>{xj}vi<vjvi vj

Спочатку ми порівнюємо термін між та , тут дійсно зрозуміло, що заміна строго краща, тому що у версії без swap і мають однаковий знак, абсолютний значення буде сумою двох абсолютних значень.iv i - v j { x j } - { x i }jvivj{xj}{xi}

Тепер для будь-якого порівняємо суму пар та . Тобто нам потрібно порівняти( i , k ) ( j , k )k(i,k)(j,k)

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

Використання , , , , щоб позначити чотири умови всередині абсолютного значення, то ясно , що . Також зрозуміло, що. За опуклістю абсолютної величини ми знаємо. Візьміть суму за всі , ми знаємо, що обмін може бути тільки кращим.B C D A + B = C + D | А - В | | C - D | | А | + | Б | | C | + | Д | х кABCDA+B=C+D|AB||CD||A|+|B||C|+|D|xk

Зауважте, що зараз у нас вже є рішення для монотонної версії підлога / стеля: повинен бути поріг, коли більший завжди округлий, коли менший завжди округлий, коли він дорівнює круговому деякий вгору і деякі знижуються, тоді як якість рішення залежить лише від кількості. Перерахуємо всі ці рішення і виберемо той, з найменшою цільовою функцією. (Усі ці рішення обов'язково є монотонними).{xi}

Нарешті, ми хотіли б перейти до одноманітної цілої версії проблеми. Насправді ми можемо довести, що оптимальне рішення таке саме, як і монотонна версія для підлоги / стелі.

Як ми припускали, найменший дорівнює 0. всі відповідно до їх і назвіть їх групи . Спершу доведемо, що порожніх груп немає, але це просто, якщо -та група порожня, для будь-якого просто нехай . Легко бачити, що цільова функція завжди вдосконалюється (в основному тому, що ).х я v я 0 , 1 , 2 , . . . , max { v i } k v i > k v i = v ivixivi0,1,2,...,max{vi}kvi>k| { x i } - { x j } | < 1vi=vi1|{xi}{xj}|<1

Тепер доведемо, що середнє значення у групі становить щонайменше середнє значення у групі плюс . Якщо це неправда, просто нехай для всіх , обчислення знову показує, що цільова функція покращується.k + 1 { x i } k 1{xi}k+1{xi}kv я = v я - 1 V я > до1/2vi=vi1vi>k

Оскільки середнє значення знаходиться в інтервалі , дійсно існує максимум дві групи, що відповідає версії підлога / стеля.[ 0 , 1 ){xi}[0,1)


1

Просто розширений коментар ... (можливо, тривіальний та / або неправильний :)

Якщо і є найменш поширеним кратним s, то ми можемо позбутися раціоналів: . Mxi=ai/biMx i = M x ibixi=Mxi

Якщо (обмеження підлоги, стелі), то ми можемо використовувати бінарні змінні для вираження використовуючи відстань від ( або ):v i y i x i L i = x i - M x iRyi{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 вище, чи може бути показано, що оптимальним насправді є лише вибір, де кожна двійкова змінна підлога / стеля ближче до ? так що залишається лише випадок того, як для у формі де - ціле число. x n x n m n + 1e(i,j)xnxn мmn+12m
vzn

1
@vzn: Я думаю, що це контрприклад. Якщо ми округлимо використовуючи критерії округлення отримаємо що має помилку , але має помилку (результат такий же, якщо ми виключаємо множення раціоналів на МКМ). x i ( 0 , 1 , 9 ) 1,4 ( 0 , 2 ,(0,1.4,8.7)xi(0,1,9)1.41.2(0,2,9)1.2
Marzio De Biasi

добре все-таки нова ідея. ще раз розглянемо . розширити підсумки. він зменшиться до багатьох термінів з а також . але останній дорівнює ! тому він зводиться до задачі у вигляді мінімізації де - вектор рядка 0/1, а - постійний вектор стовпця . правда? то це тривіально, і просто виберіть таким, що він дорівнює 1, якщо відповідний елемент у негативний, і 0, якщо він є позитивним .... QED? v i v 2 i v i X D X De(i,j)vivi2viXDXDDXD
vzn

1
@vzn: якщо ви використовуєте для усунення функції абсолютного значення, то ви отримуєте такі терміни, як ; як ти з ними зводишся до мінімізації? -2DiDjv((yiyj)(xixj))22DiDjvivj
Marzio De Biasi

ой! Ви відповіли, перш ніж у мене з'явився шанс видалити цей коментар після того, як зрозумів, що ... все одно це все ще здається звести до якоїсь проблеми майже з лінійною оптимізацією матриці? також із терміном де - вектор стовпця ...? VVVTV
vzn

1

Ще один розширений коментар ... Може бути помилковим.

Я також розглядаю випадок із обмеженнями підлоги / перекриття, і намагаюся вирішити це за допомогою динамічного програмування (я не можу, але, можливо, він працює, коли загальний дільник невеликий).

Нехай є дробовою частиною , ми вважаємо речі від найменшої до найбільшої. Припустимо, найбільшим є , і тому, що ми робимо динамічне програмування, ми вже знаємо "щось" (я поясню, що це щось) про оптимальне рішення для всього іншого, крім .x i {{xi}xi{ x k } x k{xi}{xk}xk

Тепер розглянемо різницю цільової функції, коли ми вгору або вниз. Якщо спочатку деякий округлюється, то різниця просто 1 (насправді не перевірено дуже ретельно, але здається, що це так, насправді важливо, що незалежно від того, знаходиться зліва чи справа від , різниця завжди однакова); якщо спочатку деякий округлюється вниз, то різниця дорівнює . Отже: ми знаємо, яке рішення нам слід прийняти, якщо відомі наступні три кількості:x i x i x k x i 2xkxixixkxi2{xk}2{xi}1

  1. скільки речей закруглено
  2. скільки речей округлено вниз
  3. яка сума серед тих , які округлені внизx i{xi}xi

Добре, 1 і 2 по суті однакові, ми можемо дозволити f [N, Ndown, Sdown] оптимальним рішенням для перших N точок (коли точки сортуються у порядку зростання ), кількість Округлений вниз - Ndown, а сума для округлених вниз - Sdown. Тоді не важко записати, як перейти від f [N-1] до f [N].x i { x i }{xi}xi{xi}

Проблема, звичайно, Sdown може мати експоненціально багато значень. Але він працює, коли або загальний дільник малий, або ми можемо спершу все округлити до точки сітки та отримати FPTAS (якщо вищевказана динамічна програма правильна ...)


Щойно помітив коментар @Marzio De Biasi. Набагато простіше думати про це динамічне програмування за допомогою цієї цільової функції. Оскільки ми по суті відповідно до , коли ми намагаємось розглянути остаточне, все абсолютне значення зникає. Додаткова вартість - або або . D i v i ( N - 1 ) D k - D i v iDiDivi(N1)DkDivi
Ронг Ге

Гаразд не повинен бути позитивним. Але з цим також можна впоратися. Нам потрібно лише сказати різницю міжі . Ndown - кількість попередніх , які дорівнюють 0, Nup - кількість попередніх , рівних 1.| Д яDiN d o w n | Д к | + N u p D k - D i v i v j|Divi|Ndown|Dk|+NupDkDivivjvj
Rong Ge

Це виглядає багатообіцяюче, але, думаю, є певні труднощі, якщо вхідні значення занадто близькі один до одного. Розглянемо, наприклад, і . Тепер, якщо ми могли б вгору і округлити вниз, ми більше не матимемо приємного властивості, що помилка змінюється точно на 1 залежно від того , округлюється чи вниз . З іншого боку, якщо ми забороняємо округлення, яке змінює порядок балів (як у мене в оригінальному запитанні), то, здається, нам потрібно слідкувати за можливими округленнями, які все ще доступні в динамічній програмі; ми можемо це зробити? x k = 1,9 x i x kxi=1.1xk=1.9xixkxk
Jukka Suomela

1
@Jukka Suomela. Після того, як я побачив ваш коментар, я зрозумів, що ми ніколи не повинні дозволяти щось з більшим округляти вниз, тоді як щось з меншими округляти. Це можна довести, якщо вивчити всі справи. Тоді відповідь на проблему (з обмеженнями круглих) зрозуміла: має бути поріг, вище порогу, ви повинні округлити, нижче ви повинні округлити, на порозі, можливо, деякі повинні бути закруглені, а деякі вниз, але лише якість залежать від кількості. Ці рішення можна легко перерахувати. {{xi}{xi}
Rong Ge

1
Розглянувши всі випадки, які я маю на увазі, припустимо, , придумайте інший в одній з трьох областей, розділених на і , і або округлено вгору або вниз. У всіх 6 випадках округлення вниз і вгору ніколи не гірше, ніж округлення вниз і вгору. { x k } { x i } { x j } { x k } x i x j x j x i{xi}<{xj}{xk}{xi}{xj}{xk}xixjxjxi
Rong Ge
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.