The effects of voting algorithms on N-version software reliability