Ich bin auf der Suche nach Hilfe bei der Verbesserung eines Algorithmus für die Platzierung von Blöcken von ungeraden Formen. Meine Problemdomäne ist seltsam, aber die beste Analogie für meine Blöcke sind Tetris-Teile, außer dass sie mehr als vier Teile haben können. Die Blöcke bestehen immer noch aus nur rechten Winkeln, aber sie können lang und verwinkelt sein, sie können verzweigen usw.Block Layout Algorithmus
Ich versuche mehrere große beliebig geformte Blöcke auf kleinstem Raum anzuordnen (ich weiß, eine Bin-Packung Problem), aber meine aktuelle Lösung sieht hässlich aus. Ich platziere im Grunde einen, dann brute den Rest, indem ich versuche, sie am Ursprung meines Rasters zu platzieren und sie dann langsam in verschiedene Richtungen zu schieben, bis sie nicht mehr kollidieren. Es ist nicht langsam, aber es macht keinen Versuch, Stücke gut zu passen, so dass sie nicht den gesamten Raum verschwenden.
Das einzige, was ich mir vorstellen kann, ist, die Blöcke nach Größe zu sortieren, die größte zuerst zu platzieren und dann die kleinste am Ende in die verbleibenden Löcher zu stecken. Aber es gibt sicherlich Möglichkeiten, die nach hinten losgehen können.
Gibt es irgendwelche Heuristiken oder Näherungsalgorithmen, die mir hier helfen können?
Die Ergebnisse aussehen würde, etwa wie folgt:
Auch vielleicht meine Gravatar verschenkt, dass dieser Mega Man verwandt ist ...
Bitte fügen Sie das Bild – Navin
Ihr Bild scheint zu implizieren, dass Sie Raum zwischen den Blöcken wollen. Ist das wahr? –
@Andrew Ja werde ich, aber ich habe das Gefühl, dass es den Algorithmus nicht beeinflussen wird. Ich könnte einfach so tun, als wären die Blöcke um 1 Einheit auf allen Seiten dicker. – Tesserex