Text this: A distributed CRN resource allocation algorithm based on CBR and cooperative Q-learning