  Given a set of N points, we have discovered an algorithm that can separate
these points from one another by n-dimensional planes. Each point is chosen at
random and put into a set S and planes which separate them are determined and
put into S. The algorithm gives a method of choosing points and planes which
separate them, till all the points are separated. A proof is provided with a
worked example.
  The algorithm is non iterative and always halts successfully and the
algorithm strictly follows Shannon's principle of making optimal use of
information as it advances stage by stage. It also has a restart facility and
can take care of new points from where it left off.At some later stage if the
dimension of the data is increased from n to n+r, the algorithm can still
continue from where it left off, after some simple adjustments, and tackle the
new data points which are of a higher dimension. and separate them. The
computational complexity is O(n.N log(N)) + O(n3 log(N)), where N is the given
number of points and n3 is the cube of n - the dimension of space. The
algorithm is made possible because a new concept called Orientation Vector is
used. This vector is a Hamming vector and is associated with each point and has
been so devised that it has all the information necessary to ascertain if two
points are separate or not when among a collection of planes.Its application to
data retrieval problems in very large medical data bases is also given.
