Molecular Docking Algorithm Based on Shape Complementarity Principles