edge algorithm edge algorithm