Information processor, information processing method, and information processing program

JP2025083191APending Publication Date: 2025-05-30LY CORP
View PDF 3 Cites 0 Cited by

Patent Information

Application Number
JP2023196951
Authority / Receiving Office
JP · JP
Patent Type
Applications
Current Assignee / Owner
Filing Date
2023-11-20
Publication Date
2025-05-30

AI Technical Summary

Benefits of technology

【0007】 実施形態の一態様によれば、制約に応じた情報を適切に生成することができるという効果を奏する。

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 2025083191000001_ABST
    Figure 2025083191000001_ABST
Patent Text Reader

Abstract

To appropriately generate information according to a constraint.SOLUTION: An information processor includes an acquisition section and a generation section. The acquisition section acquires object information indicating a plurality of objects to be retrieved and constraint information indicating a constraint when generating a graph in which a plurality of nodes corresponding to each of the plurality of objects are connected by edges. The generation section generates a first graph in which the plurality of nodes corresponding to each of the plurality of objects are connected by edges, and second information having a data amount smaller than that of the first graph on the basis of the constraint indicated by the constraint information.SELECTED DRAWING: Figure 3
Need to check novelty before this filing date? Find Prior Art

Description

[Technical Field]

[0001] The present invention relates to an information processing device, an information processing method, and an information processing program. [Background technology]

[0002] Conventionally, various techniques for searching (retrieving) information have been proposed. For example, in order to perform a search for a specific object, a technique has been proposed for generating graph data in which nodes corresponding to the search object are connected by edges. Such a technique is also used for image retrieval, for example. [Prior art documents] [Patent documents]

[0003] [Patent Document 1] Japanese Patent Publication No. 2023-027810 [Patent Document 2] Patent No. 7330756 [Patent Document 3] Patent No. 7080803 Summary of the Invention [Problem to be solved by the invention]

[0004] However, there is room for improvement in the above-described conventional techniques. For example, the above-described conventional techniques do not particularly consider constraints when generating a graph, and if there are constraints such as memory capacity when generating a graph, it may be difficult to appropriately generate information such as a graph. Therefore, there is room for improvement in the conventional techniques in terms of generating information according to constraints when generating a graph, and it is desirable to appropriately generate information according to constraints.

[0005] The present application has been made in view of the above, and aims to provide an information processing device, an information processing method, and an information processing program that appropriately generate information according to constraints. [Means for solving the problem]

[0006] The information processing device of the present application is characterized by comprising: an acquisition unit that acquires object information indicating a plurality of objects to be searched and constraint information indicating constraints for generating a graph in which a plurality of nodes corresponding to each of the plurality of objects are connected by edges; and a generation unit that generates a first graph in which a plurality of nodes corresponding to each of the plurality of objects are connected by edges and second information having a smaller amount of data than the first graph based on the constraints indicated by the constraint information. [Effects of the Invention]

[0007] According to one aspect of the embodiment, it is possible to produce an effect that information according to constraints can be appropriately generated. [Brief explanation of the drawings]

[0008] [Figure 1] FIG. 1 is a diagram illustrating an example of information processing according to an embodiment. [Figure 2] FIG. 2 is a diagram illustrating an example of the configuration of an information processing system according to the embodiment. [Figure 3] FIG. 3 is a diagram illustrating an example of the configuration of the information processing device according to the 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 constraint information storage unit according to the embodiment. [Figure 6] FIG. 6 is a diagram illustrating an example of a graph information storage unit according to the embodiment. [Figure 7] FIG. 7 is a diagram illustrating an example of a starting point information storage unit according to the embodiment. [Figure 8] FIG. 8 is a flowchart illustrating an example of information processing according to the embodiment. [Figure 9] FIG. 9 is a diagram illustrating an example of starting point information used in information processing according to the embodiment. [Figure 10] FIG. 10 is a flowchart showing an example of a search process using graph data. [Figure 11] FIG. 11 is a hardware configuration diagram illustrating an example of a computer that realizes the functions of the information processing device. DETAILED DESCRIPTION OF THE INVENTION

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

[0010] (Embodiment) [1. Information Processing] An example of information processing according to the embodiment will be described with reference to FIG. 1. FIG. 1 is a diagram illustrating an example of information processing according to the embodiment. FIG. 1 illustrates a case in which an information processing device 100 (see FIG. 3) generates, as second information, a graph (also referred to as a "second graph") that has a smaller amount of data than a graph to be generated (also referred to as a "first graph") and that can be used to generate the first graph, based on constraints (hereinafter also referred to as "constraints") when generating graph data (also referred to as a "graph"). Note that the second information is not limited to graphs, and may be any information that can be used to generate the first graph. For example, the second information may be various information used in other indexing methods, such as information used in a direct product quantization method.

[0011] 1 also shows a case where target information (objects) are vectorized and a graph (graph index) is generated using the vectorized objects as targets. That is, FIG. 1 shows a case where information processing device 100 processes vectors as object values ​​corresponding to objects.

[0012] Note that the information used by the information processing device 100 is not limited to vectors, and may be in any format as long as it is information that can express the similarity of each object. For example, the information processing device 100 may use predetermined data or values ​​corresponding to each object. For example, the information processing device 100 may use predetermined numerical values ​​(for example, binary values ​​or hexadecimal values) generated from each object. For example, the information processing device 100 is not limited to vectors, and may use data in any format as long as the distance (similarity) between data is defined. Furthermore, although the following description will be given as an example in which image information is used as an object, the object may also be various objects such as video information or audio information.

[0013] Furthermore, the addition of a node corresponding to an object to a graph may be interpreted as registering a node corresponding to an object to a graph. That is, the addition of a node may be interpreted as registering a node. The addition of a node corresponding to an object to a graph performed by the information processing device 100, that is, the addition of a node, may be registering (storing) the node corresponding to the object in a memory, storage, or the like, which will be described later.

[0014] FIG. 1 illustrates a case in which the information processing device 100 generates graph information for information (nodes) corresponding to each vector obtained by vectorizing a data search target (object). That is, FIG. 1 illustrates a case in which the information processing device 100 performs processing using vectors as node values ​​corresponding to nodes. 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.

[0015] The information processing device 100 performs graph generation processing on nodes corresponding to a huge amount of image information (e.g., millions to billions) within the range that the information processing device 100 can process, but only a portion of the nodes is illustrated in the drawings. For simplicity's sake, FIG. 1 illustrates only nodes corresponding to some of the objects among multiple objects to provide an overview of the processing. While FIG. 1 illustrates and explains a state in which the graph is being generated, the information processing device 100 may also execute a process (also referred to as a "sequential registration process") in which, starting from an empty state, i.e., a state with zero nodes and zero edges, nodes N1, etc. and edges E1, etc. are sequentially added as nodes corresponding to objects are added to the graph to generate a graph GR11. When "node N* (* is an arbitrary numerical value)" is written, 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, the sequential registration process is a process of selecting one unselected object from among a plurality of objects, and sequentially adding a node (hereinafter also referred to as an "added node") corresponding to the selected object to the graph.

[0016] Furthermore, when "edge E* (* is an arbitrary numerical value)" is written as above, it indicates that the edge is identified by the edge ID "E*." For example, when "edge E1" is written, the edge is identified by the edge ID "E1." In FIG. 1, the information processing device 100 generates graph information by connecting nodes with undirected edges (also simply referred to as "edges"). Note that an undirected edge here means an edge that allows data to be traced in both directions between the connected nodes. For example, edge E1 connecting node N1 and node N2 enables bidirectional tracing between node N1 and node N2. That is, edge E1 allows tracing from node N1 to node N2, and edge E1 allows tracing from node N2 to node N1.

[0017] Note that edges in a graph are not limited to undirected edges, and may also be directed edges. In the case of a directed edge, it is possible to trace only from the node that is the reference source of the directed edge to the referenced node. For example, when two nodes are connected by two directed edges, a first edge with one being the reference source (output source) and the other being the reference destination (input destination), and a second edge with one being the reference destination and the other being the reference source, the state is the same as when the two nodes are connected by an undirected (bidirectional) edge. For example, the number of times a node is the reference source (output source) of a directed edge is the out-degree of that node. For example, the number of times a node is the reference destination (input destination) of a directed edge is the in-degree of that node.

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

[0019] Each circle (◯) in the spatial information VS1 in Figure 1 represents a node. In the spatial information VS1 in Figure 1, symbols are attached to nodes that are mainly relevant to the explanation, but each circle (◯) without a symbol is also a node, and many nodes other than the nodes shown in the figure are included. Each node corresponds to a respective object. Furthermore, lines (straight lines) connecting the circles (◯) in the spatial information VS1 represent each edge. Note that when an edge is a directed edge, for example, the circle (◯) corresponding to the node that is the reference source (output source) is the arrowhead, and the circle (◯) corresponding to the node that is the reference destination (input destination) is the arrowhead.

[0020] 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.

[0021] 1 are diagrams that schematically show the steps of a graph generation process, and the graphs GR11-1 to GR11-4 are the same graph data generated by information processing. In the following, when there is no need to distinguish between the graphs GR11-1 to GR11-4, they will be referred to as graph GR11.

[0022] 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. 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 "N2" (node ​​N2) and the node identified by node ID "N5" (node ​​N5) are close to each other, i.e., the distance between them is short. Therefore, the object corresponding to the node identified by node ID "N2" and the object corresponding to the node identified by node ID "N5" have a high similarity.

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

[0024] 1, the information processing device 100 generates the graph GR11 by sequentially registering objects that have not yet been selected from among a plurality of objects, adding nodes (additional nodes) corresponding to the selected objects to the graph GR11, and connecting the nodes with edges. For example, when generating the graph GR11 or performing a search using the graph GR11, the same processing as that for a graph-structured index is performed, but the starting position (starting point) may start from a node (hereinafter also referred to as a "starting point node") determined using predetermined starting point information (hereinafter also referred to as a "starting point index"). For example, when performing a search using the graph GR11 generated by the information processing device 100, the search may start from a predetermined starting point node. For example, when the starting point node is node N2 during generation or search, a group of nodes included in the graph GR11 at the time of processing, such as node N1, may be searched for by tracing edges from node N2. Examples of processing using starting point indexes and starting points will be described later.

[0025] [1-1. Information processing example] An example of information processing executed by the information processing device 100 will now be described with reference to Fig. 1. Specifically, Fig. 1 shows an example of graph generation by sequential registration processing of the information processing device 100. Note that each step shown in Fig. 1 is a convenient step for explaining the graph generation process, and actual processing may involve earlier processing or more detailed processing.

[0026] 1 illustrates an example in which an upper limit on the memory capacity (also simply referred to as "memory capacity") available when generating the first graph is used as a constraint when generating a graph. In FIG. 1, for example, a constraint (constraint CS11) identified by a constraint ID "CS11" is used from among the constraints stored in the constraint information storage unit 122 (see FIG. 5). Note that the constraint illustrated in FIG. 1 is merely an example of a constraint when generating a graph, and various constraints such as time and accuracy may also be used, which will be described later.

[0027] In FIG. 1, the memory is a primary storage device (main storage device) of the control unit 130 (see FIG. 3) of the information processing device 100, which is, for example, a processor, and the storage ST is a secondary storage device (storage) such as the storage unit 120 (see FIG. 3) of the information processing device 100, which is, for example, a hard disk. For example, the memory capacity available to the information processing device 100 when generating the first graph is smaller (less) than the capacity of the storage ST, and the storage ST has a capacity capable of storing the entire first graph to be generated, but the memory capacity of the information processing device 100 is insufficient to store the entire first graph to be generated. In FIG. 1, graph GR1 is the first graph, and graph GR11, which has fewer edges than graph GR1, i.e., has a smaller amount of data than graph GR1, and can be used to generate graph GR1, is shown as an example.

[0028] In the example shown below, when an additional node is added, the number of edges connected to the additional node in the first graph is "7". That is, in FIG. 1, the information processing device 100 generates a first graph including the added node by performing a process of adding edges connecting the added node to seven nodes for the added node. For example, the information processing device 100 adds edges connecting the added node to the seven nodes extracted by performing a search process based on that information, and the search number is not limited to "7", and may be various values ​​such as "5" or "20".

[0029] In FIG. 1, the information processing device 100 stores a graph in memory and uses it for search processing to extract other nodes that connect edges to the added node. For example, if the number of edges connected to the added node is "7," the capacity of the storage ST is equal to or larger than the size capable of storing the data of the entire graph GR1 after the generation process is complete, but the memory capacity of the information processing device 100 is smaller than the size capable of storing the data of the entire graph GR1 after the generation process is complete. In such a case, it is difficult to use the first graph as the graph stored in memory and used for search processing. Furthermore, while a method of performing searches, etc. using the graph GR1 on storage such as the storage ST in FIG. 1 is conceivable, because storage is slower than memory, it is difficult to generate indexes for graphs, etc., at a practical speed.

[0030] Therefore, the information processing device 100 determines the number of edges of the second graph so that the amount of data of the graph stored in memory and used in search processing is equal to or less than the memory capacity. In Fig. 1, the information processing device 100 determines the number of edges of graph GR11, which is the second graph stored in memory and used in search processing, so that the amount of data of graph GR11 is equal to or less than the memory capacity.

[0031] For example, when connecting edges for a group of objects to be generated as a graph, the information processing device 100 estimates the expected amount of data according to the number of edges connecting to an additional node. In Fig. 1, the information processing device 100 estimates the expected amount of data according to the number of edges connecting to a node corresponding to the number of objects (hereinafter simply referred to as "multiple objects") stored in the object information storage unit 121 (see Fig. 4) as the target of graph generation.

[0032] For example, the information processing device 100 estimates the amount of data expected when the number of edges connecting to a node corresponding to the number of objects is set to "2" (the "second estimated amount"). The information processing device 100 also estimates the amount of data expected when the number of edges connecting to a node corresponding to the number of objects is set to "3" (the "third estimated amount"). For example, it is assumed that the second estimated amount is equal to or less than the memory capacity and the third estimated amount exceeds the memory capacity. In this case, the information processing device 100 determines that the number of edges connecting to the additional node in graph GR11, which is the second graph stored in memory and used for search processing, is "2".

[0033] Note that information indicating the number of edges in the second graph may be acquired from another external device such as the information providing device 50. In this case, the information processing device 100 may acquire information indicating the number of objects (i.e., the number of nodes) to be the target of graph generation and constraint information indicating constraints for generating the graph from the other external device such as the information providing device 50, thereby acquiring information indicating the number of edges in the second graph corresponding to the constraints from the other external device such as the information providing device 50. For example, the other external device such as the information providing device 50, which has received information indicating the number of nodes and constraint information indicating constraints for generating the graph from the information processing device 100, transmits information indicating the number of edges in the second graph corresponding to the received information to the information processing device 100.

[0034] 1 illustrates a case where the number of edges in the second graph is determined in advance for simplicity's sake, but the information processing device 100 may dynamically adjust the number of edges during the generation process. For example, when the remaining memory capacity, such as the available remaining memory capacity, falls below a predetermined value, the information processing device 100 may adjust (reduce) the edges of the second graph by reducing the number of edges connecting to additional nodes or deleting edges in the second graph.

[0035] The following describes an example in which the number of edges connecting to the added node in graph GR11, which is the second graph stored in memory and used in the search process as described above, is determined to be "2." In FIG. 1, the information processing device 100 executes a process (also called a "search process") of extracting nodes located near the added node (also called "neighboring nodes") from the graph using the graph being generated by the sequential registration process. For example, the information processing device 100 performs a k-nearest neighbor search as the search process. The information processing device 100 performs the search process to extract k searched nodes as neighboring nodes. The information processing device 100 generates (updates) the graph by a process of connecting the neighboring nodes extracted by the search process with the added node via edges.

[0036] 1, the processing when node N819 corresponding to an object identified by object ID "OB819" among multiple objects is an added node is described as an example. That is, FIG. 1 shows a state in which nodes N1 to N818 corresponding to object IDs "OB1" to "OB818" added before object ID "OB819" have been added to graph GR1, which is the first graph, and graph GR11, which is the second graph. For example, graph GR11-1 in FIG. 1 shows a state after registration processing has been performed on node N818 corresponding to object IDs "OB1" to "OB818". Below, a brief description will be given of the processing before the processing shown in FIG. 1.

[0037] In the process before step S11 shown in FIG. 1 , for example, the information processing device 100 performs a registration process of node N1 corresponding to an object identified by object ID "OB1" as an added node. Because node N1 is the first node, the information processing device 100 newly generates graph GR11, which is a second graph including node N1. Furthermore, because graph GR11 at this stage only has one node, node N1, the information processing device 100 does not add an edge to graph GR11. As a result, the information processing device 100 registers node N1 corresponding to the object identified by object ID "OB1" and updates graph GR11, which is the second graph, in memory.

[0038] Furthermore, in response to the update of the graph GR11, the information processing device 100 newly generates a graph GR1, which is a first graph including the node N1. For example, the information processing device 100 registers (stores) the node N1 corresponding to the object identified by the object ID "OB1" in the storage ST (for example, the graph information storage unit 123).

[0039] Then, the information processing device 100 performs a registration process on node N2 corresponding to the object identified by the object ID "OB2" as an added node. The information processing device 100 adds node N2 to graph GR11 and adds an edge. At this stage, since node N1 is the only node other than node N2 in graph GR11, the information processing device 100 updates graph GR11, which is the second graph, by adding edge E1 connecting node N1 and node N2.

[0040] Furthermore, the information processing device 100 updates the graph GR1 by adding a node N2 and an edge E1 in response to the update of the graph GR11. For example, the information processing device 100 registers (stores) in the storage ST information indicating the node N2 corresponding to the object identified by the object ID "OB2" and the edge E1 connecting the node N2 and the node N1. In this way, when the number of nodes (neighboring nodes) connected by edges to the added node in the second graph is "2" or less, the graph GR1, which is the first graph, and the graph GR11, which is the second graph, are the same, but when the number of nodes (neighboring nodes) connected by edges to the added node in the second graph is "3" or more, they become different.

[0041] Furthermore, in processing in which nodes N3 to N818 are added nodes, the information processing device 100 searches (finds) nodes located near the added nodes (neighboring nodes) using the processing procedure shown in Fig. 10. For example, the information processing device 100 extracts seven neighboring nodes corresponding to the search number "7" by searching the graph using the processing procedure shown in Fig. 10. Note that if there are six or fewer nodes other than the added nodes in the graph GR11, the number of extracted neighboring nodes may be six or fewer. Furthermore, if the number of extracted neighboring nodes is three or more, the neighboring nodes connected by edges in the second graph will be a part of the total; this point will be explained in the processing at node N818 below.

[0042] Next, a detailed description will be given of the processing when node N819 shown in Fig. 1 is an added node. Graph GR11-1 in spatial information VS1-1 in Fig. 1 shows the state of graph GR11 (second graph) at the stage when processing is performed with node N819 as an added node. First, information processing device 100 adds a new node N819 (step S11). In Fig. 1, information processing device 100 adds node N819 corresponding to an object identified by object ID "OB819" as an added node, as shown in spatial information VS1-2.

[0043] Then, the information processing device 100 searches the graph (step S12). The information processing device 100 performs a search process to extract the search number k of neighboring nodes using the graph GR11 being generated. For example, the information processing device 100 searches (searches) for nodes (neighboring nodes) located near the added node by the processing procedure shown in Fig. 10. For example, the information processing device 100 extracts seven neighboring nodes corresponding to the search number "7" by searching the graph by the processing procedure shown in Fig. 10.

[0044] The information processing device 100 searches the graph GR11-2 using the processing procedure shown in Fig. 10 with the node N819, which is an added node, as a query, and extracts seven nodes N24, N36, N48, N68, N55, N2, and N95, which correspond to the search number of 7, as neighboring nodes of node N819. The graph GR11-3 in the spatial information VS1-3 in Fig. 1 shows a case where node N819 is connected to all of the seven nodes N24, N36, N48, N68, N55, N2, and N95 by each of the seven edges E21 to E27.

[0045] For the sake of explanation, edges E21 to E27 are shown in order of length, i.e., in order of distance between connected nodes. In addition, in Fig. 1, edges E21 and E22, which are the second shortest, are shown with solid lines, and edges E23, E24, E25, E26, and E27, which are the third shortest and subsequent shortest, are shown with dotted lines.

[0046] The information processing device 100 generates a first graph and a second graph based on the results of the above-described processing (step S13). In Fig. 1, the information processing device 100 reflects in the graph GR1, which is the first graph, a state in which the node N819 is connected to all of the seven nodes N24, N36, N48, N68, N55, N2, and N95 by each of the seven edges E21 to E27, as shown in storage ST. For example, the information processing device 100 updates the graph GR1 by adding the node N819 and the seven edges E21 to E27.

[0047] As a result, the information processing device 100 generates a graph GR1 in which the node N819 is connected to each of the seven nodes N24, N36, N48, N68, N55, N2, and N95 by each of the seven edges E21 to E27. For example, the information processing device 100 registers (stores) in the storage ST information indicating the node N819 corresponding to the object identified by the object ID "OB819" and the edges E21 to E27 connecting the node N819 to each of the seven nodes N24, N36, N48, N68, N55, N2, and N95.

[0048] 1 illustrates only a portion of graph GR1 to show that node N819 and seven nodes N24, N36, N48, N68, N55, N2, and N95 are added to storage ST. In FIG. 1, for example, by showing edge E11 connecting node N68 and node N115, it is shown that the edges in graph GR1, which is the first graph, and graph GR11, which is the second graph, are different for the portions other than node N819. In this way, even for nodes that were processed as added nodes before node N819, the edges in graph GR1, which is the first graph, and graph GR11, which is the second graph, may be different.

[0049] On the other hand, if node N819 were connected to all seven nodes N24, N36, N48, N68, N55, N2, and N95 with edges, the number of edges in the second graph would exceed "2." Therefore, as shown in graph GR11-4, the information processing device 100 connects nodes N819 to the seven nodes N24, N36, N48, N68, N55, N2, and N95 in order of closest distance with edges up to the second closest. That is, the information processing device 100 reflects only the second shortest edges E21 and E22 among edges E21 to E27 shown in graph GR11-3. As such, in FIG. 1, the information processing device 100 does not add edges E23 to E27, which are the third shortest edges and beyond, shown by dotted lines in graph GR11-3, to the second graph.

[0050] For example, the information processing device 100 updates the graph GR11 by adding a node N819 and two edges E21 and E22. For example, the information processing device 100 generates a graph GR11-4 that includes a node N819 corresponding to an object identified by an object ID "OB819," an edge E21 connecting the node N819 and node N24, and an edge E22 connecting the node N819 and node N36. As a result, the number of edges connected to the node N819 is smaller in the graph GR11, which is the second graph, than in the graph GR1, which is the first graph.

[0051] In this way, the information processing device 100 generates the first graph and the second graph by sequentially updating the first graph and the second graph. For example, in a process in which the node added next to object ID "OB819" is set as the added node, the information processing device 100 executes a search process using the second graph in the state of graph GR11-4. For example, the information processing device 100 repeats the process until there are no unprocessed (unselected) objects among the multiple objects, thereby generating graph GR1, which is the first graph, and graph GR11, which is the second graph that has fewer edges than graph GR1 and satisfies the constraints.

[0052] [1-2. Effects, etc.] In this way, the information processing device 100 generates a second graph that has a smaller amount of data than the first graph to be generated and can be used to generate the first graph, based on the constraints imposed when generating the graph. This allows the information processing device 100 to generate a second graph that satisfies the constraints, and to appropriately generate information according to the constraints. Furthermore, the information processing device 100 can generate the first graph using the second graph that satisfies the constraints, and can appropriately generate the first graph even under conditions with constraints.

[0053] Here, examples of the application (usage example) of the first graph generated in the present application will be described below. First, the premises and the like will be briefly explained. For example, as a method for generating a graph with high search performance, for example, by the above-described process, after generating a graph (ANNG: Approximate k-Nearest Neighbor Graph) in which nodes are added one by one, there is a method for generating an ONNG (Optimized Nearest Neighbors Graph). For example, in the generation of ONNG, processes such as adjusting the in-degree and out-degree of the graph and reducing shortcut edges are executed. Note that ONNG is disclosed in the following documents and the like in addition to the above Patent Document 3, and detailed explanations are omitted.

[0054] ·Optimization of Indexing Based on k-Nearest Neighbor Graph for Proximity Search in High-dimensional Data, Masajiro Iwasaki, Daisuke Miyazaki. <https: / / arxiv.org / abs / 1810.07355> ·NGT - Generation Method of Optimized Graph - <https: / / techblog.yahoo.co.jp / entry / 2019052<2677083>

[0055] For example, when the number of nodes in the graph is the same, ANNG becomes a graph with far more edges than ONNG, and a situation occurs where ONNG can be loaded into memory while ANNG cannot. Therefore, a method for generating a graph with many edges on limited memory is required.

[0056] Furthermore, ANNG can be said to be a collection of search result data obtained by adding nodes one by one. A graph with few edges in memory (second graph) is used for the search, and many search results (undirected edges) are stored (written out) to storage to generate a graph with many edges (first graph). For example, for one edge, the start node (registered object), end node (search result object), and their opposite edge are written out to storage. When all objects are registered in this way in a graph with few edges, many results (edges) for each node are written out to storage.

[0057] For example, the information processing device 100 may generate information such as an ONNG using the information written to the storage in this manner. For example, the information processing device 100 may generate another graph from the generated first graph.

[0058] For example, the information processing device 100 may generate an ONNG on the storage from the edges of the ANNG written to the storage. In this case, the information processing device 100 executes a process (reverse assignment process) in which, for example, edges of objects with the same starting point are collected, edges of a specified out-degree number are retained, and edges of a specified in-degree number are inverted and assigned. The information processing device 100 performs such a process (reverse assignment process) for all nodes.

[0059] For example, the information processing device 100 may generate an ANNG with 100 edges (undirected edges), and generate an ONNG with an out-degree of 10 and an in-degree of 120. For example, the information processing device 100 may generate a first graph by performing processing with the number of searches for the above-mentioned additional nodes set to 100, and use the generated first graph to generate an ONNG (also referred to as a "third graph") with an out-degree of 10 and an in-degree of 120. This allows the information processing device 100 to generate a graph with good search performance and to generate an ONNG that is sufficiently smaller than an ANNG.

[0060] [1-3. Constraints] The above-mentioned constraints are merely examples of constraints for generating a graph, and various other constraints may be used. Examples of this point are described below. The above-mentioned memory constraint and the constraint on time or search accuracy (also simply referred to as "accuracy") shown below are merely examples, and any information can be used as a constraint. For example, the information processing device 100 may use a combination of the above-mentioned memory constraint (first constraint), the time constraint (second constraint) and the accuracy constraint (third constraint) shown below. For example, when the information processing device 100 combines the first constraint and the second constraint, it generates a second graph so that the generated second graph satisfies both the first constraint and the second constraint.

[0061] The information processing device 100 may use time-related constraints such as processing time. For example, the information processing device 100 may use constraint information indicating an upper limit of processing time when generating a graph. In this case, the information processing device 100 generates second information based on the time-related constraint indicated by the constraint information. For example, the information processing device 100 generates a second graph based on the upper limit of processing time indicated by the constraint information. The information processing device 100 generates a second graph with a number of edges that satisfies the upper limit of processing time indicated by the constraint information.

[0062] For example, when a constraint is imposed on the information processing device 100 that the generation of a graph must be completed within a specified processing time, the information processing device 100 determines the number of edges of the second graph so that the generation of the first graph is completed within the specified processing time. The information processing device 100 then generates the second graph based on the determined number of edges. The information processing device 100 also generates the first graph using the generated second graph. Note that, except for the difference between the memory and time constraints used to determine the number of edges of the second graph, that is, the processing after determining the number of edges of the second graph, for example, the processing for generating the first and second graphs, is the same as the processing shown in FIG. 1, and therefore description thereof will be omitted.

[0063] The information processing device 100 may use constraints on search accuracy (search performance). While recall is an example of such search accuracy, the search accuracy is not limited to recall and may be various information as long as it allows measuring the accuracy of the search process. For example, the information processing device 100 may use constraint information indicating a lower limit of search accuracy when generating a graph. In this case, the information processing device 100 generates the second information based on the constraint on search accuracy indicated by the constraint information. For example, the information processing device 100 generates the second graph based on the lower limit of search accuracy indicated by the constraint information. The information processing device 100 generates a second graph with a number of edges that satisfies the lower limit of search accuracy indicated by the constraint information.

[0064] For example, when a constraint requires that the search accuracy of the generated first graph be better than a specified lower limit, the information processing device 100 determines the number of edges of the second graph so that the generated first graph satisfies the specified search accuracy.The information processing device 100 then generates the second graph based on the determined number of edges.The information processing device 100 also generates the first graph using the generated second graph.Note that, except for the fact that the constraints used to determine the number of edges of the second graph differ between memory and accuracy, the processing after determining the number of edges of the second graph, for example, the processing for generating the first and second graphs, is the same as the processing shown in FIG. 1, and therefore will not be described again.

[0065] [1-4. Graph data] 1 shows a case where the information processing device 100 generates a graph GR11 from the beginning (when the number of nodes is 0), that is, a case where a new graph is generated, but the information processing device 100 is not limited to generating new graphs and may generate various graphs. For example, the information processing device 100 may generate a graph by adding a node corresponding to a newly added object to a graph including nodes and edges. For example, the information processing device 100 may generate a graph by adding a node corresponding to a newly added object to a graph in which edges have been adjusted and reconstructed.

[0066] [1-5. Starting point information] For example, the information processing device 100 may use starting point information IND11 relating to a tree structure (tree structure) as shown in FIG. 9 as starting point information (starting point index). FIG. 9 is a diagram showing an example of starting point information used in information processing according to the embodiment. For example, the starting point information IND11 is an index having a tree structure that can reach nodes in the graph GR11. For simplicity of explanation, FIG. 9 illustrates only routes that reach five nodes N1 to N5 in the starting point information IND11, but routes that reach a large number of other nodes (for example, 500 or 1000) may also be included. For example, the starting point information IND11 may be capable of reaching all nodes in the graph GR11.

[0067] Note that the start point information such as the start point information IND11 may be generated by the information processing device 100, or the information processing device 100 may acquire the start point information from another external device such as the information providing device 50. For example, when generating the start point information, the information processing device 100 generates start point information (e.g., the start point information IND11) of a tree structure in which nodes included in a graph (e.g., the graph GR11) are leaves, by appropriately using various conventional techniques related to tree structures. Furthermore, when a new node is added to a graph (e.g., the graph GR11), the information processing device 100 adds a node corresponding to the newly added object (also referred to as an "added node") as a leaf to the start point information of the tree structure (e.g., the start point information IND11). As a result, when a new node is added to a graph, the information processing device 100 updates the start point information. That is, when a new node is added to a graph, the information processing device 100 generates start point information in which the new node is added as a leaf.

[0068] As described above, the information processing device 100 generates a starting point index such as the starting point information IND11 stored in the starting point information storage unit 124 (see FIG. 7) by appropriately using various conventional techniques related to tree structures. For example, when a new object is added, the information processing device 100 may update the starting point information IND11 by adding a node corresponding to the newly added object as a leaf. In FIG. 1, the information processing device 100 may update the starting point information IND11 by adding nodes N3, N4, etc. as leaves each time nodes N3, N4, etc. are added.

[0069] Furthermore, when the information processing device 100 acquires origin information from another external device, it provides a graph to the other external device. Then, the information processing device 100 acquires, from the other external device, origin information generated by the other external device that received the graph. For example, when the information processing device 100 acquires origin information IND11 from the information providing device 50, it transmits a graph GR11 to the information providing device 50. Then, the information processing device 100 acquires, from the information providing device 50, the origin information IND11 generated by the information providing device 50 that received the graph GR11. For example, the information processing device 100 may acquire origin information IND11 updated by the added node from the information providing device 50 by providing the origin information IND11 and information related to the added node to the information providing device 50. Note that the above is just an example, and the information providing device 50 may acquire the origin information IND11 by any means as long as it is possible to acquire the origin information IND11.

[0070] Furthermore, the information processing device 100 may determine an origin node using origin information IND11 as shown in the index information group GINF11 in Fig. 9. In Fig. 9, the information processing device 100 determines an origin node corresponding to a query QE1 based on the origin information IND11. The query QE1 may be a node corresponding to a newly added object or a target for a search using a graph GR11. That is, the information processing device 100 determines an origin node using the origin information IND11 when generating a graph or performing a search.

[0071] Specifically, the information processing device 100 determines the origin node using the origin information IND11 stored in the origin information storage unit. The origin information IND11 in FIG. 9 has the hierarchical structure shown in the origin information storage unit 124 in FIG. 7. For example, the origin information IND11 indicates that the nodes (vectors) of the first layer located immediately below the root RT are nodes VT1, VT2, VT3, etc. Furthermore, for example, the origin information IND11 indicates that the nodes of the second layer immediately below node VT2 are nodes VT2-1 to VT2-4 (not shown). For example, the origin information IND11 indicates that the nodes of the third layer immediately below node VT2-1 are nodes N2 and N5, i.e., nodes (vectors) in the graph GR11. Furthermore, the origin information IND11 indicates that the nodes of the third layer immediately below node VT2-2 are nodes N1, N3, N4, i.e., nodes (vectors) in the graph GR11.

[0072] For example, the information processing device 100 determines an origin node in a graph GR11 using tree-structured origin index information such as that shown in the origin information IND11 in Fig. 9. In Fig. 9, the information processing device 100 determines (specifies) an origin node that is a candidate for a neighborhood of the origin information IND11 by tracing the origin information IND11 from the top (route RT) down based on the query QE1. This allows the information processing device 100 to efficiently determine an origin node corresponding to the search query (query QE1). For example, the information processing device 100 can quickly determine an appropriate origin node corresponding to the query QE1, which is an added node.

[0073] Note that the information processing device 100 is not limited to the above and may use various starting point indexes. That is, the starting point information (starting point index) shown in the example of FIG. 9 is an example, and the information processing device 100 may search for graph information using various starting point information. The information processing device 100 may generate a starting point index used to determine a starting point node during a search. For example, the information processing device 100 generates a search index (starting point information) for high-speed search of high-dimensional vectors. The high-dimensional vector referred to here may be, for example, a vector of several hundred to several thousand dimensions, or a vector of even more dimensions.

[0074] For example, the information processing device 100 may generate a search index related to a kd tree (k-dimensional tree) as a starting index.For example, the information processing device 100 may generate a search index related to a VP tree (Vantage-Point tree) as a starting index.

[0075] Furthermore, for example, the information processing device 100 may generate a starting point index having another tree structure. For example, the information processing device 100 may generate various starting point indexes in which the leaves of the starting point indexes of the tree structure are connected to the graph. For example, the information processing device 100 may generate various starting point indexes in which the leaves of the starting point indexes of the tree structure correspond to the nodes in the graph. Furthermore, when performing a search using such starting point indexes, the information processing device 100 may search the graph from the leaf (node) reached by tracing the starting point index.

[0076] The above-described starting point index is merely an example, and the information processing device 100 may generate a starting point index of any data structure as long as it is capable of quickly identifying a query in a graph. For example, the information processing device 100 may generate a starting point index by appropriately using various conventional technologies, such as technologies related to binary space partitioning, as long as it is capable of quickly identifying a node in graph information corresponding to a query. For example, the information processing device 100 may generate a starting point index of any data structure as long as it is capable of supporting searches of high-dimensional vectors. By using the above-described starting point index and graph, the information processing device 100 can enable more efficient searches for a specified target. In other words, by using the above-described starting point index and graph, the information processing device 100 can enable faster searches for a specified target.

[0077] [2. Information Processing System Configuration] As shown in Fig. 2, the information processing system 1 includes a terminal device 10, an information providing device 50, and an information processing device 100. The terminal device 10, the information providing device 50, and the information processing 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 of the configuration of the information processing system according to the embodiment. Note that the information processing 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 information processing devices 100.

[0078] 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.

[0079] 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 information processing 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 information processing device 100, thereby receiving from the information processing device 100 an object ID, etc., indicating an image corresponding to the query.

[0080] The information processing device 100 is a computer (information processing device) that generates a graph. The information processing device 100 generates a graph in which multiple nodes corresponding to multiple objects are connected by edges. When generating a graph, the information processing device 100 generates a first graph by sequentially selecting nodes corresponding to objects selected from the multiple objects and connecting the edges. The information processing device 100 generates the first graph and second information (e.g., a second graph) having a smaller amount of data than the first graph based on the constraints indicated by the constraint information. The information processing device 100 selects an unselected object from the multiple objects, adds a node corresponding to the selected object to the graph, and executes a registration process that connects the node with neighboring nodes of the node extracted by a search process that searches the graph. The information processing device 100 generates a graph by a sequential registration process that selects an unselected object from the multiple objects and repeats the registration process for the selected object.

[0081] For example, when the information processing device 100 receives query information (hereinafter also simply referred to as "query") from a terminal device, it searches for an object (such as vector information) similar to the query and provides the terminal device with the search results. Furthermore, for example, the data that the information processing device 100 provides to the terminal device 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 information processing device 100 searches for an image will be described as an example.

[0082] 3. Configuration of Information Processing Device Next, the configuration of the information processing 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 information processing device 100 according to the embodiment. As shown in Fig. 3, the information processing device 100 has a communication unit 110, a storage unit 120, and a control unit 130. Note that the information processing device 100 may also have an input unit (e.g., a keyboard, a mouse, etc.) that accepts various operations from an administrator of the information processing device 100, and a display unit (e.g., a liquid crystal display, etc.) that displays various information.

[0083] (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.

[0084] (Storage unit 120) The storage unit 120 is realized by, for example, a semiconductor memory element such as a flash memory, or a storage device such as a hard disk or an optical disk. For example, the storage unit 120 functions as a storage realized by the above-mentioned non-volatile memory or the like. As shown in FIG. 3 , the storage unit 120 according to the embodiment includes an object information storage unit 121, a constraint information storage unit 122, a graph information storage unit 123, and a starting point information storage unit 124.

[0085] The storage unit 120 stores various information other than the above information. For example, the storage unit 120 may store the order in which each node was added to the graph in association with each node (object). The graph information storage unit 123 of the storage unit 120 may store the order in which each node was added to the graph in association with each node (object).

[0086] (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."

[0087] "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 FIG. 4, vector data (vector information) corresponding to an object is registered in association with an object ID that identifies the object.

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

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

[0090] (Constraint information storage unit 122) The constraint information storage unit 122 according to the embodiment stores various information related to constraints on various processes. For example, the constraint information storage unit 122 stores various information related to constraints when generating a graph. FIG. 5 is a diagram illustrating an example of the constraint information storage unit according to the embodiment. The constraint information storage unit 122 shown in FIG. 5 includes items such as "constraint ID," "target," and "constraint content." For example, the constraint information storage unit 122 stores various information related to constraints and conditions for executing various processes.

[0091] "Constraint ID" indicates information that identifies the constraint. "Target" indicates the target of the constraint when generating a graph. "Constraint content" indicates the specific content used as the corresponding constraint. Note that in Figure 5, "constraint content" is illustrated as abstract symbols such as "CINF11," "CINF12," and "CINF13," but it is assumed that it is information or conditional expressions that will become specific constraints.

[0092] In FIG. 5, the constraint (constraint CS11) identified by the constraint ID "CS11" indicates that it is a memory-related constraint. The target of constraint CS11 is the memory used when generating a graph, and its constraint content is "CINF11." The constraint content CINF11 in FIG. 5 indicates the upper limit of memory capacity that can be used when generating a graph. For example, the constraint content CINF11 in FIG. 5 indicates that the constraint requires that the upper limit of memory capacity specified when generating a graph be met.

[0093] In FIG. 5, the constraint (constraint CS12) identified by the constraint ID "CS12" indicates that it is a time-related constraint. The target of constraint CS12 is the processing time required to generate a graph, and its constraint content is "CINF12." The constraint content CINF12 in FIG. 5 indicates the upper limit of the processing time required to generate a graph. For example, the constraint content CINF12 in FIG. 5 indicates that the constraint requires that generation be completed within a specified processing time specified when generating a graph.

[0094] In FIG. 5, the constraint (constraint CS13) identified by the constraint ID "CS13" indicates that it is a constraint on search accuracy. The target of constraint CS13 is the search accuracy required for the graph to be generated, and its constraint content is "CINF13". The constraint content CINF13 in FIG. 5 indicates the lower limit of the search accuracy required for the generated first graph. For example, the constraint content CINF13 in FIG. 5 indicates that the constraint requires that the search accuracy of the generated first graph be better than the specified lower limit.

[0095] The constraint information storage unit 122 is not limited to the above, and may store various types of information depending on the purpose.

[0096] (Graph information storage unit 123) The graph information storage unit 123 according to the embodiment stores various information related to graph information. For example, the graph information storage unit 123 stores graph information. FIG. 6 is a diagram illustrating an example of the graph information storage unit according to the embodiment. The graph information storage unit 123 illustrated in FIG. 6 has items such as "node ID," "object ID," and "edge information." Furthermore, the "edge information" includes information such as "edge ID" and "reference destination."

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

[0098] Furthermore, "edge information" indicates information about edges connected to corresponding nodes. In FIG. 6, "edge information" indicates information about edges connected to 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 FIG. 6, for a node ID that identifies a node, information that identifies an object (target) corresponding to that node and reference destinations (nodes) to which edges from that node are connected are associated and registered.

[0099] FIG. 6 shows that a node (node ​​N68) identified by node ID "N68" corresponds to an object (target) identified by object ID "OB68." Also, it shows that an edge (edge ​​E11) identified by edge ID "E11" is connected from node N68 to a node (node ​​N115) identified by node ID "N115." That is, FIG. 6 shows that node N115 can be traced from node N68 in the graph data via edge E11. Also, it shows that an edge (edge ​​E24) identified by edge ID "E24" is connected from node N68 to a node (node ​​N819) identified by node ID "N819." That is, FIG. 6 shows that node N819 can be traced from node N68 in the graph data via edge E24.

[0100] Also, it is shown that a node (node ​​N819) identified by node ID "N819" corresponds to an object (target) identified by object ID "OB819." It is also shown that an edge (edge ​​E21) identified by edge ID "E21" is connected from node N819 to a node (node ​​N24) identified by node ID "N24." That is, in FIG. 6, it is shown that node N24 can be traced from node N819 in the graph data via edge E21.

[0101] Also, from node N819, it is shown that an edge identified by edge ID "E22" (edge ​​E22) is connected to a node identified by node ID "N36" (node ​​N36). Also, from node N819, it is shown that an edge identified by edge ID "E23" (edge ​​E23) is connected to a node identified by node ID "N48" (node ​​N48).

[0102] Also, from node N819, an edge identified by edge ID "E24" (edge ​​E24) is connected to a node identified by node ID "N68" (node ​​N68). That is, Fig. 6 shows that node N68 can be traced from node N819 in the graph data via edge E24.

[0103] 1. Also, from node N819, edges identified by edge IDs "E25", "E26", and "E27" (edges E25, E26, E27) are connected to nodes identified by node IDs "N55", "N2", and "N95" (nodes N55, N2, N95). The graph information storage unit 123 shown in FIG. 6 shows a case where graph information corresponding to the first graph GR1 in FIG. 1 is stored.

[0104] Note that the graph information storage unit 123 is not limited to the above and may store various types of information depending on the purpose. For example, the graph information storage unit 123 may store the lengths of edges connecting each node (vector). That is, the graph information storage unit 123 may store information indicating the distance between each node (vector). Furthermore, for example, the graph information storage unit 123 may store information indicating the number of edges input to each node (in-degree) and the number of edges output from each node (out-degree).

[0105] The graph data may also 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. That is, the graph data may be intended for use as a program module that performs search processing using a graph. For example, the graph data GR11 may be a program that, when vector data is input as a query, extracts and outputs nodes corresponding to vector data similar to the vector data from a graph. For example, the graph data GR11 may be data used as a program module that searches for images similar to a query image. For example, the graph data GR11 causes a computer to function to extract and output nodes similar to the query in a graph based on an input query.

[0106] (Starting point information storage unit 124) The origin information storage unit 124 according to the embodiment stores various information related to the origin information. FIG. 7 is a diagram illustrating an example of the origin information storage unit according to the embodiment. Specifically, in FIG. 7, the origin information storage unit 124 shows origin index information in a tree structure. In FIG. 7, the origin information storage unit 124 includes items such as "root layer," "first layer," "second layer," and "third layer." Note that the items are not limited to "first layer" to "third layer," and may also include "fourth layer," "fifth layer," "sixth layer," etc., depending on the number of layers of the index.

[0107] The "root layer" indicates the root (top) layer that is the starting point for determining the origin node using the index. The "first layer" stores information that identifies (specifies) the nodes (nodes or vectors in the graph information) that belong to the first layer of the index. The nodes stored in the "first layer" are the nodes that correspond to the layer directly connected to the root of the index.

[0108] The "second layer" stores information that identifies (specifies) nodes (nodes or vectors in graph information) that belong to the second layer of the index. The nodes stored in the "second layer" are nodes that correspond to the layer immediately below that are connected to nodes in the first layer. The "third layer" stores information that identifies (specifies) nodes (nodes or vectors in graph information) that belong to the third layer of the index. The nodes stored in the "third layer" are nodes that correspond to the layer immediately below that are connected to nodes in the second layer.

[0109] In the example shown in Fig. 7, the origin information storage unit 124 stores information corresponding to the origin information IND11 in Fig. 1. For example, the origin information storage unit 124 indicates that the nodes in the first layer are nodes VT1 to VT3, etc. Furthermore, the numerical values ​​in parentheses below each node indicate the value of the vector corresponding to each node.

[0110] The origin information storage unit 124 also indicates that the nodes in the second layer immediately below the node VT2 are nodes VT2-1 to VT2-4. The origin information storage unit 124 also indicates that the nodes in the third layer immediately below the node VT2-1 are nodes (vectors) in the graph GR11 of nodes N2 and N5. The origin information storage unit 124 also indicates that the nodes in the third layer immediately below the node VT2-2 are nodes (vectors) in the graph GR11 of nodes N1, N3, and N4.

[0111] The starting point information storage unit 124 is not limited to the above, and may store various types of information depending on the purpose.

[0112] (control unit 130) 3, the control unit 130 is a controller, and is realized by, for example, a CPU (Central Processing Unit), an MPU (Micro Processing Unit), a GPU (Graphics Processing Unit), or the like executing various programs (corresponding to examples of information processing programs) stored in a storage device inside the information processing device 100 using a RAM (Random Access Memory) or the like as a working 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).

[0113] For example, the control unit 130 has a memory realized by a volatile memory such as the RAM described above. For example, the memory of the control unit 130 may be a static random access memory (SRAM), a dynamic random access memory (DRAM), a resistance random access memory (RRAM), a magnetoresistive random access memory (MRAM), etc. For example, the capacity (memory capacity) of the memory of the control unit 130 is smaller than the storage capacity of a storage such as the storage unit 120, and the memory capacity (storage capacity) of the memory of the control unit 130 may be a constraint when generating a graph.

[0114] For example, when graph generation is performed with the memory capacity (memory capacity) of the control unit 130 as the upper limit, the edges of the second graph are determined so that the graph generation process is completed within the upper limit of the memory capacity (memory capacity) of the control unit 130. For example, when graph generation is performed, the edges of the second graph are determined so that the upper limit of the memory capacity of the control unit 130 is not exceeded until all of the object group to be the target of graph generation has been added.

[0115] 3, control unit 130 has an acquisition unit 131, a search unit 132, a generation unit 133, and a 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 be any other configuration as long as it is configured to perform the information processing described below.

[0116] (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 constraint information storage unit 122, the graph information storage unit 123, the starting point information storage unit 124, etc. The acquisition unit 131 also receives various types of information from an external information processing device.

[0117] The acquisition unit 131 acquires object information indicating a plurality of objects to be searched for from the object information storage unit 121.

[0118] The acquisition unit 131 acquires constraint information indicating constraints to be imposed when generating a graph in which a plurality of nodes corresponding to a plurality of objects are connected by edges. The acquisition unit 131 acquires constraint information indicating an upper limit of memory capacity when generating a graph. The acquisition unit 131 acquires constraint information indicating an upper limit of processing time when generating a graph. The acquisition unit 131 acquires constraint information indicating a lower limit of search accuracy for the graph to be generated.

[0119] The acquisition unit 131 acquires a graph in which a plurality of nodes corresponding to a plurality of objects to be searched are connected by edges. The acquisition unit 131 acquires a graph generated by a sequential registration process that adds a plurality of nodes in a predetermined order and connects edges to the added nodes. The acquisition unit 131 acquires the graph generated by the sequential registration process executed by the generation unit 133.

[0120] The acquisition unit 131 acquires a graph in which a plurality of nodes are connected by edges, and an additional node. The acquisition unit 131 acquires a predetermined number of additional nodes. The acquisition unit 131 acquires an additional node that is one node to be added to the graph.

[0121] The acquisition unit 131 acquires a graph including an object to be searched for, a plurality of nodes corresponding to other objects different from the object, and edges connecting the nodes. The acquisition unit 131 acquires an additional node corresponding to the object to be searched for.

[0122] The acquiring unit 131 may also acquire graph data. For example, the information processing device 100 may acquire graph GR11-1 in Fig. 1. For example, the information processing device 100 may acquire graph data from an external device such as the information providing device 50.

[0123] 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 acquires a query from the terminal device 10 to be used. For example, the acquisition unit 131 acquires the query from the information providing device 50 that has accepted the query from the terminal device 10 to be used.

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

[0125] The search unit 132 executes a search process for searching a graph in response to an instruction from the generation unit 133. For example, when information indicating an object (node) to be processed is given to the search unit 132, the search unit 132 extracts an object (node) similar to the target object (node) by searching the graph based on the processing procedure shown in Fig. 10. The search unit 132 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 performing a search process for searching the graph.

[0126] For example, the search unit 132 extracts various pieces of information from the object information storage unit 121, the constraint information storage unit 122, the graph information storage unit 123, the starting point information storage unit 124, etc. For example, the search unit 132 extracts various pieces of information based on the information acquired by the acquisition unit 131.

[0127] The search unit 132 extracts a predetermined number of nodes (for example, a search count) from the plurality of nodes as neighboring nodes. The search unit 132 performs a search process to extract neighboring nodes by searching a graph. The search unit 132 performs a search process to extract a predetermined number of nodes from the plurality of nodes as neighboring nodes based on their relationship with the added node. The search unit 132 performs a search process to extract a predetermined number of nodes as neighboring nodes based on the distance between each of the plurality of nodes and the added node.

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

[0129] The search unit 132 extracts nearby nodes by searching the graph. The search unit 132 extracts a predetermined number (seven in the case of FIG. 1) of nearby nodes by searching the graph using the added node as a query. The search unit 132 extracts nearby nodes by searching the graph through a search process such as that shown in FIG. 10.

[0130] 1, the search unit 132 performs a search process to extract neighboring nodes of a search number k using the graph GR11. The search unit 132 executes a search process to extract neighboring nodes of an added node from the graph GR11 using the graph GR11 being generated. The search unit 132 searches the graph GR11-2 using the added node, node N819, as a query, according to the processing procedure shown in FIG. 10, and extracts seven nodes N24, N36, N48, N68, N55, N2, and N95, which correspond to the search number "7," as neighboring nodes of node N819.

[0131] (Generation unit 133) The generation unit 133 executes various processes related to graph generation. The generation unit 133 executes generation processing to generate a graph. The generation unit 133 executes registration processing to add a node. The generation unit 133 executes selection processing to select an object to be processed. The generation unit 133 instructs the search unit 132 to execute search processing, and obtains search results from the search unit 132.

[0132] The generation unit 133 generates various types of information. For example, the generation unit 133 generates various types of information (data) from information (data) stored in the storage unit 120. For example, the generation unit 133 generates various types of information from the object information storage unit 121, the constraint information storage unit 122, the graph information storage unit 123, the starting point information storage unit 124, etc.

[0133] For example, the generation unit 133 generates various pieces of information based on the information acquired by the acquisition unit 131. The generation unit 133 generates various pieces of information using the results of the search process performed by the search unit 132. The generation unit 133 generates a graph by a sequential registration process. The generation unit 133 generates a graph (graph data, etc.) by a sequential registration process as shown in FIG.

[0134] The generation unit 133 generates a first graph in which a plurality of nodes corresponding to each of a plurality of objects are connected by edges, and second information having a smaller amount of data than the first graph based on the constraints indicated by the constraint information. The generation unit 133 generates, as the second information, a second graph that is smaller than the first graph based on the constraints indicated by the constraint information. The generation unit 133 generates, based on the constraints indicated by the constraint information, the second graph having a smaller number of edges than the first graph.

[0135] The generation unit 133 generates a first graph using the second graph. The generation unit 133 generates the first graph by using the second graph in a process of determining nodes that connect edges in the first graph. The generation unit 133 generates the first graph by using the second graph in a process of extracting neighboring nodes located in the vicinity of one node.

[0136] The generation unit 133 generates a first graph by using the second graph in a search process. The generation unit 133 selects one unselected object from among the multiple objects, adds one node corresponding to the selected object to the second graph, and performs a registration process to connect, with edges, some of the neighboring nodes of the one node extracted by the search process that searches the second graph to the one node, thereby generating the second graph.

[0137] The generation unit 133 generates a first graph by setting all of the neighboring nodes of one node extracted by the search process that searches the second graph as targets for connection with edges. The generation unit 133 generates the first graph by executing a registration process that connects, with edges, all of the nodes in the first graph that correspond to each of the neighboring nodes of one node extracted by the search process that searches the second graph with the node in the first graph that corresponds to the one node.

[0138] The generation unit 133 generates a second graph by removing some of the edges to be added to the first graph. The generation unit 133 generates a second graph in which multiple nodes corresponding to multiple objects are connected by fewer edges than the number of edges in the first graph.

[0139] The generation unit 133 generates a second graph based on the upper limit of memory capacity indicated by the constraint information. The generation unit 133 generates a second graph with a number of edges that satisfies the upper limit of memory capacity indicated by the constraint information.

[0140] The generation unit 133 generates a second graph based on the upper limit of the processing time indicated by the constraint information. The generation unit 133 generates a second graph with a number of edges that satisfies the upper limit of the processing time indicated by the constraint information.

[0141] The generation unit 133 generates a second graph based on the lower limit of search accuracy indicated by the constraint information. The generation unit 133 generates a second graph with a number of edges that satisfies the lower limit of search accuracy indicated by the constraint information.

[0142] (Provider 134) The providing unit 134 provides various types of information. For example, the providing unit 134 transmits 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 132 to the information providing device 50. For example, the providing unit 134 provides the object ID extracted by the searching unit 132 through a search to the information providing device 50. The providing unit 134 provides the object ID extracted by the searching unit 132 to the information providing device 50 as information indicating a vector corresponding to the query.

[0143] Furthermore, the providing unit 134 may provide the graph generated by the generating unit 133 to an external information processing device. For example, the providing unit 134 may transmit the graph GR11 generated by the generating unit 133 to the information providing device 50.

[0144] [4. Information processing flow] Next, the procedure of information processing by the information processing system 1 according to the embodiment will be described with reference to Fig. 8. Fig. 8 is a flowchart showing an example of information processing according to the embodiment.

[0145] 8, the information processing device 100 acquires object information indicating a plurality of objects to be searched for (step S101). For example, the information processing device 100 acquires object information indicating a plurality of objects stored in the object information storage unit 121 (see FIG. 4).

[0146] Then, the information processing device 100 acquires constraint information indicating constraints to be applied when generating a graph in which a plurality of nodes corresponding to each of a plurality of objects are connected by edges (step S102). For example, the information processing device 100 acquires constraint information corresponding to constraints to be used as constraints for generating the graph from among the constraint information stored in the constraint information storage unit 122 (see FIG. 5).

[0147] Then, the information processing device 100 generates a first graph in which a plurality of nodes corresponding to each of a plurality of objects are connected by edges, and second information having a smaller amount of data than the first graph based on the constraints indicated by the constraint information (step S103). For example, the information processing device 100 generates a first graph in which a plurality of nodes corresponding to each of a plurality of objects are connected by edges, and a second graph having a smaller number of edges than the first graph based on the constraints indicated by the constraint information. For example, the information processing device 100 generates a first graph that is not subject to the constraints indicated by the constraint information, as shown in the graph information storage unit 123 (see FIG. 6), and a second graph that satisfies the constraints indicated by the constraint information.

[0148] [5. Search Examples] Here, an example of a search using the graph data described above will be shown. Note that a search using the generated graph data is not limited to the procedure described below, and may be performed by various procedures. This point will be described using FIG. 10 as an example. FIG. 10 is a flowchart showing an example of a search process using graph data. The search process described below is performed by the search unit 132 of the information processing device 100. Also, the term "object" below may be replaced with "node." Note that, below, the search process is performed by (the search unit 132, etc.) the information processing device 100. The search query in the process described below may be an additional node, a target node, an object designated by the user, etc.

[0149] Here, the neighborhood object set N(G, y) is a set of neighborhood objects associated with the node y by an edge attached thereto. "G" may be predetermined graph data (e.g., graph GR11, a graph for registration processing, etc.). For example, the information processing device 100 executes a k-nearest neighbor search process.

[0150] For example, the information processing 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 information processing device 100 may extract an object (node) selected as a root node as the subset S. Furthermore, 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.

[0151] Next, when the search query object is y, the information processing 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 information processing device 100 extracts the root node as object s as a result. Next, the information processing device 100 excludes object s from the object set S (step S303).

[0152] Next, the information processing 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. 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 information processing device 100 outputs object set R as a neighborhood object set of object y (step S305), and ends the process.

[0153] If the distance d(s, y) between object s and search query object y does not exceed r(1+ε) (step S304: No), the information processing device 100 selects one object that is not included in object set C from among the objects that are elements of the 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.

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

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

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

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

[0158] Next, the information processing 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 information processing 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 information processing 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).

[0159] Then, the information processing device 100 determines whether or not 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 information processing device 100 returns to step S306 and repeats the process.

[0160] 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 information processing 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 information processing device 100 returns to step S302 and repeats the process. If the object set S is an empty set (step S316: Yes), the information processing device 100 outputs the object set R and ends the process (step S317). For example, the information processing device 100 may select an object (node) included in the object set R as a neighborhood node corresponding to the added node (input object y). For example, the information processing device 100 may select an object (node) included in the object set R as a neighborhood node corresponding to the target node (input object y). Furthermore, for example, the information processing device 100 may provide the objects (nodes) included in the object set R as search results corresponding to the search query (input object y) to the terminal device or the like that performed the search.

[0161] [6. Effects] As described above, the information processing device according to the embodiment (corresponding to "information processing device 100" in the embodiment) has an acquisition unit (corresponding to "acquisition unit 131" in the embodiment) and a generation unit (corresponding to "generation unit 133" in the embodiment). The acquisition unit acquires object information indicating a plurality of objects to be searched for, and constraint information indicating constraints for generating a graph in which a plurality of nodes corresponding to each of the plurality of objects are connected by edges. The generation unit generates a first graph in which a plurality of nodes corresponding to each of the plurality of objects are connected by edges, and second information having a smaller amount of data than the first graph, based on the constraints indicated by the constraint information.

[0162] In this way, the information processing device according to the embodiment generates second information having a smaller amount of data than the first graph based on the first graph in which multiple nodes corresponding to multiple objects are connected by edges and the constraints indicated by the constraint information when generating the graph, thereby enabling the information processing device to appropriately generate information according to the constraints.

[0163] In addition, in the information processing device according to the embodiment, the generation unit generates, as the second information, a second graph that is smaller than the first graph, based on the constraint indicated by the constraint information.

[0164] In this way, the information processing device according to the embodiment generates a second graph smaller than the first graph as second information based on the constraint indicated by the constraint information, thereby generating a graph that satisfies the constraint. Therefore, the information processing device can appropriately generate information according to the constraint.

[0165] In addition, in the information processing device according to the embodiment, the generation unit generates a second graph having a smaller number of edges than the first graph, based on the constraint indicated by the constraint information.

[0166] In this way, the information processing device according to the embodiment generates, as the second information, a second graph having a smaller number of edges than the first graph based on the constraints indicated by the constraint information, thereby generating a graph that satisfies the constraints. Therefore, the information processing device can appropriately generate information according to the constraints.

[0167] In addition, in the information processing device according to the embodiment, the generation unit generates the first graph using the second graph.

[0168] In this way, the information processing device according to the embodiment generates the first graph using the second graph, thereby generating a graph using information that satisfies the constraints. Therefore, the information processing device can appropriately generate information according to the constraints.

[0169] In addition, in the information processing device according to the embodiment, the generation unit generates the first graph by using the second graph in the process of determining nodes that connect edges in the first graph.

[0170] In this way, the information processing device according to the embodiment generates the first graph by using the second graph in the process of determining nodes that connect edges in the first graph, thereby making it possible to generate a graph using a graph that satisfies the constraints. Therefore, the information processing device can appropriately generate information according to the constraints.

[0171] In addition, in the information processing device according to the embodiment, the generation unit generates the first graph by using the second graph in the process of extracting neighboring nodes located in the vicinity of one node.

[0172] In this way, the information processing device according to the embodiment generates a first graph by using the second graph in the process of extracting neighboring nodes located near one node, thereby generating a graph using a graph that satisfies the constraints. Therefore, the information processing device can appropriately generate information according to the constraints.

[0173] In addition, in the information processing device according to the embodiment, the generation unit generates the first graph by using the second graph in the search process.

[0174] In this way, the information processing device according to the embodiment uses the second graph in the search process to generate the first graph, thereby generating a graph using a graph that satisfies the constraints, and therefore the information processing device can appropriately generate information according to the constraints.

[0175] In addition, in the information processing device according to the embodiment, the generation unit generates the second graph by selecting one unselected object from among the multiple objects, adding one node corresponding to the selected object to the second graph, and performing a registration process that connects the one node with edges to some of the neighboring nodes of the one node extracted by a search process that searches the second graph.

[0176] In this way, the information processing device according to the embodiment can generate a graph that satisfies the constraints by connecting, with edges, some of the neighboring nodes of the one node extracted by the search process that searches the second graph to the one node, thereby generating the second graph. Therefore, the information processing device can appropriately generate information according to the constraints.

[0177] In addition, in the information processing device according to the embodiment, the generation unit generates the first graph by treating all neighboring nodes of one node extracted by a search process that searches the second graph as targets for connection by edges.

[0178] In this way, the information processing device according to the embodiment generates a first graph by treating all of the neighboring nodes of one node extracted by the search process for searching the second graph as targets for connection with edges, thereby making it possible to generate a graph using a graph that satisfies the constraints. As a result, the information processing device can appropriately generate information according to the constraints.

[0179] In addition, in the information processing device according to the embodiment, the generation unit generates the first graph by executing a registration process that connects, with edges, all of the nodes in the first graph that correspond to each of the neighboring nodes of a node extracted by a search process that searches the second graph, and the node in the first graph that corresponds to the node.

[0180] In this way, the information processing device according to the embodiment generates a first graph by connecting, with edges, all of the nodes in the first graph corresponding to each of the neighboring nodes of a node extracted by the search process for searching the second graph with the node in the first graph corresponding to the node, thereby making it possible to generate a graph using a graph that satisfies the constraints. As a result, the information processing device can appropriately generate information according to the constraints.

[0181] In addition, in the information processing device according to the embodiment, the generation unit generates the second graph by excluding some edges from among the edges to be added to the first graph.

[0182] In this way, the information processing device according to the embodiment can generate a graph that satisfies the constraints by generating a second graph by excluding some edges from among the edges added to the first graph, and therefore the information processing device can appropriately generate information according to the constraints.

[0183] In addition, in the information processing device according to the embodiment, the generation unit generates a second graph in which a plurality of nodes corresponding to each of a plurality of objects are connected by edges the number of which is smaller than the number of edges in the first graph.

[0184] In this way, the information processing device according to the embodiment can generate a graph that satisfies the constraints by generating a second graph in which multiple nodes corresponding to multiple objects are connected by fewer edges than the number of edges in the first graph, thereby enabling the information processing device to appropriately generate information according to the constraints.

[0185] In the information processing device according to the embodiment, the acquisition unit acquires constraint information indicating an upper limit of memory capacity when generating a graph, and the generation unit generates a second graph based on the upper limit of memory capacity indicated by the constraint information.

[0186] In this way, the information processing device according to the embodiment can generate a graph that satisfies the constraints by generating the second graph based on the upper limit of memory capacity indicated by the constraint information. Therefore, the information processing device can appropriately generate information according to the constraints.

[0187] In addition, in the information processing device according to the embodiment, the generation unit generates a second graph having a number of edges that satisfies the upper limit of the memory capacity indicated by the constraint information.

[0188] In this way, the information processing device according to the embodiment can generate a graph that satisfies the constraints by generating a second graph with a number of edges that satisfies the upper limit of the memory capacity indicated by the constraint information. Therefore, the information processing device can appropriately generate information according to the constraints.

[0189] In the information processing device according to the embodiment, the acquisition unit acquires constraint information indicating an upper limit of processing time for generating a graph, and the generation unit generates a second graph based on the upper limit of processing time indicated by the constraint information.

[0190] In this way, the information processing device according to the embodiment can generate a graph that satisfies the constraints by generating the second graph based on the upper limit of the processing time indicated by the constraint information. Therefore, the information processing device can appropriately generate information according to the constraints.

[0191] In addition, in the information processing device according to the embodiment, the generation unit generates a second graph having a number of edges that satisfies the upper limit of the processing time indicated by the constraint information.

[0192] In this way, the information processing device according to the embodiment can generate a graph that satisfies the constraints by generating a second graph with a number of edges that satisfies the upper limit of the processing time indicated by the constraint information. Therefore, the information processing device can appropriately generate information according to the constraints.

[0193] In the information processing device according to the embodiment, the acquisition unit acquires constraint information indicating a lower limit of search accuracy of the graph to be generated, and the generation unit generates the second graph based on the lower limit of search accuracy indicated by the constraint information.

[0194] In this way, the information processing device according to the embodiment can generate a graph that satisfies the constraints by generating the second graph based on the lower limit of the search accuracy indicated by the constraint information. Therefore, the information processing device can appropriately generate information according to the constraints.

[0195] In addition, in the information processing device according to the embodiment, the generation unit generates a second graph having a number of edges that satisfies the lower limit of the search accuracy indicated by the constraint information.

[0196] In this way, the information processing device according to the embodiment can generate a graph that satisfies the constraints by generating a second graph with a number of edges that satisfies the lower limit of the search accuracy indicated by the constraint information. Therefore, the information processing device can appropriately generate information according to the constraints.

[0197] [7. Hardware Configuration] The information processing device 100 according to the embodiment described above is realized by a computer 1000 having a configuration as shown in Fig. 11. Fig. 11 is a hardware configuration diagram showing an example of a computer that realizes the functions of the information processing 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.

[0198] 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.

[0199] 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.

[0200] 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.

[0201] 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.

[0202] For example, when the computer 1000 functions as the information processing device 100 according to the embodiment, the CPU 1100 of the computer 1000 executes programs loaded onto the RAM 1200 to realize 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.

[0203] 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.

[0204] [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.

[0205] 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.

[0206] 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.

[0207] 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]

[0208] 1. Information Processing Systems 100 Information processing device 121 Object information storage unit 122 Constraint information storage unit 123 Graph information storage unit 124 Starting point information storage unit 130 Control Unit 131 Acquisition Department 132 Search Section 133 Generation part 134 Provision Department 10 Terminal Equipment 50 Information provision device N Network

Claims

1. An acquisition unit that acquires object information indicating a plurality of objects to be searched and constraint information indicating constraints when generating a graph in which a plurality of nodes corresponding to each of the plurality of objects are connected by edges; A generation unit that generates a first graph in which a plurality of nodes corresponding to each of the plurality of objects are connected by edges and second information having a smaller data amount than the first graph based on the constraints indicated by the constraint information; An information processing apparatus comprising the above.

2. The generation unit generates a second graph smaller than the first graph as the second information based on the constraints indicated by the constraint information The information processing apparatus according to claim 1, characterized in that.

3. The generation unit generates the second graph having fewer edges than the first graph based on the constraints indicated by the constraint information The information processing apparatus according to claim 2, characterized in that.

4. The generation unit generates the first graph using the second graph The information processing apparatus according to claim 2, characterized in that.

5. The generation unit generates the first graph using the second graph in a process of determining nodes connecting edges in the first graph The information processing apparatus according to claim 4, characterized in that.

6. The generation unit generates the first graph using the second graph in a process of extracting neighboring nodes located in the vicinity of one node The information processing apparatus according to claim 4, characterized in that.

7. The generation unit generates the first graph using the second graph in a search process The information processing apparatus according to claim 4, characterized in that.

8. The generation unit selects one unselected object among the plurality of objects, adds one node corresponding to the selected one object to the second graph, and connects between some of the neighboring nodes of the one node extracted by a search process of searching the second graph and the one node by the edge. By executing the registration process, a second graph is generated The information processing apparatus according to claim 7, characterized in that.

9. The generation unit generates the first graph by making all of the neighboring nodes of the one node extracted by the search process of searching the second graph be connection targets by the edge The information processing apparatus according to claim 8, characterized in that.

10. The generation unit generates a first graph by executing a registration process of connecting, by the edge, all of the nodes in the first graph corresponding to each of the neighboring nodes of the one node extracted by a search process of searching for the second graph and the node in the first graph corresponding to the one node. The information processing apparatus according to claim 9, characterized in that.

11. The generation unit generates the second graph by removing some of the edges among the edges added to the first graph. The information processing apparatus according to claim 2, characterized in that.

12. The generation unit generates the second graph in which a plurality of nodes corresponding to each of the plurality of objects are connected by a number of edges smaller than the number of edges in the first graph. The information processing apparatus according to claim 2, characterized in that.

13. The acquisition unit acquires the constraint information indicating the upper limit of the memory capacity when generating a graph, The generation unit generates the second graph based on the upper limit of the memory capacity indicated by the constraint information. The information processing apparatus according to claim 2, characterized in that.

14. The generation unit generates the second graph having the number of edges that satisfies the upper limit of the memory capacity indicated by the constraint information. The information processing apparatus according to claim 13, characterized in that.

15. The acquisition unit acquires the constraint information indicating the upper limit of the processing time when generating a graph, The generation unit generates the second graph based on the upper limit of the processing time indicated by the constraint information. The information processing apparatus according to claim 2, characterized in that.

16. The generation unit generates the second graph having the number of edges that satisfies the upper limit of the processing time indicated by the constraint information. The information processing apparatus according to claim 15, characterized in that.

17. The acquisition unit acquires the constraint information indicating the lower limit of the search accuracy of the graph to be generated, The generation unit generates the second graph based on the lower limit of the search accuracy indicated by the constraint information. The information processing apparatus according to claim 2, characterized in that.

18. The generation unit generates the second graph having the number of edges that satisfies the lower limit of the search accuracy indicated by the constraint information. The information processing apparatus according to claim 17, characterized in that.

19. An information processing method executed by a computer, An acquisition step of acquiring object information indicating a plurality of objects to be searched and constraint information indicating constraints when generating a graph in which a plurality of nodes corresponding to each of the plurality of objects are connected by edges; A generation step of generating a first graph in which a plurality of nodes corresponding to each of the plurality of objects are connected by edges, and second information having a smaller data amount than the first graph based on the constraints indicated by the constraint information; An information processing method characterized by including the above.

20. An acquisition procedure of acquiring object information indicating a plurality of objects to be searched and constraint information indicating constraints when generating a graph in which a plurality of nodes corresponding to each of the plurality of objects are connected by edges; A generation procedure of generating a first graph in which a plurality of nodes corresponding to each of the plurality of objects are connected by edges, and second information having a smaller data amount than the first graph based on the constraints indicated by the constraint information; An information processing program characterized by causing a computer to execute the above.

Citation Information

Patent Citations

  • Information processing apparatus, information processing method, and information processing program

    JP2023027810A

  • Information processing device, information processing method, and information processing program

    JP7080803B2

  • Information processing device, information processing method, and information processing program

    JP7330756B2