包裝矩形算法
回答
您可以使用空間索引或四叉樹細分2d平面。這個想法是將2d問題簡化爲1d問題。一旦獲得了空間索引(或空間填充曲線),並且可以將2d離散化爲1d,則可以使用1d來搜索相似度,或者按照從低到高的順序進行排序,或者按照長度進行排序。如果你得到這個訂單,你可以計算這個索引回到第二個代表,並以最有效的方式將它們打包在你的容器中。有很多方法可以創建空間索引。希爾伯特曲線是一些最好但很難做出的。另一個是z曲線或morton曲線。它與zizag曲線不同,因爲它將平面細分爲4個正方形(不是矩形)。
編輯:這裏是一個鏈接,一個jQuery的插件:http://www.fbtools.com/jquery/treemap/ 這裏有世界poplulation:http://www.fbtools.com/jquery/treemap/population.html
感謝您的鏈接。很有幫助。 – silviupop
假設您只有一個每個尺寸的矩形,您可以嘗試複製紙張尺寸的排列。按大小排列矩形,從最大到最小,然後
- 取第一個矩形並將其放置在目標平面的拐角處。
- 拍攝下一張長方形(斷言它比以前的長方形小)
- 旋轉約90度
- 的地方,以便
- 它的尺寸較短的鄰近最後的大國鄰居的尺寸較長的
- 和其較長的一側與目標平面的邊緣相鄰或相鄰的邊緣相同 尺寸
- 重複2 - 4
我認識的描述可能是不清楚,所以這裏的畫面呈現解決方案 - 它應有助於掌握它:
在每一步你把你的新的表面rectange by 4。
SUM(1/4用於n [0,INF)= 4/3 **
所以你能做的最好是適合你的矩形表面 4/3的矩形(高度×寬)
(這是一個下界)
@mloskot算法給出了一個可能的解決方案,這將是在表面的矩形3/2 *(高度*寬度):在這裏,是示:
我看不出你怎麼做得更好。
這聽起來像一個rectangle packing problem。有一個鏈接到algorithm。該代碼儘可能緊密地包裝矩形。你說你想要矩形分佈隨機,我猜這意味着並不是所有矩形都是相鄰的一個大小,所有的矩形都分佈在大矩形中。也許上面鏈接的代碼將是獲得一些想法的好起點。
- 1. 圓形矩形包裝算法
- 2. 包裝矩形IOI 95
- 3. 圓形矩形的最大包裝
- 4. 算法找到矩形
- 5. 矩形近似算法
- 6. 打包正方形和矩形的算法是什麼?
- 7. 帶有斷頭臺限制的相同矩形矩形包裝算法的提示?
- 8. 帶有靜態矩形的矩形包裝
- 9. 沒有旋轉的包裝矩形?
- 10. 在Java中的矩形包裝
- 11. 算法 - 打矩形的檢測旋轉矩形內
- 12. 一種實現矩形bin包裝的方法
- 13. 七種方式反映矩形矩陣八分法的算法
- 14. 高效的矩形擬合算法
- 15. 立方到等矩形投影算法
- 16. 最佳矩形孵化算法
- 17. 算法從座標確定矩形
- 18. 最小矩形表面 - 算法
- 19. 用於組合髒矩形的算法
- 20. 算法在一個較大的矩形
- 21. 最大矩形算法實現
- 22. 二元二維矩形分區算法
- 23. 矩形交集算法的Java實現..?
- 24. 簡化的矩形包裝算法。能夠從更大的形狀池中挑選。
- 25. 計算一個圓形包裝?
- 26. 3維bin包裝算法
- 27. 禮品包裝算法
- 28. 包裝時隙的算法
- 29. 在直線多邊形中包裝矩形
- 30. 正則多邊形的高效包裝算法
作業...... – jmpcm
這是功課嗎?如果這樣做標記爲家庭作業。 –
你需要提供更多細節。你是否有每一個矩形尺寸(例如單元邊的1個,0.5個單元邊的1個等等),或者你有多少個可以隨意使用的矩形?另外,隨機定義.. –