title: Find sub-array of objects with maximum distance between elements
body: <p>Let be an array of objects [a, b, c, d, ...] and a function distance(x, y) that gives a numeric value showing how 'different' are objects x and y.</p>
  
  <p>I'm looking for an algorithm to find the subset of the array of length n that maximizes the minimum difference between that subset element.</p>
  
  <p>Of course, I can't simply sort the array by the minimum of the differences with other elements and take the n highest entries, since removing an element can very well change the distances. For instance, if a=b, then removing a means the minimum distance of b with another element will change dramatically.</p>
  
  <p>So far, the only solution I could find was wether to iteratively remove the element with the lowest minimum distance and re-calculate the distance at each iteration, until only n elements are left, or, vice-versa, to iteratively pick new elements, recalculate the distances, add the new pick or replace an existing one based on the distance minimums.</p>
  
  <p>Does anybody know how I could get the same results without those iterations?</p>
  
  <p>PS: here is an example, the matrix shows the 'distance' between each element...</p>
  
  <pre>
     a   b   c   d
  a  -   1   3   2
  b  1   -   4   2
  c  3   4   -   5
  d  2   2   5   -
  </pre>
  
  <p>If we'd keep only 2 elements, that would be c and d; if we'd keep 3, that would be a or b, c and d.</p>