2009-08-12 9 views
0

Imaginez que vous avez une toile et que dans cette toile il y a déjà des objets. Comment pouvez-vous trouver la façon minimale de couvrir la zone "non couverte" avec des carrés, ne pas se superposer, remplissant complètement la toile. Dans mon cas, le "canvas" est un conteneur html-div et les objets sont des conteneurs div imbriqués. pourrait ressembler à ceci: http://www.encodechain.com/demo/200908_optimize.png A gauche, il y a le « start » et à droite il y a le possible premier « pas » ...Comment trouver un nombre minimal de subdivisions

Je sais qu'il ya un algorithme pour cela, mais actuellement je ne me souviens pas le nom.

Répondre

2

Le mieux que je pouvais trouver était cet article: Tiling a rectangle with the fewest squares. Le papier est une lecture intéressante, bien que parfois il plonge profondément dans le territoire de la théorie avec des «constantes universelles». Je ne suis pas certain que la question de "un rectangle de taille m par n soit carrelé de k carrés" est NP-complète. Comme indiqué dans une autre réponse, votre question ressemble à des problèmes d'emballage qui sont NP-complets. Et, bien sûr, votre problème est une généralisation de celui abordé dans ce document, puisque vous avez affaire à des zones non rectangulaires. Vous pourriez commencer par casser votre zone dans le nombre minimum de rectangles, un autre problème intéressant en soi. Et finalement, même si vous pouviez le faire de manière efficace, je ne suis pas sûr que le fait de paver ces rectangles de manière optimale aboutirait à un pavage globalement optimal.

Comme le note l'auteur, un algorithme glouton est un bon point de départ: il suffit de poser le plus grand carré possible jusqu'à ce que la zone soit pleine.

0

Packing Problem

Knapsack Problem

Et un article sur la résolution de problèmes d'emballage 2d

+0

L'emballage de la corbeille 2D est "Vous avez une sorte de zone que vous devez remplir avec autant d'éléments de tailles et de formes que possible." - La question était de savoir comment couvrir avec le moins de cases possible. – redtuna

+0

Oui, ce type de problème appartient à la classe 'Problème d'emballage'. Même si les objectifs sont différents (une maximisation, une autre minimisation), l'approche pour résoudre ces problèmes est assez similaire. OP interrogeait également sur le nom des algorithmes, d'où la réponse telle quelle. – Indy9000

Questions connexes