Arrondi pour minimiser la somme des erreurs dans les distances par paires


25

Que sait-on de la complexité du problème suivant:

  • Étant donné: nombres rationnels .x1<x2<<xn
  • Sortie: entiers .y1y2yn
  • Objectif: minimiser où
    1i<jne(i,j),
    e(i,j)=|(yjyi)(xjxi)|.

Autrement dit, nous aimerions arrondir les nombres rationnels en nombres entiers afin de minimiser la somme des erreurs dans les distances par paires. Pour chaque paire nous aimerions avoir la distance arrondie aussi proche que possible de la vraie distance .i,jyjyixjxi


Motivation: un voyage en métro ennuyeux, et une affiche qui montre les «emplacements» des stations à la résolution d'une minute de temps de déplacement. Ici, nous minimisons l'erreur que les gens font s'ils utilisent l'affiche pour rechercher le temps de trajet entre les stations et , en faisant la moyenne sur toutes les paires .iji<j

le plan de route

(la source)

Par exemple, ici, nous pouvons lire les approximations suivantes des distances par paire entre les quatre stations (en utilisant A, B, C, D pour plus de concision):

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

Est-ce la meilleure approximation possible? Si vous connaissiez les temps de déplacement réels, pourriez-vous trouver une meilleure solution?


Au début, cela ressemblait à un simple exercice de programmation dynamique, mais maintenant il semble qu'une certaine réflexion soit nécessaire.

Quelqu'un reconnaît-il ce problème? Ou voir un algorithme intelligent pour le résoudre?


Edit: Il existe des variantes naturelles de la question qui ont été mentionnées dans les commentaires; donnons-leur quelques noms:

  • version plancher / plafond : il est nécessaire que pour tout .iyi{xi,xi}i

  • version entière : il suffit que pour tout . iyiZi

  • version monotone : il est nécessaire que .y1y2yn

  • version non monotone : on peut avoir pour . i < jyi>yji<j

La question d'origine considère la version entière monotone, mais les réponses liées à l'une de ces versions sont les bienvenues.


Le DP fonctionne-t-il pour le cas où vous ne vous souciez que des mesures adjacentes?
Suresh Venkat

1
@SureshVenkat: En fait, dans ce cas, le problème devient très simple: il suffit de sélectionner la meilleure distance intégrale pour chaque . Autrement dit, vous pouvez minimiser chaque indépendamment. i e ( i - 1 , i )yiyi1ie(i1,i)
Jukka Suomela

4
Ce rapport d'Estie Arkin semble lié: ams.sunysb.edu/~estie/papers/beautification.pdf Il est prouvé que minimiser le nombre de distances inter-points distinctes dans la sortie est NP-difficile. Ce n'est pas la somme totale des changements, comme dans ces questions, mais peut-être que les gadgets de dureté dans le rapport pourraient suggérer une preuve de dureté pour ce problème.
val

2
J'ai le sentiment que ce problème devrait certainement être résolu en utilisant des techniques bien connues. Voyons si la prime est suffisante pour motiver les gens à résoudre ce problème. :)
Jukka Suomela

1
@vzn: Je m'intéresse à la complexité de calcul de ce problème. Si vous pouvez prouver qu'il existe une approche de recherche locale en temps polynomial qui est garantie de trouver l'optimum global, la prime vous appartient.
Jukka Suomela

Réponses:


9

D'ACCORD. L'algorithme DP semble être inutilement compliqué. Après avoir lu les commentaires, je pense que cela pourrait résoudre la version monotone du problème (mais je n'ai pas vérifié tous les détails).

Supposons d'abord que chaque , où est la partie intégrale, est la partie fractionnaire. Supposons que est arrondi à , où est un entier non négatif (bien sûr, en général, peut être négatif, mais nous pouvons toujours déplacer de sorte que le plus petit soit 0).xi=xi+{xi}{ x i } x ix i+ v i v i v i v ixi{xi}xixi+vivivivi

Maintenant, considérez le coût d'une paire , lors de cet arrondi. Le coût devrait êtrex jxixj

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

L'expression est compliquée à cause des valeurs absolues. Cependant, notez que nous avons la monotonie, donc les choses à l'intérieur des deux valeurs absolues intérieures devraient avoir le même signe. Puisque nous avons une valeur absolue extérieure, peu importe ce que ce signe est, l'expression se simplifie simplement pour

|vivj({xi}{xj})|

À partir de maintenant, nous ne supposons pas que la solution est monotone, mais à la place, nous changeons l'objectif pour minimiser la somme du terme ci-dessus pour toutes les paires. Si la solution à ce problème se trouve être monotone, alors bien sûr, c'est aussi la solution optimale pour la version monotone. (Considérez ceci comme: le problème d'origine a une pénalité infinie lorsque la solution n'est pas monotone, le nouveau problème a une pénalité plus petite, si une solution monotone gagne même dans la nouvelle version, elle doit être la solution à la version monotone)

Maintenant, nous voudrions prouver, si , dans la solution optimale, nous devons avoir .v iv j{xi}>{xj}vivj

Supposons que ce ne soit pas vrai, que nous avons une paire mais . Nous montrerons que si nous échangeons la solution devient strictement meilleure.v i < v j v i v j{xi}>{xj}vi<vjvi vj

Nous comparons d'abord le terme entre et , ici, il est vraiment clair que l'échange est strictement meilleur car dans la version non-swap, et a le même signe, l'absolu valeur sera la somme des deux valeurs absolues.j v i - v j { x j } - { x i }ijvivj{xj}{xi}

Maintenant, pour tout , nous comparons la somme des paires et . Autrement dit, nous devons comparer( i , k ) ( j , k )k(i,k)(j,k)

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

Utilisation , , , pour désigner les quatre termes à l' intérieur de la valeur absolue, il est clair que . Il est également clair que. Par convexité de la valeur absolue, nous savons. Prenez la somme sur tous les , nous savons que l'échange ne peut être que mieux.B C D A + B = C + D | A - B | | C - D | | A | + | B | | C | + | D | x kABCDA+B=C+D|AB||CD||A|+|B||C|+|D|xk

Notez que maintenant nous avons déjà une solution pour la version plancher / plafond monotone: il doit y avoir un seuil, quand est plus grand toujours arrondi, quand il est plus petit toujours arrondi, quand il est égal arrondi et certains vers le bas, tandis que la qualité de la solution ne dépend que du nombre. Nous énumérons toutes ces solutions et choisissons celle qui a la plus petite fonction objective. (Toutes ces solutions sont nécessairement monotones).{xi}

Enfin, nous aimerions passer à la version entière monotone du problème. Nous pouvons en fait prouver que la solution optimale est la même que la version Monotonic sol / plafond.

Comme nous l'avons supposé, le plus petit est 0. Regroupez tous les fonction de leurs et appelez-les groupe . Nous allons d'abord prouver qu'il n'y a pas de groupes vides, mais c'est simple, si le ème groupe est vide, pour tout suffit de laisser . Il est facile de voir que la fonction objectif s'améliore toujours (essentiellement parce que ).ix i Iv i 0 , 1 , 2 , . . . , max { v i }vixivi0,1,2,...,max{vi}v i > k v i = v i - 1 | { x i } - { x j } | < 1kvi>kvi=vi1|{xi}{xj}|<1

Nous allons maintenant prouver que la moyenne de dans le groupe est au moins la moyenne de dans le groupe plus . Si ce n'est pas vrai, laissez simplement pour tout , le calcul montre à nouveau que la fonction objectif s'améliore.k + 1 { x i } k 1 / deux v i = v i - 1 v i > k{xi}k+1{xi}k1/2vi=vi1vi>k

Puisque la moyenne de est dans l'intervalle , il y a vraiment au plus deux groupes, ce qui correspond à la version plancher / plafond.[ 0 , 1 ){xi}[0,1)


1

Juste un commentaire étendu ... (peut-être trivial et / ou faux :)

Si et est le plus petit multiple commun des s, alors on peut se débarrasser des : . M b i x i = M x ixi=ai/biMbixi=Mxi

Si (plancher, restriction de plafond) alors nous pouvons utiliser des variables binaires pour exprimer utilisant sa distance de ( ou ):v i y i x iyi{xi,xi}viyixiR i = x i - M x iLi=xiMxiRi=xiMxi

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

Et le problème d'origine devrait (?!?) Être équivalent à trouver le qui minimise:vi

1i<jn|DiviDjvj|

avecvi{0,1},DiZ


en développant votre dernière sommation en utilisant l' erreur fn ci-dessus, pourrait-on montrer que l'optimum est en fait juste le choix où chaque étage / plafond variable binaire est plus proche de ? ce qui ne laisse que le cas de l'arrondi de sous la forme où est un entier. x n x n m n + 1e(i,j)xnxn mmn+12m
vzn

1
@vzn: Je pense que c'est un contre-exemple. Si nous arrondissons utilisant les critères d' arrondi , nous obtenons qui a une erreur de , mais a une erreur de (le résultat est le même si on élimine les logiques multipliant par le LCM). (0,1.4,8.7) ( 0 , 1 , 9 ) 1,4 ( 0 , 2 , 9 ) 1,2xi(0,1,9)1.4(0,2,9)1.2
Marzio De Biasi

ok néanmoins nouvelle idée. considérons nouveau. développer la sommation. il se réduira à de nombreux termes avec et aussi . mais ce dernier est égal à ! par conséquent, il se réduit à un problème sous la forme d'une minimisation de où est un vecteur de ligne 0/1 et est un vecteur de colonne constant . vrai? alors c'est trivial, et il suffit de sélectionner le tel qu'il soit 1 si l'élément correspondant dans est négatif et 0 s'il est positif .... QED? v i v 2e(i,j)vi viXDXDXDvi2viXDXDXD
vzn

1
@vzn: si vous utilisez l' pour éliminer la fonction de valeur absolue, alors vous obtenez des termes comme ; comment les gérez-vous dans la minimisation? -2DiDjvivj((yiyj)(xixj))22DiDjvivj
Marzio De Biasi

Oops! vous avez répondu avant d'avoir eu la possibilité de supprimer ce commentaire après avoir réalisé que .. de toute façon, il semble toujours se réduire à un problème d'optimisation de matrice presque linéaire? également avec un terme où est un vecteur colonne ...? VVVTV
vzn

1

Un autre commentaire étendu ... pourrait être faux.

J'envisage également le cas des restrictions de plancher / plafond, et j'essaie de le résoudre en utilisant la programmation dynamique (je ne peux pas, mais peut-être que cela fonctionne lorsque le diviseur commun est petit).

Soit la partie fractionnaire de , nous considérons les choses du plus petit au plus grand. Supposons que le plus grand soit , et parce que nous faisons de la programmation dynamique, nous savons déjà "quelque chose" (je vais expliquer ce qu'est ce quelque chose) sur la solution optimale pour tout le reste sauf .x i { x i } { x k } x k{xi}xi{xi}{xk}xk

Considérons maintenant la différence de fonction objective lorsque nous arrondissons vers le haut ou vers le bas. Si à l'origine certains sont arrondis, alors la différence est simplement de 1 (n'ont pas vraiment été vérifiés très attentivement mais il semble que ce soit le cas, il est vraiment important que peu importe que soit à gauche ou à droite de , la différence est toujours le même); si à l'origine certains sont arrondis, alors la différence est . Donc: nous savons quelle décision nous devons prendre si les trois quantités suivantes sont connues:xkx i x k x i 2 { x k } - 2 { x i } - 1xixixkxi2{xk}2{xi}1

  1. combien de choses sont arrondies
  2. combien de choses sont arrondies
  3. quelle est la somme de parmi les arrondisx i{xi}xi

OK, 1 et 2 sont essentiellement les mêmes, nous pouvons laisser f [N, Ndown, Sdown] la solution optimale pour les N premiers points (lorsque les points sont triés par ordre croissant de ), le nombre de vers le bas arrondi de Ndown est, et la somme de pour ceux qui sont en bas arrondi est Sdown. Il n'est alors pas difficile d'écrire comment passer de f [N-1] à f [N].x i { x i{xi}xi{xi}

Le problème est bien sûr que Sdown peut avoir de nombreuses valeurs exponentielles. Mais cela fonctionne lorsque le diviseur commun est petit ou que nous pouvons tout arrondir à un point de grille en premier et obtenir un FPTAS (si le programme dynamique ci-dessus est correct ...)


Je viens de remarquer le commentaire de @Marzio De Biasi. Il est beaucoup plus facile de penser à cette programmation dynamique en utilisant cette fonction objectif. Puisque nous essentiellement selon , lorsque nous essayons de considérer le dernier, toute la valeur absolue disparaît. Le coût supplémentaire est soit ou . Di ( N - 1 ) D k - D i v iDivi(N1)DkDivi
Rong Ge

OK ne doit pas être positif. Mais cela peut aussi être géré. Il suffit de faire la différence entreet . Ndown est le nombre de précédents qui sont égaux à 0, Nup est le nombre de précédents égal à 1.| D i v i | N d o w n | D kDi|Divi|v j v jNdown|Dk|+NupDkDivivjvj
Rong Ge

Cela semble prometteur, mais je pense qu'il y a d'autres difficultés si les valeurs d'entrée sont trop proches les unes des autres. Considérons par exemple et . Maintenant, si nous pouvions avoir arrondi vers le haut et arrondi vers le bas, nous n'aurions plus la propriété agréable que l'erreur change précisément de 1 selon que est arrondi vers le haut ou vers le bas. D'un autre côté, si nous interdisons un arrondi qui change l'ordre des points (comme je l'ai fait dans la question d'origine), alors il semble que nous devons garder une trace des arrondis possibles qui sont encore disponibles dans le programme dynamique; pouvons-nous faire cela? x k = 1,9 x i x k x kxi=1.1xk=1.9xixkxk
Jukka Suomela

1
@Jukka Suomela, Après avoir vu votre commentaire, je me suis rendu compte que nous ne devrions jamais laisser quelque chose avec un plus grand être arrondi vers le bas tandis que quelque chose avec un plus petit être arrondi vers le haut. Cela peut être prouvé si vous examinez tous les cas. Ensuite, la réponse au problème (avec des restrictions d'arrondi) est claire: il doit y avoir un seuil, au-dessus du seuil que vous devez arrondir, en dessous vous devez arrondir, au seuil peut-être que certains doivent être arrondis et certains en bas mais la qualité seulement dépendent du nombre. Ces solutions peuvent être facilement énumérées. { x i }{xi}{xi}
Rong Ge

1
En examinant tous les cas que je veux dire, supposons , pensez à un autre dans l'une des trois régions divisées par et , et est arrondi vers le haut ou vers le bas. Dans les 6 cas, arrondir vers le bas et vers le haut n'est jamais pire que arrondir vers le bas et vers le haut. { 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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.