An analysis of algorithms with discrete choice models