This really sounds like an academic question.
The solution that comes to mind involves r* trees. This divides your total area in individually sized and possibly overlapping boxes. After doing this you can then determine if each box represents a 'cluster' or not for you by calculating the mean distance.
R* Trees
If that approach becomes difficult to implement you may be better off splitting your datagrid into equal-sized subdivisions and determining if a cluster occurs in each; you will have to be very mindful of edge conditions with this approach though. I would suggest that after the initial division you go through and recombine areas with datapoints within a certain threshold of the defined edge.