J'ai besoin de prendre un graphe 2D de n points et de réduire les points r (où r est un nombre spécifique inférieur à n). Par exemple, je peux avoir deux ensembles de données avec un nombre légèrement différent de points totaux, disons 1021 et 1001 et je voudrais forcer les deux ensembles de données à avoir 1000 points. Je connais deux algorithmes de simplification: Lang Simplification et Douglas-Peucker. J'ai utilisé Lang dans un projet précédent avec des exigences légèrement différentes.Algorithme de simplification des graphes Conseil nécessaire
Les propriétés spécifiques de l'algorithme Je cherche est:
1) doit conserver la forme de la ligne
2) doit me permettre réduis ensemble de données à un certain nombre de points
3) est relativement rapide
Ce post est une discussion sur les mérites des différents algorithmes. Je posterai un second message pour des conseils sur les implémentations en Java ou Groovy (pourquoi réinventer la roue).
Je suis préoccupé par l'exigence 2 ci-dessus. Je ne suis pas assez expert dans ces algorithmes pour savoir si je peux dicter le nombre exact de points de sortie. L'implémentation de Lang que j'ai utilisée a pris lookAhead, tolérance et le tableau de Points en entrée, donc je ne vois pas comment dicter le nombre de points dans la sortie. C'est une exigence critique de mes besoins actuels. Peut-être que cela est dû à la mise en œuvre spécifique de Lang que nous avions utilisé, mais je n'ai pas vu beaucoup d'informations sur Lang sur le web. Alternativement nous pourrions utiliser Douglas-Peucker mais encore une fois je ne suis pas sûr si le nombre de points dans la sortie peut être spécifié.
Je devrais ajouter que je ne suis pas un expert sur ces types d'algorithmes ou n'importe quel genre de calcul mathématique, ainsi je recherche de simples conseils de type mortel :) Comment est-ce que je satisfais aux conditions 1 et 2 ci-dessus? Je sacrifierais la performance pour la bonne solution.
Avec le graphique 2d, vous voulez dire quelque chose comme 'y = f (x)' approché avec une liste de paires ((x, y) 'où' x [i]
6502