Polygone dans le problème de généralisation des polygones

9

Je voudrais m'excuser auprès de tous les articles ci-dessous. Vous avez choisi le mauvais forum pour publier cela à l'origine. Cependant, plutôt que d'en faire un gaspillage complet, j'ai retravaillé la question pour qu'elle soit un véritable problème "d'informatique théorique".

Problème: Créez un algorithme qui prend un ensemble de n points ordonnés dans un plan 2D qui forment le contour d'un simple polygone A qui peut être concave ou non et crée un nouveau polygone B avec m points tels que:

  1. tous les points de A sont contenus dans B
  2. 3 <= m <n
  3. B est le polygone dans l'ensemble de tous les B avec la plus petite surface
  4. B doit être un simple polygone (c'est-à-dire sans auto-intersection).
  5. L'entrée de l'algorithme est le polygone A et "m".
  6. La coïncidence des segments en B avec des segments en A est autorisée.

Quelques exemples d'entrées et de sorties attendues:

  1. Si A est un carré et m est 3 alors B serait le triangle avec la plus petite surface qui contient A.
  2. Si A est un hexagone et m est 4 alors B serait un quadrilatère avec la plus petite surface qui contient A.

Bonne chance à tous ceux qui tentent de résoudre ce problème. Je peux vous promettre que ce sera très difficile, surtout maintenant que la solution doit être optimale.

Thirlan
la source
1
@Joe: Pas vrai: si A est un carré, alors Thirian demande le triangle de surface minimale contenant A. En revanche, si A est un triangle ( ), il n'y a en effet pas de solution valide. n=3
Jeffε
3
Ajoutez 17 à mon premier commentaire, je suppose. Pourquoi 20?
Jeffε
3
La FFT n'est-elle pas un seuil bas pour "compliqué"?
Sasho Nikolov
2
Je ne pense pas qu'il soit tout à fait vrai que le problème ne change pas du tout si vous (par exemple) définissez m = 3. Le problème est que vous pourriez avoir besoin de temps exponentiel en m, et c'est très bien si m est fixé à un certain nombre, mais ce n'est pas bien si m fait partie de l'entrée.
Suresh Venkat
5
"tout le monde sait quel est le problème" n'est pas vrai. Nous demandons parce que les choix non spécifiés font une différence.
Suresh Venkat

Réponses:

10

Je ne sais pas à quoi ressemblent vos polygones, mais peut-être qu'une version simplifiée de l' algorithme Ramer – Douglas – Peucker suffit:

  • pour chaque partie convexe , calculer l'aire des triangles P i P i + 1 P i + 2 formés par trois points consécutifs;AjPiPi+1Pi+2
  • BkPiPiPi+1Pi+1Pi+2Pi+2Pi,Pi+2Pi+1
  • min{Aj,Bk}
  • nm

entrez la description de l'image ici
AjBk

Pour les algorithmes plus complexes, vous pouvez rechercher des " techniques de généralisation de polygones " bien que votre première condition (les points dans A sont contenus dans B) implique des opérations de mise à l'échelle supplémentaires.

Marzio De Biasi
la source
@Suresh: Je suis presque sûr que les 4 votes positifs actuels sont pour la transparence, pas pour l'algorithme (presque trivial) :)
Marzio De Biasi
1
Cela souffre du même problème que les algorithmes Ramer-Douglas-Peucker: la sortie n'est pas garantie d'être un simple polygone!
Jeffε
1
@Jeffe: vous avez raison, mais (loin d'être optimal si le polygone est complexe) on peut éviter les simplifications qui conduisent à un conflit . À la fin, s'il y a d'autres points qui doivent être supprimés mais qu'un polygone non simple ne peut pas être évité, utilisez une méthode de résolution des conflits (par exemple, calculez les points d'intersection et jetez complètement les "trous"). Cependant, j'aimerais voir un exemple réel du PO.
Marzio De Biasi
1
@MarzioDeBiasi Cela pourrait fonctionner. Mais ce n'est peut-être pas le cas. Je pense qu'il est possible que chaque simplification que vous décrivez provoque une auto-intersection. Et «jeter des boucles» peut aggraver les choses, pas les améliorer. C'est probablement une bonne solution en pratique, mais rappelez-vous où nous en sommes!
Jeffε
Merci Marzio, je sais maintenant au moins comment on appelle ce genre de problèmes maintenant! Malheureusement, la solution que vous avez donnée est ce que (3) et (4) sont dans mes solutions suggérées et (4) a un problème avec cela. Les élipses qui sont très étirées et ont donc des pointes acérées avec des angles d'environ 30 degrés et moins violeront facilement l'exigence (1).
Thirlan
6

Il y a longtemps, j'ai écrit un article qui détaillait un algorithme à temps linéaire pour trouver le triangle de plus petite surface entourant un ensemble de points (ou un polygone):

J. O'Rourke, Alok Aggarwal, Sanjeev Maddila, Michael Baldwin, «Un algorithme optimal pour trouver un minimum de triangles englobants», J. Algorithms , 1986, 7 : 258-269. Lien .

Notre travail a été suivi d'un algorithme général:

«Surface minimale circonscrivant les polygones», Alok Aggarwal, JS Chang et Chee K. Yap, The Visual Computer , Volume 1, Number 2 (1985), 112-117. Lien .

Vous pouvez utiliser Google Scholar pour suivre les articles ultérieurs qui les citent pour trouver des améliorations et des travaux connexes.

Joseph O'Rourke
la source