


This technique won't guarantee finding the shortest path. The shortest path between 2 regions will in many cases depend on where in the starting region the source is, and where in the destination region the goal is.
A more accurate implementation in terms of the optimal path would be to build the table not out of the region to region table, but the list of shared edges to the list of shared edges. Then that lookup table distances can be supplemented with the knowledge of the distance to those edges within the starting and ending region to better calculate an optimal path. This is the same reason why in a navmesh, using the center of the regions is a very poor reference point for the weighting calculations for the search.
Brief, good