Generation device, generation method, and generation program

The two-step edge transposition process in the generation device balances input and output edges, enhancing search performance by generating a graph with uniform edge distribution, addressing inefficiencies in conventional graph generation methods.

JP2026013271APending Publication Date: 2026-01-28LY CORP
View PDF 2 Cites 0 Cited by

Patent Information

Application Number
JP2024113599
Authority / Receiving Office
JP · JP
Patent Type
Applications
Current Assignee / Owner
Filing Date
2024-07-16
Publication Date
2026-01-28

AI Technical Summary

Technical Problem

Conventional graph generation methods fail to maintain a balanced number of input and output edges, leading to inefficiencies in search accuracy and processing time, particularly in neighborhood searches using directed edges.

Method used

A generation device and method that involves a two-step edge transposition process to generate a graph with a uniform number of input edges by reversing edge directions, ensuring balanced edge distribution.

Benefits of technology

The method generates an appropriate graph that enhances search performance by reducing the number of output edges and maintaining a constant number of input edges, improving search accuracy and reducing processing time.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 2026013271000001_ABST
    Figure 2026013271000001_ABST
Patent Text Reader

Abstract

To generate an appropriate graph.SOLUTION: A generation device includes an acquisition unit and a generation unit. The processor is configured to acquire a target graph that is a graph in which a plurality of nodes respectively corresponding to a plurality of objects that are targets of data retrieval are connected by edges. The first generating unit extracts, for each of a plurality of nodes included in a target graph, a first number of output edges from among output edges starting from the node and generates a first graph in which the nodes are connected by edges obtained by reversing directions of the extracted output edges. The second generating unit extracts, for each of a plurality of nodes included in the first graph, a second number of output edges from among output edges starting from the node and generates a second graph in which a plurality of nodes are connected by edges obtained by reversing directions of the extracted output edges.SELECTED DRAWING: Figure 3
Need to check novelty before this filing date? Find Prior Art

Description

[Technical Field]

[0001] The present invention relates to a generation device, a generation method, and a generation program. [Background technology]

[0002] Conventionally, various techniques for searching information have been provided. For example, a technique for performing a search using graph data (hereinafter simply referred to as a "graph") generated by directed edges has been provided. Such a technique is also used for image searches, for example. In such information searches using graphs, a technique for generating a graph that enables efficient searches by updating the graph has been provided. [Prior art documents] [Patent documents]

[0003] [Patent Document 1] Patent No. 6959164 [Patent Document 2] Patent No. 6293335 [Non-patent literature]

[0004] [Non-Patent Document 1] Masajiro Iwasaki, "Neighborhood Search Using Approximate k-Nearest Neighbor Graphs with Tree-Structured Indexes," Transactions of Information Processing Society of Japan, February 2011, Vol. 52, No. 2, pp.817-828. Summary of the Invention [Problem to be solved by the invention]

[0005] However, there is room for improvement in the above-mentioned conventional technology. For example, in the above-mentioned conventional technology, a graph is updated using a transposed graph in which the directions of the directed edges of an existing graph are reversed once. By performing this one-time reversal, the number of input edges input to each node can be controlled, but the number of output edges output from each node may vary, and an appropriate graph may not be generated. As such, there is room for improvement in the conventional technology, and it is desirable to generate an appropriate graph while using information on an existing graph.

[0006] The present application has been made in view of the above, and aims to provide a generation device, a generation method, and a generation program for generating an appropriate graph. [Means for solving the problem]

[0007] The generation device according to the present application is characterized by comprising: an acquisition unit that acquires a target graph, which is a graph in which a plurality of nodes corresponding to each of a plurality of objects to be subjected to data search are connected by edges; a first generation unit that targets each of the plurality of nodes included in the target graph, extracts a first number of output edges from among the output edges starting from each node, and generates a first graph in which the plurality of nodes are connected by edges with the directions of the extracted output edges reversed; and a second generation unit that targets each of the plurality of nodes included in the first graph, extracts a second number of output edges from among the output edges starting from each node, and generates a second graph in which the plurality of nodes are connected by edges with the directions of the extracted output edges reversed. [Effects of the Invention]

[0008] According to one aspect of the embodiment, an effect is achieved in that an appropriate graph can be generated. [Brief explanation of the drawings]

[0009] [Figure 1] FIG. 1 is a diagram illustrating an example of a generation process according to the embodiment. [Figure 2]FIG. 2 is a diagram illustrating an example of the configuration of a generation system according to the embodiment. [Figure 3] FIG. 3 is a diagram illustrating an example of the configuration of a generating device according to an embodiment. [Figure 4] FIG. 4 is a diagram illustrating an example of an object information storage unit according to the embodiment. [Figure 5] FIG. 5 is a diagram illustrating an example of a target graph data storage unit according to the embodiment. [Figure 6] FIG. 6 is a diagram illustrating an example of a first graph data storage unit according to the embodiment. [Figure 7] FIG. 7 is a diagram illustrating an example of a second graph data storage unit according to the embodiment. [Figure 8] FIG. 8 is a flowchart illustrating an example of the generation process according to the embodiment. [Figure 9] FIG. 9 is a flowchart showing an example of a search process using graph data. [Figure 10] FIG. 10 is a hardware configuration diagram illustrating an example of a computer that realizes the functions of the generation device. DETAILED DESCRIPTION OF THE INVENTION

[0010] Hereinafter, a detailed description will be given of a generating device, a generating method, and a generating program according to the present application (hereinafter referred to as "embodiments") with reference to the drawings. Note that the generating device, the generating method, and the generating program according to the present application are not limited to these embodiments. Furthermore, the same components in the following embodiments are denoted by the same reference numerals, and duplicated descriptions will be omitted.

[0011] (Embodiment) [1. Generation Process] An example of a generation process according to an embodiment will be described with reference to FIG. 1. FIG. 1 is a diagram illustrating an example of a generation process according to an embodiment. In FIG. 1, a generation device 100 (see FIG. 3) generates graph data by performing a process of rotating edges by two (also referred to as an "edge two-rotation process") based on target graph data, which is graph data to be processed. Note that, hereinafter, graph data generated after performing the edge transposition process once, i.e., by performing the edge transposition process once, may be referred to as first graph data, and graph data generated after performing the edge transposition process twice (edge ​​two-rotation process), i.e., by performing the edge transposition process once more (a total of two times) may be referred to as second graph data.

[0012] In the following, graph data may be simply referred to as a graph. For example, target graph data may be referred to as a target graph, first graph data may be referred to as a first graph, and second graph data may be referred to as a second graph. The target information (object) may be any information that can be expressed as a vector. In the following, vector information targeting image information will be described, but the target of vector information may be other objects such as video information or audio information.

[0013] Furthermore, the generating device 100 performs the generation process on graph data, as shown in FIG. 1. Note that a directed edge here refers to an edge that allows data to be traced in only one direction. In the following, the source of the trace by the edge, i.e., the starting node, is referred to as the reference source, and the destination of the trace by the edge, i.e., the end node, is referred to as the reference destination. For example, a directed edge connecting a specific node "A" to a specific node "B" refers to an edge with the reference source being node "A" and the reference destination being node "B."

[0014] Hereinafter, an edge having node "A" as the reference source will be referred to as an output edge of node "A." Also, hereinafter, an edge having node "B" as the reference destination will be referred to as an input edge of node "B." That is, the output edge and input edge here refer to the difference between which of the two nodes connected by a directed edge is considered as the center, and a directed edge becomes an output edge and an input edge. That is, output edges and input edges are relative concepts, and a directed edge becomes an output edge when the reference source node is considered as the center, and becomes an input edge when the reference destination node is considered as the center. Note that in this embodiment, edges refer to directed edges such as output edges and input edges, and therefore, hereinafter, directed edges may be simply referred to as "edges."

[0015] Here, each node corresponds to an object. For example, each of a plurality of local features extracted from an image may be an object. Also, for example, various data in which the distance between objects is defined may be an object.

[0016] The generating device 100 processes nodes corresponding to a huge amount of image information, for example, in the millions to hundreds of millions, but only a portion of these nodes is shown in the drawings. In the example of Figure 1, for simplicity's sake, only a portion of the nodes and edges are shown to provide an overview of the processing. Specifically, Figure 1 shows only six nodes N1 to N6 and the edges that are output edges of any of these nodes, and for convenience of illustration, only a portion of the edges, such as edges E1 to E9 in the target graph GR10, are labeled.

[0017] Furthermore, when "node N* (* is an arbitrary numerical value)" is written in this way, it indicates that the node is identified by the node ID "N*". For example, when "node N1" is written, the node is identified by the node ID "N1". For example, in the example shown in FIG. 1, the vector data corresponding to each node may be an N-dimensional real-valued vector.

[0018] Furthermore, when written as "edge E* (* is an arbitrary numerical value)," this indicates that the edge is identified by the edge ID "E*." For example, when written as "edge E1," this edge is identified by the edge ID "E1." For example, edge E1, which connects node N1 as the reference source and node N2 as the reference destination, makes it possible to trace from node N1 to node N2. In this case, edge E1, which is a directed edge, becomes an output edge when identified with node N1 as the center, and becomes an input edge when identified with node N2 as the center.

[0019] In other words, when viewed from the perspective of node N1, edge E1, which is a directed edge, is an edge with an arrow pointing from itself to another edge, i.e., an outgoing edge, and when viewed from the perspective of node N2, it is an edge with an arrow pointing toward itself, i.e., an ingoing edge. In other words, the output edge here can be read as an outgoing edge, and the input edge can be read as an ingoing edge.

[0020] 1 is a diagram that schematically illustrates the process of generating graph data, and the spaces illustrated by the spatial information VS1-1 to VS1-5 may be the same space. In the following, when there is no need to distinguish between the spatial information VS1-1 to VS1-5, they will be referred to as spatial information VS1.

[0021] Furthermore, the spatial information VS1 in Fig. 1 may be a Euclidean space. Furthermore, the spatial information VS1 shown in Fig. 1 is a conceptual diagram for explaining the distance between vectors, etc., and the spatial information VS1 is a multidimensional space. For example, the spatial information VS1 shown in Fig. 1 is illustrated in a two-dimensional form in order to be illustrated on a plane, but it is assumed to be a multidimensional space with, for example, 100 or 1000 dimensions.

[0022] 1 are diagrams that schematically show the graph data generation process, and the first graphs GR11-1 and GR11-2 are the same first graph generated by the generation process. In the following, when the first graphs GR11-1 and GR11-2 are described without any particular distinction, they will be referred to as the first graph GR11.

[0023] In this embodiment, the distance between each node in the spatial information VS1 is taken as the similarity between corresponding objects. For example, the similarity between objects (image information) corresponding to each node is assumed to be mapped as the distance between nodes in the spatial information VS1. For example, the similarity between concepts corresponding to each node is assumed to be mapped to the distance between each node. Here, in the example shown in FIG. 1, the similarity between objects whose distance between each node in the spatial information VS1 is short is high, and the similarity between objects whose distance between each node in the spatial information VS1 is long is low. For example, in the spatial information VS1 in FIG. 1, the node identified by node ID "N4" and the node identified by node ID "N6" are close to each other, i.e., the distance between them is short. Therefore, the object corresponding to the node identified by node ID "N4" and the object corresponding to the node identified by node ID "N6" have a high similarity.

[0024] Also, for example, in the spatial information VS1 in FIG. 1, the node identified by the node ID "N2" and the node identified by the node ID "N3" are far apart, i.e., the distance between them is long. Therefore, the object corresponding to the node identified by the node ID "N2" and the object corresponding to the node identified by the node ID "N3" have a low similarity. Note that the distance as an index of similarity may be any distance that can be applied as the distance between vectors (N-dimensional vectors), and various distances such as Euclidean distance, Mahalanobis distance, and cosine distance may be used.

[0025] The details of the generation process will now be explained using Fig. 1. Note that the steps shown in Fig. 1 are merely steps for convenience in explaining the process of generating a second graph from an elephant graph, and the actual process may be performed using more detailed processing steps.

[0026] First, the generation device 100 acquires a target graph (step S11). For example, the generation device 100 acquires the target graph from the target graph data storage unit 122 (see FIG. 3). Note that the generation device 100 can acquire the target graph in any manner, and may acquire the target graph from the information providing device 50 (see FIG. 2), for example.

[0027] In the example of FIG. 1, the generating device 100 acquires a target graph GR10 as shown in spatial information VS1-1. For example, the target graph GR10 may be a neighborhood graph generated based on a predetermined criterion. In the following, an approximate k-nearest neighbor graph will be described as an example of the target graph GR10. For example, the target graph GR10 is an approximate k-nearest neighbor graph in which k is "200". Note that "200" is merely an example, and k is not limited to "200" and may be various values.

[0028] Furthermore, the approximate k-nearest neighbor graph is merely one example of the target graph GR10, and the target graph GR10 may be, for example, a k-nearest neighbor graph. For example, a k-nearest neighbor graph is a graph in which, for each node, output edges to k nodes are connected in order from the node closest to the node. For example, the approximate k-nearest neighbor graph is a concept that includes graphs based on a graph (ANNG: Approximate k-Nearest Neighbor Graph) that approximates a k-nearest neighbor graph generated by performing a k-nearest neighbor search using a graph being generated when generating a graph index (graph).

[0029] Note that the approximate k-nearest neighbor graph generated by the above-described processing may be the k-nearest neighbor graph. In other words, the approximate k-nearest neighbor graph is a concept that includes the k-nearest neighbor graph. Furthermore, any processing such as that disclosed in Patent Document 2, Non-Patent Document 1, etc. can be employed to generate the approximate k-nearest neighbor graph, and a detailed description thereof will be omitted. Note that the approximate k-nearest neighbor graph is merely an example, and the target graph is not limited to the approximate k-nearest neighbor graph, and may be any graph in which multiple nodes are connected by directed edges.

[0030] The generating device 100 generates a first graph from the target graph data (step S12). The generating device 100 targets each of a plurality of nodes included in the target graph, extracts a first number of output edges from among the output edges starting from each node, and generates a first graph in which a plurality of nodes are connected by edges obtained by inverting the directions of the extracted output edges (also referred to as "first inversion target edges"). For example, the generating device 100 extracts, as the first inversion target edges, a first number of output edges starting from the shortest length (distance) from among the output edges starting from each node included in the target graph.

[0031] The generating device 100 extracts the first inversion target edges using any method. For example, the generating device 100 may extract the first number of first inversion target edges using information on the length of each edge (the distance between connecting nodes) stored in the target graph data storage unit 122. For example, the generating device 100 may extract the first number of first inversion target edges by a search process such as that shown in FIG. 9. Furthermore, the edge length (the distance between connecting nodes) is merely one example of an extraction criterion, and the generating device 100 may extract the first number of first inversion target edges based on any criterion other than the edge length. For example, the generating device 100 may randomly extract the first number of output edges as the first inversion target edges from the output edges starting from each node.

[0032] 1, the generating device 100 targets each of a plurality of nodes N1 to N6, etc. included in the object graph GR10, and extracts the shortest 100 output edges from among the output edges starting from each node as first inversion target edges. Then, the generating device 100 generates a first graph GR11 in which a plurality of nodes are connected by edges obtained by inverting the directions of the 100 first inversion target edges extracted from the object graph GR10 for each of the plurality of nodes N1 to N6, etc. Note that 100 edges is merely an example, and the first number is not limited to 100 and may be set to any value.

[0033] In this way, the generation device 100 generates a first graph having edges in the target graph whose directions are reversed from the first inversion target edges by reversing the directions of the output edges extracted as first inversion target edges from among the edges in the target graph. That is, the generation device 100 generates a first graph having first inversion target edges whose directions are reversed without changing the distances between nodes, etc. Note that as long as the first graph can be generated from the target graph, the generation device 100 may perform the processing in any order. For example, the generation device 100 generates a first graph having output edges extracted as first inversion target edges from among the edges in the target graph, and updates the first graph by reversing the directions of the edges in the generated first graph, thereby generating a first graph having edges in the target graph whose directions are reversed from the first inversion target edges from among the edges.

[0034] In the example of FIG. 1, the generation device 100 generates a first graph GR11-1 as shown in spatial information VS1-2 from the object graph GR10. The generation device 100 generates the first graph GR11-1, which is a transposed graph of the object graph GR10. For example, the generation device 100 generates the first graph GR11 by swapping the start point and end point of an edge extracted as a first inversion target edge in the object graph GR10. For example, the generation device 100 inverts the edge E1, which has node N1 as its start point and node N2 as its end point, to generate the first graph GR11 including an edge E1a, which has node N2 as its start point and node N1 as its end point, as shown in spatial information VS1-2. In this way, the generation device 100 generates a first graph GR11 based on the object graph GR10, in which the number of input edges to each of the multiple nodes N1 to N6, etc., is a first number. In this way, the generation device 100 can generate a first graph based on the object graph, in which the number of input edges to each node is uniform.

[0035] Furthermore, the generating device 100 extracts output edges that are fewer than the first number (referred to as "Ko edges") from among the output edges that start at each node included in the target graph (step S13). Note that the relationship between Ko edges and the first number is not limited to the above, and for example, Ko edges may be equal to or greater than the first number. For example, the generating device 100 extracts the shortest Ko output edges (also referred to as "edges to be added") from among the output edges that start at each node included in the target graph.

[0036] The generating device 100 extracts the edges to be added using any method. For example, the generating device 100 may extract Ko edges to be added using information on the length of each edge (the distance between connecting nodes) stored in the target graph data storage unit 122. For example, the generating device 100 may extract Ko edges to be added by a search process such as that shown in FIG. 9. The edge length (the distance between connecting nodes) is merely one example of an extraction criterion, and the generating device 100 may extract Ko edges to be added based on any criterion other than the edge length. For example, the generating device 100 may randomly extract Ko output edges as edges to be added from the output edges starting from each node.

[0037] In FIG. 1, the generation device 100 targets each of multiple nodes N1 to N6, etc., included in the target graph GR10, and extracts the shortest 10 output edges from among the output edges starting from each node as edges to be added. Note that 10 is merely an example, and the number Ko is not limited to 10 and may be set to any value as long as it is less than the first number, for example. The generation device 100 extracts output edges, such as edge E1, as edges to be added, as shown in the provisional graph GR12 in the spatial information VS1-3. Note that the provisional graph GR12 is a graph indicating edges extracted as edges to be added. The generation device 100 may generate the provisional graph GR12, but may not need to generate the provisional graph GR12 if the edges to be added can be identified.

[0038] Then, the generating device 100 adds an edge to the first graph (step S14). The generating device 100 adds the output edge extracted from the target graph as the edge to be added to the first graph, thereby adding the edge to the first graph.

[0039] 1, the generation device 100 generates a first graph GR11-2 as shown in the spatial information VS1-4 by adding an edge to the first graph GR11. The generation device 100 generates the first graph GR11-2 to which the edge to be added is added by adding an output edge such as edge E1, which is an edge to be added and is shown in the temporary graph GR12, to the first graph GR11-1. For example, the generation device 100 generates the first graph GR11-2 to which the edge to be added is added by adding edge E7, which is an edge to be added, to the first graph GR11-1.

[0040] In FIG. 1, among the edges to be added shown, except for edge E7, there are edges in the first graph GR11 that have the same reference source and reference destination as those edges, so those edges to be added do not need to be added.

[0041] 1 shows a case where an edge to be added is added to the first graph, but the edge to be added does not have to be added to the first graph. For example, the edge to be added may be added to the second graph. Note that if the edge to be added is not added to the first graph, the first graph GR11 in the state shown in the first graph GR11-1 may be used in the process of generating the second graph shown in step S21.

[0042] Then, the generating device 100 generates a second graph from the first graph (step S21). The generating device 100 extracts a second number of output edges from among the output edges starting from each of the multiple nodes included in the first graph, and generates a second graph in which the multiple nodes are connected by edges obtained by inverting the directions of the extracted output edges (also referred to as "second inversion target edges"). For example, the generating device 100 extracts, as the second inversion target edges, the second number of output edges starting from the shortest length (distance) from among the output edges starting from each of the nodes included in the first graph.

[0043] The generating device 100 extracts the second inversion target edges using any method. For example, the generating device 100 may extract the second number of second inversion target edges using information on the length of each edge (the distance between connecting nodes) stored in the first graph data storage unit 123. For example, the generating device 100 may extract the second number of second inversion target edges by a search process such as that shown in FIG. 9. Furthermore, the edge length (the distance between connecting nodes) is merely one example of an extraction criterion, and the generating device 100 may extract the second number of second inversion target edges based on any criterion other than the edge length. For example, the generating device 100 may randomly extract the second number of output edges as the second inversion target edges from the output edges starting from each node.

[0044] In FIG. 1, the generating device 100 targets each of a plurality of nodes N1 to N6, etc. included in the first graph GR11, and extracts the shortest 100 output edges from among the output edges originating from each node as second inversion target edges. Then, the generating device 100 generates a second graph GR21 in which a plurality of nodes are connected by edges obtained by inverting the directions of the 100 second inversion target edges extracted from the first graph GR11 for each of the plurality of nodes N1 to N6, etc. Note that 100 edges is merely an example, and the second number is not limited to 100 and may be set to any value. For example, the second number may be a value different from the first number.

[0045] In this way, the generation device 100 generates a second graph having edges in the first graph whose directions are reversed by inverting the directions of output edges extracted as second inversion target edges from among the edges in the first graph. That is, the generation device 100 generates a second graph having second inversion target edges whose directions are reversed without changing the distances between nodes, etc. Note that as long as the generation device 100 can generate the second graph from the first graph, the generation device 100 may perform the processes in any order. For example, the generation device 100 generates a second graph having output edges extracted as second inversion target edges from among the edges in the first graph, and updates the second graph by inverting the directions of the edges in the generated second graph, thereby generating a second graph having edges in the first graph whose directions are reversed by the second inversion target edges from among the edges in the first graph.

[0046] In the example of FIG. 1, the generation device 100 generates a second graph GR21 as shown in spatial information VS1-5 from a first graph GR11. The generation device 100 generates the second graph GR21, which is a transposed graph of the first graph GR11. For example, the generation device 100 generates the second graph GR21 by swapping the start point and end point of an edge extracted as a second inversion target edge in the first graph GR11. For example, the generation device 100 inverts an edge E4a having node N1 as its start point and node N2 as its end point, thereby generating a second graph GR21 including an edge E4b having node N2 as its start point and node N1 as its end point, as shown in spatial information VS1-2. In this way, the generation device 100 generates a second graph GR21 based on the first graph GR11, in which the number of input edges to each of the multiple nodes N1 to N6, etc., is a second number.

[0047] As described above, the generation device 100 can generate a second graph based on the first graph, in which the number of input edges to each node is made uniform. Furthermore, since the generation device 100 makes the number of input edges to each node uniform at the stage of generating the first graph, an increase in the number of edges that can become output edges from each node can be suppressed at the stage of generating the second graph. In this way, the generation device 100 performs the process of reversing the edge direction twice to generate a graph, thereby suppressing the number of output edges and generating a graph with a constant number of input edges. Therefore, the generation device 100 can generate graph data that generates an appropriate graph.

[0048] 1 is merely an example, and the generating device 100 may generate the second graph by various processes. For example, the generating device 100 may add an edge to the second graph. For example, the generating device 100 may add an edge to the second graph by adding the edge to be added extracted in step S13 to the second graph. In this case, Ko is not limited to 10 and may be set to any value as long as it is less than the second number, for example.

[0049] Furthermore, the generating device 100 may extract edges to be added (also referred to as "second edges to be added") from the first graph and add the extracted second edges to the second graph, thereby adding edges to the second graph. In this case, for each of the multiple nodes N1 to N6, etc. included in the first graph GR11, the shortest 10 output edges from among the output edges starting from each node may be extracted as the second edges to be added. Note that 10 is merely an example, and the number of extracted second edges to be added is not limited to 10 and may be any value. For example, the number of extracted second edges to be added may be any value other than 10 (for example, the same as Ko) as long as it is less than the second number.

[0050] Conventionally, neighborhood graphs (including k-nearest neighbor graphs) in which each node in a graph structure is connected to neighboring nodes by directed edges have been used for neighborhood searches. In searches using such neighborhood graphs containing directed edges, a node with too few input edges reduces the possibility of reaching that node, leading to a decrease in search accuracy. In addition, a node that is too large, with too many output edges, increases the number of distance calculations and leads to an increase in search time.

[0051] In graphs such as the above-mentioned ANNG, there are nodes with an extremely large number of edges, and when these are transposed, there are nodes with many output edges. This can result in a decrease in the speed of search processing, etc., depending on the data set. Therefore, conventional methods have been proposed that reduce the number of edges of nodes with many output edges in a graph generated by a single transposition. Such conventional methods transpose a fixed number of output edges with the aim of maintaining a constant number of input edges, so the number of input edges is prone to fluctuation.

[0052] Therefore, the generation device 100 performs edge two transposition processing to transpose the output edges of the graph (first graph) generated by one transposition again by a fixed number, thereby reducing the number of output edges and maintaining a constant number of input edges. In other words, the generation device 100 prevents the generation of a second graph that includes a node with an extremely small number of input edges or a node with an extremely large number of output edges, and generates a second graph that reduces the number of output edges and has a uniform number of input edges. In this way, the generation device 100 generates a desired second graph and enables improved search performance using the second graph.

[0053] Furthermore, for example, if the graph data includes a node with a large number of output edges (e.g., 1,000, 10,000, etc.), the processing load of a search to trace that node increases. Also, for example, if the graph data includes a node with a small number of input edges (e.g., 0 or 1), the likelihood of that node being searched for decreases. In this way, the generating device 100 adjusts the edges for each node to prevent bias in the output edges and input edges, particularly to prevent an increase in the output edges of a specific node, thereby reducing the likelihood of including a node that increases the processing load or a node that is unlikely to be searched for. Therefore, the generating device 100 can generate graph data that generates an appropriate graph.

[0054] Furthermore, the generating device 100 may generate index data to be used during a search. For example, the generating device 100 generates a search index for searching a high-dimensional vector as index data. The high-dimensional vector here may be, for example, a vector with several hundred to several thousand dimensions, or a vector with even more dimensions.

[0055] For example, the generating device 100 may generate a search index related to a tree structure as index data. For example, the generating device 100 may generate a search index related to a kd tree (k-dimensional tree) as index data. For example, the generating device 100 may generate a search index related to a VP tree (Vantage-Point tree) as index data.

[0056] Furthermore, for example, the generating device 100 may generate index data having other tree structures. For example, the generating device 100 may generate various index data in which leaves of the tree-structured index data are connected to graph data. For example, the generating device 100 may generate various index data in which leaves of the tree-structured index data correspond to nodes in a graph such as a second graph. Furthermore, when performing a search using such index data, the generating device 100 may search for graph data from a leaf (node) reached by tracing the index data.

[0057] Note that the index data described above is an example, and the generating device 100 may generate index data with any data structure as long as it is possible to quickly identify a query in graph data. For example, the generating device 100 may generate index data by appropriately using various conventional technologies, such as technologies related to binary space partitioning, as long as it is possible to quickly identify centroid information corresponding to a query. For example, the generating device 100 may generate index data with any data structure as long as the index is compatible with searches of high-dimensional vectors. By using the index data described above and a graph such as the second graph, the generating device 100 can enable more efficient searches for a predetermined target.

[0058] [2. Configuration of the generation system] As shown in Fig. 2, the generation system 1 includes a terminal device 10, an information providing device 50, and a generation device 100. The terminal device 10, the information providing device 50, and the generation device 100 are connected to each other via a predetermined network N so as to be able to communicate with each other via wired or wireless communication. Fig. 2 is a diagram showing an example configuration of the generation system according to the embodiment. Note that the generation system 1 shown in Fig. 2 may include a plurality of terminal devices 10, a plurality of information providing devices 50, and a plurality of generation devices 100.

[0059] The terminal device 10 is an information processing device used by a user. The terminal device 10 accepts various operations by the user. In the following, the terminal device 10 may be referred to as a user. In other words, in the following, the user may also be read as the terminal device 10. The above-mentioned terminal device 10 may be realized, for example, by a smartphone, a tablet terminal, a notebook PC (Personal Computer), a desktop PC, a mobile phone, a PDA (Personal Digital Assistant), or the like.

[0060] The information providing device 50 is an information processing device that stores information for providing various information to users, etc. For example, the information providing device 50 stores object IDs based on character information, etc. collected from various external devices, such as web servers. For example, the information providing device 50 is an information processing device that provides an image search service to users, etc. For example, the information providing device 50 stores various pieces of information for providing the image search service. For example, the information providing device 50 provides the generation device 100 with vector information corresponding to an image that is a target of the image search service. Furthermore, the information providing device 50 transmits a query to the generation device 100, thereby receiving from the generation device 100 an object ID, etc., indicating the image corresponding to the query.

[0061] The generating device 100 is an information processing device (computer) that executes a generation process for generating a graph. The generating device 100 generates a graph by two-transposition of edges. For example, the generating device 100 targets each of a plurality of nodes included in a target graph, extracts a first number of output edges from among the output edges starting from each node, and generates a first graph in which a plurality of nodes are connected by edges with the extracted output edges reversed in direction. For example, the generating device 100 targets each of a plurality of nodes included in the first graph, extracts a second number of output edges from among the output edges starting from each node, and generates a second graph in which a plurality of nodes are connected by edges with the extracted output edges reversed in direction.

[0062] Note that, when the generating device 100 receives query information (hereinafter also simply referred to as "query") from the terminal device 10, it may search for an object (e.g., vector information) similar to the query and provide the search results to the terminal device 10. Furthermore, for example, the data provided by the generating device 100 to the terminal device 10 may be the data itself, such as image information, or may be information for referencing corresponding data, such as a URL (Uniform Resource Locator). Furthermore, the query and search target data may be any type of data, such as image, audio, or text data. In this embodiment, a case where the generating device 100 searches for an image will be described as an example.

[0063] 3. Configuration of the Generation Device Next, the configuration of the generating device 100 according to the embodiment will be described with reference to Fig. 3. Fig. 3 is a diagram showing an example of the configuration of the generating device 100 according to the embodiment. As shown in Fig. 3, the generating device 100 includes a communication unit 110, a storage unit 120, and a control unit 130. Note that the generating device 100 may also include an input unit (e.g., a keyboard, a mouse, etc.) that accepts various operations from an administrator of the generating device 100, and a display unit (e.g., a liquid crystal display, etc.) that displays various information.

[0064] (Communication unit 110) The communication unit 110 is realized by, for example, a network interface card (NIC) etc. The communication unit 110 is connected to a network (for example, network N in FIG. 2) by wire or wirelessly, and transmits and receives information to and from the terminal device 10 and the information providing device 50.

[0065] (Storage unit 120) The storage unit 120 is realized by, for example, a semiconductor memory element such as a random access memory (RAM) or a flash memory, or a storage device such as a hard disk or an optical disk. As shown in FIG. 3 , the storage unit 120 according to the embodiment includes an object information storage unit 121, a target graph data storage unit 122, a first graph data storage unit 123, a second graph data storage unit 124, and a processing information storage unit 125.

[0066] (Object information storage unit 121) The object information storage unit 121 according to the embodiment stores various information related to objects. For example, the object information storage unit 121 stores object IDs and vector data. FIG. 4 is a diagram illustrating an example of the object information storage unit according to the embodiment. The object information storage unit 121 shown in FIG. 4 includes items such as "object ID" and "vector information."

[0067] "Object ID" indicates identification information for identifying an object. "Vector information" indicates vector information corresponding to an object identified by the object ID. That is, in the example of FIG. 4, vector data (vector information) corresponding to an object is registered in association with an object ID that identifies the object.

[0068] For example, in the example of FIG. 4, an object (target) identified by the ID "OB1" is associated with multidimensional vector information of "10, 24, 51, 2 . . . ".

[0069] The object information storage unit 121 is not limited to the above, and may store various types of information depending on the purpose.

[0070] (Target graph data storage unit 122) The target graph data storage unit 122 according to the embodiment stores various information related to graph data. For example, the target graph data storage unit 122 stores target graph data that is the target of edge 2 permutation processing. For example, the target graph data storage unit 122 stores existing neighborhood graph data.

[0071] 5 is a diagram illustrating an example of a target graph data storage unit according to an embodiment. The target graph data storage unit 122 illustrated in FIG. 5 has items such as "node ID," "object ID," and "directed edge information." The "directed edge information" also includes information such as "edge ID" and "reference destination."

[0072] "Node ID" indicates identification information for identifying each node (object) in the graph data, and "object ID" indicates identification information for identifying an object.

[0073] Furthermore, "directed edge information" indicates information about edges connected to corresponding nodes. In the example of FIG. 5, "directed edge information" indicates information about output edges output from corresponding nodes. Furthermore, "edge ID" indicates identification information for identifying edges connecting nodes. Furthermore, "reference destination" indicates information indicating reference destinations (nodes) connected by edges. That is, in the example of FIG. 5, for a node ID that identifies a node, information identifying an object (target) corresponding to that node and reference destinations (nodes) to which a directed edge (output edge) from that node is connected are associated and registered.

[0074] For example, in the example of Figure 5, it is shown that a node (node ​​N1) identified by node ID "N1" corresponds to an object (target) identified by object ID "OB1". Also, it is shown that an edge (edge ​​E1) identified by edge ID "E1" is connected from node N1 to a node (node ​​N2) identified by node ID "N2". That is, in the example of Figure 5, it is shown that node N2 can be traced from node N1 in the target graph data via edge E1.

[0075] The object graph data storage unit 122 may store various information depending on the purpose, without being limited to the above. For example, the object graph data storage unit 122 may store the length of the edge connecting each node (vector). In other words, the object graph data storage unit 122 may store information indicating the distance between each node (vector).

[0076] (First graph data storage unit 123) The first graph data storage unit 123 according to the embodiment stores various information related to the first graph data. For example, the first graph data storage unit 123 stores first graph data (e.g., first graph GR11) that is graph data after an edge transposition process has been performed once on the target graph data. For example, the first graph data storage unit 123 stores graph data after an edge transposition process has been performed once on the neighborhood graph data.

[0077] 6 is a diagram illustrating an example of a first graph data storage unit according to an embodiment. The first graph data storage unit 123 illustrated in FIG. 6 has items such as a "node ID," an "object ID," and "directed edge information." The "directed edge information" includes information such as an "edge ID" and a "reference destination."

[0078] Note that the items “Node ID,” “Object ID,” and “Directed Edge Information” in the first graph data storage unit 123 are similar to the items “Node ID,” “Object ID,” and “Directed Edge Information” in the target graph data storage unit 122, and therefore detailed explanations are omitted.

[0079] For example, in the example of FIG. 6, it is shown that the node identified by node ID "N1" corresponds to the object (target) identified by object ID "OB1." It is also shown that an edge (edge ​​E4a) identified by edge ID "E4a" is connected from node N1 to a node (node ​​N2) identified by node ID "N2." That is, the example of FIG. 6 shows that node N2 can be traced from node N1 in the first graph data via edge E4a. Note that, as described above, edge ID "E4a" is equivalent to edge ID "E1," and therefore edge ID "E1" may be used in place of edge ID "E4a" in the first graph data as in the target graph data.

[0080] Note that the first graph data storage unit 123 is not limited to the above and may store various types of information depending on the purpose. For example, the first graph data storage unit 123 may store the lengths of edges connecting nodes (vectors). In other words, the first graph data storage unit 123 may store information indicating the distances between nodes (vectors).

[0081] (Second graph data storage unit 124) The second graph data storage unit 124 according to the embodiment stores various information related to the second graph data. For example, the second graph data storage unit 124 stores second graph data (e.g., second graph GR21) that is graph data obtained after an edge transposition process is performed once on the first graph data. For example, the second graph data storage unit 124 stores graph data obtained after an edge transposition process is performed twice on the neighborhood graph data.

[0082] 7 is a diagram illustrating an example of a second graph data storage unit according to an embodiment. In the example of FIG. 7, the second graph data storage unit 124 has items such as "node ID," "object ID," and "directed edge information." The "directed edge information" also includes information such as "edge ID" and "reference destination."

[0083] Note that the items “Node ID,” “Object ID,” and “Directed Edge Information” in the second graph data storage unit 124 are similar to the items “Node ID,” “Object ID,” and “Directed Edge Information” in the target graph data storage unit 122 and the first graph data storage unit 123, and therefore detailed explanations will be omitted.

[0084] For example, the example in FIG. 7 indicates that a node identified by node ID "N1" corresponds to an object (target) identified by object ID "OB1." Also, it indicates that an edge (edge ​​E1b) identified by edge ID "E1b" is connected from node N1 to a node (node ​​N2) identified by node ID "N2." That is, the example in FIG. 7 indicates that node N2 can be traced from node N1 in the second graph data via edge E1b. Note that, as described above, edge ID "E1b" is equivalent to edge ID "E1," and therefore edge ID "E1" may be used in place of edge ID "E1b" in the second graph data as in the target graph data.

[0085] The second graph data storage unit 124 is not limited to the above, and may store various types of information depending on the purpose. For example, the second graph data storage unit 124 may store the lengths of edges connecting each node (vector). That is, the second graph data storage unit 124 may store information indicating the distance between each node (vector). For example, the second graph data storage unit 124 may store information indicating the number of input edges to each node.

[0086] Note that graph data such as the target graph data, first graph data, and second graph data described above may include a program module that receives a query as input, searches for nodes by tracing edges in the graph data, and extracts and outputs nodes similar to the query. In this case, for example, the second graph data may be expected to be used as a program module that performs search processing using the second graph. For example, the second graph data GR21 may be a program that, when vector data is input as a query, extracts and outputs nodes from the second graph that correspond to vector data similar to the vector data. For example, the second graph data GR21 may be data used as a program module that searches for images similar to a query image. For example, the second graph data GR21 causes a computer to function to extract and output nodes similar to the query in the second graph based on the input query.

[0087] (Processing information storage unit 125) The processing information storage unit 125 according to the embodiment stores various types of information used in graph generation processing. The processing information storage unit 125 stores various types of information used in each process from generating the target graph to generating the second graph.

[0088] The processing information storage unit 125 stores information indicating criteria for extraction from a graph. The processing information storage unit 125 stores extraction conditions indicating that edges are to be extracted from the graph in order of shortest length (distance). For example, the processing information storage unit 125 stores a designated value (such as a threshold) for the number of edges to be extracted from the graph.

[0089] For example, the processing information storage unit 125 stores a first specified value (first threshold) of the number of output edges (first number) to be extracted from the target graph to add to the first graph with their directions reversed. For example, the processing information storage unit 125 stores a second specified value (second threshold) of the number of output edges (second number) to be extracted from the first graph to add to the second graph with their directions reversed.

[0090] For example, the processing information storage unit 125 stores a first specified value (third threshold) for the number of output edges (e.g., a third number, such as Ko) to be extracted from the target graph to be added to the first graph as is. For example, the processing information storage unit 125 stores a first specified value (fourth threshold) for the number of output edges (e.g., a fourth number, such as Ko) to be extracted from the target graph to be added to the second graph as is. For example, the processing information storage unit 125 stores a first specified value (fifth threshold) for the number of output edges (e.g., a fifth number, such as Ko) to be extracted from the first graph to be added to the second graph as is.

[0091] The processing information storage unit 125 is not limited to the above, and may store various types of information depending on the purpose.

[0092] (control unit 130) 3, the control unit 130 is a controller, and is realized by, for example, a CPU (Central Processing Unit) or an MPU (Micro Processing Unit) executing various programs (corresponding to examples of generation programs) stored in a storage device inside the generating device 100 using RAM as a work area. The control unit 130 is also a controller, and is realized by, for example, an integrated circuit such as an ASIC (Application Specific Integrated Circuit) or an FPGA (Field Programmable Gate Array).

[0093] 3, control unit 130 has acquisition unit 131, generation unit 132 functioning as a first generation unit and a second generation unit, search unit 133, and provision unit 134, and realizes or executes the functions and actions of information processing described below. Note that the internal configuration of control unit 130 is not limited to the configuration shown in FIG. 3, and may have any other configuration as long as it performs the information processing described below. For example, generation unit 132 may be configured separately as first generation unit 132a that executes processing to generate a first graph and second generation unit 132b that executes processing to generate a second graph.

[0094] (Acquisition part 131) The acquisition unit 131 acquires various types of information. For example, the acquisition unit 131 acquires various types of information from the storage unit 120. For example, the acquisition unit 131 acquires various types of information from the object information storage unit 121, the target graph data storage unit 122, the first graph data storage unit 123, the processing information storage unit 125, the second graph data storage unit 124, etc. The acquisition unit 131 also acquires various types of information from an external information processing device.

[0095] The acquisition unit 131 acquires a target graph, which is a graph in which a plurality of nodes corresponding to a plurality of objects to be searched for data are connected by edges. The acquisition unit 131 acquires the target graph, which is a neighborhood graph.

[0096] 1, the acquisition unit 131 acquires a target graph GR 10. For example, the acquisition unit 131 may receive target graph data such as existing neighborhood graph data from an external device such as the information providing device 50.

[0097] For example, the acquisition unit 131 acquires information related to a search query. For example, the acquisition unit 131 acquires a search query related to an image search. For example, the acquisition unit 131 receives a query from the terminal device 10 used by the user. For example, the acquisition unit 131 may acquire graph designation information indicating a designation of a graph by the user. For example, the acquisition unit 131 may acquire graph designation information indicating a designation of which graph among the target graph, the first graph, and the second graph is to be used for the search. In this case, the acquisition unit 131 may receive graph designation information indicating the user's designation from the terminal device 10 by the user.

[0098] (Generation unit 132) The generation unit 132 executes a generation process to generate various pieces of information. The generation unit 132 generates a graph by two-permutation of edges. The generation unit 132 selects various pieces of information. The generation unit 132 extracts various pieces of information.

[0099] For example, the generation unit 132 generates various information (data) from information (data) stored in the storage unit 120. For example, the generation unit 132 generates various information from the object information storage unit 121, the target graph data storage unit 122, the first graph data storage unit 123, and the processing information storage unit 125. For example, the generation unit 132 generates first graph data from the target graph data. For example, the generation unit 132 generates second graph data from the first graph data. For example, the generation unit 132 generates second graph data from the target graph data and the first graph data.

[0100] Generation unit 132 targets each of a plurality of nodes included in the target graph, extracts a first number of output edges from among the output edges starting from each node, and generates a first graph in which the plurality of nodes are connected by edges with the directions of the extracted output edges reversed. Generation unit 132 targets each of a plurality of nodes included in the target graph, extracts a fourth number of output edges from among the output edges starting from each node, and adds the extracted output edges to the first graph.

[0101] The generation unit 132 extracts a fourth number of output edges, which is less than the first number, from among the output edges starting from each node included in the target graph. The generation unit 132 extracts the first number of output edges, starting from the shortest, from among the output edges starting from each node included in the target graph.

[0102] The generation unit 132 extracts a first number of output edges from among the output edges starting from each of the multiple nodes included in the neighborhood graph, and generates a first graph in which the multiple nodes are connected by edges that have the directions of the extracted output edges reversed.

[0103] The generation unit 132 targets each of the multiple nodes included in the first graph, extracts a second number of output edges from the output edges starting from each node, and generates a second graph in which the multiple nodes are connected by edges that have the directions of the extracted output edges reversed.

[0104] The generation unit 132 extracts a third number of output edges from among the output edges starting from each node included in the target graph for each of the multiple nodes included in the target graph, and adds the extracted output edges to the second graph. The generation unit 132 extracts a third number of output edges, which is less than the second number, from among the output edges starting from each node included in the target graph.

[0105] The generation unit 132 targets each of the multiple nodes included in the first graph, extracts a fifth number of output edges from among the output edges starting from each node, and adds the extracted output edges to the second graph. The generation unit 132 extracts a fifth number of output edges, which is less than the second number, from among the output edges starting from each node included in the first graph. The generation unit 132 extracts the second number of output edges, starting from the shortest, from among the output edges starting from each node included in the first graph.

[0106] (Search section 133) The search unit 133 searches for various types of information. The search unit 133 executes a search process using a graph. The search unit 133 functions as an extraction unit that extracts various types of information. The search unit 133 extracts various types of information. For example, the search unit 133 provides a search service related to objects. For example, the search unit 133 searches for objects by searching graph data.

[0107] The search unit 133 executes a search process to search a graph in response to an instruction from the generation unit 132. For example, when information indicating an object (node) to be processed is given to the search unit 133, the search unit 133 extracts an object (node) similar to the target object (node) by searching the graph based on the processing procedure shown in FIG. 9. The search unit 133 sets one object (node) out of multiple objects (nodes) as a target object (target node) and extracts neighboring objects (neighboring nodes) of the target object (target node) by a search process to search the graph. For example, the search unit 133 extracts the number of neighboring objects (neighboring nodes) specified by the generation unit 132.

[0108] For example, when a query is acquired by the acquisition unit 131, the search unit 133 searches the graph data to search for an object similar to the query. For example, the search unit 133 extracts an object similar to the query by searching the graph data. For example, the search unit 133 extracts an object similar to the query by searching the graph data based on the processing procedure shown in FIG. 9.

[0109] For example, when the user specifies which of the target graph, the first graph, and the second graph to use for the search, the search unit 133 performs a search process using the specified graph and extracts objects similar to the query.

[0110] (Provider 134) The providing unit 134 provides various types of information. For example, the providing unit 134 provides various types of information to the terminal device 10 or the information providing device 50. For example, the providing unit 134 provides an object ID corresponding to a query as a search result. For example, the providing unit 134 provides the object ID searched for by the searching unit 133 to the information providing device 50 or the terminal device 10. For example, the providing unit 134 provides the object ID extracted by the searching unit 133 through a search to the information providing device 50 or the terminal device 10. The providing unit 134 provides the object ID extracted by the searching unit 133 to the information providing device 50 or the terminal device 10 as information indicating a vector corresponding to the query.

[0111] For example, when the user specifies which of the target graph, the first graph, and the second graph to use for the search, the providing unit 134 transmits, to the terminal device 10, an object similar to the query, which is a search result performed by the search unit 133 using the specified graph. In this case, the providing unit 134 may transmit information indicating the graph specified by the user together with the search result to the terminal device 10.

[0112] Furthermore, the providing unit 134 may provide the second graph data generated by the generating unit 132 to an external information processing device. For example, the providing unit 134 may transmit the second graph GR21 generated by the generating unit 132 to the information providing device 50.

[0113] [4. Generation process flow] Next, the procedure of the generation process by the generation system 1 according to the embodiment will be described with reference to Fig. 8. Fig. 8 is a flowchart showing an example of the generation process according to the embodiment.

[0114] 8, the generating device 100 acquires a target graph, which is a graph in which a plurality of nodes corresponding to a plurality of objects to be subjected to data search are connected by edges (step S101). For example, the generating device 100 acquires target graph data from the target graph data storage unit 122. In the example of FIG. 1, the generating device 100 acquires a target graph GR10.

[0115] The generating device 100 targets each of a plurality of nodes included in the target graph and extracts a first number of output edges from among the output edges starting from each node (step S102).The generating device 100 then generates a first graph in which a plurality of nodes are connected by edges whose directions are reversed from the extracted output edges (step S103).In the example of FIG. 1, the generating device 100 generates a first graph GR11 from the target graph GR10.

[0116] The generating device 100 extracts a second number of output edges from among the output edges starting from each of the multiple nodes included in the first graph (step S104).The generating device 100 then generates a second graph in which the multiple nodes are connected by edges whose directions are the inverse of the extracted output edges (step S105).In the example of FIG. 1, the generating device 100 generates the second graph GR21 from the first graph GR11.

[0117] [5. Search Examples] Here, an example of a search using the graph data described above will be shown. Note that a search using graph data is not limited to the following and may be performed by various procedures, but FIG. 9 will be used as an example. FIG. 9 is a flowchart showing an example of a search process using graph data. The search process described below is performed by the search unit 133 of the generating device 100. Also, the term "object" used below may be read as "node." Note that, although the following description will be given assuming that the generating device 100 (search unit 133) performs the search process, the search process may also be performed by another device. In this case, the generating device 100 may not have the search unit 133, but may request the search process by transmitting a query to the other device, and receive the results of the search process from the other device.

[0118] Here, the neighborhood object set N(G, y) is a set of neighborhood objects associated with the node y by edges attached thereto. "G" may be predetermined graph data (e.g., the second graph GR21, etc.). For example, the generating device 100 executes a k-nearest neighbor search process.

[0119] For example, the generating device 100 sets the radius r of the hypersphere to ∞ (infinity) (step S300) and extracts a subset S from an existing object set (step S301). For example, the generating device 100 may extract an object (node) selected as a root node as the subset S. Also, for example, the hypersphere is a virtual sphere indicating the search range. Note that the objects included in the object set S extracted in step S301 are also included in the initial set of object set R of the search results.

[0120] Next, when the search query object is y, the generating device 100 extracts the object having the shortest distance from the search query object y from among the objects included in the object set S, and sets the extracted object as object s (step S302). For example, if the object (node) selected as the root node is the only element of S, the generating device 100 extracts the root node as object s as a result. Next, the generating device 100 excludes the object s from the object set S (step S303).

[0121] Next, the generating device 100 determines whether the distance d(s, y) between object s and object y exceeds r(1+ε) (step S304). Here, ε is an extension factor, and r(1+ε) is a value indicating the radius of the search range (only nodes within this range are searched for. Precision can be improved by making it larger than the search range). If the distance d(s, y) between object s and object y exceeds r(1+ε) (step S304: Yes), the generating device 100 outputs object set R as a neighborhood object set of object y (step S305) and ends the process.

[0122] If the distance d(s, y) between object s and search query object y does not exceed r(1+ε) (step S304: No), generating device 100 selects one object that is not included in object set C from among the objects that are elements of neighborhood object set N(G, s) of object s, and stores the selected object u in object set C (step S306). Object set C is provided for convenience to avoid duplicate searches, and is set to an empty set at the start of processing.

[0123] Next, the generating device 100 determines whether the distance d(u, y) between the objects u and y is r(1+ε) or less (step S307). If the distance d(u, y) between the objects u and y is r(1+ε) or less (step S307: Yes), the generating device 100 adds the object u to the object set S (step S308). If the distance d(u, y) between the objects u and y is not r(1+ε) or less (step S307: No), the generating device 100 performs the determination (processing) of step S309.

[0124] Next, the generating device 100 determines whether the distance d(u, y) between the objects u and y is less than or equal to r (step S309). If the distance d(u, y) between the objects u and y exceeds r, the generating device 100 performs the determination (processing) of step S315. If the distance d(u, y) between the objects u and y is not less than or equal to r (step S309: No), the generating device 100 performs the determination (processing) of step S315.

[0125] If the distance d(u, y) between object u and object y is less than or equal to r (step S309: Yes), the generating device 100 adds object u to object set R (step S310). Then, the generating device 100 determines whether the number of objects included in object set R exceeds ks (step S311). The predetermined number ks is an arbitrarily determined natural number. For example, ks may be 2. If the number of objects included in object set R does not exceed ks (step S311: No), the generating device 100 performs the determination (processing) of step S313.

[0126] If the number of objects included in object set R exceeds ks (step S311: Yes), generating device 100 excludes from object set R the object that is the longest (farthest) from object y among the objects included in object set R (step S312).

[0127] Next, the generating device 100 determines whether the number of objects included in the object set R matches ks (step S313). If the number of objects included in the object set R does not match ks (step S313: No), the generating device 100 performs the determination (processing) of step S315. If the number of objects included in the object set R matches ks (step S313: Yes), the generating device 100 sets the distance between the object y and the object that is the farthest (farthest) from object y among the objects included in the object set R as a new r (step S314).

[0128] Then, the generating device 100 determines whether all objects that are elements of the neighborhood object set N(G, s) of object s have been selected and stored in the object set C (step S315). If all objects that are elements of the neighborhood object set N(G, s) of object s have not been selected and stored in the object set C (step S315: No), the generating device 100 returns to step S306 and repeats the process.

[0129] When all objects that are elements of the neighborhood object set N(G, s) of object s have been selected and stored in the object set C (step S315: Yes), the generating device 100 determines whether the object set S is an empty set (step S316). If the object set S is not an empty set (step S316: No), the generating device 100 returns to step S302 and repeats the process. On the other hand, if the object set S is an empty set (step S316: Yes), the generating device 100 outputs the object set R and ends the process (step S317). For example, the generating device 100 may provide the objects (nodes) included in the object set R to the terminal device 10 that requested the search as search results corresponding to the search query (input object y).

[0130] [6. Effects] As described above, the generating device 100 according to the embodiment includes an acquisition unit (referred to as "acquisition unit 131" in the embodiment; the same applies hereinafter), a first generation unit (referred to as "generation unit 132" in the embodiment; the same applies hereinafter), and a second generation unit (referred to as "generation unit 132" in the embodiment; the same applies hereinafter). The acquisition unit acquires a target graph (referred to as "target graph GR10" in the embodiment; the same applies hereinafter), which is a graph in which a plurality of nodes corresponding to a plurality of objects to be subjected to data search are connected by edges. The first generation unit targets each of a plurality of nodes included in the target graph, extracts a first number of output edges from among the output edges starting from each node, and generates a first graph (referred to as "first graph GR11" in the embodiment; the same applies hereinafter) in which a plurality of nodes are connected by edges whose directions are reversed from those of the extracted output edges. The second generation unit targets each of the multiple nodes included in the first graph, extracts a second number of output edges from the output edges starting from each node, and generates a second graph (in the embodiment, "second graph GR21") in which the multiple nodes are connected by edges that have the direction of the extracted output edges reversed.

[0131] In this way, the generation device 100 according to the embodiment generates a graph by performing the process of reversing the edge direction twice, thereby reducing the number of output edges and generating a graph with a constant number of input edges. Therefore, the generation device 100 can generate graph data that generates an appropriate graph.

[0132] Furthermore, in the generation device 100 according to the embodiment, the second generation unit targets each of the multiple nodes included in the target graph, extracts a third number of output edges from the output edges starting from each node, and adds the extracted output edges to the second graph.

[0133] In this way, the generating device 100 according to the embodiment can generate a second graph that effectively utilizes the edge information of the target graph as it is by adding the output edges included in the target graph to the second graph as they are. Therefore, the generating device 100 can generate graph data that generates an appropriate graph.

[0134] Furthermore, in the generating device 100 according to the embodiment, the second generating unit extracts a third number of output edges, which is less than the second number, from among the output edges starting from each node included in the target graph.

[0135] In this way, the generation device 100 according to the embodiment reduces the number of output edges added directly from the target graph to the second graph compared to the number of edges added from the first graph with their directions reversed to the second graph, thereby suppressing an increase in the number of output edges and generating a second graph that effectively utilizes edge information from the target graph as is. Thus, the generation device 100 can generate graph data for generating an appropriate graph.

[0136] Furthermore, in the generating device 100 according to the embodiment, the first generating unit targets each of the multiple nodes included in the target graph, extracts a fourth number of output edges from the output edges starting from each node, and adds the extracted output edges to the first graph.

[0137] In this way, the generation device 100 according to the embodiment can generate a first graph that effectively utilizes the edge information of the target graph as it is by adding the output edges included in the target graph to the first graph as they are. Therefore, the generation device 100 can generate graph data that generates an appropriate graph.

[0138] Furthermore, in the generating device 100 according to the embodiment, the first generating unit extracts a fourth number of output edges, which is less than the first number, from among the output edges starting from each node included in the target graph.

[0139] In this way, the generation device 100 according to the embodiment reduces the number of output edges added directly from the target graph to the first graph compared to the number of edges added from the target graph with their orientations reversed, thereby enabling the generation of a first graph that effectively utilizes edge information from the target graph as is while suppressing an increase in the number of output edges. Thus, the generation device 100 can generate graph data for generating an appropriate graph.

[0140] In addition, in the generation device 100 according to the embodiment, the second generation unit targets each of the multiple nodes included in the first graph, extracts a fifth number of output edges from the output edges starting from each node, and adds the extracted output edges to the second graph.

[0141] In this way, the generation device 100 according to the embodiment can generate a second graph that effectively utilizes edge information of the first graph as it is by adding output edges included in the first graph to the second graph as they are. Therefore, the generation device 100 can generate graph data that generates an appropriate graph.

[0142] Furthermore, in the generation device 100 according to the embodiment, the second generation unit extracts a fifth number of output edges, which is less than the second number, from among the output edges starting from each node included in the first graph.

[0143] In this way, the generation device 100 according to the embodiment reduces the number of output edges added directly from the first graph to the second graph compared to the number of edges added from the first graph with their orientations reversed, thereby enabling generation of a second graph that effectively utilizes edge information from the first graph as is while suppressing an increase in the number of output edges. Thus, the generation device 100 can generate graph data for generating an appropriate graph.

[0144] Furthermore, in the generating device 100 according to the embodiment, the first generating unit extracts a first number of output edges in order of length from among the output edges starting from each node included in the target graph.

[0145] In this way, the generation device 100 according to the embodiment can generate a first graph that prioritizes the use of information about short edges among the edges of the target graph by extracting the shortest output edges among the output edges starting from each node included in the target graph. Therefore, the generation device 100 can generate graph data that generates an appropriate graph.

[0146] Furthermore, in the generation device 100 according to the embodiment, the second generation unit extracts a second number of output edges in order of length from among the output edges starting from each node included in the first graph.

[0147] In this way, the generation device 100 according to the embodiment can generate a second graph that prioritizes information about short edges among the edges of the first graph by extracting the shortest output edges from among the output edges starting from each node included in the first graph. Therefore, the generation device 100 can generate graph data that generates an appropriate graph.

[0148] In the generation device 100 according to the embodiment, the acquisition unit acquires a target graph, which is a neighborhood graph. The first generation unit targets each of a plurality of nodes included in the neighborhood graph, extracts a first number of output edges from among the output edges starting from each node, and generates a first graph in which the plurality of nodes are connected by edges whose directions are reversed from the extracted output edges.

[0149] In this way, the generation device 100 according to the embodiment generates a second graph using an existing neighborhood graph as a target, thereby generating a second graph in which the edges of the existing neighborhood graph are adjusted. Therefore, the generation device 100 can generate graph data for generating an appropriate graph.

[0150] [7. Hardware Configuration] The generating device 100 according to the embodiment described above is realized by a computer 1000 having a configuration as shown in Fig. 10, for example. Fig. 10 is a hardware configuration diagram showing an example of a computer that realizes the functions of the generating device. The computer 1000 has a CPU 1100, a RAM 1200, a ROM (Read Only Memory) 1300, an HDD (Hard Disk Drive) 1400, a communication interface (I / F) 1500, an input / output interface (I / F) 1600, and a media interface (I / F) 1700.

[0151] The CPU 1100 operates and controls each unit based on programs stored in the ROM 1300 or the HDD 1400. The ROM 1300 stores a boot program executed by the CPU 1100 when the computer 1000 starts up, programs that depend on the hardware of the computer 1000, and the like.

[0152] The HDD 1400 stores programs executed by the CPU 1100, data used by such programs, etc. The communication interface 1500 receives data from other devices via the network N and sends it to the CPU 1100, and transmits data generated by the CPU 1100 to other devices via the network N.

[0153] The CPU 1100 controls output devices such as a display and a printer, and input devices such as a keyboard and a mouse, via the input / output interface 1600. The CPU 1100 acquires data from the input devices via the input / output interface 1600. The CPU 1100 also outputs generated data to the output devices via the input / output interface 1600.

[0154] Media interface 1700 reads a program or data stored in recording medium 1800 and provides it to CPU 1100 via RAM 1200. CPU 1100 loads the program or data from recording medium 1800 onto RAM 1200 via media interface 1700 and executes the loaded program. Recording medium 1800 is, for example, an optical recording medium such as a DVD (Digital Versatile Disc) or a PD (Phase Change Rewritable Disc), a magneto-optical recording medium such as an MO (Magneto-Optical disk), a tape medium, a magnetic recording medium, or a semiconductor memory.

[0155] For example, when the computer 1000 functions as the generating device 100 according to the embodiment, the CPU 1100 of the computer 1000 executes programs loaded onto the RAM 1200, thereby realizing the functions of the control unit 130. The CPU 1100 of the computer 1000 reads and executes these programs from the recording medium 1800, but as another example, the CPU 1100 may obtain these programs from another device via the network N.

[0156] Although some of the embodiments of the present application have been described in detail above with reference to the drawings, these are merely examples, and the present invention can be implemented in other forms that incorporate various modifications and improvements based on the knowledge of those skilled in the art, including the aspects described in the Disclosure of the Invention.

[0157] [8. Other] Furthermore, among the processes described in the above embodiments, all or part of the processes described as being performed automatically can be performed manually, or all or part of the processes described as being performed manually can be performed automatically using known methods. In addition, the information including the processing procedures, specific names, various data, and parameters shown in the above documents and drawings can be changed as desired unless otherwise specified. For example, the various information shown in each drawing is not limited to the information shown in the drawings.

[0158] Furthermore, the components of each device shown in the figure are conceptual functional components and do not necessarily have to be physically configured as shown in the figure. In other words, the specific form of distribution and integration of each device is not limited to that shown in the figure, and all or part of them can be functionally or physically distributed and integrated in any unit depending on various loads, usage conditions, etc.

[0159] Furthermore, the processes described in the above-described embodiments can be combined as appropriate within the scope of not causing any contradiction in the process contents.

[0160] Furthermore, the above-mentioned "section, module, unit" can be read as "means" or "circuit," etc. For example, an acquisition unit can be read as an acquisition means or an acquisition circuit. [Explanation of symbols]

[0161] 1. Generator System 100 generator 121 Object information storage unit 122 Target graph data storage unit 123 First graph data storage unit 124 Second graph data storage unit 125 Processing information storage unit 130 Control Unit 131 Acquisition Department 132 Generation unit (first generation unit, second generation unit) 133 Search Department 134 Provision Department 10 Terminal Equipment 50 Information provision device N Network

Claims

1. an acquisition unit that acquires a target graph, which is a graph in which a plurality of nodes corresponding to a plurality of objects that are targets of data search are connected by edges; a first generation unit that extracts a first number of output edges from among output edges starting from each of the plurality of nodes included in the target graph, and generates a first graph in which the plurality of nodes are connected by edges obtained by inverting the directions of the extracted output edges; a second generation unit that extracts a second number of output edges from among output edges starting from each of the plurality of nodes included in the first graph, and generates a second graph in which the plurality of nodes are connected by edges obtained by inverting the directions of the extracted output edges; A generating device comprising:

2. The second generation unit For each of the plurality of nodes included in the target graph, a third number of output edges are extracted from among output edges starting from each node, and the extracted output edges are added to the second graph. The generating device according to claim 1 .

3. The second generation unit extracting the third number of output edges, which is less than the second number, from among the output edges starting from each of the nodes included in the target graph; The generating device according to claim 2 .

4. The first generation unit For each of the plurality of nodes included in the target graph, a fourth number of output edges are extracted from among the output edges starting from each node, and the extracted output edges are added to the first graph. The generating device according to claim 1 .

5. The first generation unit extracting a fourth number of output edges, which is less than the first number, from among the output edges starting from each of the nodes included in the target graph; The generating device according to claim 4 .

6. The second generation unit For each of the plurality of nodes included in the first graph, extract a fifth number of output edges from among output edges starting from each node, and add the extracted output edges to the second graph. The generating device according to claim 1 .

7. The second generation unit extracting the fifth number of output edges, which is less than the second number, from among the output edges starting from each of the nodes included in the first graph; The generating device according to claim 6 .

8. The first generation unit The first number of output edges are extracted in order from the shortest of the output edges starting from each of the nodes included in the target graph. The generating device according to claim 1 .

9. The second generation unit The second number of output edges are extracted in order from the shortest of the output edges starting from the nodes included in the first graph. The generating device according to claim 1 .

10. The acquisition unit Obtain the target graph, which is a neighborhood graph; The first generation unit For each of the plurality of nodes included in the neighborhood graph, a first number of output edges are extracted from among output edges starting from each node, and the first graph is generated in which the plurality of nodes are connected by edges whose directions are reversed from the extracted output edges. The generating device according to claim 1 .

11. 1. A computer-implemented generation method comprising: an acquisition step of acquiring a target graph, which is a graph in which a plurality of nodes corresponding to a plurality of objects to be subjected to data search are connected by edges; a first generation step of extracting a first number of output edges from among output edges starting from each of the plurality of nodes included in the target graph, and generating a first graph in which the plurality of nodes are connected by edges whose directions are reversed from the extracted output edges; a second generation step of extracting a second number of output edges from among output edges starting from each of the plurality of nodes included in the first graph, and generating a second graph in which the plurality of nodes are connected by edges whose directions are reversed from the extracted output edges; A generating method comprising:

12. an acquisition step of acquiring a target graph, which is a graph in which a plurality of nodes corresponding to a plurality of objects to be subjected to data search are connected by edges; a first generation step of extracting a first number of output edges from among output edges starting from each of the plurality of nodes included in the target graph, and generating a first graph in which the plurality of nodes are connected by edges whose directions are reversed from the extracted output edges; a second generation step of extracting a second number of output edges from among output edges starting from each of the plurality of nodes included in the first graph, and generating a second graph in which the plurality of nodes are connected by edges whose directions are reversed from the extracted output edges; A generating program that causes a computer to execute the above.

Citation Information

Patent Citations

  • Conductor for connection of semiconductor device

    JP1987093335A

  • Generation device, generation method, and generation program

    JP6959164B2