Info

# How to check the accessibility between two points in a matrix?

1 view (last 30 days)
Ameer Abdullah on 21 Mar 2018
Closed: MATLAB Answer Bot on 20 Aug 2021
I have following matrix:
board =
0 0 0 0 0 0 0 2
0 0 0 0 0 0 2 2
0 0 0 0 0 2 2 0
0 0 0 1 2 2 0 0
0 0 1 1 2 0 0 0
0 1 1 1 2 0 0 0
1 1 0 1 2 0 0 0
1 0 0 11 2 22 0 0
I need to check how many zeroes are accessible from 11 & 22 while they can't cross 2 and 1 respectively. And also is there any path between 11 and 22 keeping the same condition in view. Can anybody help?
Walter Roberson on 21 Mar 2018
"how many zeroes are accessible from 11 & 22 while they can't cross 2 and 1 respectively."
So 2 is a barrier for a path that starts from 11, and 1 is a barrier for a path that starts from 22, but 2 is not a barrier for a path that starts from 22 and 1 is not a barrier for a path that starts from 11 ? That would imply that the paths are not symmetric -- that you might be able to get from 11 to 22 but not back, or from 22 to 11 but not back. Indeed, to get from 22 to 11 you could go 22 -> 2 -> 11 because the 2 is not a barrier when starting from 2, but there is no route from 11 to 22 that does not cross the barrier of 2s that applies when starting from 11 ?

thitch on 21 Mar 2018
I would recommend implementing a simple region growing algorithm (google it), where your seed points are 11 and 22. You can keep track of each region's progress in separate logical arrays.
This should produce a logical condition for counting the number of zeros within each region. Making some assumptions about your problem, this would also provide a way of identifying the existence of a path between region '11' and region '22', e.g. something like:
% inRegion11, inRegion22 are logical arrays
if nnz(AND(inRegion11,inRegion22))
% path exists
end