SPA algorithm