Ois,
será que a diferença no tempo de execução se deve só ao hardware ou existe algum macete pra otimizar ainda mais o código?
Legal você ter levantado essa questão.
No computador que estou agora tenho duas versões do EP15.
Um delas da os tempos que estão no enunciado e que usa o algoritmo de busca em caminho mínimo em um digrafo acíclico (examina os pixels em ordem topológica). Neste computador com esse algoritmo obtenho:
% java ResizeDemo seamCarving/HJocean.png 200 100
768-by-432 image
new image size is 568 columns by 332 rows
Resizing time: 13.921 seconds.
Já, usando o algoritmo de Dijkstra, como você devem fazer.
Dijkstra não tira proveito do digrafo dos pixels ser acíclico.
Os pixels são examinados na ordem de distâncias a partir da borda.
Usando esse algoritmo obtenho:
% java ResizeDemo seamCarving/HJocean.png 200 100
768-by-432 image
new image size is 568 columns by 332 rows
Resizing time: 36.469 seconds.
Em ambas implementações o digrafo é implícito, como sugere o checklist.
Acho que tudo ajuda.
O algoritmo e o hardware.
O computador que estou usando:
% more /proc/meminfo MemTotal: 4008052 kB [...] % more /proc/cpuinfo model name : AMD FX(tm)-4300 Quad-Core Processor cpu MHz : 1400.000 cache size : 2048 KB