Pembulatan untuk meminimalkan jumlah kesalahan dalam jarak berpasangan


25

Apa yang diketahui tentang kompleksitas masalah berikut:

  • Diberikan: bilangan rasional .x1<x2<<xn
  • Output: bilangan bulat .y1y2yn
  • Tujuan: kecilkan mana
    1i<jne(i,j),
    e(i,j)=|(yjyi)(xjxi)|.

Yaitu, kami ingin membulatkan bilangan rasional ke bilangan bulat sehingga kami meminimalkan jumlah kesalahan dalam jarak berpasangan. Untuk setiap pasangan kami ingin memiliki jarak bulat sedekat mungkin dengan jarak sebenarnya .y j - y saya x j - x sayai,jyjyixjxi


Motivasi: perjalanan metro yang membosankan, dan poster yang menunjukkan "lokasi" stasiun dengan resolusi satu menit waktu perjalanan. Di sini kita meminimalkan kesalahan yang dilakukan orang jika mereka menggunakan poster untuk mencari waktu perjalanan antara stasiun dan , rata-rata untuk semua pasangan .j i < jiji<j

peta rute

(sumber)

Sebagai contoh, di sini kita dapat membaca perkiraan jarak berpasangan berikut ini antara empat stasiun (menggunakan A, B, C, D untuk singkatnya):

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

Apakah ini perkiraan terbaik? Jika Anda tahu waktu perjalanan yang sebenarnya, dapatkah Anda menemukan solusi yang lebih baik?


Pada awalnya, ini terdengar seperti latihan sederhana dalam pemrograman dinamis, tetapi sekarang tampaknya diperlukan sejumlah pemikiran aktual.

Adakah yang mengenali masalah ini? Atau lihat algoritma pintar untuk menyelesaikannya?


Sunting: Ada beberapa varian alami dari pertanyaan yang telah disebutkan dalam komentar; mari beri mereka beberapa nama:

  • versi floor / ceil : diperlukan bahwa untuk semua .iyi{xi,xi}i

  • versi integer : cukup untuk semua . iyiZi

  • versi monoton : diperlukan .y1y2yn

  • versi non-monoton : kita dapat memiliki untuk . i < jyi>yji<j

Pertanyaan awal mempertimbangkan versi bilangan bulat monotonik, tetapi jawaban yang terkait dengan salah satu dari versi ini diterima.


Apakah DP berfungsi untuk kasing saat Anda hanya peduli dengan pengukuran yang berdekatan?
Suresh Venkat

1
@ SureshVenkat: Sebenarnya, dalam hal ini masalahnya menjadi sangat sederhana: Anda tinggal memilih jarak integral terbaik untuk setiap i . Artinya, Anda dapat meminimalkan setiap e ( i - 1 , i ) secara independen. yiyi1ie(i1,i)
Jukka Suomela

4
Laporan oleh Estie Arkin ini tampaknya terkait: ams.sunysb.edu/~estie/papers/beautification.pdf Terbukti bahwa meminimalkan jumlah jarak antar-titik yang berbeda dalam output adalah NP-hard. Ini bukan jumlah total dari pergeseran, seperti dalam pertanyaan ini, tetapi mungkin gadget kekerasan dalam laporan dapat menyarankan bukti kekerasan untuk masalah ini.
val

2
Saya merasa bahwa masalah ini harus dipecahkan dengan menggunakan teknik-teknik terkenal. Mari kita lihat apakah hadiah itu cukup untuk memotivasi orang untuk menyelesaikan ini. :)
Jukka Suomela

1
@ vzn: Saya tertarik pada kompleksitas komputasi masalah ini. Jika Anda dapat membuktikan bahwa ada pendekatan pencarian lokal polinomial waktu yang dijamin untuk menemukan global optimal, hadiahnya adalah milik Anda.
Jukka Suomela

Jawaban:


9

BAIK. Algoritma DP tampaknya tidak perlu rumit. Setelah membaca komentar saya pikir ini mungkin menyelesaikan masalah versi Monoton (tapi saya belum memeriksa setiap detail).

Pertama, anggap setiap , di mana x i adalah bagian integral, { x i } adalah bagian fraksional. Asumsikan x i dibulatkan menjadi x i+ v i , di mana v i adalah integer nonnegatif (tentu saja secara umum v i bisa negatif, tetapi kita selalu dapat bergeser sehingga v terkecil i adalah 0).xi=xi+{xi}xi{xi}xixi+vivivivi

Sekarang, pertimbangkan biaya untuk pasangan , x j saat melakukan pembulatan ini. Biaya seharusnyaxixj

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

Ungkapannya rumit karena nilai absolutnya. Namun, perhatikan bahwa kita memiliki sifat monoton, sehingga hal-hal di dalam dua nilai absolut batin harus memiliki tanda SAMA. Karena kita memiliki nilai absolut terluar, tidak peduli apa tanda itu, ungkapan yang disederhanakan

|vivj({xi}{xj})|

Mulai sekarang kami tidak menganggap solusinya monoton, tetapi sebaliknya, kami mengubah tujuan untuk meminimalkan jumlah istilah di atas untuk semua pasangan. Jika solusi untuk masalah ini adalah monotonik, maka tentu saja itu juga solusi optimal untuk versi monotonik. (Anggap ini sebagai: masalah asli memiliki penalti tak terbatas ketika solusinya tidak monoton, masalah baru memiliki penalti lebih kecil, jika solusi monoton menang bahkan dalam versi baru, itu harus menjadi solusi untuk versi monoton)

Sekarang kita ingin membuktikan, jika , dalam solusi optimal kita harus memiliki v iv j .{xi}>{xj}vivj

Asumsikan ini tidak benar, bahwa kita memiliki pasangan tetapi v i < v j . Kami akan menunjukkan bahwa jika kami menukar v i v j solusinya menjadi sangat baik.{xi}>{xj}vi<vjvi vj

Pertama kita membandingkan istilah antara dan j , di sini sangat jelas bahwa swapping benar-benar lebih baik karena dalam versi non-swap, v i - v j dan { x j } - { x i } memiliki tanda yang sama, absolut nilai akan menjadi jumlah dari dua nilai absolut.ijvivj{xj}{xi}

Sekarang untuk apa pun , kami membandingkan jumlah pasangan ( i , k ) dan ( j , k ) . Artinya, kita perlu membandingkank(i,k)(j,k)

dan | v j - v k - ( { x i } - { x k } ) | + ||vivk({xi}{xk})|+|vjvk({xj}{xk})|.|vjvk({xi}{xk})|+|vivk({xj}{xk})|

Gunakan , B , C , D untuk menunjukkan empat hal dalam nilai absolut, jelas bahwa A + B = C + D . Juga jelas bahwa | A - B | | C - D | . Dengan cembungnya nilai absolut, kita tahu | A | + | B | | C | + | D | . Ambil jumlah atas semua x kABCDA+B=C+D|AB||CD||A|+|B||C|+|D|xkKita tahu bertukar hanya bisa lebih baik.

Perhatikan bahwa sekarang kita sudah memiliki solusi untuk versi lantai / langit-langit Monoton: harus ada ambang, ketika lebih besar selalu dibulatkan, ketika lebih kecil selalu dibulatkan ke bawah, ketika itu adalah putaran yang sama beberapa ke atas dan beberapa turun, sedangkan kualitas solusi hanya tergantung pada jumlahnya. Kami menghitung semua solusi ini dan memilih yang memiliki fungsi objektif terkecil. (Semua solusi ini harus monoton).{xi}

Akhirnya kami ingin pergi ke versi integer monoton masalah. Kami benar-benar dapat membuktikan solusi optimal sama dengan versi lantai / langit-langit Monoton.

Seperti kita mengasumsikan, yang terkecil adalah 0. Grup semua x i 's menurut mereka v i ' s, dan memanggil mereka kelompok 0 , 1 , 2 , . . . , maks { v i } . Pertama-tama kita harus membuktikan bahwa tidak ada grup kosong, tetapi ini sederhana, jika grup k -th kosong, untuk v i > k biarkan saja v i = v i - 1vixivi0,1,2,...,max{vi}kvi>kvi=vi1. Mudah untuk melihat fungsi objektif selalu membaik (pada dasarnya karena ).|{xi}{xj}|<1

Sekarang kita akan membuktikan, rata-rata dalam kelompok k + 1 adalah setidaknya rata-rata { x i } dalam kelompok k ditambah 1 / 2 . Jika ini tidak benar, cukup biarkan v i = v i - 1 untuk semua v i > k , perhitungan lagi menunjukkan fungsi objektif membaik.{xi}k+1{xi}k1/2vi=vi1vi>k

Karena rata-rata dalam kisaran [ 0 , 1 ) , sebenarnya ada paling banyak dua kelompok, yang sesuai dengan versi lantai / ceil.{xi}[0,1)


1

Hanya komentar yang panjang ... (mungkin sepele dan / atau salah :)

Jika dan M adalah kelipatan persekutuan terkecil dari b i s, maka kita dapat menyingkirkan rasional: x ' i = M * x i .xi=ai/biMbixi=Mxi

If yi{xi,xi} (floor,ceil restriction) then we can use binary variables vi to express yi using its distance from xi (Li=xiMxi or Ri=xiMxi):

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

And the original problem should (?!?) be equivalent to finding the vi that minimize:

1i<jn|DiviDjvj|

with vi{0,1},DiZ


expanding your last summation using the e(i,j) error fn idea above, could it be shown the optimum is actually just the choice where each binary variable floor/ceil is closer to xn? so that leaves only the case of how to round for xn in the form mn+12 where m is an integer.
vzn

1
@vzn: I think this is a counterexample. If we round (0,1.4,8.7) using rounding xi criteria we get (0,1,9) that has an error of 1.4, but (0,2,9) has an error of 1.2 (the result is the same if we eliminate the rationals multiplying by the LCM).
Marzio De Biasi

ok nevertheless new idea. consider e(i,j) again. expand the summation. it will reduce to many terms with vi and also vi2. but the latter is equal to vi! therefore it reduces to a problem in the form of minimizing XD where X is a 0/1 row vector and D is a constant column vector. true? then that is trivial, and just select the X such that it is 1 if the corresponding element in D is negative and 0 if it is positive.... QED?
vzn

1
@vzn: if you use the ((yiyj)(xixj))2 error to eliminate the absolute value function, then you get terms like 2DiDjvivj; how do you handle them in the minimization?
Marzio De Biasi

oops! you answered before I had a chance to delete that comment after realizing that.. anyway it still seems to reduce to some almost linear matrix optimization problem? also with a term VVT where V is a column vector...?
vzn

1

Another extended comment... Could be wrong.

I'm also considering the case with floor/ceil restrictions, and I'm trying to solve it using dynamic programming (I can't, but maybe it works when the common divisor is small).

Let {xi} be the fractional part of xi, we consider things from the smallest {xi} to the largest. Suppose the largest is {xk}, and because we are doing dynamic programming we already know "something" (I will explain what this something is) about optimal solution for everything else except xk.

Now consider the difference in objective function when we round xk up or down. If originally some xi is rounded up, then the difference is simply 1 (haven't really checked very carefully but seems like this is the case, it is really important that no matter whether xi is to the left or right of xk, the difference is always the same); if originally some xi is rounded down, then the difference is 2{xk}2{xi}1. So: we know what decision we should make if the following three quantities are known:

  1. how many things are rounded up
  2. how many things are rounded down
  3. what is the sum of {xi} among those xi's that are rounded down

OK, 1 and 2 are essentially the same, we can let f[N, Ndown, Sdown] be the optimal solution for the first N points (when the points are sorted in ascending order of {xi}), the number of xi's rounded down is Ndown, and the sum of {xi} for those that are rounded down is Sdown. Then it is not hard to write out how to go from f[N-1] to f[N].

The problem is of course, Sdown can have exponentially many values. But it works when either the common divisor is small, or we can round everything to a grid point first and get a FPTAS (if the above dynamic program is correct...)


Just noticed @Marzio De Biasi 's comment. It is much easier to think about this Dynamic programming using that objective function. Since we are essentially sorting according to Di, when we try to consider the final one, all the absolute value disappears. The additional cost is either Divi or (N1)DkDivi.
Rong Ge

OK Di's does not have to be positive. But that can also be handled. We only need to tell the difference between |Divi| and Ndown|Dk|+NupDkDivi. Ndown is the number of previous vj's that are equal to 0, Nup is the number of previous vj's equal to 1.
Rong Ge

This looks promising, but I think there are some further difficulties if the input values are too close to each other. Consider e.g. xi=1.1 and xk=1.9. Now if we could have xi rounded up and xk rounded down, we would no longer have the nice property that the error changes by precisely 1 depending on whether xk is rounded up or down. On the other hand, if we forbid a rounding that changes the order of the points (as I have in the original question), then it seems that we need to keep track of possible roundings that are still available in the dynamic program; can we do that?
Jukka Suomela

1
@Jukka Suomela, After I saw your comment, I realized that we should never let something with larger {xi} be rounded down while something with smaller {xi} be rounded up. This can be proved if you examine all the cases. Then the answer to the problem (with round restrictions) is clear: there must be a threshold, above the threshold you should round up, below you should round down, at the threshold maybe some should be round up and some down but the quality only depend on the number. These solutions can be easily enumerated.
Rong Ge

1
By examine all the cases I mean, suppose {xi}<{xj}, think of another {xk} in one of the three regions split by {xi} and {xj}, and {xk} is either rounded up or down. In all of the 6 cases rounding xi down and xj up is never worse than rounding xj down and xi up.
Rong Ge
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.