<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta>
      <journal-title-group>
        <journal-title>Series</journal-title>
      </journal-title-group>
      <issn pub-type="ppub">1613-0073</issn>
    </journal-meta>
    <article-meta>
      <title-group>
        <article-title>On Large Genealogical Graph Layouts</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Radek Marˇík</string-name>
          <email>Radek.Marik@fel.cvut.cz</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Department of Telecommunication Engineering, Faculty of Electrical Engineering Czech Technical University in Prague Technicka 2, Dejvice</institution>
          ,
          <addr-line>Prague CZ-166 27</addr-line>
          ,
          <country>Czech</country>
          <addr-line>Republic, EU</addr-line>
        </aff>
      </contrib-group>
      <pub-date>
        <year>2016</year>
      </pub-date>
      <volume>1649</volume>
      <fpage>218</fpage>
      <lpage>225</lpage>
      <abstract>
        <p>Classical ancestor trees, descendant trees, Hourglass charts, and their visual variants such as node-link diagrams or fan charts are suitable for assessment of people's relationships when one is focused on a particular person (the so-called main person) and his/her direct ancestors and descendants. Such tree-based representations miss a broader context of relationships and do not allow quick assessment of several interlinked families together. We propose utilization of directed acyclic graph visualizations with constraints specified by layers and ordering of groups of nodes within layers. The computed constraints can be mapped, at least partially, into the DOT language property directives used by the Graphviz toolbox. We demonstrate achievements on datasets containing 1600 people (a private family tree collection) and 3000 people (an Egyptology database of officials from 4th, 5th, and 6th dynasty).</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>1 Introduction</title>
      <p>
        Although it is more than 55 years since Tutte introduced
barycentric embedding, research of graph visualization
techniques remains a highly active field attracting a lot of
attention [
        <xref ref-type="bibr" rid="ref1 ref2 ref3">1, 2, 3</xref>
        ]. Graph visualization can help to form
an overview of relational patterns and detect data
structure much faster than data in a tabular form. The form in
which the graph is presented has a significant impact on
how the graph is understood and the time that is necessary
to achieve this. Nodes placed close to one another might
be interpreted by the user as a true relationship whether or
not this relationship exists [
        <xref ref-type="bibr" rid="ref3 ref4">4, 3</xref>
        ]. Working with
genealogical graphs is no exception in this sense.
      </p>
      <p>
        Tree based drawing methods of genealogical graphs
have been among the standard techniques for centuries.
Ancestor trees, descendant trees and Hourglass charts [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ]
belong to a set of traditional tools implemented by a
majority of freeware, shareware, or commercial tools, for
example Gramps [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ] or MyHeritage [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ]. These tools provide
a clear description of a situation when the user needs to
investigate direct ancestors and/or descendants of a given
person (often the so-called main or center person). The
main person is placed into the root of the tree. Thus, the
generation of the main person consists of only one person
and the size of other generations grows exponentially with
a branching factor often over 2. Therefore, the graphical
representation results in a triangular shape. Such a
classical node-link tree representation wastes about one half of
the drawing area. There are other more space-efficient
representations such as fan charts or H-charts [
        <xref ref-type="bibr" rid="ref10 ref11 ref8 ref9">8, 9, 10, 11</xref>
        ].
As any pure tree representation enables any ordering of
node predecessors/successors, it is possible to specify the
type of ordering, such as children ordered by their birth
dates. It is also possible to extend any such tree
representation with additional nodes that can be attached as single
nodes to any tree node (in the Gramps tool [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ] this type of
graph is called a Relationship Graph). In this way a tree
with direct ancestors/descendants can cover, for example,
spouses/partners. Therefore, tree representations can be
laid out in such a way that family members are grouped
together. The obvious drawback of the pure tree
representations is that selecting a different main person leads to a
different graph that must be rendered again.
      </p>
      <p>
        However, the situation with family members grouping
changes significantly if the assumptions of one main
person and direct ancestors/descendants are dropped. In a
number of cases it is highly beneficial if the entire
network of families or at least a significant part can be
displayed in one layout. Then we face issues with challenges
linked with edge crossing and preferences on node
clustering [
        <xref ref-type="bibr" rid="ref12 ref13 ref14">12, 13, 14</xref>
        ]. The genealogical tools often do not
provide such specialized visualizations. At present it is
possible to use methods dedicated to a general graph
layout. Hierarchical layouts are suitable for genealogical
directed graphs, for example, implemented and provided by
tools such as dot.exe (DOT) in Graphviz package [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ]
or yEd [
        <xref ref-type="bibr" rid="ref17">16</xref>
        ]. Unfortunately, these tools, and others we are
aware of, do not support any kind of constraints that would
allow the setting of node cluster preferences. Based on our
own experience and observations made during our
cooperation with Egyptologists, the researchers prefer grouping
based on families.
      </p>
      <p>
        Fig 1 depicts Nyankhkhnum’s and Khnumhotep’s
family reconstructed from the database of the Egyptian
officials [
        <xref ref-type="bibr" rid="ref18">17</xref>
        ]. In this case, the layout was produced using the
yEd tool. Although it is possible to improve such a layout
manually, one cannot waste time redoing the layout for all
database families whenever the database is updated.
      </p>
      <p>
        It is possible to group children or their parents (but
not both). Unfortunately, directed hierarchical
drawing methods such as the very good one implemented as
dot.exe [
        <xref ref-type="bibr" rid="ref19">18</xref>
        ] results in layouts with mixed generations
and groups mixing several families. Such layouts are
difficult to read and comprehend. We are not aware of any
method that would enable the definition and use of the
necessary constraints. In this paper we focus on several
principles that allow the determination of such constraints
and how such constraints can be managed. At least
partially, the proposed constraints can be mapped to
additional graph specifications that result in the DOT algorithm
producing the required layout.
      </p>
      <p>
        More specifically, we focus on two most critical aspects
discussed in [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ] and dealing particularly with the first
two steps of the approach proposed in [
        <xref ref-type="bibr" rid="ref19">18</xref>
        ]: 1/
determination of generations (layers, node ranks), and 2/
enforcing family grouping based on propagation of children and
marriage orders through generations. We propose several
approaches for handling such aspects and we provide
efficient algorithmic solutions for them. Of course, one can
consider other aspects as well. In this paper we focused
only on these two.
      </p>
      <p>The rest of the paper is organized in the following way.
In the next section we provide an algorithm that allows
setting ranks of nodes for an acyclic graph representing
a traditional representation of family tree using marriage
nodes. In the next section we design a method that allows
propagation of children and parent ordering across
generations (ranks). Finally, we discuss some results achieved if
the constraints are mapped into DOT language and tested
on datasets with thousands of nodes.
2</p>
    </sec>
    <sec id="sec-2">
      <title>Ranking of Genealogical Graph Nodes</title>
      <p>
        Even a DOT graph specification does not contain any
constraints on node layers. Its implementation ranks nodes as
proposed by many authors [
        <xref ref-type="bibr" rid="ref13 ref19">13, 18</xref>
        ]. In many situations the
result layout is produced as required, see Fig 2.
Unfortunately, the general criterion used in the DOT
implementation leads to node placement breaking generation
layering as it is usual and expected in genealogical graphs, i.e.
children of one family at the same level and similarly their
parents. The DOT language enables the specification that
a subset of nodes shares the same rank. The majority of
algorithms computing ranks are derived from the
topological order computation (O(n) time complexity) [
        <xref ref-type="bibr" rid="ref20">19</xref>
        ] and
select one of many possible solutions that satisfy layer
intervals of node placements. In this section we present an
algorithm, using which the ranks of nodes can be
determined for any genealogical graph. A genealogical graph is
an acyclic bipartite directed graph G(VP,VM, E) with two
sorts of nodes, people VP and marriages/partnerships VM.
The edges E are directed from parent nodes to marriage
nodes and from marriage nodes to children nodes.
Without loss of generality we can assume that the index of the
generation layer of parents (also denoted as ranks) is lower
than the index of their marriage node, and further that the
index of the marriage node is lower than the index of
children nodes.
      </p>
      <p>In the following algorithm we assume that the
processed graph is directed and acyclic. Classical algorithms
start from a single node, the only one with no
predecessors. Generally, a genealogical graph can consist of
several nodes without predecessors and several nodes without
successors. Let us use a convention that generation
layers are identified by numbers λ (v) and successors have
higher levels. Each node is assigned an interval of
generation levels at which the node can appear with regard to
a base level. The following proposed algorithm uses two
simple passes through a graph. Each node is assigned the
highest possible level with respect to the current highest
base level of successors during the first pass.</p>
      <p>λ1(v) =
max(v,w)∈E λ1(w) − 1 if v has successors
0 otherwise</p>
      <p>Thus, the node(s) with the lowest level can be
determined. A generation level for each node is set as the
maximum level of the node predecessor levels increased by
one during the second pass. The second pass starts from
the nodes with the lowest level.
λ2(v) =
 0

 λ2(w) − 1






if v has the lowest level
if w has predecessors
partially processed
(v, w) ∈ E and
 λ2(v) is not assigned

 min(w,v)∈E λ2(w) + 1 if v has all predecessors

 processed</p>
      <p>Each node is visited twice during each pass using depth
first search (DFS) using an explicit LIFO queue. The first
visit ensures that all successors/predecessors are processed
already. When the node is visited again, its level is
determined as minimum/maximum of
successors/predecessors levels. As children from a single marriage have only
one common predecessor, the marriage node, they share
the same generation level. However, parent nodes can be
assigned to different levels. Nevertheless, the algorithm
guarantees that parents linked to a marriage node always
have a lower layer number than the marriage node and
children attached to the marriage node have higher layer
numbers than the marriage node. Any layout with nodes
placed in layers following, for example, increasing
generation levels always has the same direction of all edges. The
edge layout direction cannot be reverted ever as it might
occur in methods based on a general optimization criterion
such as the one used in the DOT.</p>
      <p>The algorithm uses two DFS passes with linear
complexity. Therefore, the time complexity is O(N), where N
is the number of graph nodes. Two arrays are used for the
maintenance of minimum and maximum levels for each
node. A DFS pass requires an implicit or explicit stack.
Different implementations of the stack, a graph
representation, and the related DFS implementation can result in
different space requirements ranging from the maximum
depth of the acyclic graph (its diameter) to the number of
all nodes. The length of the queue in our implementation
is constrained by O(d ∗ b), where d is the maximum depth
of the graph and b is the maximum branching factor. Both
d and b parameters do not cross value 15 in the majority of
cases (the maximum number of generations, the maximum
number of children/partners). Thus, the space complexity
is again in the range of O(N).
3</p>
    </sec>
    <sec id="sec-3">
      <title>Same Generation Nodes Ordering</title>
      <p>
        Using the state of art of graph layout techniques such as
those implemented in Graphviz [
        <xref ref-type="bibr" rid="ref19">18</xref>
        ] leads to results that
are almost acceptable, however, with some drawbacks.
Assuming that a genealogical graph is layered according
to the generation levels determined by the algorithm
proposed in the previous section, the main complaint stems
from mixing of children/partners from different families.
When several families linked through a partnership
relationship are visualized, one can cluster either children or
partners, but generally not both. For example,
Relationship graph visualization implemented in the DOT creates
subgraphs of partners. Siblings from different families can
be mixed.
      </p>
      <p>In this section we support the approach when siblings of
one family are clustered tightly while partnerships/parents
might be mixed. The obvious reason behind this variant is
that the number of children is much higher than 2, often
reaching values over 10. Thus, an injected edge crossing
because of mixed parents is much lower than when it
occurs when children are mixed, and families can be
identified easily by a number of parallel edges leading from
marriage nodes to children nodes.</p>
      <p>The problem of a layout design might then be reduced
to a determination of the order of people belonging to one
generation. We propose that children belonging to a
single family are ordered by their birth dates. Subtrees of the
child descendants, including descendant marriage nodes,
hold this order. In the opposite direction, i.e. from a
marriage node to its spouses, the order of spouses can be
determined according to birthdates of spouses. There might
be cases when two or more people from two or more
different families create partnerships. In such situations we
cannot insist on the order of marriage nodes as the order
requirements might be contradictory, for example, in the
case of two families both with two children that creates
two marriages in the opposite order of their birthdates. We
would need other constraints to resolve them. In this
paper we provide only a simple solution based on a random
order of families. As these cases are not common, the
resulting edge crossing is acceptable. A more sophisticated
solution would create three sets of marriage nodes. The
middle set, consisting of nodes representing marriages of
children from both families and determining the order of
families, in a way minimizes edge crossing. The other two
side sets of marriages can follow the order of the two
families and the order of their children. Nevertheless, the
general situation with more than one marriage involving two
and more families is rather complex and is considered
beyond the scope of this paper. We denote the defined order
of children and spouses as basic order subsequences.</p>
      <p>The proposed solution is based on a propagation of
basic order subsequences from lower levels of generations to
higher ones, and similarly in the opposite direction. A
linear graph composed of a disjoint sequences of nodes
belonging to a given generation layer is maintained. That
means, at a particular step of the algorithm, the set of
nodes belonging to the processed generation layer is
decomposed into a set of linear sequences. Each sequence
determines an order of its nodes that is kept unchanged. In
each propagation step, the nodes of a sequence in one
generation layer are projected into their successor/predecessor
nodes in the next/previous generation layer. The
resulting sequence is fused from sequences already defined in
the next/previous generation layer. In fact, any
contradictory order requirements leading to loops must be dropped.
We are aware that more sophisticated techniques of such
requirements dropping can be implemented and can lead
to better layouts. Nevertheless, our present basic solution
uses a strategy adding additional order constraints in a step
by step manner. If a requirement would create a loop, it is
dropped.</p>
      <p>As the genealogical graph is assumed to be acyclic and
connected, the shortest trail linking any two nodes can
be found. Any triple of nodes spouse-marriage-spouse or
child-marriage-child defines the order of the two nodes.
As any two nodes in a given generation layer can be
ordered, a single sequence of totally ordered nodes in each
single layer can be created. In other words, basic order
subsequences fully specify a topological order of all nodes
in the graph. Of course, different layouts can be achieved
if we select a different dropping criterion of redundant
order requirements.</p>
      <p>Let us describe a propagation technique using just
subsequence structures. Initially, the sequence of siblings
based on their birthdates belonging to a family is
computed for each family with children. Similarly, a sequence
of marriage nodes is created for spouses with multiple
marriages. Then the process iterates from lower to higher
generations. In each iteration all edges of sequences from
the lower generation are propagated to edges linking the
related sequences in the higher generation.</p>
      <p>It is obvious that the critical operation is the mapping
from nodes to sequences and linking of sequences. There
are several possible solutions. Firstly, a given
generation layer of nodes can be represented as a directed graph.
Whenever we need the first or the last node of a sequence
to which a given belongs we can find it through a path
against or along the direction of edges, respectively. As
sequences get longer, the processing time of this operation
grows exponentially. Secondly, it is possible to maintain
a mapping from each node to its sequence first and last
nodes. Initially, each node references itself as the first and
the last node of a primitive sequence consisting of the node
itself. Whenever two sequences are merged, all its node
references of the first and the last nodes must be updated.
At present, our implementation uses this approach. We
do not perceive any performance issues if used on graphs
with several thousands of nodes. Thirdly, as merging of
sequences can be considered as a union of two sets, the
very efficient union-find algorithm can be used.
Furthermore, we would need to maintain a reference to the first
and last nodes for each such union sequence
representative node. We will describe this efficient method further in
this section.</p>
      <p>A special treatment must be paid to linking of
sequences. It is very easy to create a loop, for example, if
there are two families, one with two boys and one with
two daughters, and they create two families when the older
boy is married with the younger daughter and the younger
boy is married with the older daughter. In such a case we
have contradictory requirements for the order of marriage
nodes of young couples. If all such order requirements are
propagated, a loop in the order sequences is created. At
present we propagate an order requirement only if it does
not create a loop. Loops can be created over a merged
sequence or over the input sequences. All possibilities must
be checked and avoided.</p>
      <p>
        An actual efficient implementation of the propagation
method is not complicated, and it is rather simple using
a union-find technique and a binary tree. A sequence of
nodes is projected into the other sequence through order
edges linking subsequent nodes in the source layer. The
resulting destination sequence of nodes must be
decomposed into subsequences already existing in the destination
layer. We can employ a combination of two techniques,
the union-find method with its fast searching for a
subsequence (set) representing node and a binary tree structure
that is able to represent a subsequence as the preorder of
its leaves and to accomplish two subsequences merging by
adding a new binary tree root referencing the tree roots of
subsequences as its children (O(1) time). In other words,
the union-find structure maps the graph layer nodes into
their current maximum subsequence tree roots (O(α|V |),
where α is inverse Ackermann function [
        <xref ref-type="bibr" rid="ref20">19</xref>
        ]) and the
selected binary tree roots are then merged. Thus, processing
of any graph node can be performed in almost constant
time. The algorithm must make three passes through all
layers of the genealogical graph, i.e. each constraint must
be propagated fully in both directions. Thus, the
overall asymptotic amortized time complexity is O(1 + ε). It
should be noted that subsequence merging using a binary
tree does not suffer from possibilities of creating loops as
each graph node is referenced just once and the binary tree
node always represents a properly oriented subsequence.
      </p>
    </sec>
    <sec id="sec-4">
      <title>4 Implementation, Experiments, and</title>
    </sec>
    <sec id="sec-5">
      <title>Discussion</title>
      <p>We have not attempted to implement a completely new
acyclic genealogical graph layout algorithm. We
precom{ edge[style=invis]; node[style=invis]; "p0"-&gt;"p1"-&gt;"p2"-&gt;"p3";}
{ rank = "same"; "p0"; "I1436"; "I1221"; "I1140"; "I1073"; "I1141";}
{ rank = "same"; "p1"; "F0417"; "F0497"; "F0405"; "F0414";}
{ rank = "same"; "p2"; "I1185"; "I1417"; "I1224"; "I1236"; "I1152"; }
{ rank = "same"; "p3"; "F0477"; "F0415"; "F0413"; "F0475"; }
pute the constraints on generation layers and node
orders in each generation. These constraints can be mapped
into a graph specification of some already implemented
tools. In particular, the DOT specification implemented
by Graphviz tools enables such extensions.</p>
      <p>Constraints on generation layering can be mapped
easily to rank directives of the DOT language. A special node
is created for each generation layer. The several additional
subgraphs are generated. The first subgraph determines
the sequence of generation layers using special generation
nodes. Both nodes and edges can be set with the attribute
style=invis so that these nodes and edges are not shown
in the generated drawing although they control the layout.</p>
      <p>Then, other unnamed subgraphs are generated for each
generation layer with the attribute rank=”same” as a list
of node identifiers belonging to that generation prepended
with the node identifier of the given generation layer. A
snippet of such an additional DOT specification is shown
in Fig 3. The snippet also demonstrates how generations
of people with node identifiers starting with “I” are
interleaved with generations of marriages nodes starting with
“F”.</p>
      <p>
        We selected two datasets for an evaluation of the
proposed constraints contribution. The first dataset consists
of 1671 people of the author’s private family relationship
genealogical graph. The set is created as a merge of
several family trees ranging over 14 generations with the first
records dated the year 1647. The second dataset
consists of 3057 people of the database created by
Egyptologists [
        <xref ref-type="bibr" rid="ref18">17</xref>
        ]. The database covers high rank officials from
the 4th, 5th, and 6th dynasties and their families. One can
reconstruct over 160 families with up to 6 generations. The
database has been filled over ten years. Generated graphs
covering more families help greatly Egyptologists to
assess quickly investigated social phenomena.
      </p>
      <p>The graph of the entire private family database was
depicted on Fig 2. The layout was generated by DOT tool
when the graph specification contains only a description of
nodes representing people and marriages and genealogical
edges (links between partners and their marriages, links
between marriages and children). Although the overall
appearance of the graph seems to be correct, there are
serious deficiencies. Some parts of generations were moved
upwards or downwards. Thus, the generations are mixed.</p>
      <p>In many cases, members of different families are mixed or
some children are placed with a different family even if it
causes obviously more edge crossing or longer edges.</p>
      <p>When the constraints on generation layers are specified,
the DOT tool might create a layout holding the rank
specifications as depicted on Fig 4. One can spot immediately
families as ovals followed by several rectangles. Not only
family members are close to each other, but also their
partial family trees are close, too. Unfortunately, one can
also identify heavy crossing among spouses from several
families with more children on the right side of the graph.</p>
      <p>There is always a marriage couple linking two large
families together. An appropriate constraint avoiding such
phenomena was proposed earlier in this paper. However, it
must be properly combined with the computation of the
constraints for children order and marriage order. Also,
the solution must deal with a set of families that might
be linked in a pairwise manner. At present, we are
experimenting with several techniques to propose their best
combination.</p>
      <p>Experiments with families of the Egyptian database did
not exhibit any breaking of these specifications as the
families are quite simple and not larger than 50 family
members.</p>
      <p>A layout generated using the constraints proposed in
this paper only without any further influence of the DOT
tool is shown in Fig 5. The ranks of nodes were placed
uniformly in a horizontal direction while their nodes were
placed uniformly in a vertical direction. The nodes were
linked with straight-lined edges. The layout is created very
quickly (below 0.5 second with a Python script on DELL
XPS 13 using an Intel i7 2GHz processor.</p>
      <p>Nevertheless, there are also other issues connected with
the DOT tool. The DOT tool takes the proposed order
of nodes only as initial advice that does not need to be
followed. Thus, if the DOT implemented criterion
produces stronger values, it can break the specified node order
and the layout can be again very confusing. For example,
several ranks might be merged to save space if a
generation layer is sparse. One might link children of a
family with directive subgraph, but there is no specification
on how ranking and subgraph specifications are combined
and how they worked together. We performed a number of
experiments with such more complex combinations with
rather unpleasant results. We are not aware of any other
tool that would allow a specification of a graph where one
part controls the layout and the other part is presented, i.e.
only coordinate positions of nodes are computed and edges
are routed.
In this work we proposed two simple constraints on node
order with regard to their ranks and to their order in ranks.</p>
      <p>The constraints produce graph layouts that are more
acceptable for the user if they deal with large family trees
combining several trees into a single acyclic graph. In
fact, the constraints result in a fully specified
topological arrangement of the graph nodes in plane. The
constraints can be computed very efficiently. The experiments
demonstrate clearly a significant improvement in graph
comprehension and indicate that the results provided by
the present state of the art tools are quite far from the
optimum layout, at least for special sorts of graphs such as
genealogical ones.</p>
      <p>The proposed constraints do not cover properly a
situation when more families with many children and a larger
number of their mutual marriages are involved. Some hints
on a better treatment were provided, but the search for their
best combination is the current subject of our research.</p>
      <p>The proposed approach performs well if genealogical data
resembles a composition of structures similar to trees with
occasional crossovers of large families with many
children.</p>
    </sec>
    <sec id="sec-6">
      <title>Acknowledgement</title>
      <p>Sponsored by the project for GACˇ R, No. 16-072105:
Complex network methods applied to ancient Egypt data
in the Old Kingdom (2700–2180 BC).</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>W. T.</given-names>
            <surname>Tutte</surname>
          </string-name>
          , “
          <article-title>Convex representations of graphs,”</article-title>
          <source>Proceedings of the London Mathematical Society</source>
          , Third Series, no.
          <issue>10</issue>
          , pp.
          <fpage>304</fpage>
          -
          <lpage>320</lpage>
          ,
          <year>1960</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2] --, “How to draw a graph,
          <source>” Proceedings of the London Mathematical Society</source>
          , Third Series, no.
          <issue>13</issue>
          , pp.
          <fpage>743</fpage>
          -
          <lpage>768</lpage>
          ,
          <year>1960</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>H.</given-names>
            <surname>Gibson</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Faith</surname>
          </string-name>
          , and
          <string-name>
            <given-names>P.</given-names>
            <surname>Vickers</surname>
          </string-name>
          , “
          <article-title>A survey of two-dimensional graph layout techniques for information visualisation</article-title>
          ,
          <source>” Information Visualization</source>
          , vol.
          <volume>12</volume>
          , no.
          <issue>3-4</issue>
          , pp.
          <fpage>324</fpage>
          -
          <lpage>357</lpage>
          ,
          <year>2013</year>
          . [Online]. Available: http: //ivi.sagepub.com/content/12/3-4/324.abstract
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>C.</given-names>
            <surname>McGrath</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Blythe</surname>
          </string-name>
          , and
          <string-name>
            <given-names>D.</given-names>
            <surname>Krackhardt</surname>
          </string-name>
          , “
          <article-title>Seeing groups in graph layouts</article-title>
          ,
          <source>” Connections</source>
          , vol.
          <volume>19</volume>
          , no.
          <issue>2</issue>
          , pp.
          <fpage>22</fpage>
          -
          <lpage>29</lpage>
          ,
          <year>1996</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>K.</given-names>
            <surname>Keller</surname>
          </string-name>
          , P. Reddy, and
          <string-name>
            <surname>S. Sachdeva.</surname>
          </string-name>
          (
          <year>2010</year>
          )
          <article-title>Family tree visualization</article-title>
          .
          <source>Course project report</source>
          . http: //vis.berkeley.edu/courses/cs294-10-sp10/wiki/images/ f/f2/Family_Tree_Visualization_-_
          <string-name>
            <surname>Final</surname>
          </string-name>
          _Paper.pdf. University of Berkeley.
          <source>Accessed: 5.6</source>
          .
          <year>2016</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6] (
          <year>2016</year>
          )
          <article-title>Gramps</article-title>
          . genealogical research software. https:// gramps-project.org/.
          <source>Accessed: 5.6</source>
          .
          <year>2016</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7] (
          <year>2016</year>
          )
          <article-title>Myheritage</article-title>
          . https://www.myheritage.cz.
          <source>Accessed: 5.6</source>
          .
          <year>2016</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>C.</given-names>
            <surname>Tuttle</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L. G.</given-names>
            <surname>Nonato</surname>
          </string-name>
          , and
          <string-name>
            <given-names>C.</given-names>
            <surname>Silva</surname>
          </string-name>
          , “
          <article-title>Pedvis: A structured, space-efficient technique for pedigree visualization</article-title>
          ,
          <source>” IEEE Transactions on Visualization and Computer Graphics</source>
          , vol.
          <volume>16</volume>
          , no.
          <issue>6</issue>
          , pp.
          <fpage>1063</fpage>
          -
          <lpage>1072</lpage>
          ,
          <year>Nov 2010</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>V.</given-names>
            <surname>Yoghourdjian</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            <surname>Dwyer</surname>
          </string-name>
          , G. Gange,
          <string-name>
            <given-names>S.</given-names>
            <surname>Kieffer</surname>
          </string-name>
          ,
          <string-name>
            <given-names>K.</given-names>
            <surname>Klein</surname>
          </string-name>
          , and
          <string-name>
            <given-names>K.</given-names>
            <surname>Marriott</surname>
          </string-name>
          , “
          <article-title>High-quality ultra-compact grid layout of grouped networks</article-title>
          ,
          <source>” IEEE Transactions on Visualization and Computer Graphics</source>
          , vol.
          <volume>22</volume>
          , no.
          <issue>1</issue>
          , pp.
          <fpage>339</fpage>
          -
          <lpage>348</lpage>
          ,
          <year>Jan 2016</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>R.</given-names>
            <surname>Ball</surname>
          </string-name>
          and
          <string-name>
            <given-names>D.</given-names>
            <surname>Cook</surname>
          </string-name>
          , “
          <article-title>A family-centric genealogy visualization paradigm</article-title>
          ,
          <source>” in 14th Annual Family History Technology Workshop</source>
          , Provo, Utah,
          <year>2014</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <given-names>S.</given-names>
            <surname>Kieffer</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            <surname>Dwyer</surname>
          </string-name>
          ,
          <string-name>
            <given-names>K.</given-names>
            <surname>Marriott</surname>
          </string-name>
          , and
          <string-name>
            <given-names>M.</given-names>
            <surname>Wybrow</surname>
          </string-name>
          , “Hola:
          <article-title>Human-like orthogonal network layout</article-title>
          ,
          <source>” IEEE Transactions on Visualization and Computer Graphics</source>
          , vol.
          <volume>22</volume>
          , no.
          <issue>1</issue>
          , pp.
          <fpage>349</fpage>
          -
          <lpage>358</lpage>
          ,
          <year>Jan 2016</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <given-names>J. N.</given-names>
            <surname>Warfield</surname>
          </string-name>
          , “
          <article-title>Crossing theory and hierarchy mapping</article-title>
          ,
          <source>” IEEE Transactions on Systems, Man, and Cybernetics</source>
          , vol.
          <volume>7</volume>
          , no.
          <issue>7</issue>
          , pp.
          <fpage>505</fpage>
          -
          <lpage>523</lpage>
          ,
          <year>July 1977</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <string-name>
            <given-names>K.</given-names>
            <surname>Sugiyama</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Tagawa</surname>
          </string-name>
          , and
          <string-name>
            <given-names>M.</given-names>
            <surname>Toda</surname>
          </string-name>
          , “
          <article-title>Methods for visual understanding of hierarchical system structures</article-title>
          ,
          <source>” IEEE Transactions on Systems, Man, and Cybernetics</source>
          , vol.
          <volume>11</volume>
          , no.
          <issue>2</issue>
          , pp.
          <fpage>109</fpage>
          -
          <lpage>125</lpage>
          ,
          <year>Feb 1981</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [14]
          <string-name>
            <given-names>K.</given-names>
            <surname>Sugiyama</surname>
          </string-name>
          and
          <string-name>
            <given-names>K.</given-names>
            <surname>Misue</surname>
          </string-name>
          , “
          <article-title>Visualization of structural information: automatic drawing of compound digraphs</article-title>
          ,
          <source>” IEEE Transactions on Systems, Man, and Cybernetics</source>
          , vol.
          <volume>21</volume>
          , no.
          <issue>4</issue>
          , pp.
          <fpage>876</fpage>
          -
          <lpage>892</lpage>
          ,
          <year>Jul 1991</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [15] (
          <year>2016</year>
          )
          <article-title>Graphviz - graph visualization software</article-title>
          .
          <source>www.</source>
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          graphviz.org.
          <source>Accessed: 5.6</source>
          .
          <year>2016</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          [16]
          <article-title>(2016) yed graph editor</article-title>
          . http://www.yworks.com/products/ yed. yWorks.
          <source>Accessed: 5.6</source>
          .
          <year>2016</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          [17]
          <string-name>
            <given-names>V.</given-names>
            <surname>Dulíková</surname>
          </string-name>
          , “
          <article-title>The reign of king Nyuserre and its impact on the development of the Egyptian state. A multiplier effect period during the Old Kingdom</article-title>
          .”
          <source>Ph.D. dissertation</source>
          , Charles University in Prague, Faculty of Arts, Czech Institute of Egyptology,
          <year>2016</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          [18]
          <string-name>
            <given-names>E. R.</given-names>
            <surname>Gansner</surname>
          </string-name>
          ,
          <string-name>
            <given-names>E.</given-names>
            <surname>Koutsofios</surname>
          </string-name>
          , S. C. North, and K. phong Vo, “
          <article-title>A technique for drawing directed graphs</article-title>
          ,
          <source>” IEEE Transactions nn Software Engineering</source>
          , vol.
          <volume>19</volume>
          , no.
          <issue>3</issue>
          , pp.
          <fpage>214</fpage>
          -
          <lpage>230</lpage>
          ,
          <year>1993</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          [19]
          <string-name>
            <given-names>T. H.</given-names>
            <surname>Cormen</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C. E.</given-names>
            <surname>Leiserson</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R. L.</given-names>
            <surname>Rivest</surname>
          </string-name>
          , and
          <string-name>
            <given-names>C.</given-names>
            <surname>Stein</surname>
          </string-name>
          , Introduction to Algorithms, Third Edition, 3rd ed. The MIT Press,
          <year>2009</year>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>