I believe if users behaved as they would from a game theory perspective (i.e. users compete for reputation), we would find nobody giving any upvotes to anyone else on the site. Let's discuss a fictitious, ruthless, cold-hearted player of the game - Alice.
If Alice answers a question and she reads Bob's answer to that same question, and Alice believes Bob's answer is really quite good, Alice will not vote Bob up - due to the fact that this would likely place Bob's answer above hers.
Alice, while just browsing the site, should have less of a problem upvoting other answers she agrees with, since these do not interfere with her own answers. But why should she do this? Remember - users are competing for reputation. Why should Alice let anyone gain reputation without any benefit to her? She will just leave them be.
The only situation that Alice (the cold-hearted, ruthless competitor) will vote for something is a question which she answered. This brings more attention to the question, which may bring more attention to her answer, which may bring her more reputation.
She even has no reason to upvote a correct answer to any of her own questions, although she may accept them to provide incentive for more answers to future questions.
It cannot be explained why anyone upvotes any answers at all (perhaps a feeling of generosity, and a desire for the site to work?). As it stands, people are rather uncharitable about their votes, which can be seen from many questions that have 50+ views and somewhere between 0 and 1 upvotes on any of its answers.
I'm just trying to point out that site mechanics do not support voting for answers - and if users lose their sense of generosity which is providing the votes currently, the incentive to answer questions may likewise diminish.
Should something be done about it?