I think in general scientific discoveries (pharmaceuticals, algorithms etc) should not be granted monopolistic production rights, but rather monopolistic royalty rights.
So, for example, if you invented Viagara, and every pharma company in the world figured out how to make it cheaper in their own way, they're free to make it but they have to pay the creator (individual or corporation) a royalty fee to do so.
I think royalties are a better way to incentivize innovation while not allowing patent protections to stifle the market as a whole.