WO2015167518A1 - Maintaining an orientation of a graph - Google Patents

Maintaining an orientation of a graph Download PDF

Info

Publication number
WO2015167518A1
WO2015167518A1 PCT/US2014/036122 US2014036122W WO2015167518A1 WO 2015167518 A1 WO2015167518 A1 WO 2015167518A1 US 2014036122 W US2014036122 W US 2014036122W WO 2015167518 A1 WO2015167518 A1 WO 2015167518A1
Authority
WO
WIPO (PCT)
Prior art keywords
graph
rotation
root node
transition
iterative
Prior art date
Application number
PCT/US2014/036122
Other languages
French (fr)
Inventor
Haim YADID
Avi KABIZON
Amos NESHER
Shimrit YACOBI
Original Assignee
Hewlett-Packard Development Company, L.P.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hewlett-Packard Development Company, L.P. filed Critical Hewlett-Packard Development Company, L.P.
Priority to PCT/US2014/036122 priority Critical patent/WO2015167518A1/en
Publication of WO2015167518A1 publication Critical patent/WO2015167518A1/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/20Drawing from basic elements, e.g. lines or circles
    • G06T11/206Drawing of charts or graphs

Definitions

  • a graph may be utilized to represent a topology of a system.
  • the graph models individual devices, elements, and components within the system. This allows a user to visualize the topoiogy of the system via the graph. By visualizing the topology of the system the user analyzes the graph to determine if issues exist in the system.
  • FIG. 1 is a diagram of an example of a system for maintaining an orientation of a graph, according to one example of principles described herein,
  • FIG. 2 is a diagram of an example of a graph in Euclidean space, according to one example of principles described herein,
  • Fig. 3 is a diagram of an example of an unbalanced graph in Euclidean space system, according to one example of principles described herein.
  • FIG. 4 is a diagram of an example of a balanced graph in Euclidean space system, according to one example of principles described herein.
  • Fig. 5 is a flowchart of an example of a method for maintaining an orientation of a graph, according to one example of principles described herein.
  • [QQOSj Fig. 6 is a flowchart of an example of a method for maintaining an orientation of a graph, according to one example of principles described herein,
  • [OOOSj Fig. 7 is a diagram of an example of a maintaining system, according to one example of principles described herein.
  • FIG. 8 is a diagram of an example of a maintaining system, according to one example of principles described herein.
  • a graph may be utilized to represent a topoiogy of a system.
  • the graph may be a hyperbolic model of hyperbolic trees that is used to represent the topology of the system. Further, the graph may be projected in the Euclidean plane.
  • the graph models individual devices, elements, and components within the system. This allows a user to visualize the topoiogy of the system via the graph. By visualizing the topology of the system the user analyzes the graph to determine if issues exist in the system.
  • the user when the user analyzes the graph to determine if issues exist in the system, the user performs several transitions of the graph.
  • the transitions of the graph allows the user to zoom in on the graph, zoom out on the graph, rotate the graph, move the graph, as well as perform other functions,
  • isometries Preserving orientation during transitions is needed to maintain an understanding of the graph. Often, isometries are used to preserve the orientation of the graph during transitions. However, isometries produce shaky transitions and have a negative effect on a users experience. [0015] Further, isometries guarantee the transitions, but they do not make any guarantees regarding transitions of a!! the nodes in the graph. For example, isometries tend to rotate all the nodes in the graph as a side effect of the transition. As a result, after performing several transitions, all of the nodes are rotated such that the user ioses ail ability to understand the graph.
  • the principles described herein include a method for maintaining an orientation of a graph.
  • Such a method includes obtaining a graph in Euclidean space, the graph includes a root node and ancestor nodes represented as a hyperbolic tree, receiving a transition for the graph, the transition representing a change in coordinates for the root node and the ancestor nodes in a hyperbolic plane, applying at least one iterative rotation in the hyperbolic plane to maintain an orientation of the graph in the Euclidean space, and displaying the graph in the Euclidean space.
  • Such a method maintains the orientation of the graph during transitions of the graphs with smooth motion.
  • the ancestor nodes of the graph remains balanced relative to the root node. This enhances the overall experience for the user.
  • the term "graph” is meant to be understood broadly as a visual representation of a topology of a system in Euclidean space.
  • the graph includes a root node and ancestor nodes represented as a hyperbolic tree to mode! the topology of the system.
  • the root node and the ancestor nodes may represent devices, components, and elements within the system.
  • the graph may be a top-bottom, a bottom-top, a left-right, or a right-left layout.
  • the root node of the hyperbolic tree is always located in the same position relative to its children nodes.
  • the graph may be in a radial layout. In the radial layout, all children nodes are balanced around the root node.
  • transition is meant to be understood broadly as moving the root node and/or ancestor nodes from one set of coordinates to another set of coordinates.
  • the transition of the graph allows a user to zoom in on the graph, zoom out on the graph, rotate the graph, move the graph, as we!! as perform other functions.
  • the term "factor” is meant to be understood broad!y as a ratio by which the graph is to be rotated by with respect to a rotation ang!e. For example, if the factor is ten the graph is rotated by one tenth of the rotation angle, if the factor is one- hundred the graph is rotated by one one-hundredth of the rotation ang!e.
  • the term "iterative rotation” is meant to be understood broad!y as a transition used to maintain the orientation of the graph.
  • the iterative rotation is accomplished via performing several rotation ang!es around the center of the graph,
  • angle difference is meant to be understood broadiy as a comparison between an angle for a leftmost child node with respect to a root node and an angle for a rightmost child node with respect to the root node. In one example, the angle difference is used to determine if the orientation of the graph is maintained.
  • a number of or similar language is meant to be understood broadiy as any positive number comprising 1 to infinity; zero not being a number, but the absence of a number.
  • Fig. 1 is a diagram of an example of a system for maintaining an orientation of a graph, according to one example of principles described herein.
  • a maintaining system is in communication with a network to obtain a graph in Euclidean space, the graph includes a root node and ancestor nodes represented as a hyperbolic tree. Further, the maintaining system receives a transition for the graph, the transition
  • the maintaining system applies at least one iterative rotation in the hyperbolic plane to maintain an orientation of the graph in the Euclidean space and displays the graph.
  • the system (100) includes a user device (102) with a display (104).
  • the display (104) may display, to the user, a graph.
  • the graph may be utilized when visualizing a topology of a system.
  • the graph models individual devices, elements, and components within the system to allow a user to visualize the topology of the system.
  • the user may analyze the graph to determine if issues exist in the system.
  • the system (100) includes a maintaining system (108).
  • the maintaining system (108) obtains the graph in Euclidean space.
  • the graph includes a root node and ancestor nodes represented as a hyperbolic tree.
  • the graph models the topology of a system, in one example, the topology of the system may include devices, elements, and components within the system.
  • the maintaining system (108) further receives a transition for the graph, the transition representing a change in coordinates for the root node and the ancestor nodes in a hyperboiic plane.
  • the transition may be made by the user when analyzing the graph to determine if issues exist in the system.
  • the maintaining system (108) applies at least one iterative rotation in the hyperbolic plane to maintain an orientation of the graph in the Euclidean space.
  • the maintaining system (108) displays the graph in the Euclidean space. For example, via the display (104) of the user device (102). Such a system preserves the orientation of the graph during transitions of the graphs with smooth motion. As a result, the graph remains balanced relative to the root and enhances the overall experience for the user. More information about the maintaining system (108) will be described later on in this
  • the maintaining system may be located in any appropriate location according to the principles described herein.
  • the maintaining system may be located in a user device, a server, a datacenter, other locations, or combinations thereof.
  • the graph may be represented by any tree representation.
  • the graph may be represented by an ordered tree, an unordered tree, a sub-tree, other trees, or combinations thereof.
  • the graph may mode! many types of topologies.
  • the graph may mode! a topology of a network, a topology of a datacenter, a topology of a social graph, a physical topology, a digital topoiogy, a topology of an element within a system, a topology of a component within a system, or other topologies.
  • Fig. 2 is a diagram of an example of a graph in Euclidean space, according to one exampie of principles described herein.
  • a maintaining system is in communication with a network to obtain a graph in Euclidean space. Further, the maintaining system receives a transition for the graph, the transition representing a change in coordinates for the root node and the ancestor nodes in a hyperbolic plane.
  • the maintaining system of Fig. 1 obtains a graph in Euclidean space, the graph includes a roof node and ancestor nodes represented as a hyperbolic tree.
  • a display is used to display the graph (200) in a top-bottom layout.
  • the graph includes a root node (204), node B (214), node C (210), and node A (208).
  • the graph (200) is laid out once and each node is given coordinates in hyperbolic plane. The coordinates may be a complex number.
  • the root node (204) of the hyperbolic tree is generally placed in the center of the graph (200).
  • the center of the graph (200) may be at coordinates (0,0).
  • node B (214), node C (210), and node A (206) are children nodes to the root node (204).
  • node B (214) may include children nodes such as node B1 (218-1), node B2 (216-2), and node B3 (216- 3).
  • node C (210) may include children nodes such as node C1 (212-1), node C2 (212-2), and node C3 (212-3).
  • node A (208) may include children nodes such as node A1 (208-1), node A2 (208-2), and node A3 (208- 3).
  • the graph (200) is balanced because the left most child node, node B (21 ), and the rightmost child node, node A (206), are at a similar angle with respect to the root node (204). As a resuit, the graph remains balanced relativ to th root nod (204).
  • a user desires to perform a transition, as represented by arrow 218, of the graph (200).
  • the maintaining system of Fig, 1 receives the transition for the graph.
  • the transition representing a change in coordinates for the root node and the ancestor nodes in a hyperbolic plane.
  • the transition may be performed by a drag and drop function on the display (202), The result of this transition is illustrated in Fig. 3.
  • Fig. 3 is a diagram of an example of an unbalanced graph in Euclidean space system, according to one example of principles described herein.
  • a maintaining system is in communication with a network to obtain a graph in Euclidean space.
  • the graph includes a root node and ancestor nodes represented as a hyperbolic tree.
  • the maintaining system receives a transition for the graph, the transition representing a change in coordinates for the root node and the ancestor nodes in a hyperbolic plane.
  • the maintaining system applies at least one iterative rotation in the hyperbolic plane to maintain an orientation of the graph in the Euc!idean space.
  • a display (302) is used to display the graph (300).
  • the graph includes a root node (304), node B (314), node C (310), and node A (306).
  • the user desires to perform a transition, as represented by arrow 218, of the graph (200) of Fig. 2, The transition may be performed by a drag and drop function on the display (202). The result, of this transition is illustrated in Fig. 3.
  • the graph (300) is unbalanced because the Seft most child node, node B (314), and the rightmost child node, node A (306), are not at a simiiar angle with respect to the root node (304). As a result, the graph is unbalanced relative to the root node (304).
  • the maintaining system of Fig, i applies at least one iterative rotation in the hyperbolic plane to maintain an orientation of the graph (300) in the Euclidean space.
  • the iterative rotation in the hyperbolic plane maintains an orientation of the graph (300) in the Euclidean space.
  • the iterative rotation is represented as arrow 318,
  • the graph (300) may not be displayed to the user. As wiil be described in Fig. 4, once the graph (300) is balanced, the graph (300) may be displayed to the user,
  • Fig. 4 is a diagram of an example of a balanced graph in Euclidean space system, according to one example of principles described herein.
  • a maintaining system is in communication with a network to obtain a graph in Euclidean space, the graph includes a root node and ancestor nodes represented as a hyperbolic tree. Further, the maintaining system receives a transition for the graph, the transition representing a change in coordinates for the root node and the ancestor nodes in a hyperbolic plane. Further, the maintaining system applies at least one iterative rotation in the hyperbolic plane to maintain an orientation of the graph in the Euclidean space and displays the graph.
  • the maintaining system of Fig, 1 applies at least one iterative rotation in the hyperbolic plane to maintain an orientation of the graph (300) in the Euclidean space
  • the iterative rotation in the hyperbolic plane to maintain an orientation of the graph (300) in the Euclidean space is represented as arrow 318,
  • Fig, 4 illustrates the result when the maintaining system of Fig, 1 applies the iterative rotation in the hyperbolic plane to maintain an orientation of the graph (300) in the Euclidean space.
  • the iterative rotation in the hyperbolic plane maintains the orientation of the graph (400) in the Euciidean space. This is because the graph (400) is balanced because the !eftmost child node, node B (414), and the rightmost child node, nod A (406), are at a similar angle with respect to the root node (404), As a result, the graph remains balanced relative to the root node (404).
  • the maintaining system of Fig. 1 displays the graph (400).
  • the graph (400) may be displayed to a user on a display (402).
  • Fig. 5 is a flowchart of an example of a method for maintaining an orientation of a graph, according to one example of principles described herein.
  • the method (500) may be executed by the system (100) of Fig. 1 , In other examples, the method (500) may be executed by other systems such as system 700 or system 800.
  • the method (500) includes obtaining (501) a graph in Euclidean space, the graph includes a root node and ancestor nodes represented as a hyperbolic tree, receiving (502) a transition for ihe graph, the transition representing a change in coordinates for the root node and the ancestor nodes in a hyperbolic plane, applying (503) at least one iterative rotation in the hyperbolic plane to maintain an orientation of the graph in the Euclidean space, and displaying (504) the graph in the
  • the method (500) includes obtaining
  • (501) a graph in Euclidean space, the graph includes a root node and ancestor nodes represented as a hyperbolic tree.
  • a user may define the graph.
  • common techniques and methods may be used to define the graph.
  • the method (500) includes receiving
  • a transition for the graph representing a change in coordinates for the root node and the ancestor nodes in a hyperbolic plane.
  • a drag and drop function may allow a user to perform a transition.
  • the transition may then be received by the maintaining system of Fig. 1. [0049] in one example, the transition moves the root node and/or the ancestor nodes from the center of the graph. Further, the transition of the graph allows the user to zoom in on the graph, zoom out on the graph, rotate the graph, move the graph, as well as perform other functions. In one example, this method (500) is applied to the graph every time a transition is received.
  • the method ⁇ 500) inciudes appiying (503) at least one iterative rotation in the hyperbolic plane to maintain an orientation of the graph in the Euclidean space
  • applying the at least one iterative rotation in the hyperbolic plane to maintain the orientation of the graph includes performing the at least one iterative rotation at a rotation angle around a focus point. While it is known how to perform rotations in the hyperbolic space, when translating the transition to the Euclidian space the magnitude of the rotation angle may change dramatically. For example, the change intensity depends on the original location of the nodes.
  • a rotation angle of 0.1 radian (rad) in the hyperbolic space can result in a rotation angle of 0,5 rad in the Euclidean space relative to the root node.
  • the rotation angle may be based on the angle difference and the factor.
  • the method (500) rotates the entire hyperbolic space around a focused point. As a result, the graph rotates in the same direction in the Euclidean space. As wii! be described below, the method (500) performs small rotations in the hyperbolic space and checks the orientation of the graph in the Euclidean space. The method (500) continues the smail rotations until the orientation is maintained.
  • the rotation in the hyperbolic space is performed around the center, (0,0), of the graph.
  • the following steps occur:
  • the method (500) executes a first transition to move the focus point from an original position to the center of the graph.
  • the rotation in the hyperbolic space may be performed around the center of the graph.
  • the method (500) performs the at least one iterative rotation at the rotation angle around the focus point by performing the at least one iterative rotation at the rotation angie. In one example, the method (500) performs several iterative rotations at the rotation angle around the focus point.
  • the method (500) performs the at least one iterative rotation at the rotation angle around the focus point by executing a second transition to move the focus point from the center of the graph to the original position, in one example, the rotation angle for the iterative rotation is based on an angle difference between a leftmost chi!d node and a rightmost chi!d node of the root node. The angle difference between them should be zero.
  • the method (500) looks for a close enough approximation threshold. For example, the threshold may be 0.0001 rad.
  • the method (500) calculates an angle difference.
  • the angie difference may be based on the difference between an angle of leftmost child node relative to the root node and an angle of a rightmost child node relative to the root node in the Euclidean space. Whiie the difference angle is above the defined threshold, the method (500) creates a rotation matrix for the graph in the hyperbolic space.
  • the rotation matrix may be an angle difference multiplied by a factor.
  • the method (500) applies the rotation matrix and continues to a next iteration. If the new angie difference is higher than the previous angle difference, the method (500) increases the factor and repeats the last iterative rotation by performing a smaller rotation.
  • the graph may be displayed, in one example, a final transformation is actually the one achieved by multiplying all rotation angles by each other.
  • the first angle difference is 0.887575 388356263 rad between the leftmost child node and the rightmost chiid node relative to the root node in the Euclidean space.
  • the method (500) may use a factor such as ten. At iteration one-hundred thirty nine the new angie difference become below the threshold, for example lower than
  • the graph may be displayed,
  • the method (500) includes displaying (504) the graph in the Euclidean space.
  • the maintaining system of Fig. 1 displays the graph in the Euclidean space.
  • the graph may be displayed to a user via a display on a user device.
  • Fig. 8 is a flowchart of an example of a method for maintaining an orientation of a graph, according to one example of principles described herein.
  • the method (600) may be executed by the system (100) of Fig. .
  • the method (600) may be executed by other systems such as system 700 or system 800.
  • the method (600) includes obtaining (801) a graph in Euclidean space, the graph includes a root node and ancestor nodes represented as a hyperbolic tree, receiving (802) a transition for the graph, the transition representing a change in coordinates for the root node and the ancestor nodes in a hyperbolic plane, applying (603) at least one iterative rotation in the hyperbolic plane to maintain an orientation of the graph in the Eudidean space, determining (604) if a leftmost child node and a rightmost chiid node of the roof node have a similar angie reiative to the root node, and displaying (605) the graph in the Euclidean space,
  • the method (600) includes determining if a leftmost child node and a rightmost child node of the root node have a similar angle relative to the root node.
  • the similar angle may be based on a threshold.
  • the graph is balanced. As a result, the graph may be displayed.
  • the graph is unbalanced. As a result, the graph may not be displayed and another iterative rotation is appiied until the leftmost child node and the rightmost child node of the root node have a similar angle relative to the root node,
  • Fig. 7 is a diagram of an example of a maintaining system, according to one example of principles described herein.
  • the maintaining system (700) includes an obtaining engine (702), a receiving engine (704), an applying engine (706), and a displaying engine (708).
  • the maintaining system (700) also includes a determining engine (710).
  • the engines (702, 704, 706, 708, 710) refer to a combination of hardware and program instructions to perform a designated function.
  • Each of the engines (702, 704, 706, 708, 710) may include a processor and memory.
  • the program instructions are stored in the memory and cause the processor to execute the designated function of the engine.
  • the obtaining engine (702) obtains a graph in Euclidean space, the graph includes a root node and ancestor nodes represented as a hyperbolic tree. In one example, the obtaining engine (702) obtains one graph in the Euclidean space, in another example, the obtaining engine (702) obtains several graphs in the Euclidean space.
  • the receiving engine (704) receives a transition for the graph, the transition representing a change in coordinates for the root node and the ancestor nodes in a hyperbolic plane, in one example, the receiving engine (704) receives a transition for the graph to allow the user to zoom in on the graph, zoom out on the graph, rotate the graph, move the graph, as well as perform other functions.
  • the applying engine (706) applies at least one iterative rotation in the hyperbolic plane to maintain an orientation of the graph in the Euclidean space, in one example, the applying engine (706) applies at least one iterative rotation in the hyperbolic plane to maintain an orientation of the graph in the Euclidean space by performing the at least one iterative rotation at a rotation angle around a focus point.
  • performing the at least on iterative rotation at the rotation angle around the focus point includes executing a ftrst transition to move the focus point from an original position to the center of the graph. Further, performing the at least one iterative rotation at the rotation angle around the focus point includes performing the at least one iterative rotation at the rotation angle. Still further, performing the at least one iterative rotation at the rotation angle around the focus point includes executing a second transition to move the focus point from the center of the graph to the original position. As mentioned above, the rotation angle for the iterative rotation is based on an angle difference between a leftmost child node and a rightmost child node of the root node.
  • the applying engine (706) determines an iteration rotation number, an angle difference, a factor, a rotation angle, or combinations thereof. As mentioned above, the rotation angle is based on the angle difference and the factor.
  • the displaying engine (708) displays the graph in the
  • the displaying engine (708) displays the graph in the Euclidean space, in one example, the graph may be displayed to a user via a display on a user device,
  • Fig. 8 is a diagram of an example of a maintaining system, according to one example of principles described herein, in this example, maintaining system (800) includes processing resources (802) that are in communication with memory resources (804). Processing resources (802) include at least one processor and other resources used to process
  • the memory resources (804) represent generally any memory capable of storing data such as programmed instructions or data structures used by the maintaining system (800).
  • the programmed instructions shown stored in the memory resources (804) include a graph obtainer (806), a transition receiver (808), an iterative rotation applier (810), a balance determiner (812), and a graph displayer (814).
  • the memory resources (804) include a computer readable storage medium that contains computer readable program code to cause tasks to be executed by the processing resources (802).
  • the computer readable storage medium may be tangible and/or physical storage medium.
  • the computer readable storage medium ma be any appropriate storage medium that is not a transmission storage medium,
  • a non-exhaustive !ist of computer readable storage medium types includes ⁇ -volatiie memory, volatile memory, random access memory, write only memory, fiash memory, electrically erasable program read only memory, or types of memory, or combinations thereof.
  • the graph obtainer (806) represents programmed instructions that when executed, cause the processing resources (802) to obtain a graph in Euclidean space, the graph comprising a root node and ancestor nodes represented as a hyperbolic tree.
  • the transition receiver (808) represents programmed instructions that, when executed, cause the processing resources (802) to receive a transition for the graph, the transition representing a change in coordinates for the root node and the ancestor nodes in a hyperbolic plane.
  • the iterative rotation app!ier (810) represents programmed instructions that, when executed, cause the processing resources (802) to apply at least one iterative rotation in the hyperbolic plane to maintain an orientation of the graph in the Euclidean space.
  • the balance determiner (812) represents programmed instructions that, when executed, cause the processing resources (802) to determine if a leftmost child node and a rightmost child node of the root node have a similar angle relative to the root node.
  • the graph disp!ayer (814) represents programmed instructions that, when executed, cause the processing resources (802) to displaying the graph in the Euclidean space,
  • the memory resources (804) may be part of an installation package, in response to installing the installation package, the programmed instructions of the memory resources (804) may be downloaded from the installation package's source, such as a portable medium, a server, a remote network location, another location, or combinations thereof.
  • Portable memory media that are compatible with the principles described herein include DVDs, CDs, flash memory, portable disks, magnetic disks, optica! disks, other forms of portabie memory, or combinations thereof.
  • the program instructions are already installed.
  • the memory resources can include integrated memory such as a hard drive, a solid state hard drive, or the like.
  • the processing resources (802) and the memory resources (802) are iocated within the same physicai component, such as a server, or a network component.
  • the memory resources (804) may be part of the physical component's main memory, caches, registers, non-volatile memory, or elsewhere in the physical component's memory hierarchy.
  • the memory resources (804) may be in communication with the processing resources (802) over a network.
  • the data structures, such as the libraries, may be accessed from a remote location over a network connection while the programmed instructions are iocated locally.
  • the maintaining system (800) may be implemented on a user device, on a server, on a collection of servers, or combinations thereof,
  • the maintaining system (800) of Fig. 8 may be part of a general purpose computer. However, in alternative examples, the maintaining system (800) is part of an application specific integrated circuit.

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Computational Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Algebra (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

Maintaining an orientation of a graph includes obtaining a graph in Euclidean space, the graph includes a root node and ancestor nodes represented as a hyperbolic tree, receiving a transition for the graph, the transition representing a change in coordinates for the root node and the ancestor nodes in a hyperbolic plane, applying at least one iterative rotation in the hyperbolic plane to maintain an orientation of the graph in the Euclidean space, and displaying the graph in the Euclidean space.

Description

MAINTAINING AN ORIENTATION OF A GRAPH
BACKGROUND
[0001] A graph may be utilized to represent a topology of a system. To represent the topology of the system, the graph models individual devices, elements, and components within the system. This allows a user to visualize the topoiogy of the system via the graph. By visualizing the topology of the system the user analyzes the graph to determine if issues exist in the system.
BRIEF DESCRIPTION OF THE DRAWINGS
[0002] The accompanying drawings iilustrate various examples of the principles described herein and are a part of the specification. The exampies do not limit the scope of the claims.
[0003] Fig. 1 is a diagram of an example of a system for maintaining an orientation of a graph, according to one example of principles described herein,
[0004] Fig. 2 is a diagram of an example of a graph in Euclidean space, according to one example of principles described herein,
[0005] Fig. 3 is a diagram of an example of an unbalanced graph in Euclidean space system, according to one example of principles described herein.
[00063 Fig, 4 is a diagram of an example of a balanced graph in Euclidean space system, according to one example of principles described herein. [0007] Fig. 5 is a flowchart of an example of a method for maintaining an orientation of a graph, according to one example of principles described herein.
[QQOSj Fig. 6 is a flowchart of an example of a method for maintaining an orientation of a graph, according to one example of principles described herein,
[OOOSj Fig. 7 is a diagram of an example of a maintaining system, according to one example of principles described herein.
[0010] Fig. 8 is a diagram of an example of a maintaining system, according to one example of principles described herein.
[0011] T roughout the drawings, identical reference numbers designate similar, but not necessarily identical, elements,
DETAILED DESCRIPTION
[0012] As mentioned above, a graph may be utilized to represent a topoiogy of a system. The graph may be a hyperbolic model of hyperbolic trees that is used to represent the topology of the system. Further, the graph may be projected in the Euclidean plane. As mentioned above, to represent the topology of the system, the graph models individual devices, elements, and components within the system. This allows a user to visualize the topoiogy of the system via the graph. By visualizing the topology of the system the user analyzes the graph to determine if issues exist in the system.
[0013] Often, when the user analyzes the graph to determine if issues exist in the system, the user performs several transitions of the graph. The transitions of the graph allows the user to zoom in on the graph, zoom out on the graph, rotate the graph, move the graph, as well as perform other functions,
[0014] Preserving orientation during transitions is needed to maintain an understanding of the graph. Often, isometries are used to preserve the orientation of the graph during transitions. However, isometries produce shaky transitions and have a negative effect on a users experience. [0015] Further, isometries guarantee the transitions, but they do not make any guarantees regarding transitions of a!! the nodes in the graph. For example, isometries tend to rotate all the nodes in the graph as a side effect of the transition. As a result, after performing several transitions, all of the nodes are rotated such that the user ioses ail ability to understand the graph.
[0016] The principles described herein include a method for maintaining an orientation of a graph. Such a method includes obtaining a graph in Euclidean space, the graph includes a root node and ancestor nodes represented as a hyperbolic tree, receiving a transition for the graph, the transition representing a change in coordinates for the root node and the ancestor nodes in a hyperbolic plane, applying at least one iterative rotation in the hyperbolic plane to maintain an orientation of the graph in the Euclidean space, and displaying the graph in the Euclidean space. Such a method maintains the orientation of the graph during transitions of the graphs with smooth motion. As a result, the ancestor nodes of the graph remains balanced relative to the root node. This enhances the overall experience for the user.
[0017] In the present specification and in the appended claims, the term "graph" is meant to be understood broadly as a visual representation of a topology of a system in Euclidean space. In one example, the graph includes a root node and ancestor nodes represented as a hyperbolic tree to mode! the topology of the system. The root node and the ancestor nodes may represent devices, components, and elements within the system. In one example, the graph may be a top-bottom, a bottom-top, a left-right, or a right-left layout. In this example, the root node of the hyperbolic tree is always located in the same position relative to its children nodes. In another example, the graph may be in a radial layout. In the radial layout, all children nodes are balanced around the root node.
[0018] In the present specification and in the appended claims, the term "transition" is meant to be understood broadly as moving the root node and/or ancestor nodes from one set of coordinates to another set of coordinates. The transition of the graph allows a user to zoom in on the graph, zoom out on the graph, rotate the graph, move the graph, as we!! as perform other functions.
[0019] in the present specification and in the appended claims, the term "factor" is meant to be understood broad!y as a ratio by which the graph is to be rotated by with respect to a rotation ang!e. For example, if the factor is ten the graph is rotated by one tenth of the rotation angle, if the factor is one- hundred the graph is rotated by one one-hundredth of the rotation ang!e.
[0020] !n the present specification and in the appended claims, the term "iterative rotation" is meant to be understood broad!y as a transition used to maintain the orientation of the graph. In one example, the iterative rotation is accomplished via performing several rotation ang!es around the center of the graph,
[0021] in the present specification and in the appended claims, the term "angle difference" is meant to be understood broadiy as a comparison between an angle for a leftmost child node with respect to a root node and an angle for a rightmost child node with respect to the root node. In one example, the angle difference is used to determine if the orientation of the graph is maintained.
[0022] Further, as used in the present specification and in the appended claims, the term "a number of or similar language is meant to be understood broadiy as any positive number comprising 1 to infinity; zero not being a number, but the absence of a number.
[0023] !n the following description, for purposes of exp!anation, numerous specific details are set forth in order to provide a thorough understanding of the present systems and methods. It will be apparent, however, to one skilled in the art that the present apparatus, systems, and methods may be practiced without these specific details. Reference in the specification to "an example" or similar language means that a particular feature, structure, or characteristic described in connection with that example is included as described, but may not be included in other examples.
[0024] Fig. 1 is a diagram of an example of a system for maintaining an orientation of a graph, according to one example of principles described herein. As will be described below, a maintaining system is in communication with a network to obtain a graph in Euclidean space, the graph includes a root node and ancestor nodes represented as a hyperbolic tree. Further, the maintaining system receives a transition for the graph, the transition
representing a change in coordinates for the root node and the ancestor nodes in a hyperboiic plane. Further, the maintaining system applies at least one iterative rotation in the hyperbolic plane to maintain an orientation of the graph in the Euclidean space and displays the graph.
[0025] In one example, the system (100) includes a user device (102) with a display (104). In this example, the display (104) may display, to the user, a graph. As will be described below, the graph may be utilized when visualizing a topology of a system. The graph models individual devices, elements, and components within the system to allow a user to visualize the topology of the system. By visualizing topology of the system via the graph, the user may analyze the graph to determine if issues exist in the system.
[0026] As illustrated, the system (100) includes a maintaining system (108). In keeping with the given example, the maintaining system (108) obtains the graph in Euclidean space. In this example, the graph includes a root node and ancestor nodes represented as a hyperbolic tree. Further, the graph models the topology of a system, in one example, the topology of the system may include devices, elements, and components within the system.
[0027] The maintaining system (108) further receives a transition for the graph, the transition representing a change in coordinates for the root node and the ancestor nodes in a hyperboiic plane. The transition may be made by the user when analyzing the graph to determine if issues exist in the system. The maintaining system (108) applies at least one iterative rotation in the hyperbolic plane to maintain an orientation of the graph in the Euclidean space.
[0028] Further, the maintaining system (108) displays the graph in the Euclidean space. For example, via the display (104) of the user device (102). Such a system preserves the orientation of the graph during transitions of the graphs with smooth motion. As a result, the graph remains balanced relative to the root and enhances the overall experience for the user. More information about the maintaining system (108) will be described later on in this
specification.
[0029] While this example has been described with reference to the maintaining system being located over the network, the maintaining system may be located in any appropriate location according to the principles described herein. For example, the maintaining system may be located in a user device, a server, a datacenter, other locations, or combinations thereof.
[0030] Further, while this example has been described with reference to the graph being represented as a hyperbolic tree, the graph may be represented by any tree representation. For example, the graph may be represented by an ordered tree, an unordered tree, a sub-tree, other trees, or combinations thereof.
[0031] While this example has been described with reference to the graph modeling a topology of a system, the graph may mode! many types of topologies. For example, the graph may mode! a topology of a network, a topology of a datacenter, a topology of a social graph, a physical topology, a digital topoiogy, a topology of an element within a system, a topology of a component within a system, or other topologies.
[0032] Fig. 2 is a diagram of an example of a graph in Euclidean space, according to one exampie of principles described herein. As mentioned above, a maintaining system is in communication with a network to obtain a graph in Euclidean space. Further, the maintaining system receives a transition for the graph, the transition representing a change in coordinates for the root node and the ancestor nodes in a hyperbolic plane.
[0033] As mentioned above, the maintaining system of Fig. 1 obtains a graph in Euclidean space, the graph includes a roof node and ancestor nodes represented as a hyperbolic tree. As illustrated in Fig. 2, a display is used to display the graph (200) in a top-bottom layout. In one example, the graph includes a root node (204), node B (214), node C (210), and node A (208). In one example, the graph (200) is laid out once and each node is given coordinates in hyperbolic plane. The coordinates may be a complex number. Often, the root node (204) of the hyperbolic tree is generally placed in the center of the graph (200). For example, the center of the graph (200) may be at coordinates (0,0).
[0034] in this example, node B (214), node C (210), and node A (206) are children nodes to the root node (204). Further, node B (214) may include children nodes such as node B1 (218-1), node B2 (216-2), and node B3 (216- 3). Further, node C (210) may include children nodes such as node C1 (212-1), node C2 (212-2), and node C3 (212-3). Further, node A (208) may include children nodes such as node A1 (208-1), node A2 (208-2), and node A3 (208- 3).
[0035] Further, the graph (200) is balanced because the left most child node, node B (21 ), and the rightmost child node, node A (206), are at a similar angle with respect to the root node (204). As a resuit, the graph remains balanced relativ to th root nod (204).
[0036] in one example, a user desires to perform a transition, as represented by arrow 218, of the graph (200). The maintaining system of Fig, 1 receives the transition for the graph. The transition representing a change in coordinates for the root node and the ancestor nodes in a hyperbolic plane. The transition may be performed by a drag and drop function on the display (202), The result of this transition is illustrated in Fig. 3.
[0037] Fig. 3 is a diagram of an example of an unbalanced graph in Euclidean space system, according to one example of principles described herein. As mentioned above, a maintaining system is in communication with a network to obtain a graph in Euclidean space. The graph includes a root node and ancestor nodes represented as a hyperbolic tree. Further, the maintaining system receives a transition for the graph, the transition representing a change in coordinates for the root node and the ancestor nodes in a hyperbolic plane. Further, the maintaining system applies at least one iterative rotation in the hyperbolic plane to maintain an orientation of the graph in the Euc!idean space.
[0038] As illustrated in Fig. 3, a display (302) is used to display the graph (300). As mentioned above, the graph includes a root node (304), node B (314), node C (310), and node A (306). As mentioned in Fig. 2, the user desires to perform a transition, as represented by arrow 218, of the graph (200) of Fig. 2, The transition may be performed by a drag and drop function on the display (202). The result, of this transition is illustrated in Fig. 3.
[0039] As illustrated in Fig. 3, the graph (300) is unbalanced because the Seft most child node, node B (314), and the rightmost child node, node A (306), are not at a simiiar angle with respect to the root node (304). As a result, the graph is unbalanced relative to the root node (304).
[0040] As mentioned above, the maintaining system of Fig, i applies at least one iterative rotation in the hyperbolic plane to maintain an orientation of the graph (300) in the Euclidean space. In this example, the iterative rotation in the hyperbolic plane maintains an orientation of the graph (300) in the Euclidean space. The iterative rotation is represented as arrow 318,
[00413 In one example, if the graph (300) is unbalanced, the graph (300) may not be displayed to the user. As wiil be described in Fig. 4, once the graph (300) is balanced, the graph (300) may be displayed to the user,
[0042] Fig. 4 is a diagram of an example of a balanced graph in Euclidean space system, according to one example of principles described herein. As mentioned above, a maintaining system is in communication with a network to obtain a graph in Euclidean space, the graph includes a root node and ancestor nodes represented as a hyperbolic tree. Further, the maintaining system receives a transition for the graph, the transition representing a change in coordinates for the root node and the ancestor nodes in a hyperbolic plane. Further, the maintaining system applies at least one iterative rotation in the hyperbolic plane to maintain an orientation of the graph in the Euclidean space and displays the graph.
[0043] As mentioned in Fig. 3, the maintaining system of Fig, 1 applies at least one iterative rotation in the hyperbolic plane to maintain an orientation of the graph (300) in the Euclidean space, in this example, the iterative rotation in the hyperbolic plane to maintain an orientation of the graph (300) in the Euclidean space is represented as arrow 318,
[0044] Fig, 4 illustrates the result when the maintaining system of Fig, 1 applies the iterative rotation in the hyperbolic plane to maintain an orientation of the graph (300) in the Euclidean space. As illustrated in Fig. 4, the iterative rotation in the hyperbolic plane maintains the orientation of the graph (400) in the Euciidean space. This is because the graph (400) is balanced because the !eftmost child node, node B (414), and the rightmost child node, nod A (406), are at a similar angle with respect to the root node (404), As a result, the graph remains balanced relative to the root node (404).
[0045] Once balanced, the maintaining system of Fig. 1 displays the graph (400). In one example, the graph (400) may be displayed to a user on a display (402).
[0046] Fig. 5 is a flowchart of an example of a method for maintaining an orientation of a graph, according to one example of principles described herein. In one example, the method (500) may be executed by the system (100) of Fig. 1 , In other examples, the method (500) may be executed by other systems such as system 700 or system 800. In this example, the method (500) includes obtaining (501) a graph in Euclidean space, the graph includes a root node and ancestor nodes represented as a hyperbolic tree, receiving (502) a transition for ihe graph, the transition representing a change in coordinates for the root node and the ancestor nodes in a hyperbolic plane, applying (503) at least one iterative rotation in the hyperbolic plane to maintain an orientation of the graph in the Euclidean space, and displaying (504) the graph in the
Euclidean space.
[0047] As mentioned above, the method (500) includes obtaining
(501) a graph in Euclidean space, the graph includes a root node and ancestor nodes represented as a hyperbolic tree. In one example, a user may define the graph. In other examples, common techniques and methods may be used to define the graph. Once the graph is defined, the maintaining system of Fig. 1 obtains the graph,
[0048] As mentioned above, the method (500) includes receiving
(502) a transition for the graph, the transition representing a change in coordinates for the root node and the ancestor nodes in a hyperbolic plane. In one example, a drag and drop function may allow a user to perform a transition. In this example, the transition may then be received by the maintaining system of Fig. 1. [0049] in one example, the transition moves the root node and/or the ancestor nodes from the center of the graph. Further, the transition of the graph allows the user to zoom in on the graph, zoom out on the graph, rotate the graph, move the graph, as well as perform other functions. In one example, this method (500) is applied to the graph every time a transition is received.
[0050] As mentioned above, the method {500) inciudes appiying (503) at least one iterative rotation in the hyperbolic plane to maintain an orientation of the graph in the Euclidean space, in one example, applying the at least one iterative rotation in the hyperbolic plane to maintain the orientation of the graph includes performing the at least one iterative rotation at a rotation angle around a focus point. While it is known how to perform rotations in the hyperbolic space, when translating the transition to the Euclidian space the magnitude of the rotation angle may change dramatically. For example, the change intensity depends on the original location of the nodes. For example, a rotation angle of 0.1 radian (rad) in the hyperbolic space can result in a rotation angle of 0,5 rad in the Euclidean space relative to the root node. As will be described below, the rotation angle may be based on the angle difference and the factor.
[0051] in one example, the method (500) rotates the entire hyperbolic space around a focused point. As a result, the graph rotates in the same direction in the Euclidean space. As wii! be described below, the method (500) performs small rotations in the hyperbolic space and checks the orientation of the graph in the Euclidean space. The method (500) continues the smail rotations until the orientation is maintained.
[0052] In one example, the rotation in the hyperbolic space is performed around the center, (0,0), of the graph. In order to rotate the graph around a focus point that is not in the center the following steps occur:
[0053] First, the method (500) executes a first transition to move the focus point from an original position to the center of the graph. As a result, the rotation in the hyperbolic space may be performed around the center of the graph.
[0054] Next, the method (500) performs the at least one iterative rotation at the rotation angle around the focus point by performing the at least one iterative rotation at the rotation angie. In one example, the method (500) performs several iterative rotations at the rotation angle around the focus point.
[0055] Next, the method (500) performs the at least one iterative rotation at the rotation angle around the focus point by executing a second transition to move the focus point from the center of the graph to the original position, in one example, the rotation angle for the iterative rotation is based on an angle difference between a leftmost chi!d node and a rightmost chi!d node of the root node. The angle difference between them should be zero. In practice, the method (500) looks for a close enough approximation threshold. For example, the threshold may be 0.0001 rad.
[0056] An example for applying (503) at least one iterative rotation in the hyperbolic plane to maintain an orientation of the graph in the Euclidean space will now be described. First, the method (500) calculates an angle difference. The angie difference may be based on the difference between an angle of leftmost child node relative to the root node and an angle of a rightmost child node relative to the root node in the Euclidean space. Whiie the difference angle is above the defined threshold, the method (500) creates a rotation matrix for the graph in the hyperbolic space. In one example, the rotation matrix may be an angle difference multiplied by a factor.
[0057] If a new angle difference in the Euclidian space has decreased the method (500) applies the rotation matrix and continues to a next iteration. If the new angie difference is higher than the previous angle difference, the method (500) increases the factor and repeats the last iterative rotation by performing a smaller rotation.
[0058] When the angle difference between the leftmost child node and the rightmost child node relative to the root node in the Euclidean space is below the threshold the graph may be displayed, in one example, a final transformation is actually the one achieved by multiplying all rotation angles by each other.
[0059] For example, at iteration one, the first angle difference is 0.887575 388356263 rad between the leftmost child node and the rightmost chiid node relative to the root node in the Euclidean space. The method (500) may use a factor such as ten. At iteration one-hundred thirty nine the new angie difference become below the threshold, for example lower than
0.0001 rads. As a result, the graph may be displayed,
[0060] As mentioned above, the method (500) includes displaying (504) the graph in the Euclidean space. As mentioned above, once the angl difference between the leftmost child nod and the rightmost child node relative to the root node is similar, the maintaining system of Fig. 1 , displays the graph in the Euclidean space. In one example, the graph may be displayed to a user via a display on a user device.
[0061] Fig. 8 is a flowchart of an example of a method for maintaining an orientation of a graph, according to one example of principles described herein. In one example, the method (600) may be executed by the system (100) of Fig. . In other examples, the method (600) may be executed by other systems such as system 700 or system 800. In this example, the method (600) includes obtaining (801) a graph in Euclidean space, the graph includes a root node and ancestor nodes represented as a hyperbolic tree, receiving (802) a transition for the graph, the transition representing a change in coordinates for the root node and the ancestor nodes in a hyperbolic plane, applying (603) at least one iterative rotation in the hyperbolic plane to maintain an orientation of the graph in the Eudidean space, determining (604) if a leftmost child node and a rightmost chiid node of the roof node have a similar angie reiative to the root node, and displaying (605) the graph in the Euclidean space,
[0062] As mentioned above, the method (600) includes determining if a leftmost child node and a rightmost child node of the root node have a similar angle relative to the root node. As mentioned above, the similar angle may be based on a threshold. In one example, if the leftmost child node and the rightmost chiid node of the root node have a similar angie relative to the root node, the graph is balanced. As a result, the graph may be displayed.
[0063] Alternatively . if the leftmost chiid node and the rightmost child node of the root node do not have a similar angle relative to the root node, the graph is unbalanced. As a result, the graph may not be displayed and another iterative rotation is appiied until the leftmost child node and the rightmost child node of the root node have a similar angle relative to the root node,
[0064] Fig. 7 is a diagram of an example of a maintaining system, according to one example of principles described herein. The maintaining system (700) includes an obtaining engine (702), a receiving engine (704), an applying engine (706), and a displaying engine (708). In this example, the maintaining system (700) also includes a determining engine (710). The engines (702, 704, 706, 708, 710) refer to a combination of hardware and program instructions to perform a designated function. Each of the engines (702, 704, 706, 708, 710) may include a processor and memory. The program instructions are stored in the memory and cause the processor to execute the designated function of the engine.
[0085] The obtaining engine (702) obtains a graph in Euclidean space, the graph includes a root node and ancestor nodes represented as a hyperbolic tree. In one example, the obtaining engine (702) obtains one graph in the Euclidean space, in another example, the obtaining engine (702) obtains several graphs in the Euclidean space.
[0066] The receiving engine (704) receives a transition for the graph, the transition representing a change in coordinates for the root node and the ancestor nodes in a hyperbolic plane, in one example, the receiving engine (704) receives a transition for the graph to allow the user to zoom in on the graph, zoom out on the graph, rotate the graph, move the graph, as well as perform other functions.
[0087] The applying engine (706) applies at least one iterative rotation in the hyperbolic plane to maintain an orientation of the graph in the Euclidean space, in one example, the applying engine (706) applies at least one iterative rotation in the hyperbolic plane to maintain an orientation of the graph in the Euclidean space by performing the at least one iterative rotation at a rotation angle around a focus point.
[0068] In one example, performing the at least on iterative rotation at the rotation angle around the focus point includes executing a ftrst transition to move the focus point from an original position to the center of the graph. Further, performing the at least one iterative rotation at the rotation angle around the focus point includes performing the at least one iterative rotation at the rotation angle. Still further, performing the at least one iterative rotation at the rotation angle around the focus point includes executing a second transition to move the focus point from the center of the graph to the original position. As mentioned above, the rotation angle for the iterative rotation is based on an angle difference between a leftmost child node and a rightmost child node of the root node.
[0069] Further, the applying engine (706) determines an iteration rotation number, an angle difference, a factor, a rotation angle, or combinations thereof. As mentioned above, the rotation angle is based on the angle difference and the factor.
[0070] The displaying engine (708) displays the graph in the
Euclidean space. As mentioned above, once the angle difference between a leftmost child node and a rightmost child node of the root node is similar, the displaying engine (708) displays the graph in the Euclidean space, in one example, the graph may be displayed to a user via a display on a user device,
[0071] Fig. 8 is a diagram of an example of a maintaining system, according to one example of principles described herein, in this example, maintaining system (800) includes processing resources (802) that are in communication with memory resources (804). Processing resources (802) include at least one processor and other resources used to process
programmed instructions. The memory resources (804) represent generally any memory capable of storing data such as programmed instructions or data structures used by the maintaining system (800). The programmed instructions shown stored in the memory resources (804) include a graph obtainer (806), a transition receiver (808), an iterative rotation applier (810), a balance determiner (812), and a graph displayer (814).
[0072] The memory resources (804) include a computer readable storage medium that contains computer readable program code to cause tasks to be executed by the processing resources (802). The computer readable storage medium may be tangible and/or physical storage medium. The computer readable storage medium ma be any appropriate storage medium that is not a transmission storage medium, A non-exhaustive !ist of computer readable storage medium types includes ποη-volatiie memory, volatile memory, random access memory, write only memory, fiash memory, electrically erasable program read only memory, or types of memory, or combinations thereof.
[0073] The graph obtainer (806) represents programmed instructions that when executed, cause the processing resources (802) to obtain a graph in Euclidean space, the graph comprising a root node and ancestor nodes represented as a hyperbolic tree. The transition receiver (808) represents programmed instructions that, when executed, cause the processing resources (802) to receive a transition for the graph, the transition representing a change in coordinates for the root node and the ancestor nodes in a hyperbolic plane.
[0074] The iterative rotation app!ier (810) represents programmed instructions that, when executed, cause the processing resources (802) to apply at least one iterative rotation in the hyperbolic plane to maintain an orientation of the graph in the Euclidean space. The balance determiner (812) represents programmed instructions that, when executed, cause the processing resources (802) to determine if a leftmost child node and a rightmost child node of the root node have a similar angle relative to the root node. The graph disp!ayer (814) represents programmed instructions that, when executed, cause the processing resources (802) to displaying the graph in the Euclidean space,
[0075] Further, the memory resources (804) may be part of an installation package, in response to installing the installation package, the programmed instructions of the memory resources (804) may be downloaded from the installation package's source, such as a portable medium, a server, a remote network location, another location, or combinations thereof. Portable memory media that are compatible with the principles described herein include DVDs, CDs, flash memory, portable disks, magnetic disks, optica! disks, other forms of portabie memory, or combinations thereof. In other examples, the program instructions are already installed. Here, the memory resources can include integrated memory such as a hard drive, a solid state hard drive, or the like. [0078] in some examples, the processing resources (802) and the memory resources (802) are iocated within the same physicai component, such as a server, or a network component. The memory resources (804) may be part of the physical component's main memory, caches, registers, non-volatile memory, or elsewhere in the physical component's memory hierarchy.
Alternatively, the memory resources (804) may be in communication with the processing resources (802) over a network. Further, the data structures, such as the libraries, may be accessed from a remote location over a network connection while the programmed instructions are iocated locally. Thus, the maintaining system (800) may be implemented on a user device, on a server, on a collection of servers, or combinations thereof,
[ΟΟ773 The maintaining system (800) of Fig. 8 may be part of a general purpose computer. However, in alternative examples, the maintaining system (800) is part of an application specific integrated circuit.
[0078] The preceding description has been presented to illustrate and describe examples of the principles described. This description is not intended to be exhaustive or to limit these principies to any precise form disclosed. Many modifications and variations are possible in light of the above teaching.

Claims

CLAIMS WHAT IS CLAIMED IS:
1. A method for maintaining an orientation of a graph, the method comprising;
obtaining a graph in Euclidean space, the graph comprising a root node and ancestor nodes represented as a hyperbolic free; receiving a transition for the graph, the transition representing a change in coordinates for the root node and the ancestor nodes in a hyperbolic plane.
applying at ieast one iterative rotation in the hyperbolic piane to maintain an orientation of the graph in the Euclidean space; and
displaying the graph in the Euclidean space.
2. The method of claim 1 , in which applying the at ieast one iterative rotation in the hyperbolic plane to maintain the orientation of the graph comprises performing the at Ieast one iterative rotation at a rotation angle around a focus point.
3, The method of claim 2, in which performing the at Ieast one
iterative rotation at the rotation angle around the focus point comprises:
executing a first transition to move the focus point from an original position to the center of the graph;
performing the at Ieast one iterative rotation at the rotation angle; and
executing a second transition to move the focus point from the center of the graph to the original position.
4. The meihod of ciaim 3, in which the rotation angle for the iterative rotation is based on an angle difference between a leftmost child node and a rightmost child node relative to the root node.
5. The meihod of claim 1 : further comprising determining if a leftmost child node and a rightmost child node of the root node have a similar angle relative to the root node.
6. The method of ciaim 1 , in which applying the at least one iterative rotation in the hyperbolic plane to maintain the orientation of the graph further comprises determining an iteration rotation number, an angle difference, a factor, a rotation angle, or combinations thereof.
7. The method of claim 6, in which the rotation angle is based on the angle difference and the factor.
8. A system for maintaining an orientation of a graph, the system comprising:
an obtaining engine to obtain a graph in Euclidean space, the graph comprising a root node and ancestor nodes represented as a hyperbolic tree;
a receiving engine to receive a transition for the graph, the transition representing a change in coordinates for the root node and the ancestor nodes in a hyperbolic plane;
an applying engine to appiy at least one iterative rotation in the hyperbolic plane to maintain an orientation of the graph in the Euclidean space;
a determining engine to determine if a leftmost child node and a rightmost child node of the root node have a similar angle relative to the root node; and a displaying engine to display the graph in the Euclidean space.
9. The system of claim 8, in which the applying engine applies the at least one iterative rotation in the hyperboiic plane to maintain the orientation of the graph by performing the at least one iterative rotation at a rotation angle around a focus point,
10. The system of claim 9, in which performing the at least one
iterative rotation at the rotation angle around the focus point comprises:
executing a first transition to move the focus point from an original position to the center of the graph;
performing the at least one iterative rotation at the rotation angle; and
executing a second transition to move the focus point from the center of the graph to the original position.
11. The system of claim 8, in which the applying engine further
determines an iteration rotation number, an angle difference, a factor, a rotation angle, or combinations thereof.
12. A computer program product for maintaining an orientation of a graph, comprising;
a tangible computer readable storage medium, said tangible computer readable storage medium comprising computer readable program code embodied therewith, said computer readable program code comprising program instructions that, when executed, causes a processor to: receive a transition for a graph, the transition representing a change in coordinates for a root node and ancestor nodes in a hyperbolic plane;
apply at least one iterative rotation in the hyperbolic plane to maintain an orientation of the graph in Euclidean space; and determine if a leftmost child node and a rightmost child node of the root node have a similar angle relative to the root node,
13. The product of claim 12, further comprising computer readable program code comprising program instructions that, when executed, cause said processor to obtain the graph in the Euclidean space, the graph comprising the root node and the ancestor nodes represented as a hyperbolic tree.
14. The product of claim 12, further comprising computer readable program code comprising program instructions that, when executed, cause said processor to perform the at ieasf one iterative rotation at a rotation angle around a focus point by: executing a first transition to move the focus point from an original position to the center of the graph;
performing the at least one iterative rotation at the rotation angle; and
executing a second transition to move the focus point from the center of the graph to the original position.
15. The product of claim 12, further comprising computer readable program code comprising program instructions that, when executed, cause said processor to display the graph in the Euclidean space.
PCT/US2014/036122 2014-04-30 2014-04-30 Maintaining an orientation of a graph WO2015167518A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
PCT/US2014/036122 WO2015167518A1 (en) 2014-04-30 2014-04-30 Maintaining an orientation of a graph

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2014/036122 WO2015167518A1 (en) 2014-04-30 2014-04-30 Maintaining an orientation of a graph

Publications (1)

Publication Number Publication Date
WO2015167518A1 true WO2015167518A1 (en) 2015-11-05

Family

ID=54359065

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2014/036122 WO2015167518A1 (en) 2014-04-30 2014-04-30 Maintaining an orientation of a graph

Country Status (1)

Country Link
WO (1) WO2015167518A1 (en)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0702330B1 (en) * 1994-09-14 2001-12-05 Inxight Software, Inc. Layout of node-link structure in space with negative curvature
EP0702331B1 (en) * 1994-09-14 2002-03-06 Inxight Software, Inc. Displaying node-link structure with region of greater spacings and peripheral branches
US20030007002A1 (en) * 2001-07-09 2003-01-09 Yozo Hida Tree visualization system and method based upon a compressed half-plane model of hyperbolic geometry
US20030056199A1 (en) * 2001-09-19 2003-03-20 Jun Li Hyperbolic tree space display of computer system monitoring and analysis data
US20080077875A1 (en) * 2006-08-30 2008-03-27 International Business Machines Corporation Method And Computer System for Displaying A Weighted Tree Based on Hyperbolic Geometry

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0702330B1 (en) * 1994-09-14 2001-12-05 Inxight Software, Inc. Layout of node-link structure in space with negative curvature
EP0702331B1 (en) * 1994-09-14 2002-03-06 Inxight Software, Inc. Displaying node-link structure with region of greater spacings and peripheral branches
US20030007002A1 (en) * 2001-07-09 2003-01-09 Yozo Hida Tree visualization system and method based upon a compressed half-plane model of hyperbolic geometry
US20030056199A1 (en) * 2001-09-19 2003-03-20 Jun Li Hyperbolic tree space display of computer system monitoring and analysis data
US20080077875A1 (en) * 2006-08-30 2008-03-27 International Business Machines Corporation Method And Computer System for Displaying A Weighted Tree Based on Hyperbolic Geometry

Similar Documents

Publication Publication Date Title
US10699055B2 (en) Generative adversarial networks for generating physical design layout patterns
US10776740B2 (en) Detecting potential root causes of data quality issues using data lineage graphs
US9746987B2 (en) Changing a controlling device interface based on device orientation
US20170323463A1 (en) Interactive presentation of large scale graphs
US20130191105A1 (en) Virtual systems testing
US10803122B2 (en) Labeled graph isomorphism allowing for false positive
US10656934B2 (en) Efficient software testing
US10902260B2 (en) Estimating a height of a cloud depicted in an image
US20210160142A1 (en) Generalized correlation of network resources and associated data records in dynamic network environments
US10740232B2 (en) System, method and computer program product for accelerating iterative graph algorithms by memory layout optimization
US11010286B1 (en) Software testing with machine learning models
US10606975B2 (en) Coordinates-based generative adversarial networks for generating synthetic physical design layout patterns
US11721099B2 (en) Cloud based active commissioning system for video analytics
US20180089061A1 (en) Identification and handling of nested breakpoints during debug session
US20220156376A1 (en) Inline detection and prevention of adversarial attacks
US11017874B2 (en) Data and memory reorganization
US9563473B2 (en) Concurrent workload deployment to synchronize activity in a design palette
US10671891B2 (en) Reducing computational costs of deep reinforcement learning by gated convolutional neural network
WO2015167518A1 (en) Maintaining an orientation of a graph
US11656856B2 (en) Optimizing a just-in-time compilation process in a container orchestration system
US10839224B2 (en) Multivariate probability distribution based sports highlight detection
US20230071456A1 (en) Generative adversarial network implemented digital script modification
US10834381B1 (en) Video file modification
US20230043505A1 (en) Deep learning software model modification
US20210019579A1 (en) Generating Search Determinations for Assortment Planning Using Visual Sketches

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 14890707

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 14890707

Country of ref document: EP

Kind code of ref document: A1