Stable graph layout determination

By calculating the global ranking allocation and calculating the graph layout based on the allocation, the problem of insufficient stability of the graph layout in the prior art is solved, and a more stable and efficient graph layout calculation is achieved.

CN112437919BActive Publication Date: 2025-04-15MAGNAVIEW LTD
View PDF 3 Cites 0 Cited by

Patent Information

Application Number
CN201980046520.7
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Priority Date
2018-06-28
Filing Date
2019-06-07
Publication Date
2025-04-15
Estimated Expiration
2039-06-07

AI Technical Summary

Technical Problem

The existing hierarchical drawing methods have shortcomings in the stability of the graph layout, which leads to inconsistent diagram layout when the graph changes, making it difficult to understand the changes in the graph.

Method used

By calculating the global ranking allocation and calculating the layout of the graph based on the allocation, ensuring that nodes with equal ranking allocations are placed adjacent to each other, thereby improving the stability of the graph layout.

Benefits of technology

The stability of the graph layout is improved, making the changes in the graph between different layouts easier for users to understand and track, and the computing efficiency is improved.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN112437919B_ABST
    Figure CN112437919B_ABST
Patent Text Reader

Abstract

Some embodiments relate to a graph layout device for determining a layout of a graph. The graph is derived from a set of paths through a set of nodes. The nodes of the graph are included in the set of nodes. The set of paths is a subset of a global set of paths through the set of nodes. The layout includes a position of each node of the graph. The graph layout device calculates a global rank assignment, filters the global set of paths to obtain a set of paths, and calculates the layout of the graph based on the global rank assignment.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] The present invention relates to a graph layout device, a graph layout method and a computer-readable medium. Background Art

[0002] For example, various relationships and processes in physical, biological, social, and information systems can be represented as graphs including nodes and edges. For example, in biological systems, nodes can represent areas where a certain species exists, and edges can represent migration paths between areas. One type of graph that is particularly useful for gaining insights from data is a graph derived from a collection of paths (e.g., a sequence of nodes of a graph). For example, in information systems, a path can represent a time series of related logging activities (e.g., "login" and "logout"). Such a collection of paths can derive a connectivity graph including their nodes and the connectivity between these nodes. This graph helps to gain insight into which nodes in the path often appear together, such as which logged activities are often performed subsequently.

[0003] It is beneficial to provide a user with a visualization of a graph, e.g., for better understanding the data it represents. The technical field of graphing relates to determining the layout of (e.g., a graphing representation of) the vertices and edges of a graph. Graphing is complex: many layouts of the same graph are possible, and algorithms for determining the layout must balance various factors, such as performance, the size of the resulting graph, and various aesthetic parameters (such as the number of edge crossings, the length of the edges, and the spatial distribution of the nodes).

[0004] One class of drawing techniques known in the art focuses on hierarchical drawing, also called layered drawing or Sugiyama-style drawing, as discussed in Chapter 13, "Hierarchical Drawing Algorithms," by Roberto Tamassia (ed.), Handbook of Graph Drawing and Visualization. Hierarchical drawing typically involves at least: a cycle removal step, in which the graph is made acyclic; a layer assignment step, in which nodes are divided into layers or ranks; a vertex ordering step, in which vertices with the same rank are ordered; and an X-coordinate assignment step, in which the precise positioning of the nodes is determined. Several of these steps involve solving complex optimization problems, for which it is often necessary to resort to heuristics. For example, as described in detail in the Handbook of Graph Drawing and Visualization, various ways of performing the steps may be used. For example, in the "dot" tool that is part of the Graphviz graph visualization software package, an implementation of hierarchical drawing may be used.

[0005] A disadvantage of using existing hierarchical drawing methods to determine the layout of a graph is that the results are not satisfactory from a stability perspective. The stability of a graph layout involves minimizing differences in the placement of nodes and edges when changing the graph, for example, different layouts should preserve the direction of edges, the relative distances between nodes, and / or the positions of nodes in the layout, specifically, while also considering the paths along which the graph is derived. For example, in a system for interactive analysis of a data set, for example by performing various filtering of, for example, paths and reviewing the resulting graphs, stability between the various resulting graphs is desirable, for example, to make it easier for a user to observe changes. However, stability is generally not guaranteed by existing hierarchical drawing methods, for example, adding or removing a single edge may result in a completely different layout of the graph, making it difficult to understand what has changed.

[0006] Therefore, it is desirable to provide a graph layout method for path-derived graphs with improved stability. Summary of the invention

[0007] A graph layout device as defined in the claims is proposed. The graph layout device determines a layout of a graph. The graph is derived from a set of paths through a set of nodes. The nodes of the graph are included in the set of nodes, and the set of paths is a subset of a global set of paths through the set of nodes. The layout includes the position of each node of the graph. The graph layout device calculates a global rank assignment that assigns a rank to each node in the set of nodes. Calculating the global rank assignment includes iteratively selecting a path from the global path set, and updating the global rank assignment based on the selected path. The graph layout device filters the global path set to obtain a set of paths, the graph layout device calculates a layout of the graph based on the global rank assignment, wherein nodes of the graph with equal rank assignments are placed adjacent to each other, and the layout of the graph is stored in a memory.

[0008] Interestingly, by using a global set of paths to compute a global rank assignment and using the global rank assignment to compute the layout of the graph, stability is improved because different graphs associated with the same global set of nodes may reuse the same global rank assignment; moreover, computing a global rank assignment and / or reusing it in this manner may provide performance advantages and / or may cause the graph to more closely match the underlying data.

[0009] In one embodiment, the graph layout device determines the layout of another graph derived from another set of paths through the set of nodes based on the same global ranking assignment, thereby improving the stability between the graph and the other graph. In one embodiment, the graph layout device draws the graph on a display. In another embodiment, the graph layout device draws an animation that morphs the drawing of the graph into the drawing of the other graph, which is supported by the improved stability.

[0010] In one embodiment, the layout of the computation graph includes: determining a set of nodes with equal rank assignments, determining an ordering of the set of nodes, and assigning positions to nodes in the set of nodes based on the global rank assignments and the ordering. In one embodiment, the nodes with equal rank assignments are ordered based on the ordering of the global graph, thereby further improving stability and performance. In one embodiment, the nodes are ordered using backbone nodes, thereby making the graph more closely match the underlying data, especially its sequential nature.

[0011] In one embodiment, paths from the global path set have weights in a certain order, and the global ranking assignment is determined in this order. This may make the graph layout match the underlying data more closely, for example, the graph layout more prominently shows paths with high weights. In one embodiment, the weight represents the number of occurrences. In one embodiment, the weight of the path is specified by the user. In one embodiment, the node represents an activity, and the path represents a time series of activities.

[0012] Another aspect of the invention is a method for graph layout as defined in the claims. The method according to the invention may be implemented on a computer as a computer-implemented method, or implemented in dedicated hardware, or implemented in a combination of the two. Executable code for the method according to the invention may be stored on a computer program product. Examples of computer program products include memory devices, optical storage devices, integrated circuits, servers, online software, etc. Preferably, the computer program product comprises a non-transient program code stored on a computer-readable medium for performing the method according to the invention when the program product is executed on a computer.

[0013] In a preferred embodiment, the computer program comprises computer program code adapted to perform all the steps of the method according to the invention when the computer program is run on a computer.Preferably, the computer program is embodied on a computer readable medium.

[0014] Another aspect of the invention provides a method of making a computer program downloadable. This aspect is used when the computer program is uploaded to, for example, Apple's App Store, Google's Play Store or Microsoft's Windows Store, and when the computer program is downloadable from such a store. BRIEF DESCRIPTION OF THE DRAWINGS

[0015] Further details, aspects and embodiments of the invention will be described by way of example only with reference to the accompanying drawings. The elements in the drawings are illustrated for simplicity and clarity and are not necessarily drawn to scale. In the drawings, elements corresponding to elements already described may have the same reference numerals. In the drawings,

[0016] Figure 1a, Figure 1b schematically illustrates an example of an embodiment of a graph layout device,

[0017] Figure 2 schematically illustrates an example of an embodiment of a graph layout device,

[0018] Figure 3a , Figure 3b , Figure 3c schematically illustrates an example of an embodiment of a ranking unit,

[0019] Figure 3d schematically shows an example of a graph drawn according to a layout of a graph,

[0020] Figure 4a Schematically shows an example of a global rank assignment resulting in a layout of two graphs,

[0021] Figure 4b Schematically showing an example of a local ranking assignment resulting in a layout of two graphs,

[0022] FIG5a shows an example of a graph drawn according to the layout of a graph calculated using “points”,

[0023] FIG5b shows an example of a graph drawn according to the layout of the graph calculated using “points”,

[0024] Figure 6 shows an example of the graph of FIG. 5a drawn according to the layout of the graph calculated based on the embodiment,

[0025] Figure 7 shows an example of the graph of FIG5b drawn according to the layout of the graph calculated based on the embodiment,

[0026] Figure 8 schematically illustrates an example of an embodiment of a graph layout method,

[0027] Figure 9a schematically shows a computer-readable medium having a writable portion comprising a computer program according to an embodiment,

[0028] Figure 9b A representation of a processor system according to an embodiment is schematically shown.

[0029] List of reference numerals:

[0030] 110, 111 Figure layout equipment

[0031] 121 Display

[0032] 130, 131 Processor

[0033] 140, 141 Memory

[0034] 210 Layout Equipment

[0035] 220 Display

[0036] 231 Ranking Units

[0037] 232 Filter Unit

[0038] 233 layout units

[0039] 234 Drawing Units

[0040] 241 Global path collection

[0041] 242 Global ranking assignment

[0042] 243 Path Collection

[0043] 244 Layout of the diagram

[0044] 251, 252, 253, 254, 255 nodes

[0045] 256, 257, 258 paths

[0046] 331 Ranking Units

[0047] 342, 342', 342" Global ranking assignment

[0048] Nodes 351, 352, 353, 354, 355

[0049] Paths selected by 356, 357, 358

[0050] 441 Global path collection

[0051] 442 Global ranking assignment

[0052] 443, 443' Graph layout based on global rank assignment

[0053] 444, 444' Path Collection

[0054] 445, 445' Local ranking distribution

[0055] 446, 446' Graph layout based on local rank assignment

[0056] Nodes 451, 452, 453

[0057] Path 456, 457, 458

[0058] 500, 510, 600, 700 plotted

[0059] Nodes 501-505, 511-515, 601-605, 701-705

[0060] 509, 609 Edge

[0061] 900 Graph Layout Method

[0062] 901 Calculate global ranking distribution

[0063] 902 Filter global path set

[0064] 903 Layout of computational graph

[0065] 904 Storage Graph Layout

[0066] 911 Choose a Path

[0067] 912 Check whether the global ranking allocation is completed

[0068] 913 Update global ranking distribution

[0069] 1000 Computer readable medium

[0070] 1010 Writable part

[0071] 1020 Computer Programs

[0072] 1110 (multiple) integrated circuits

[0073] 1120 Processing Unit

[0074] 1122 Memory

[0075] 1124 ASIC

[0076] 1126 Communication Components

[0077] 1130 Interconnect

[0078] 1140 Processor System DETAILED DESCRIPTION

[0079] While the invention is susceptible of embodiment in many different forms, one or more specific embodiments are shown in the drawings and will be described in detail herein, it being understood that this disclosure is considered to be illustrative of the principles of the invention and is not intended to limit the invention to the specific embodiments shown and described.

[0080] Hereinafter, for the sake of understanding, the elements of the embodiments are described in operation. However, it will be apparent that the respective elements are arranged to perform the functions described as being performed by them.

[0081] Further, the invention is not limited to the embodiments, and the invention lies in each and every novel feature or combination of features described herein or recited in mutually different dependent claims.

[0082] Figure 1a and Figure 1b A possible embodiment of a graph layout device for determining a layout of a graph is schematically shown. Figure 1a The graph layout device 110 shown includes a processor 130 and a memory 140 . Figure 1b The illustrated graph layout device 111 includes a display 121, a processor 131, and a memory 141. For example, the memories 140, 141 may include software and / or data that the respective processors 130, 131 are configured to act upon. The processors 130, 131 may be implemented as one or more processor circuits, such as a microprocessor, an ASIC, an FPGA, etc. The processors may be configured, for example, within a cloud computing architecture, etc. Other examples are shown herein. The memories 140, 141 may include computer program instructions executable by the respective processors 130, 131. The processors 130, 131 and possibly together with the respective memories 140, 141 are configured according to an embodiment of the graph layout device.

[0083] The following Figure 2 , Figure 3a-3c The functional units shown may be functional units of a processor. For example, Figure 2 Can be used as a blueprint for the possible functional organization of a processor. The processor is not associated with Figure 2 and Figure 3a-3c The units in the Figure 1a and Figure 1b For example, Figure 2 The functional units shown may be implemented in whole or in part in computer instructions stored at device 110 (e.g., in an electronic memory of device 110) and executable by a microprocessor of device 110, and similarly for device 111. In hybrid embodiments, the functional units are implemented partially in hardware (e.g., as a co-processor, such as a cryptographic processor) and partially in software stored and executed on devices 110 and / or 111.

[0084] Figure 2 A possible embodiment of the graph layout device 210 is schematically shown. As indicated above, Figure 2 2 shows functional units that can be implemented by a processor. For the purpose of illustration, Figure 2 Some data elements are also shown. The graph layout device 210 is configured to determine a layout 244 of the graph. The layout includes the position of each node of the graph, such as an x-coordinate and a y-coordinate. The layout may also include the position of additional layout elements such as virtual nodes, as discussed below.

[0085] As described in more detail below, determining the layout 244 includes several steps performed by the corresponding units of the graph layout device 210, such as the ranking unit 231, the filtering unit 232, the layout 233, and optionally the drawing unit 234. The device determines the layout 244 of the graph derived from the node set, which is a subset of the global path set obtained by filtering. The ranking unit 231 of the graph layout device 210 calculates a global ranking assignment 242 that assigns a rank to each node in the node set. Nodes of the graph with equal ranking assignments are placed adjacent to each other in the graph layout. Interestingly, the ranking assignment is a global ranking assignment based on the global path set, thereby improving stability. The filtering unit 232 filters the global path set to obtain a path set of the derived graph. The layout unit 233 calculates the layout of the graph based on the global ranking assignment 242 in such a way that the nodes of the graph with equal ranking assignments are placed adjacent to each other. The drawing unit 234 optionally draws the graph. The ranking unit 231 optionally performs a cycle removal step, such as described in detail in Chapter 13.2 "Cycle Removal" of "Handbook of Drawing and Visualization" by Roberto Tamassia (ed.), which is included herein by reference. The graph layout device 210 optionally performs an edge concentration step, such as described in detail in Chapter 13.4 "Edge Concentration" of "Handbook of Drawing and Visualization" by Roberto Tamassia (ed.), which is included herein by reference.

[0086] Interestingly, the ranking unit 231 calculates a global ranking assignment, and the layout unit 233 calculates the layout of the graph based on the global ranking assignment. The advantage of doing so is that when the layouts of multiple graphs are based on the same global ranking assignment, the ranking assignment can be reused, making the graph layout more efficiently calculated and improving the stability between the layouts of multiple graphs. The improved stability can be observed in several ways, such as by observing that the distance between a given node x and y is similar in the two graph layouts and / or observing that graph objects (such as nodes or edges) have similar locations in the two graph layouts, and / or observing that layout adjustments typically retain the direction of the nodes, such as if a node is located to the left of another node in the layout of one graph, it is typically also located to the left of the node in the layout of the other graph. Moreover, since the calculation of the graph layout uses information about the set of paths that derive the graph, the layout of the graph better reflects the underlying data, which will also be discussed in more detail below.

[0087] As described in detail below, the graph for which the layout device 210 determines the layout is derived from a set of paths 243 through a set of nodes. The nodes of the graph are included in the set of nodes. A path typically includes an ordered sequence of nodes. For example, Figure 2Five nodes 251-255 labeled "A" to "E" are schematically shown. Path set 243 includes two paths, path 257 includes an ordered sequence of nodes 251, node 252 and node 253, and path 258 includes an ordered sequence of nodes 251 and node 254. For the purpose of explanation, we can represent the path as a sequence of labels, for example, path 257 can be represented as "ABC", and path 258 can be represented as "AD". Various paths through the node set can be arbitrarily related to each other, for example, pairs of paths can be disjoint, or partially or completely overlapped, for example, one path can be a subpath of another path, for example, one path is a prefix or suffix of another path. Nodes can appear in different paths in different orders, for example, node set 243 can include path "AD" (where node A is before node D) and path "DA" (where node A is directly after node D) or path "DBA" (where A is indirectly after node D). Paths are usually distinguished, but this is not necessary. Not all nodes in the node set must appear in a path from path set 243 , for example, node “E” 255 will not appear in a path from set 243 .

[0088] The graph derived by the path set 243 can be a directed graph. Such a directed graph can include a node set and an edge set, and an edge is an ordered pair of vertices. The graph can contain a loop. The node set can also be a multiset, for example, the graph is a multigraph or a multi-directed graph; the graph can be a specific type of directed graph, such as a directed acyclic graph and / or a strongly connected graph, or can be a directed graph with complementary properties, such as a weighted directed graph, such as a graph in which each edge is assigned a weight. The graph can also be a flow network, in which one node is distinguished as a source node and another node is distinguished as a sink node. Various other known subclasses and variations of directed graphs can be used. The graph derived by the path set 243 can also be an undirected graph. The undirected graph can include a node set and an edge set, and an edge is a set of two nodes or a 2-fold set of two nodes, for example, an edge representing a loop can be a 2-fold set containing the same node twice. The graph can be a special type of undirected graph (such as a connected graph or a planar graph) distinguished in the literature and / or an undirected graph with complementary properties, such as a weighted undirected graph or an undirected multigraph.

[0089] The graph can be derived from the path set 243 in various ways. In some embodiments, the nodes of the graph are included in the union of the nodes along the paths from the path set, and the edges of the graph are included in the union of the edges along the paths from the path set. For example, all nodes that appear in the paths in the path set 243 can be nodes of the graph, and all edges that appear in the paths in the path set 243 can be edges of the graph. For example, consider a path set 243 including path "ABC" 257 and path "AD" 258. The graph derived from the path set can have nodes "A", "B", "C" and "D" and edges from "A" to "B", from "B" to "C" and from "A" to "D". For example, the graph can be obtained by superimposing various paths (such as path "ABC" and path "AD") on the node set. The graph can be a subgraph of a graph defined in such a way that, for example, the graph is obtained as a subgraph of a complete derived graph, and the complete derived graph includes nodes that appear in the paths in the path set 243 and edges that appear in the paths in the path set 243. For example, a graph may be obtained as a subgraph of the complete derived graph by filtering according to a criterion (e.g., by filtering out all edges that meet a certain criterion, e.g., by filtering out all edges with weights below a threshold and / or, e.g., after filtering out edges, filtering out all nodes that have no incoming or outgoing edges). The criterion (e.g., a threshold) may be obtained by the graph layout device 210 as an input (e.g., an input given by a user), or may be calculated by the graph layout device 210 itself. A graph may also be derived from the path set 243 in other ways, e.g., a path may derive edges between all pairs of nodes along the path, and so on.

[0090] In different applications, node sets and path sets 243 can represent different kinds of objects. In some embodiments, nodes represent activities, and paths represent the time sequence of activities. Activities can be processing steps or operation steps, such as steps for the process of producing products or delivering services. For example, a path can correspond to a situation, such as a sequence of events, wherein an event includes an activity that occurs at a specific time as part of a situation. An activity can be a kind of event. Different situations can correspond to the same path. For example, a situation including a login activity at 11:15 a.m. and a logout activity at 11:30 a.m. and a situation including a login activity at 11:45 a.m. and a logout activity at 12:30 p.m. can correspond to a path "IO" through node sets "I", "O", node "I" represents a login activity and node "O" represents a logout activity. Other nodes can represent other activities, such as screen locking, sending emails, etc. For example, in such a case, a graph derived by path set 243 can have an activity under a given set of situations as a node and an edge between activities that directly follow each other in one of the situations. The graph may also be a subset of a graph defined in such a way that, for example, the graph may include edges between activities that directly succeed each other in at least a minimum number of cases (for example, in 10 or 100 cases) and / or nodes representing activities having at least one incoming or outgoing edge.

[0091] As another example, a node may represent a physical location, and a path may represent a route between these locations, such as a transportation route. For example, a node may represent a node, and a path may represent the possibility of traveling from a starting point to a destination via a series of nodes. For example, a node may represent a node in a bicycle route network, a path represents a bicycle route in the bicycle route network, and an edge represents a landmark route between two nodes. Alternatively, a node may represent a public transportation station, such as a bus, train, tram, or ferry station, and a path may represent a possible way to travel from a starting point to a destination via public transportation, and an edge represents a direct public transportation route between two public transportation stations, such as a single train traveling from one train station to another. Various other uses of nodes, graphs, and paths that represent useful real-world concepts are known and may benefit from the graph layout techniques presented herein, such as system structure diagrams, plans, operational process diagrams, and logic circuit diagrams.

[0092] Interestingly, the path set is a subset of the global path set 241 through the node set. For example, Figure 2The global path set 241 in includes the paths "ABC" 257 and "AD" 258 from the node set 243, but also includes the path "ACE" 256. For example, the global path set 241 may include all sequences of events in the log, while the path set 243 includes a subset of the sequences of these events. For example, the path set 243 can be selected by a condition. For example, the condition can be a time condition, such as a subset of the sequence of events that occurred within a given time period (e.g., last week). Alternatively, the condition can be that the path from the path set 243 satisfies a certain condition or has a certain attribute, such as the path has a minimum and / or maximum length, the path has been marked, such as with a predicate, such as the predicate "important", or the condition can be that the path contains a specific node or a specific type of node, such as a specific activity. As discussed in more detail later, the path set 243 is obtained from the global path set 241 by filtering. The global path set 241 is used to calculate the global ranking assignment 242, and the global ranking assignment 242 is used to calculate the layout 244 of the graph. This can have multiple advantages over conventional approaches that do not use a global path set and / or a global ranking assignment, such as improving stability between layouts of graphs derived from different path sets, reducing the computational complexity of computing the graph layout, and / or ensuring that specific paths from the global path set (e.g., paths with high weights) are shown consistently and in a manner that nodes from such specific paths are shown more frequently in the order in which they appear in those paths.

[0093] The graph layout device 210 includes a ranking unit 231. The ranking unit 231 calculates a global ranking assignment 242 that assigns a ranking to each node in the node set. The global ranking assignment 242 supports determining the layout of the graph according to the hierarchical drawing technique. Preferably, the global ranking assignment 242 satisfies the following property: for each path in the global path set 241, a distinguished ranking is assigned to the nodes along the path. This property is useful in hierarchical drawing to avoid the nodes along the path being depicted adjacent to each other, thereby reducing the number of edge crossings, because the layout of the graph is calculated so that the nodes of the graph with equal ranking assignments are placed adjacent to each other. Interestingly, a ranking is assigned to each node in the node set, such as also assigned to node 255, which appears in path 256 from the global path set 241, but does not appear in the path from the path set 243. As a result, the global ranking assignment 242 can be reused when calculating the layout of other graphs (e.g., graphs derived from different path sets through the node set). Therefore, layouts of multiple graphs may be allocated 242 based on the same global ranking, thereby improving stability between the layouts of these different graphs and improving the efficiency of computing the graph layouts.

[0094] To calculate the global rank assignment 242, the ranking unit 231 iteratively selects a path from the global path set 241, and updates the global rank assignment 242 based on the selected path. For example, the ranking unit 231 selects a path, updates the global rank assignment, selects another path, updates the global rank assignment, and so on, until the desired global rank assignment is obtained. In a preferred embodiment, the ranking unit 231 iterates over all paths from the global path set 241, but this is not necessary: ​​it is also possible to iterate only over a subset of the paths, such as only a fixed number of paths, such as the first 10 or 10% of the paths, or only paths that satisfy a certain property, such as only paths with a weight of at least 10, or iterate until a certain criterion is met, such as until the global rank assignment satisfies a certain property, such as until all nodes in the node set or all nodes that appear in the paths in the node set 243 have been assigned a rank or until the global rank assignment remains static through several iterations, such as through the last five iterations. Advantageously, instead of using only the graph itself as input, e.g., information about which nodes and edges the graph includes, the ranking unit 231 is able to apply additional information, e.g., a global path set 241, that is typically not available in ranking or layer assignment methods used to compute the graph layout, thereby making the computation of the ranking assignment 242 more efficient, as well as making the ranking assignment 242 more closely match the underlying data (e.g., the global path set 241). For example, it is desirable that the layout of the resulting graph matches the order of the nodes in the paths in the global path set 241, e.g., the nodes of one or more paths from the path set 241 should generally appear from left to right or from top to bottom in the layout. Advantageously, the ranking unit 231 can use the global path set 241 to improve such a match.

[0095] There are multiple ways to select a path from the global path set 241. In a preferred embodiment, the paths from the global path set 241 have corresponding weights. The ranking unit 231 can sort the global path set by weight, for example in ascending or descending order. Then, the ranking unit 231 can iteratively update the global ranking assignment 242 in the order of the sorted global path set, for example, iteratively selecting a path from the global path set 241 can include selecting the next path from the sorted global path set. In a preferred embodiment, the paths are selected in descending order of weight. As a result, high-weight paths are used in earlier updates of the global ranking assignment, which can cause such paths to affect the global ranking assignment more seriously than other paths, thereby affecting the layout of the graph. This can have the following advantages: more important paths are more prominent in the resulting graph layout.

[0096] The weight of the path can be calculated by the graph layout device 210, it can be received as an input, or it can be specified by the user, such as the user specifies the weight of at least one path, such as through the user interface of the graph layout device 210. For example, a default weight can be assigned to the path by the graph layout device 210, for example, and the user can override the default weight for one or more (e.g., all) paths. This can make the path selected by the user more prominent in the layout of the graph than other paths. In some embodiments, the weight or default weight of a path from the global path set 241 represents the number of occurrences of the path. In particular, in such a case, the set of high-weight paths may be the same or similar for different path sets that are subsets of the same global path set, because frequent occurrences may occur in multiple subsets, thereby improving the accuracy of the global ranking assignment for different subsets of the global path set. For example, a path from the global path set 241 can represent a time series of activities, and the weight can represent the number of times an instance of the time series of activities appears in, for example, a log file.

[0097] Other methods of iteratively selecting a path or variations of the above method are also possible, for example a path may be selected randomly, for example uniformly at random or biased, for example with a probability proportional to the weight of the path.

[0098] After selecting a path, the ranking unit 231 updates the global ranking assignment 242 based on the selected path. Updating the global ranking assignment 242 may include, for example, assigning ranks to nodes from the selected path that were not previously assigned ranks and / or updating ranks previously assigned to nodes from the selected path or other nodes. The ranking unit 231 preferably starts with an initially empty ranking assignment, e.g., no ranks have been assigned to nodes. Alternatively, the ranking unit 231 starts with a ranking assignment in which a default ranking has been assigned to all nodes, e.g., all nodes have been assigned the same ranking, or all nodes have been assigned a random ranking. In some embodiments, after updating the global ranking assignment 242 based on the selected path, ranks are assigned to all nodes along the path that have been processed so far by the ranking unit 231 via the global ranking assignment 242.

[0099] In some embodiments, the ranking unit 231 updates the global ranking assignment 242, wherein a distinguished ranking is assigned to the nodes along the selected path. Specifically, this can support the assignment of a distinguished ranking to the nodes along each path from the global path set 241, which is desirable for hierarchical drawing, as discussed above. For example, the ranking unit 231 may detect that the same ranking has previously been assigned to a first node and a second node along the selected path. In such a case, the ranking unit 231 can update the ranking assignment, for example, by incrementing the ranking of the second node by one, so that the rankings of the first node and the second node are distinguished. The rankings of one or more other nodes can also be incremented, for example, the rankings of all nodes whose rankings are greater than or equal to the ranking of the second node and / or all nodes directly or indirectly following the second node along the path selected so far, or all nodes similarly.

[0100] Preferably, after each iteration, a distinct ranking is assigned to all nodes in the selected path and / or all previously selected paths, for example, the ranking unit 231 may remain unchanged, that is, the distinct ranking is assigned to the nodes that are directly connected in the selected path. However, this is not necessary, for example, the ranking unit 231 may not ensure that this property remains unchanged when performing the iteration, but may be implemented through post-processing after the iteration is performed.

[0101] The ranking is typically an integral, although other ordered sets of ranking values ​​may also be used. During the calculation of the global ranking assignment 242 or after the calculation is completed, the ranks assigned to nodes in the global ranking assignment 242 need not be consecutive; for example, a rank of 1 may be assigned to one or more nodes, and a rank of 3 may be assigned to other nodes, while no rank is assigned a rank of 2. Not assigning consecutive ranks can be beneficial, particularly during the calculation of the global ranking assignment, because it can simplify the assignment of ranks between two previously assigned ranks to nodes by not having to update previously assigned ranks. For example, if node A has a rank of 1 and node B has a rank of 2, then in order to assign an integral rank between the ranks of nodes A and B to node C, either A's rank or B's rank must be updated, whereas if node A has a rank of 100 and node B has a rank of 200, then C may be assigned a rank of 150 without affecting the ranks of A or B. Similarly, in some embodiments, for example during the calculation of the global ranking assignment 242, the ranking may be negative. This can be beneficial in simplifying the computation of the global rank assignments because it can simplify assigning a rank to a node that is less than all previously assigned ranks, e.g., a rank that is one unit less than all previously assigned ranks can be assigned to a node, e.g., the smallest previously assigned rank can be -2, and a rank of -3 can be assigned to the node. The rankings in the global rank assignments 242 do not have to be explicitly stored in memory during and / or after the computation by the ranking unit 231; for example, the rankings can be implicitly stored by maintaining a linked list of levels (each level including a set of nodes that have been assigned the same rank) or by a similar data structure. In the following examples, for clarity, we explicitly give the score rankings, but it is to be understood that these rankings can be implicit.

[0102] Figure 3a An example of an embodiment of the ranking unit 331 is schematically shown. Figure 3a , the ranking unit 331 updates the global rank assignment 342 based on the selected path “ACE” 356 by assigning rank 1, rank 2, and rank 3 to nodes A 351, C 353, and E 355 that were not previously assigned a global rank. For example, the path 356 is the first selected path, and the ranking unit 331 updates the global rank assignment 331 by assigning increasing ranks (e.g., consecutive ranks) to the corresponding nodes from the selected path 356.

[0103] Figure 3bAn example of an embodiment of a ranking unit 331 is schematically shown. The figure illustrates a situation where a first node (e.g., node "B" 352) appears between a second node (e.g., node "A" 351) and a third node (e.g., node "C" 353) along a selected path (e.g., path "ACE" 356), wherein no rank is assigned to the first node, and ranks are assigned to the second and third nodes, e.g., rank 1 is assigned to node "A" 351, and rank 2 is assigned to rank "C" 353. In such a situation, the global rank assignment may be updated, wherein a rank between the rank assigned to the second node and the rank assigned to the third node is assigned to the first node. For example, in Figure 3b , the rank 2 is assigned to the first node “B” 352 , and the rank of the third node “C” 353 is updated to 3, so that the rank of node 352 is between the rank of node 351 and the rank of node 353 .

[0104] There may be multiple nodes between the second node and the third node that have not yet been assigned a ranking, in which case a ranking may be assigned to each of these nodes, preferably a distinct ranking, such as a sequential ranking. The rankings of nodes other than the second node and the third node may also be updated. For example, the rankings may be updated so that nodes that had a distinct ranking before the update also have a distinct ranking after the update. For example, in Figure 3b , the rank of node E 355 is updated from 3 to 4, so that nodes C 353 and E 355 have different ranks after the update. For example, a desired rank may be assigned to a node by incrementing the rank of a node greater than or equal to the desired rank by one, and then assigning the desired rank to the node.

[0105] Figure 3c An example of an embodiment of the ranking unit 331 is schematically shown. The figure illustrates a situation where a node (e.g., node "D" 354) along a selected path (e.g., path "AD" 358) is before or after all other nodes (e.g., node "A" 351) along the selected path that are assigned a rank. In such a situation, the ranking unit 331 can update the global rank assignment, where a rank is assigned to the node that is less than or greater than the ranking of all other nodes. For example, in Figure 3c, a rank of 2 is assigned to node "D" 354 in the global rank assignment 342", which is greater than the rank of node "A" 351 that precedes it. There may be multiple nodes before all nodes along the selected path that are assigned ranks and / or multiple nodes after all nodes along the selected path that are assigned ranks, where a rank may be assigned to each of these previous and / or subsequent nodes, preferably distinctly, e.g., increasing. As in this example, the assigned rank may be directly before or after the assigned rank, but this is not required, e.g., a rank of 3, 4, or greater may also be assigned to node "D" 354.

[0106] The ranks of previously assigned nodes along the path may also be updated, for example if path "AB" is selected and rank 1 has been assigned to node "B", then the rank of "B" may be updated to 2 and the rank of "A" may be set to 1. As described above, the rankings of other nodes may also be updated, for example, in order to assign a desired rank to a node that is less than the rankings of all other nodes, all existing rankings in the global ranking assignment 342" that have been assigned and are greater than or equal to the desired rank may be incremented, and the desired rank may be assigned to the node. If the node is before all other nodes, the rank assigned to the node may be smaller, and if the node is after all other nodes, the rank assigned to the node may be larger. However, the ranking unit 331 may also assign a ranking greater than the rankings of all other nodes, if the node is before all other nodes, for example, if rank 3 has been assigned to node "B" and rank 2 has been assigned to node "C" and the selected path is "AB", then rank 4 may be assigned to node "A" instead of rank 1, for example to improve the compactness of the resulting layout of the graph. Similarly, if the node is after all other nodes, the ranking unit 331 may assign a rank less than the rankings of all other nodes.

[0107] In some embodiments, instead of assigning a node a rank that is less than or greater than the ranking of all other nodes, a rank is assigned that is less than or greater than the ranking immediately before or after the node, but not necessarily less than or greater than the ranking of all other nodes. This can be beneficial in limiting the total number of ranks in the global rank assignment, potentially resulting in a more compact graph.

[0108] Figure 5a, Figure 5b, Figure 6 and Figure 7An example of a graph drawn according to a graph layout is shown, which illustrates some of the advantages achieved by the graph layout 210, such as improved stability. FIG. 5a shows a graph 500 drawn according to a layout of a graph computed using “dot”, a known tool from the Graphviz graph visualization software (https: / / www.graphviz.org / ). “Dot” is a graph layout program that performs a “hierarchical” or layered depiction of a directed graph. The layout algorithm aligns edges in the same direction (from top to bottom or from left to right), and then tries to avoid edge crossings and reduce edge lengths. The graph includes a node 501 labeled “Check received invoices”, a node 502 labeled “Post-process invoices”, and an edge 509 from node 501 to node 502. FIG. 5b shows a drawing 510 of a graph obtained by filtering from the graph of FIG. 5a, drawn according to the layout of the graph computed using “dot”. The graph drawn in FIG. 5b is the same as the graph drawn in FIG. 5a, for example, it includes the same nodes and edges between them, except that edge 509 has been filtered out. For example, in layout 510, node 511 labeled "Check received invoice" is not connected by an edge to node 512 labeled "Post-process invoice." As can be seen from the accompanying figure, this small difference between the two graphs causes a large difference between the two graphs, layout 500 and layout 510, such as poor stability between the two graphs. Layout 500 and layout 510 look different, for example, it is difficult to see that they represent almost the same graph. For example, this can complicate drawing the animated deformation layout 500 as layout 510. Specifically, it is noted that node 503 labeled "Process employee reimbursement" and node 504 labeled "Checked and approved" are not adjacent in layout 500, while the corresponding node 513 and node 514 are adjacent in layout 510.

[0109] Figure 6 The same graph 600 as in Figure 5a is shown, now drawn according to a layout calculated based on an embodiment. As can be seen from the figure, the node 601 labeled "Check received invoice" is connected via an edge 609 to the node 602 labeled "Post-process invoice". Figure 7The same graph 700 as FIG. 5 b is shown, and the graph 700 is drawn according to the layout calculated based on the embodiment. Here, the node 701 marked as "check received invoice" and the node 702 marked as "post-process invoice" are not connected by edges. The two graphs are derived from the corresponding path set through the common node set, and the corresponding path set is a subset of the global path set. For example, the graph 700 is obtained from the graph 600 by filtering the removed edge 609 from the graph. The layouts of the two graphs are based on the same global ranking assignment. As a result, the same nodes are adjacent to each other in the two graph layouts. For example, nodes that are adjacent in the layout 600 are adjacent in the layout 700, and vice versa, such as the node 603 marked as "processing employee reimbursement" is adjacent to the node 604 marked as "checked and approved" in the layout 600, and the corresponding node 703 and node 704 are also adjacent in the layout 700. As discussed above, this is not the case in the graphs 500 and 510 calculated using "points". Therefore, layout 600 and layout 700 have improved stability, in particular, the drawing of the two layouts looks almost identical, for example allowing a user to more easily review the changes between the corresponding diagrams. For example, this supports drawing the animated deformation layout 600 as layout 700.

[0110] return Figure 2 , the graph layout device 210 includes a filtering unit 232. The filtering unit 232 filters the global path set 241 to obtain a path set 243. The path set 243 may be a subset of the set 241. For example, in Figure 2, the filtering unit 232 selects the paths "ABC" 257 and "AD" 258 included in the path set 243 from the global path set 241. The path set 243 does not need to be explicitly stored in the memory; for example, the set 243 can be stored as a list of references to the paths in the global path set 241, as a bitmap indicating which path from the global path set 243 appears in the path set, and so on. As discussed above, the path can represent various objects, such as a time series of activities. Filtering these paths can occur accordingly in various ways. For example, selecting a path can include evaluating criteria based on at least one of the following: the weight of the path, the length of the path, the time of the activity corresponding to the node in the path, and whether the path contains a specific edge, node, or type of node. For example, if the activity corresponding to its node occurred in the last month, if a specific person is involved in the activity of the path, if the path includes a specific node or edge, or similar criteria, then the path can be selected. In any case, the advantage of obtaining path set 243 from global path set 241 that determines global ranking assignment 242 is that the global ranking assignment 242 can be used to determine the layout of the graph, thereby improving the efficiency of determining the layout of the graph and improving the stability of the graph layout when calculating the layout of multiple graphs derived from subsets of the global path set 241.

[0111] The graph layout device 210 also includes a layout unit 233. The layout unit 233 calculates a layout of the graph 244 based on the global ranking assignment 242. The layout includes the position of each node of the graph, such as an x-coordinate and a y-coordinate. Nodes of the graph with equal ranking assignments are placed adjacent to each other. For example, nodes of the graph with equal ranking assignments are assigned the same or similar x-coordinates or the same or similar y-coordinates. Figure 2 In the example shown, the position of node "A" 251 is (x A ,y 1 ); the position of node "B" 252 is (x B ,y 2 ); the position of node "C" 253 is (x C ,y 3 ); and the position of node "D" 254 is (x D ,y 2 ). Since node "B" 252 and node "D" 254 have the same rank according to ranking assignment 242, they are assigned the same y coordinate y 2 On the other hand, node "A" 251 and node "C" 253 have different ranks, so in this example, they are assigned the same rank as y. 2 Different y coordinates 1 and 3 . Figure 3dAn example of a graph drawn according to the layout of Figure 244 is schematically shown. In one embodiment, the layout unit 233 uses a known hierarchical drawing method to calculate the layout, for example by performing vertex ordering, x-coordinate assignment, and optionally edge concentration, as described in Chapter 13.5 "Vertex Ordering", Chapter 13.6 "x-Coordinate Assignment", and Chapter 13.4 "Edge Concentration" in "Handbook of Drawing and Visualization" by Roberto Tamasia (ed.), which is incorporated herein by reference.

[0112] In some embodiments, the layout of the graph 244 also includes the location of one or more virtual nodes. The layout unit 233 can add virtual vertices and / or virtual edges to the graph. In some embodiments, the layout unit 233 adds a path including virtual vertices and virtual edges between a first node and a second node of the graph, the first node and the second node having an edge between them and their rankings differing by more than one. The layout unit 233 can temporarily or permanently remove the original edge from the graph. The virtual edges are assigned continuous rankings. Virtual edges and vertices can support subsequent steps performed by the layout unit 233 and / or other units, for example, further operations of the layout unit 233 can assume that the vertex spans a single layer and / or the drawing unit can use the determined position of one or more virtual nodes to depict edges between nodes of the graph (e.g., non-virtual nodes of the graph).

[0113] Computing the layout of graph 244 based on global rank assignments 242 may include adapting the global rank assignment to the graph, for example, by eliminating nodes that do not appear in the graph from the global rank assignment and / or eliminating ranks that are not assigned to nodes in the graph. Figure 2 In the example global rank assignment 242 shown, rank 4 is assigned to node "E" 255, but the node does not appear in the graph derived by the node set 243. Therefore, the layout unit 233 can eliminate node "E" and / or rank 4 from the global rank assignment 242. Eliminating a rank from the global rank assignment can include moving a higher rank so that the rank appears consecutively in the adapted global rank assignment, for example, eliminating a rank from the global rank assignment can include: reducing all ranks higher than the eliminated rank by one. Adapting the global rank assignment can be performed in-place, for example by editing the global rank assignment. Preferably, however, the global rank assignment is not performed in-place, for example, the global rank assignment is deep copied or shallow copied, and the adaptation is performed on the copy so that the global rank assignment 242 itself can be reused for other graphs.

[0114] Nodes with equal rank assignments may not be exactly adjacent to each other, e.g., they may only be approximately adjacent, e.g., it may be advantageous to slightly move one of the nodes relative to the adjacent position, e.g., to reduce the number of crossings in the graph or to depict a shorter or straighter edge between two nodes. However, typically, the nodes appear in increasing order of rank along non-adjacent directions, e.g., nodes with the same rank assignments are adjacent in the x-direction, and the node with the higher y-coordinate has a higher rank, or similarly the x-orientation and the y-orientation are interchanged. After calculating the layout of graph 244, layout unit 233 stores the layout of graph 244 in a memory, e.g. Figure 1a Memory 140 or Figure 1b The memory 141 in.

[0115] In some embodiments, the layout unit 233 calculates the layout of the graph by determining a set of nodes with equal ranking assignments, determining an ordering of the node set, and assigning positions to the nodes in the node set according to the global ranking assignment 244 and the ordering. For example, the layout unit 233 can split all nodes of the graph into sets of nodes with equal ranking assignments, and / or assign positions to all nodes in each node set using equal ranking assignments. The ordering is preferably a linear ordering, such as a total order. For example, using a crossing reduction method known to those skilled in the art, such as a heuristic method, the nodes with equal ranking assignments are permuted to reduce the number of crossings among the edges connecting the nodes to the nodes with lower rankings. This process can be repeated for different rankings until a stable ordered set for each ranking is obtained or until another criterion is met. The layout unit 233 can use known techniques from the literature for x-coordinate assignments to assign positions to the nodes of the graph according to the global ranking assignment and ordering, such as described in detail in Chapter 13.6 "x-coordinate assignment" of "Handbook of Drawing and Visualization" by Roberto Tamasia (ed.), which is included in this article by reference.

[0116] Interestingly, in some embodiments, the layout unit 233 determines a global ordering of the nodes and calculates an ordering of a set of nodes of a graph with equal rank assignments from the global ordering. For example, the layout unit 233 may determine an ordering of all sets of nodes of a graph with equal rank assignments from the corresponding global ordering. The global ordering is an ordering of a set of nodes of a global graph with equal rank assignments, preferably a total ordering or a linear ordering. The set of nodes with equal rank assignments is a subset of the set of nodes of the global graph with equal rank assignments, e.g., the same ranking is assigned to nodes from the set of nodes with equal rank assignments and the set of nodes of the global graph. The global graph is derived from the global path set 241. For example, the global graph is derived from the global path set 241 in the same manner as the graph is derived from the path set 243. For example, the global graph has as nodes a set of nodes or those nodes that appear in paths in the global path set 241; and has as edges the edges that appear in paths in the global path set 241; or has a subset of these nodes and / or these edges, e.g., as obtained by filtering the nodes and / or edges according to a criterion. In some embodiments, known vertex ordering techniques are used to obtain an ordering of the nodes of the global graph with equal rank assignments, e.g., as described in Chapter 13.5, "Vertex Ordering," by Roberto Tamasia (ed.), Handbook of Drawing and Visualization, which is incorporated herein by reference.

[0117] In some embodiments, the layout unit 233 determines the ordering of the node set of the global graph with equal ranking assignments based on the backbone nodes. The layout unit 233 determines the backbone nodes for each ranking. For example, the paths can be indexed according to the order in which they are selected from the global path set by the ranking unit 231, and the backbone node for the ranking is the node along the lowest index path among the nodes assigned the ranking. The backbone nodes for subsequent rankings are connected by the edge of the global graph, for example, the backbone node for ranking 2 and the backbone node for ranking 3 are connected by the edge of the global graph. The backbone node can be a virtual node, for example, the virtual node can be regarded as a path along the global path set along which the virtual node is inserted. In order to determine the backbone node, the layout unit 233 can iterate through the path from the global path set 241 in the order of the ranking unit 231, and if no backbone node with the same ranking has been selected, each node along the selected path (for example, including the virtual node) is set as a backbone node, and continue until the backbone nodes for each ranking have been determined.

[0118] Based on the determined backbone nodes, the layout unit 233 divides the non-backbone nodes of the graph into connected components. For example, the layout unit 233 creates a copy of the graph, removes the backbone nodes and edges to which they are connected from the copy, and divides the copy into connected components. The layout unit 233 sequences all nodes of the connected components before or after the backbone nodes for their corresponding rankings. For example, the layout unit 233 determines whether it is a left connected component or a right connected component for each connected component. If the connected component is a left connected component, the layout unit 233 sequences the nodes of the connected component before the backbone nodes for its corresponding rankings, such as if the node has a certain ranking, so it is sequenced before the backbone nodes for the ranking. Similarly, if the connected component is a right connected component, the layout unit 233 sequences the nodes of the connected component after the backbone nodes for its corresponding rankings. A connected component as a left connected component can mean that the nodes of the connected component are assigned positions and / or drawn to the left or top of the backbone nodes, and is also similar for right connected components.

[0119] Whether a connected component is a left connected component or a right connected component can be determined so that the number of nodes in the left connected component and the right connected component are similar. For example, the set of connected components can be divided into two subsets using a well-known segmentation optimization algorithm so that the difference between the sum of the corresponding sizes is minimized or approximately minimized to determine whether the connected component is a left connected component or a right connected component. For example, the layout unit 233 can initially assign the same side to all connected components, and then iterate through the connected components from largest to smallest, and if this reduces the difference in the sum of the sizes of the left connected component and the right connected component, change its side.

[0120] If multiple nodes are to be assigned an order greater than or less than the order of the backbone nodes, such as two nodes from different left-connected components or right-connected components of the global graph have the same ranking assigned to them, then the relative ordering of the multiple nodes can be determined in various ways, such as randomly or in a manner in which the number of crossings between edges to previous or subsequent rankings is minimized. One way to determine the relative ordering of multiple nodes is based on connectivity with the backbone. The connectivity of a node can be defined as the number of nodes with the same path index, such as the node that first appears in the same path selected by the ranking unit 231, which is directly connected to the backbone node through the edge of the graph. The relative ordering of multiple nodes can be determined by sorting the multiple nodes by connectivity. For example, by first obtaining nodes from the left-connected component that is ordered by increasing connectivity, then obtaining the backbone node for ranking, then obtaining nodes from the right-connected component that is ordered by decreasing connectivity, or similarly, the layout unit 233 can order nodes with equal ranking assignments. The relative order of nodes with the same connectivity can be selected to minimize the crossing between edges to the previous or next ranking, for example, the layout unit 233 can sort the paths according to connectivity and order the nodes according to the first path selected by the ranking unit 231, and the nodes appear along the first path.

[0121] In some embodiments, the layout unit 233 determines the ordering of nodes of the global graph with equal ranking assignments by determining, for each ranked backbone node, determining a side of a connected subgraph of the global graph that does not include a backbone node, the side being the left side or the right side, and assigning an order to the subgraph nodes of the connected subgraph, if the side is the left side, the order is less than the order of the backbone nodes for the ranking assigned to the subgraph nodes, and if the side is the right side, the order is greater than the order of the backbone nodes for the ranking assigned to the subgraph nodes.

[0122] The ordering of the nodes of the global graph has been determined, and these orderings can be used to determine the ordering of the nodes of the graphs with equal rank assignments. For example, the nodes of the graphs with equal rank assignments can be ordered as they appear in the ordering of the nodes of the global graph, for example, by filtering out those nodes that do not appear in the graph from the ordering of the nodes of the global graph to obtain the ordering of the nodes of the graph. The advantage of this is that the stability between the graph layouts is improved because a consistent node order is used, and the efficiency of ordering the nodes is improved because the ordering of the nodes of the global graph can be reused to determine the layouts of multiple graphs.

[0123] As discussed above, this can be illustrated, for example, by comparing FIG. 5a and FIG. 5b showing graphs drawn from a layout by a known tool “dot” with FIG. 5a and FIG. 5b showing corresponding graphs drawn from a layout according to an embodiment. Figure 6 and Figure 7 , an improved stability can be observed. The graph layouts 500 and 510 obtained by "point" both include nodes 504, 514 marked as "checked and approved" and nodes 505, 515 marked as "request data". In the layout 500, the first node 504 is located to the left of the second node 505, while in the layout 510, the first node 514 is located to the right of the second node 515. Figure 6 and Figure 7 The same graph layout 600, 700 according to an embodiment is shown; specifically, both layouts 600, 700 include nodes 604, 704 marked as "checked and approved" and nodes 605, 705 marked as "requesting data". In both layouts 600, 700, the first node 604, 704 is located to the left of the second node 605, 705 due to the fact that the same ordering of the nodes of the global graph is used to determine the ordering of the nodes 604, 605 in the graph 600 and the nodes 704, 705 in the graph 700. Therefore, advantageously, the stability of the layout with respect to these particular nodes is improved in the layouts 600, 700 compared to the layouts 500, 510.

[0124] Moreover, since the backbone appears in the center of the graph layout, the resulting layout can advantageously more closely match the underlying data. Figure 6 and Figure 7 This can also be observed by comparison. In each of the figures in the accompanying drawings, the same path including the five nodes "Request Invoice", "Check Received Invoice", "Final Check of Invoice", "Approve Invoice" and "Pay Invoice" is shown with thick edges and dark nodes. In this case, this particular path is a path from the global path set, that is, the path with the highest weight. Since the graph layout device 210 uses the ranking and ordering mechanism described in this article, the nodes of the path appear from top to bottom in the layouts 600 and 700; moreover, these nodes become backbone nodes and therefore appear in the center of the layouts 600 and 700, reflecting the importance of the path. In contrast, in layouts 500 and 600 that do not use the graph layout technology described in this article, the path does not appear from top to bottom, and the nodes do not appear in the center among their ranked nodes. Therefore, the layouts 600 and 700 more closely match the underlying data, especially its sequential nature reflected in the path set.

[0125] return Figure 2 , the ordering of the nodes of the graph has been determined based on the ordering of the nodes of the global graph, and these orderings can optionally be further improved, for example by applying one or more crossing reduction steps known from the literature to further reduce crossings and / or obtain a graph layout that is more suitable for the current graph.

[0126] In some embodiments, the graph layout device 210 is also configured to determine the layout of another graph. The other graph is derived from another path set through a node set. The other path set is a subset of the global path set 241. The layout 244 of the graph and the layout of the other graph are calculated based on the same global ranking assignment, for example, the ranking unit 231 calculates the global ranking assignment 242, and the unit 233 calculates the layout of the graph and the layout of the other graph based on the global ranking assignment 242, for example, using the technology discussed above. Advantageously, the global ranking assignment 242 is used to calculate the layout of the graph and the layout of the other graph, thereby eliminating the need to calculate the ranking assignment twice, thereby improving performance and improving the consistency between the ranking assignments used for the two graphs. In some embodiments, the ordering of the nodes of the graphs with equal ranking assignments is calculated from the ordering of the nodes of the global graph derived from the global path set 241. In such a case, the layout unit 233 can determine the ordering of the nodes of the global graph once, and use both of them to calculate the layout of the graph 244 and the layout of the other graph, similarly improving the performance and consistency between the graphs.

[0127] The diagram layout device 210 optionally includes a drawing unit 234 and a display 220. The drawing unit 234 is configured to draw a diagram on the display 220 according to the layout of the diagram 244. Drawing the diagram includes displaying the nodes of the diagram at the position specified by the layout 244, and depicting the edges between the nodes. The depicting edges can be performed using various spline depiction techniques known from the literature. In some embodiments, for example, as discussed above, the layout unit 233 is configured to calculate the position of virtual nodes, and the virtual nodes are inserted between the nodes whose rankings differ by more than one. The edges between such nodes can be depicted through the calculated positions of the virtual nodes inserted between them, such as the virtual node layout for the path of the spline, and the edges between the nodes can be depicted as splines through the nodes and the virtual nodes inserted between them. The drawing unit 234 can search for the smoothest curve between two points, thereby avoiding other nodes, edges and labels. This can include first calculating the polygonal area where the spline can be depicted, and then calculating the spline within the area given the polygonal area. The computational region can take into account already drawn splines, nodes and labels, thereby reducing the number of accidental edge-edge, edge-node or edge-label crossings. Specifically, the algorithm proposed by Gansner et al. in IEEE Trans. Software Eng. 19.3 (1993) "A Technique for Drawing Directed Graphs" (included herein by reference) or a variation thereof can be applied.

[0128] In an embodiment where the graph layout device 210 is also configured to determine the layout of another graph, as discussed above, the drawing unit 234 can draw an animation on the display 220 that deforms the drawing of the graph into the drawing of the other graph. Advantageously, since the layout of the graph and the layout of the other graph are both based on the ranking assignment 242 and may be based on the ordering of the nodes of the global graph, the nodes that appear in the two graphs usually have similar positions and similar orientations relative to each other in the two graph layouts, thereby supporting the deformation process. For example, due to similar orientations, it is possible to avoid nodes from being interchanged relative to each other, such as the first node being on the left side of the second node in the graph and on the right side of the second node in the other graph, thereby giving an improved deformation effect. Various deformation techniques can be used. For example, a drawing of the first graph can be shown, on which the drawing of the second graph is superimposed with increased opacity. Alternatively, a subsequent drawing can be shown, in which the positions of the nodes that appear in the two graphs are interpolated between their positions in the first layout and the second layout. Nodes that appear only in the first graph may be shown and / or disappear with reduced opacity whenever they overlap with another node. Similarly, nodes that appear only in the second graph may be shown and / or appear with increased opacity whenever the position of the node does not overlap with another node.For example, using the techniques discussed above, edges may be depicted relative to intermediate positions in an animation.

[0129] exist Figure 4a and Figure 4b Additional examples highlighting some of the advantages of using global rank assignment are shown in . Figure 4a An example of a global path set 441 is schematically shown, which includes paths “CA” 456 , “AB” 457 , and “AC” 458 passing through nodes “A” 451 , “B” 452 , and “C” 453 . Figure 4b Schematically illustrated are examples of path sets 444, 444', which are subsets of the global path set 441. The path set 444 includes a path "CA" 456 and a path "AB" 457. The path set 444' includes a path "AB" 457 and an "AC" 458.

[0130] Figure 4aSchematically illustrated are examples of layouts 443 and 443' of graphs derived from path sets 444 and path sets 444', respectively, according to global rank assignments 442. Calculating global rank assignments according to embodiments described herein may result in global rank assignments 442 in which rank 2 is assigned to node "A" 451, rank 3 is assigned to node "B" 452, and rank 1 is assigned to node "C" 453. For example, ranking unit 231 may select path "CA" and update the global rank assignment to C:1, A:2; select path "AB" and update the global rank assignment to C:1, A:2, B:3; and finally select path "AC" and keep the global rank assignment unchanged. The y coordinates of nodes "A" 451, "B" 452, and "C" 453 in layouts 443 and 443' are determined by global rank assignments 442 and are therefore the same in layouts 443 and 443'. Advantageously, this results in two similar graph layouts, for example the graph layout remains stable between graphs derived from different subsets 444 , 444 ′ of the global path set 441 .

[0131] Figure 4b Schematically illustrated are examples of layouts 446, 446' of graphs derived from path set 444 and path set 444', respectively, which may be obtained by using local rank assignments 445, 445' instead of global rank assignments. For example, the local rank assignment 445 of path set 444 may be A:2, B:3, C:1, e.g., A is assigned a higher rank than C because A appears after C in the path, and B is assigned a higher rank than A because B appears after A in the path. Similarly, the local rank assignment 445' of path set 444' may be A:1, B:2, C:2, e.g., B and C are assigned a higher rank than A because they appear after A in the path. As a result, the y coordinates of nodes "A" 451, "B" 452, and "C" 453 are different in the resulting layouts 446, 446' because they are based on different rank assignments. Specifically, when calculating local rank assignments 445', there is no indication that C should be assigned a lower rank than A, for example to improve stability between different graph layouts based on the same global path set, because only local information is used in the graph layout. Instead, global rank assignments 442 are based on global path set 441, so that consistent rank assignments are used for layouts 443 and 443', thereby improving stability and ensuring that graph layouts 443, 443' better reflect the underlying global path set 441.

[0132] The graph layout device 110, 111 or 210 may have a user interface which may include well-known elements such as one or more buttons, a keyboard, a display, a touch screen, etc. The user interface may be arranged to accommodate user interaction for determining the graph layout, for example by filtering the global path set.

[0133] Typically, the graph layout device 110, 111 or 210 includes a microprocessor (not shown separately) that executes appropriate software stored at the device 110, 111 or 210; for example, the software may have been downloaded and / or stored in a corresponding memory, such as a volatile memory such as RAM or a non-volatile memory such as flash memory (not shown separately). Alternatively, the graph layout device 110, 111 or 210 can be implemented in whole or in part in programmable logic, for example as a field programmable gate array (FPGA). The graph layout device 110 or 210 can be implemented in whole or in part as a so-called application-specific integrated circuit (ASIC), that is, an integrated circuit (IC) customized for its specific use. For example, the circuit can be implemented in CMOS, for example using a hardware description language such as Verilog, VHDL, etc.

[0134] In one embodiment, the graph layout device 110 or 111 includes a memory circuit and a processor circuit. The device 110 or 111 may include additional circuits, such as communication circuits or storage circuits. The graph layout device may include one or more of a ranking circuit, a filtering circuit, a layout circuit, and a drawing circuit. The circuits implement the corresponding units described herein. These circuits may be processor circuits and storage circuits, the processor circuits executing instructions electronically represented in the storage circuits. These circuits may also be FPGAs, ASICs, etc.

[0135] The processor circuit may be implemented in a distributed manner, for example as a plurality of sub-processor circuits. The storage device may be distributed over a plurality of distributed sub-storage devices. Some or all of the storage device may be electronic storage, magnetic storage, etc. For example, the storage device may have volatile and non-volatile portions. A portion of the storage device may be read-only.

[0136] Figure 8 An example of an embodiment of a graph layout method 900 is schematically shown. The graph layout method 900 is configured to determine the layout of a graph. For example, the graph layout method 900 can be executed on a graph layout device. The graph is derived from a set of paths through a set of nodes. The nodes of the graph are included in the set of nodes. The set of paths is a subset of a global set of paths through the set of nodes. The layout includes the position of each node of the graph. The graph layout method 900 includes:

[0137] - Calculating 901 a global ranking assignment, the global ranking assignment assigning a rank to each node in the node set, calculating the global ranking assignment includes: iteratively selecting 911 a path from the global path set, and updating 913 the global ranking assignment based on the selected path, optionally checking 912 whether the global ranking assignment is complete

[0138] - filtering 902 the global path set to obtain a path set,

[0139] - computing 903 a layout of the graph based on the global rank assignment, wherein nodes of the graph with equal rank assignments are placed adjacent to each other,

[0140] -Storing 904 the layout of the graph in a memory.

[0141] As will be apparent to those skilled in the art, many different ways of performing the method are possible. For example, the order of the steps may be changed, or some steps may be performed in parallel. Moreover, other method steps may be inserted between steps. The inserted steps may represent improvements to the method such as described herein, or may be unrelated to the method. For example, step 901 and step 902 may be performed at least partially in parallel. Moreover, a given step may not be fully completed before starting the next step.

[0142] The method according to the present invention can be performed using software, which includes instructions for causing a processor system to perform method 900. The software can only include those steps taken by a specific sub-entity of the system. The software can be stored in a suitable storage medium, such as a hard disk, a floppy disk, a memory, an optical disk, etc. The software can be sent as a signal along a wired, wireless network or using a data network (such as the Internet). The software can be made available for downloading and / or remote use on a server. The method according to the present invention can be performed using a bitstream, which is arranged to configure a programmable logic (such as a field programmable gate array (FPGA)) to perform the method.

[0143] It will be appreciated that the present invention also extends to a computer program suitable for putting the present invention into practice, specifically, a computer program suitable for use on or in a carrier. The program may be in the form of source code, object code, code intermediate source, and object code such as partially compiled form, or any other form suitable for implementing the method according to the present invention. An embodiment of a computer program product includes computer executable instructions corresponding to each processing step of at least one method described. These instructions may be subdivided into subroutines and / or stored in one or more files that may be linked statically or dynamically. Another embodiment of a computer program product includes computer executable instructions corresponding to each component of at least one system and / or product described.

[0144] Figure 9a A computer readable medium 1000 having a writable portion 1010 including a computer program 1020 is shown according to an embodiment, the computer program 1020 including instructions for causing a processor system to perform a graph layout method. The computer program 1020 may be implemented on the computer readable medium 1000 as a physical mark or by means of magnetization of the computer readable medium 1000. However, any other suitable embodiments are also conceivable. In addition, it is to be understood that although the computer readable medium 1000 is shown here as an optical disk, the computer readable medium 1000 may be any suitable computer readable medium, such as a hard disk, a solid state memory, a flash memory, etc., and may be non-recordable or recordable. The computer program 1020 includes instructions for causing a processor system to perform the graph layout method.

[0145] Figure 9b 1 shows a schematic representation of a processor system 1140 according to an embodiment. The processor system includes one or more integrated circuits 1110. Figure 7 The architecture of one or more integrated circuits 1110 is schematically shown in FIG. b. The circuit 1110 includes a processing unit 1120, such as a CPU, to run a computer program component to perform the method according to the embodiment and / or implement its module or unit. The circuit 1110 includes a memory 1122 for storing programming code, data, etc. A portion of the memory 1122 may be read-only. The circuit 1110 may include a communication element 1126, such as an antenna, a connector, or both. The circuit 1110 may include a dedicated integrated circuit 1124 to perform some or all of the processing defined in the method. The processor 1120, the memory 1122, the dedicated IC 1124, and the communication element 1126 may be connected to each other via an interconnect 1130 (e.g., a bus). The processor system 1110 may be arranged to use an antenna and / or a connector for contact and / or contactless communication, respectively.

[0146] For example, in one embodiment, the graph layout device may include a processor circuit and a memory circuit, the processor being arranged to execute software stored in the memory circuit. For example, the processor circuit may be an Intel Core i7 processor, an ARM Cortex-R8, etc. In one embodiment, the processor circuit may be an ARM Cortex M0. The memory circuit may be a ROM circuit or a non-volatile memory, such as a flash memory. The memory circuit may be a volatile memory, such as an SRAM memory. In the latter case, the device may include a non-volatile software interface, such as a hard disk driver, a network interface, etc., which is arranged to provide software.

[0147] It should be noted that the above-mentioned embodiments illustrate rather than limit the invention, and that those skilled in the art will be able to design many alternative embodiments.

[0148] In the claims, any reference signs placed between parentheses shall not be construed as limiting the claim. The use of the verb 'comprise' and its conjugations does not exclude the presence of elements or stages other than those specified in the claim. The article 'a' or 'an' preceding an element does not exclude the presence of a plurality of such elements. The invention may be implemented by means of hardware comprising several distinct elements and by means of a suitably programmed computer. In a device claim enumerating several means, several of these means may be implemented by one and the same item of hardware. The mere fact that certain measures are recited in mutually different dependent claims does not indicate that a combination of these measures cannot be used to advantage.

[0149] In the claims, references in parentheses refer to reference numerals in the drawings of exemplary embodiments or formulas of the embodiments, thereby increasing the intelligibility of the claims. These references should not be construed as limiting the claims.

Claims

1. A graph layout device (110) for determining a layout of a graph, the graph being derived from a set of paths through a set of nodes, the nodes of the graph being included in the set of nodes, the set of paths being a subset of a global set of paths through the set of nodes, the layout comprising a position of each node of the graph, the graph layout device comprising: - a memory configured to store the graph, - a processor configured to: - Calculating a global ranking distribution, wherein the global ranking distribution distributes a ranking to each node in the node set, and calculating the global ranking distribution includes: sorting the set of global paths by a weight corresponding to each path of the set of global paths, and iteratively 1) selecting a path from the sorted set of global paths through a plurality of nodes based on an ordering of the sorted set of global paths, and 2) updating the global rank assignment for each of the plurality of nodes of the selected path, - filtering the global path set to obtain the path set, - computing the layout of the graph based on the global rank assignment, wherein nodes of the graph having equal rank assignments are placed adjacent to each other, -Storing said layout of said graph in said memory.

2. A graph layout device according to any one of the preceding claims, wherein the graph layout device is further configured to: determine a layout of another graph, the other graph being derived from another set of paths passing through the set of nodes, the other set of paths being a subset of the global set of paths, the layout of the graph and the layout of the other graph being calculated based on the same global ranking assignment. 3 . The graph layout device according to claim 1 , wherein the graph layout device further comprises a display, and the processor is further configured to draw the graph on the display according to the layout of the graph. 4 . The graph layout device according to claim 2 , wherein the graph layout device further comprises a display, and the graph layout device is further configured to draw an animation on the display, wherein the animation transforms the drawing of the graph into the drawing of the other graph.

5. The graph layout device according to claim 1 or 2, wherein calculating the layout of the graph comprises: A set of nodes having equal rank assignments is determined, an ordering of the set of nodes is determined, and positions are assigned to nodes in the set of nodes according to the global rank assignments and the ordering.

6. A graph layout device according to claim 5, wherein determining the ordering of the set of nodes with equal rank assignments includes determining the ordering of the set of nodes of a global graph with equal rank assignments, and calculating the ordering of the set of nodes with equal rank assignments from the ordering of the set of nodes of the global graph with equal rank assignments, the set of nodes with equal rank assignments is a subset of the set of nodes of the global graph with equal rank assignments, and the global graph is derived from the global path set.

7. A graph layout device according to claim 6, wherein determining the ordering of the set of nodes of the global graph with equal ranking assignments includes determining a backbone node for each ranking, wherein the backbone nodes for subsequent rankings are connected by edges of the global graph, dividing non-backbone nodes of the graph into connected components, and ordering all nodes of the connected components before or after the backbone nodes of the corresponding rankings for the backbone nodes.

8. A graph layout device according to claim 1 or 2, wherein the nodes of the graph are included in the union of nodes along the paths from the path set, and the edges of the graph are included in the union of edges along the paths from the path set.

9. The graph layout device according to claim 1 or 2, wherein the weight corresponding to each path of the global path set represents the number of occurrences of the path.

10. The graph layout device according to claim 1 or 2, wherein the weight corresponding to each path of the global path set is specified by a user. 11 . The graph layout apparatus according to claim 1 , wherein updating the global rank assignment comprises updating the global rank assignment in which distinct ranks are assigned to nodes along the selected path.

12. The graph layout device according to claim 11, wherein: If a first node appears between a second node and a third node along the selected path, wherein no rank is assigned to the first node and ranks are assigned to the second node and the third node, the global rank assignment is updated, wherein a rank between the rank assigned to the second node and the rank assigned to the third node is assigned to the first node.

13. The graph layout device according to claim 10, wherein: If a node along the selected path is before or after all other nodes along the selected path to which ranks are assigned, the global rank assignment is updated, wherein a rank is assigned to the node that is less than or greater than the rankings of all other nodes.

14. The graph layout device according to claim 1 or 2, wherein a node represents an activity, and a path represents a time sequence of the activities.

15. A graph layout method (900) for determining a layout of a graph, the graph being derived from a set of paths through a set of nodes, the nodes of the graph being included in the set of nodes, the set of paths being a subset of a global set of paths through the set of nodes, the layout comprising a position of each node of the graph, the graph layout method comprising: - Calculating a global ranking distribution, wherein the global ranking distribution distributes a ranking to each node in the node set, and calculating the global ranking distribution includes: sorting the set of global paths by a weight corresponding to each path of the set of global paths, and iteratively 1) selecting a path from the sorted set of global paths through a plurality of nodes based on an ordering of the sorted set of global paths, and 2) updating the global rank assignment for each of the plurality of nodes of the selected path, - filtering the global path set to obtain the path set, - computing the layout of the graph based on the global rank assignment, wherein nodes of the graph having equal rank assignments are placed adjacent to each other, -Storing said layout of said graph in a memory.

16. A computer readable medium (1000) comprising transient or non-transient data representing instructions to cause a processor system to perform the method according to claim 15.

Citation Information

Patent Citations

  • Display of travel routes

    US20110025692A1

  • Graph-based search queries using web content metadata

    US20130268533A1

  • Presenting search term refinements

    US8577911B1