Perceptrons are guaranteed to find a boundary, and with enough iterations, it can find a 0% error boundary, converging in a finite number of steps iff linearly separable.

How do we get it?

Support Vector Machines

Non-Linear Case