survival algorithms