A computational algebra approach to the reverse engineering of gene regulatory networks