=)
https://www.google.ru/webhp?sourceid...BA%D0%BE%D0%B2
1. рассортировать блоки по размеру
2. собрать из блоков строки примерно одинаковой длинны с приблизительно одинаковым числом блоков примерно одинаковых размеров.
3. сдвинуть строки блоков на минимальные расстояния.
4. оценить получившийся результат. сравнить с наилучшим результатом.
5. поменять пару блоков местами установить между блоками минимальные расстояния и снова сравнить результат с лучшим.
Если результат хуже предведущего то вернутся к прежнему состоянию и побывать менять уже другие блоки.
Это будет простейший генетический алгоритм.
В твоем случае картинок реально мало по этому разумнее всего будет использовать брутфорс
т.е. для 8ми картинок это будет всего 256 вариантов и из них можно выбрать лучший.