Я бы попробовал комбинацию динамического программирования и параллельного программирования:
Для каждой точки удерживайте оценку, подсчитайте себя и оценки 4-х подключенных соседей перед ней (вверх и влево) (которые уже доступны из-за динамического программирования).
Это можно делать параллельно по диагонали, что повышает производительность.