To state the rather obvious, a genealogy algorithm should work on the assumption that every individual has two natural parents. One male, the other female. However, family relationships can be more complex than that. Siblings can share only one parent and parents can share a parent (or two)! So the algorithm needs to accommodate many exceptions, and even allow one individual to occupy more than one "position" in the relationship tree. So although every individual has one male and one female natural parent, no assumptions can be made beyond that.