Polyhierarchy
In connection with conceptual systems such as ontologies and thesauri (conceptual hierarchies ), polyhierarchy describes a hierarchical structure in which a class can have more than one superordinate class. Thus, each term can be assigned to several generic terms, since different characteristics are taken into account in the assignment. Strictly speaking, the Polyhierarchie is therefore no real hierarchy in the form of a rooted tree but a directed acyclic graph (English directed acyclic graph , DAG).
Depending on the definition, a polyhierarchy can also be understood as a set of trees that can have nodes in common. In this case, a polyhierarchy is a special kind of multigraph , because two nodes can also be connected multiple times (in different trees).
In the case of polyhierarchical structures, a distinction is occasionally made between multi-trees and general directed acyclic graphs. A multi-tree (English MultiTree ) is a directed acyclic graph in which several trees can be identified as substructures. In general, this means that diamond structures (two nodes with common parents and children) do not appear. However, the term multi-tree is used inconsistently.
In object-oriented programming , the polyhierarchy occurs in the form of multiple inheritance . The Diamond problem can lead to unwanted ambiguities.