blankinship algorithm