J'essaie de couvrir un simple polygone concave avec un minimum de rectangles. Mes rectangles peuvent avoir n'importe quelle longueur, mais ils ont des largeurs maximales, et le polygone n'aura jamais d'angle aigu.
J'ai pensé à essayer de décomposer mon polygone concave en triangles qui produisent un ensemble de rectangles se chevauchant au minimum délimitant au minimum chaque triangle, puis à fusionner ces rectangles en plus grands. Cependant, je ne pense pas que cela fonctionnera pour les petites encoches dans les bords du polygone. Les triangles créés par les sommets réflexes sur ces encoches créeront les mauvais rectangles. Je recherche des rectangles qui s'étendent / ignorent les encoches.
Je ne sais vraiment rien de la géométrie informatique, donc je ne suis pas vraiment sûr de savoir comment commencer à poser la question.
J'ai trouvé d'autres articles similaires, mais pas ce dont j'ai besoin:
- diviser le polygone en un minimum de rectangles et de triangles
- Couvrir un polygone arbitraire avec un nombre minimum de carrés
- Trouvez rectangles pour qu'ils couvrent le nombre maximum de points
- Algorithme pour trouver le moins de rectangles pour couvrir un ensemble de rectangles
Quelques exemples: le noir est l'entrée. Le rouge est la sortie acceptable.
Un autre exemple: la deuxième sortie est préférable. Cependant, la génération des deux sorties et l'utilisation d'un autre facteur pour déterminer la préférence sont probablement nécessaires et ne relèvent pas de la responsabilité de cet algorithme.
Les polygones qui imitent les courbes sont extrêmement rares. Dans ce scénario, une grande partie de la surface des rectangles est gaspillée. Cependant, cela est acceptable car chaque rectangle obéit à la contrainte de largeur maximale.
Aussi, j'ai trouvé cet article proche de ce dont j'avais besoin:
- Recouvrement de pièces rectangulaires par Paul Iacob, Daniela Marinescu et Cristina Luca
Peut-être une meilleure question est "Comment puis-je identifier des parties de type rectangulaire d'un polygone concave?"
Voici une image montrant l'implémentation souhaitée:
Le vert est l'utilisation réelle du matériau. Les rectangles rouges sont les dispositions. Le bleu est le MBR de tout le polygone. Je pense que je devrais essayer d'obtenir de petits MBR et de les remplir. Les 2-3 rectangles verts dans le coin supérieur gauche qui se terminent au milieu du polygone sont chers. C'est ce que je veux minimiser. Les rectangles verts ont une largeur et une hauteur min et max, mais je peux utiliser autant de lignes et de colonnes nécessaires pour couvrir une région. Encore une fois, je dois minimiser le nombre de rectangles qui ne s'étendent pas sur l'entrée. Je peux également modifier la forme du rectangle vert pour l'adapter aux petits endroits, ce qui est également très cher. En d'autres termes, obtenir autant de rectangles que possible pour s'étendre autant que possible est idéal.
la source
Réponses:
Il s'agit d'une variante de la couverture d'ensemble géométrique. Selon les paramètres exacts, vous pourrez peut-être faire une bonne approximation. Le problème est bien sûr NP-Hard. Les huersitics naturels doivent utiliser un algorithme gourmand (choisissez toujours le rectangle / la bande qui couvre la plus grande partie non encore couverte. La technique alternative est d'utiliser la repesage. Il y a des résultats théoriques intéressants, mais franchement, rien qui ne devrait être trop utile en pratique Une hueristic intéressante que vous voudrez peut-être essayer, est d'abord de décomposer votre polygone en un nombre minimal de formes convexes (en utilisant l'algorithme de programmation dynamique Keil), puis de couvrir chaque polygone convexe séparément ...
la source
Je pense que ce document peut être d'une certaine utilité. Évidemment, ce n'est pas le même problème - en fait c'est le problème inverse, couvrant un rectangle avec des polygones - mais certaines des idées pourraient être un point de départ. En particulier, ce problème inverse est NP-difficile et je soupçonne que le vôtre peut également l'être (bien qu'il n'y ait pas d'extension évidente de la réduction pour autant que je sache).
E. Arkin, A. Efrat, G. Hart, I. Kostitsyna, A. Kroller, J. Mitchell et V. Polishchuk. Minceur scandinave sur le dessus du gâteau: sur la plus petite boîte à taille unique. Amusez-vous avec les algorithmes . pg.16-27. 2012
la source