2010-12-13 19 views
2

Nehmen wir an, ich habe 256 Bilder mit einer durchschnittlichen Größe von 70x150 (also, wenn Größe variabel). Und ich habe eine Graphic -Instance (Erstellt von einem BufferedImage mit einer bestimmten Größe), auf dem ich die Bilder zeichnen möchte. Aber ich möchte sie auf der niedrigstmöglichen Fläche zeichnen. Also nicht einfach in einem Raster, sondern wirklich verwirrt. Aber !: sie dürfen sich nicht überlappen.Java: Wie zeichne ich Bilder auf kleinstmöglicher Fläche?

Vielleicht kann das nur ein menschliches Gehirn verwalten.
Es lohnt sich zu fragen, denke ich ....

Vielen Dank im Voraus,
Martijn

Zum Beispiel:

+------++------+ 
|  ||  | 
| img1 || img2 | 
|  |+------+ 
|  |+-----------------+ 
+------+|     | 
+---+ |     | 
| 3 | |     | 
| | | img 4  | 
+---+ |     | 
     |     | 
     +-----------------+ 
+0

Ich verstehe Ihre Frage nicht wirklich. Fragen Sie, wie Sie das kleinste Rechteck in einer Rechteckliste finden? Oder wie soll man eigentlich sein Beispiel zeichnen? Oder was ist die kleinste Größe, die Sie mit einer grafischen Instanz zeichnen können? – RoflcoptrException

+2

Ich weiß nicht die genaue Terminologie zu verwenden, aber dieses Problem klingt viel wie eine 2D-Version der Festplatte oder Speicherplatzverwaltung Problem: eine neue Datei/Daten, die Sie speichern möchten, wo Sie es eingeben? Beste Passform, schlechteste Passform, Erstanpassung, etc. Vielleicht könntest du das nachlesen, um ein paar Ideen zu bekommen. – DGH

+0

@DGH: In der Tat ist das ein relevanter Vergleich. –

Antwort

2

Grundsätzlich Sie nach einer Lösung für ein Es knapsack problem.

gefragt ist kein optimaler Algorithmus für ein Knapsack Problem beliebiger Größe, da es NP-hard Problem.

Es gibt reichlich von suboptimalen Algorithmen: