the issue of multiple parents also introduces the issue if multiple paths, recursion, loops, etc.
we are trying to produce reports based on a starting point in the category tree.
from the initial category United States Army, World War II, that lists only profiles (ignore that we have further sub divisions for now), you are counted only 1 time
if the category has parents of United States Army, World War II and United States of America, World War II, assuming no other paths, starting at either of these categories, you are still only counted 1 time.
take it one step farther, what is the parent on these two categories? for sake of argument, lets say both of them have United States Armed Forces as the sole parent. if the report is generated from there, you are now counted twice, once from the path thru each parent.
now add to this a category for a battle in world war II. the person fought in the battle, so add his profile to the battle. the united states army fought in the battle, so add it to the battle. now you get counted more times, once thru the path to the battle, once thru the path of the united states army to the battle.
When Ales first sent me a raw dump starting at Category: Military, i was seeing the same person listed 20 times or more with all the spaghetti paths that existed between the categories, with lots of close loops (parents are children of children categories) and more distant loops where the chain goes several levels before looping back to its starting point.
by changing the way categories are linked, which in some cases means listing the category as a reference instead of a child, you can still start at one point, drill down thru the tree to reach a base level, profile only category, and it reduce the report listings with all that duplication by more than 75%. there are still some duplicate paths, but obvious things have been taken care of.