kahns-algorithm