Looks good, the only thing I can suggest is a more detailed explanation of the floyd-warshall algorithm - unless I'm the only one not getting it o_O.
Say we have a byte array of a map, with values ranging from 0 ( open ) and 1 ( closed ).
If we want to find out if map[ x ][ y ] is a neighbour to map[ x + 1][ y ] how do we go about finding this out?
I'm guessing that CanGoTo just checks if map[ x + 1 ][ y ] is open?
Sorry if those are stupid questions, I tried looking for more on it but found next to nothing useful.
Good work on the article though, lots of useful info that will be put into use in the future
.