ペアワイズ距離の誤差の合計を最小化する丸め


25

次の問題の複雑さについて知られていること:

  • 与えられた:有理数x1<x2<<xn
  • 出力:整数y1y2yn
  • 目的:最小限E I J = | y jy ix jx i|
    1i<jne(i,j),
    e(i,j)=|(yjyi)(xjxi)|.

すなわち、有理数を整数に丸めて、ペアワイズ距離の誤差の合計を最小化します。各ペアi,jについて、丸められた距離yjyiを真の距離できるだけ近づけたいと思いxjxiます。


動機:退屈な地下鉄旅行、および1分の移動時間の解像度で駅の「場所」を示すポスター。ここでは、ポスターを使用してステーションi間の移動時間を検索する場合に発生するエラーを最小限に抑え、jすべてのペアで平均化しますi<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は、隣接する測定値のみを考慮する場合に機能しますか?
スレシュヴェンカト

1
@SureshVenkat:実際には、その場合、問題は非常に単純になります。各iに対して最適な積分距離を選択するだけです。つまり、各e i 1 i )を独立して最小化できます。yiyi1ie(i1,i)
ユッカスオメラ

4
Estie Arkinによるこのレポートは関連しているようです:ams.sunysb.edu/~estie/papers/beautification.pdf 出力の明確な点間距離の数を最小化することはNP困難であることが証明されています。これは、この質問のようにシフトの合計ではありませんが、レポートの硬度ガジェットがこの問題の硬度の証拠を示唆している可能性があります。
val

2
この問題は、よく知られた手法を使用して確実に解決できるはずだと感じています。賞金がこれを解決するために人々を動機付けるのに十分であるかどうかを見てみましょう。:)
ユッカスオメラ

1
@vzn:この問題の計算の複雑さに興味があります。グローバル最適を見つけることが保証されている多項式時間ローカル検索アプローチがあることを証明できる場合、報奨金はあなたのものです。
ユッカスオメラ

回答:


9

OK。DPアルゴリズムは不必要に複雑なようです。コメントを読んだ後、これは問題の単調バージョンを解決するかもしれないと思います(しかし、私はすべての詳細をチェックしていません)。

xi=xi+{xi}xi{xi}xixi+vivivivi

xixj

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

絶対値のため、式は複雑です。ただし、単調性があるため、2つの内側の絶対値の内側のものは同じ符号を持つ必要があります。外側の絶対値があるため、その符号が何であるかは実際には関係なく、式は単純化されます

|vivj({xi}{xj})|

これ以降、解が単調であるとは仮定しませんが、代わりに、すべてのペアについて上記の項の合計を最小化するように目的を変更します。この問題の解決策がたまたま単調である場合、それはもちろん単調バージョンの最適な解決策でもあります。(これは次のように考えてください:解が単調でない場合、元の問題には無限のペナルティがあり、新しい問題にはペナルティが小さい、新バージョンでも単調な解が勝った場合、単調バージョンの解でなければなりません)

{xi}>{xj}vivj

{xi}>{xj}vi<vjvi vj

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}

最後に、問題の単調整数バージョンに進みたいと思います。実際に、最適なソリューションが単調な床/天井バージョンと同じであることを証明できます。

vixivik v i > k v i = v i10,1,2,...,max{vi}kvi>kvi=vi1|{xi}{xj}|<1

我々は証明しなければならない今、平均グループ内少なくとも平均であるグループにプラス。これが当てはまらない場合は、すべてのに対してとするだけで、目的関数が改善されることを計算で再度示します。{xi}k+1{xi}k1/2vi=vi1vi>k

の平均は範囲にあるため、実際には最大で2つのグループがあり、これはフロア/天井バージョンに対応します。{xi}[0,1)


1

ただの拡張コメント...

場合との最小公倍数である S、我々は有理数を取り除くことができます:。xi=ai/biMbixi=Mxi

もし(床、CEIL制限)次に、我々は2値変数を使用することができ発現するようにからの距離を用いて(または):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アイデアを使用して最後の合計を拡張すると、最適なのは実際には各バイナリ変数floor / ceilが近い選択であることが示されますか?そのため、の形式でを丸める方法の場合のみがます。ここで、は整数です。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
マルツィオデビアシ

それにもかかわらず、新しいアイデア。もう一度考えてください。合計を展開します。とを使用して多くの項に縮小します。しかし、後者はと等しい!したがって、を最小化する形式の問題になります。ここで、は0/1 行ベクトルであり、は定数列ベクトルです。本当ですか?それは簡単で、の対応する要素が負の場合は1、正の場合は0になるように選択します。e(i,j)vivi2viXDXDXD
vzn

1
@vzn:エラーを使用して絶対値関数を排除すると、次のような用語が得られます ; 最小化でどのように処理しますか?((yiyj)(xixj))22DiDjvivj
マルツィオデビアシ

おっとっと!それに気付いた後、コメントを削除する機会があった前にあなたは答えた。また、用語で、は列ベクトルです...?VVTV
vzn

1

別の拡張コメント...間違っている可能性があります。

また、床/天井の制限のあるケースを検討しており、ダイナミックプログラミングを使用して解決しようとしています(できませんが、公約数が小さい場合に機能する可能性があります)。

してみましょうの小数部分も、我々は最も小さいから物事を考える最大に。最大のものがであり、動的プログラミングを行っているため、を除く他のすべての最適なソリューションについて「何か」(これについて説明します)をすでに知っているとします。{xi}xi{xi}{xk}xk

次に、切り上げまたはときの目的関数の違いを考慮します。いくつかの元々場合切り上げられ、その後、違いは(実際には非常に慎重にチェックしていない、単に1であるが、これはそうであるように、それは本当に重要であると思われるものかどうかに関係なく左または右のにある、違い常に同じです); 元々が切り捨てられる場合、差はです。そのため、次の3つの量がわかっている場合、どのような決定を下す必要があるかがわかります。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のコメントに気付いた。その目的関数を使用して、この動的プログラミングについて考えるのははるかに簡単です。基本的にに従ってソートしているので、最後のものを検討しようとすると、すべての絶対値が消えます。追加コストはまたはいずれか。D i v iDiDivi(N1)DkDivi
栄Ge

OKは正である必要はありません。しかし、それも処理できます。違いを伝えるだけです および。Ndownは前の数である「0に等しく、S、Nupのは前の数である S 1に等しい」Di|Divi|Ndown|Dk|+NupDkDivivjvj
栄Geの

これは前途有望に見えますが、入力値が互いに近すぎる場合、さらにいくつかの困難があると思います。たとえば、および検討してください。これで、切り上げ、ことができた場合、が切り上げられるか切り捨てられるかに応じて、エラーが正確に1だけ変化するという優れたプロパティはなくなります。一方、ポイントの順序を変更する丸めを禁止する場合(元の質問のように)、動的プログラムでまだ利用可能な丸めを追跡する必要があるようです。できますか?xi=1.1xk=1.9xixkxk
ユッカスオメラ

1
@Jukka Suomela、あなたのコメントを見た後、大きなあるものは切り捨てないでください。小さなあるものは切り上げないでください。これは、すべてのケースを調べると証明できます。次に、問題に対する答えは(ラウンド制限あり)明確です:しきい値が必要です、切り上げる必要があるしきい値を超え、切り下げる必要があります、しきい値では、一部は切り上げられ、一部は切り捨てられますが、品質のみ数に依存します。これらのソリューションは簡単に列挙できます。{xi}{xi}
栄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
栄Ge
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.