WO2011001806A1 - グラフの類似度計算システム、方法及びプログラム - Google Patents

グラフの類似度計算システム、方法及びプログラム Download PDF

Info

Publication number
WO2011001806A1
WO2011001806A1 PCT/JP2010/059795 JP2010059795W WO2011001806A1 WO 2011001806 A1 WO2011001806 A1 WO 2011001806A1 JP 2010059795 W JP2010059795 W JP 2010059795W WO 2011001806 A1 WO2011001806 A1 WO 2011001806A1
Authority
WO
WIPO (PCT)
Prior art keywords
node
value
label
graph
graphs
Prior art date
Application number
PCT/JP2010/059795
Other languages
English (en)
French (fr)
Inventor
将平 比戸
久嗣 鹿島
Original Assignee
インターナショナル・ビジネス・マシーンズ・コーポレーション
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by インターナショナル・ビジネス・マシーンズ・コーポレーション filed Critical インターナショナル・ビジネス・マシーンズ・コーポレーション
Priority to CN201080010259.4A priority Critical patent/CN102341802B/zh
Priority to CA2757461A priority patent/CA2757461C/en
Priority to US13/377,445 priority patent/US8588531B2/en
Priority to EP10793976.1A priority patent/EP2442239A4/en
Priority to JP2011520851A priority patent/JP5306461B2/ja
Publication of WO2011001806A1 publication Critical patent/WO2011001806A1/ja
Priority to US14/039,805 priority patent/US9122771B2/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9024Graphs; Linked lists
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V30/00Character recognition; Recognising digital ink; Document-oriented image-based pattern recognition
    • G06V30/10Character recognition
    • G06V30/19Recognition using electronic means
    • G06V30/196Recognition using electronic means using sequential comparisons of the image signals with a plurality of references
    • G06V30/1983Syntactic or structural pattern recognition, e.g. symbolic string recognition
    • G06V30/1988Graph matching

Definitions

  • the present invention relates to a technique for calculating or evaluating the similarity of an object having a data structure represented as a graph on a computer.
  • a graph is a mathematical object consisting of vertices (also called nodes) with labels for identifying each other and edges (also called edges, branches, and links) that connect the vertices, and considering realistic objects For example, it is understood that a road map, a chemical formula, and the like are represented by a graph.
  • an intersection can be regarded as a node and a road can be regarded as an edge.
  • elements can be regarded as nodes and bonds between elements can be regarded as edges. Given this, it can be seen that the graph finds its application in a very wide range of genes, protein structures, electrical circuits, geography, architecture, etc.
  • a specific state of the SNS can be expressed in a graph by regarding each user of the SNS as a node and regarding a friendly relationship between the users as a node or the like.
  • the WWW link structure can also be represented by a graph.
  • a real object when expressed as a graph, it is a natural request to evaluate whether the two graphs match or are similar. For example, if it can be evaluated that the chemical formula graph of one chemical and the chemical formula graph of another chemical are similar, it can be estimated that the efficacy of the two chemicals is similar.
  • Japanese Patent Application Laid-Open No. 7-334366 has a hash table for storing hash values of all the subgraphs of the graph S, and has reached the subgraphs that have existed in the past. There is a description of storing a set of subgraphs of the reduction destination.
  • this technique gives a hash value recursively, it can be applied to a directed acyclic graph, but cannot be applied to a more general graph including a loop.
  • US Pat. No. 6,473,881 discloses a technique in which a transistor level design automation tool performs circuit design pattern matching through timing analysis, electrical rule check, noise analysis, and the like.
  • this technique uses circuit-specific properties such as key nodes and is difficult to extend to general graph comparison.
  • an object of the present invention is to provide a graph comparison technique that makes it possible to obtain the similarity between graphs having an extremely large number of nodes such as links of SNS and WWW in a reasonable calculation time.
  • graph data to be compared is expressed using a known data structure for graph expression, such as matrix expression and list expression, and stored on a storage device such as a hard disk of a computer.
  • Each node in the graph has an individual label, and the label is assumed to have discrete values.
  • the label has four types of adenine, thymine, guanine, and cytosine.
  • amino acids such as glycine, tryptophan, and isoleucine.
  • hydrogen, helium, Lithium, beryllium, boron, carbon, nitrogen, oxygen or less about 100 at most.
  • a unique value is assigned to the label of the node of the graph.
  • this value is a fixed length bit string.
  • the length of the bit string at this time is selected to be sufficiently larger than the number of digits sufficient to express the type of label. This is to reduce the possibility of hash collision described later.
  • the system of the present invention sequentially visits the nodes of the graph for each graph by using existing graph search techniques such as depth-first search and width-first search.
  • the system of the present invention calculates the bit string value by performing the calculation on the bit string label values of all the nodes adjacent to the node and the bit string label values of the nodes of the node.
  • the system of the present invention performs a hash calculation from the calculated bit string value and the bit string label value originally possessed by the node to calculate another bit string label value, which is used as the label value of the node.
  • the similarity can be obtained by calculating the ratio of the label value that matches another graph to the total number of nodes.
  • a slightly more complicated calculation method of similarity will be described.
  • one of a plurality of methods can be used as a method for calculating the label value of the own node from the label value of the adjacent node.
  • One method is to calculate the XOR of the value obtained by XORing the label values of all adjacent nodes and the value obtained by bit-rotating the label value of the own node, and setting it as the label value of the own node.
  • Another method sorts the label values of all adjacent nodes, and as a result, when the same label value appears continuously, it is represented by one label value, and the number of times it appears consecutively (referred to as a count value). to add.
  • the obtained label value is bit-rotated by the count value, the result of XORing all the results, and the XOR of the value obtained by bit-rotating the label value of its own node are calculated, and this is used as the label of its own node. Value.
  • the present invention can use various methods for calculating the label value of the own node from the label values of all adjacent nodes and the label value of the own node.
  • the similarity between graphs is calculated based on the label value obtained as a result of the calculation using the hash value of one node and the label value of the adjacent node as the new label value of the one node.
  • N the number of nodes in the graph
  • the graph similarity can be calculated at high speed with a calculation amount of the order of O (N 2 ) or less.
  • Other known graph similarity comparison techniques are in the exponential order or at least on the order of O (N 3 ), so that the present invention has a large speed-up effect, particularly when N is large.
  • FIG. 6 is a diagram showing a flowchart of processing for calculating a label value of a node of a graph according to the present invention. It is a figure which shows the change of the label value of the node of a graph according to a calculation step. It is a figure which shows the notional flowchart which shows the process which calculates the new label value of an own node from the label of an own node, and the label set of an adjacent node.
  • FIG. 1 there is shown a block diagram of computer hardware for realizing a system configuration and processing according to an embodiment of the present invention.
  • a CPU 104 a main memory (RAM) 106, a hard disk drive (HDD) 108, a keyboard 110, a mouse 112, and a display 114 are connected to the system path 102.
  • the CPU 104 is preferably based on a 32-bit or 64-bit architecture, for example, Intel Pentium (trademark) 4, Core (trademark) 2, Duo, Xeon (trademark), AMD Athlon (trademark). Etc. can be used.
  • the main memory 106 preferably has a capacity of 2 GB or more.
  • the hard disk drive 108 preferably has a capacity of, for example, 320 GB or more so that a large amount of graph data can be stored.
  • the hard disk drive 108 stores an operating system in advance, although not individually illustrated.
  • the operating system may be any compatible with the CPU 104, such as Linux (trademark), Microsoft Windows XP (trademark), Windows (trademark) 2000, Apple Computer Mac OS (trademark).
  • the hard disk drive 108 also stores program language processing systems such as C, C ++, C #, and Java (trademark). This programming language processor is used to create and maintain modules or tools for processing graph data, which will be described later.
  • the hard disk drive 108 may further include a text editor for writing source code for compiling with a program language processing system, and a development environment such as Eclipse (trademark).
  • a text editor for writing source code for compiling with a program language processing system
  • a development environment such as Eclipse (trademark).
  • the keyboard 110 and the mouse 112 are loaded from the operating system or the hard disk drive 108 into the main memory 106, and are used to start a program (not shown) displayed on the display 114 and to input characters. .
  • the display 114 is preferably a liquid crystal display, and an arbitrary resolution such as XGA (1024 ⁇ 768 resolution) or UXGA (1600 ⁇ 1200 resolution) can be used. Although not shown, the display 114 is used to display graph data to be processed and graph similarity.
  • FIG. 2 is a functional block diagram of the processing module according to the present invention. These modules are written in an existing programming language such as C, C ++, C #, Java (trademark), stored in the hard disk drive 108 in an executable binary format, and in response to the operation of the mouse 112 or the keyboard 110, It is called up to the main memory 106 and executed by the operation of an operating system (not shown).
  • C existing programming language
  • C # C #
  • Java trademark
  • the graph data creation module 202 converts a given graph into a computer readable data structure.
  • the following data structure is used as a graph g of the number of nodes n and the average number of adjacent nodes d.
  • g.nodelist List of length n representing node list
  • g.labellist List of length n representing node label list
  • g.labellistx a list of length n that has the same data structure as g.labellist and is used as a buffer for writing labels
  • g.adjacencymatrix the adjacency matrix of the graph. If there is a link between node i and node j, the matrix element (i, j) has 1; The size is n ⁇ n, but if you use a data structure called a sparse matrix that omits 0 elements, it will be n ⁇ d.
  • the label value assigned to the label is common to the two graphs.
  • the notation such as # 0101 represents a binary number.
  • the label value is preferably a fixed number of bits. This is because, as will be described later, this is more convenient for calculations such as bit rotation, XOR, and radix sort.
  • the configured graph data is loaded on the main memory 106 or stored in the hard disk 108. If the graph data is very large, the graph data may be first placed on the hard disk 108 and only the data necessary for the calculation may be loaded into the main memory.
  • the graph search module 206 sequentially searches the graph, visits all nodes of one graph, refers to the adjacent nodes of the node, calls the hash calculation module 208 with the adjacent nodes, and labels the nodes. Process to update the value.
  • FIG. 3 is a diagram showing a flowchart of processing of the graph search module 206.
  • the graph search module 206 determines whether all nodes of the graph have been visited. This decision is actually made based on whether the end of g.nodelist has been reached.
  • step 302 If it is determined in step 302 that all the nodes of the graph have not been visited, the graph search module 206 visits the next node according to g.nodelist in step 304. In the first stage of the graph search, in step 304, the head node is visited.
  • the graph search module 206 calls the module 208 to calculate a label value by hash using information on the adjacent node of the node currently visited.
  • the adjacent node is a node directly connected to the node via an edge.
  • Such an adjacency relationship can be examined by referring to a value recorded in g.adjacencymatrix.
  • the label value of the node and the label value of the adjacent node are used. These label values are obtained by referring to g.labellist. The calculation of the label value will be described in more detail later with reference to the flowcharts of FIGS.
  • the graph search module 206 updates the label value of the node with the calculated label value.
  • g.labellist may be directly overwritten, but more preferably, the update label is written in g.labellistx instead of in g.labellist. This is because when g.labellist is directly overwritten, the result changes depending on the node search order.
  • steps 304, 306 and 308 are executed until all nodes have been visited.
  • the label value rewriting process by visiting such a graph is preferably performed a plurality of times as shown in FIG.
  • the accuracy of graph comparison generally increases, the accuracy does not necessarily increase as the number of times increases, and there is an optimum number of times.
  • the graph similarity calculation module 210 calculates the similarity of two graphs based on the rewritten label value.
  • the simplest method for calculating the similarity is to calculate the coincidence ratio of the rewritten label value between the two graphs. Later, the calculation of the similarity of a more complicated graph will also be described.
  • FIG. 5 is a schematic flowchart for explaining the processing of the hash calculation module 208 with the adjacent node in more detail.
  • the self node label 502 is a label value corresponding to the currently staying node. Yes, obtained from g.labellist. For convenience, I will write thisNodeLabel.
  • the set of labels 504 adjacent to the currently staying node is obtained from g.labellist by referring to the values recorded in g.adjacencymatrix. Since there can be several in general, we will write NeighboringNodeLabels [].
  • NewLabel Hash (ThisNodeLabel, NeighboringNodeLabels [])
  • FIG. 6 is a diagram illustrating an embodiment of the process of FIG. That is, in the process of FIG. 6, in order to generate a new label 608 from the label 602 of the own node and the label set 604 of the adjacent node, the hash calculation block 606 is a block that rotates the label 602 of the own node by 1 bit. 610, a block 612 that XOR's the label set 604 of the adjacent node, and a block 614 that XOR's the output of block 610 and the output of block 612 as a new label 608.
  • FIG. 8 shows a specific calculation example of the processing of FIG.
  • the label of its own node is # 1000 and the labels of adjacent nodes are # 1110 and # 1100, respectively.
  • the output of the block 612 becomes # 0010 by the XOR of # 1110 and # 1100
  • the output of the block 610 becomes # 0001 by 1-bit rotation of # 1000
  • the output of the block 614 taking the XOR of them is # 0011. This becomes the new label of the own node.
  • FIG. 7 is a diagram showing still another embodiment of the process of FIG. That is, in the process of FIG. 7, in order to generate a new label 708 from the label 702 of the own node and the label set 704 of the adjacent node, the hash calculation block 706 is a block that rotates the label 702 of the own node by 1 bit.
  • a block 712 that sorts the label set 704 of the adjacent node, a block 714 that counts the overlap of the sorted output, a block 716 that adds the count value, a block 718 that rotates the bit by the count, and a bit rotated
  • the label is a fixed-width bit string, so the sort at block 712 advantageously uses a radix sort.
  • FIG. 9 shows a specific calculation example of the processing of FIG.
  • the label of its own node is # 1000 and the labels of adjacent nodes are # 0101, # 1100, and # 0101, respectively.
  • the sort outputs of the block 712 are # 0101, # 0101, and # 1100.
  • the count output of the block 714 is 2 for # 0101 and 1 for # 1100.
  • block 716 adds a count output to the original label value.
  • # 0101 is incremented by 2 to # 0111, and # 1100 is incremented by 1 and becomes # 1101.
  • # 0111 is # 1101 with 2-bit rotation
  • # 1101 is # 1011 with 1-bit rotation.
  • the block 720 calculates an XOR of # 1101 and # 1011 which are bit-rotated values, and outputs # 0110.
  • the block 710 outputs # 0001, which is 1-bit rotation of # 1000 of the label of its own node. Then, the block 722 calculates the XOR of # 0110 output from the block 720 and # 0001 output from the block 710, and the result # 0111 becomes the new label of its own node.
  • NeighboringNodeLabels [] may be sorted and then arranged and regarded as one number, and a remainder obtained by dividing by an appropriate prime number P1 may be NewLabel.
  • the graph data is stored.
  • a binary label value having a predetermined number of bits corresponding to the label is given to the nodes of the graph by the method described above.
  • r max is the number of repetitions for hash calculation. Depending on the case, r max is selected to be about 3 to 5.
  • I is an h ⁇ h unit matrix.
  • G i r NH (G i r-1 )
  • G i r represents a graph having the label value of the r-th result of the hash calculation, not G i to the power of r.
  • NH () is a function or subroutine that performs the processing of the flowchart of FIG.
  • the algorithm for performing the hash calculation with the adjacent node in this case is not limited to this. For example, the algorithm shown in FIG. 7 is assumed.
  • V i r is the node list of G i r .
  • V i SORT RADIX_SORT (V i r ) causes the components of V i r to be stored in V i SORT in a radix-sorted sequence based on the label values.
  • i is incremented by 1, and the flow returns to step 1012. That is, steps 1014, 1016, and 1018 are repeated until i reaches h.
  • step 1012 If it is determined at step 1012 that i exceeds h, then go to step 1020 where G r-1 is removed.
  • G r-1 the G r-1, G 1 r -1, ..., a generic symbol of G h r-1, short, G 1 r-1, ... , G h r-1.
  • step 1022 i is set to 1. This means that the loop for i begins.
  • COMPARE_LABELS () is a function that compares the labels of two graphs specified by the argument and returns the comparison result as a real number. The detailed processing contents will be described later with reference to the flowchart of FIG. To do. In the specific calculation, V i SORT and V j SORT calculated in step 1016 are used.
  • step 1034 j is incremented by 1 and the process returns to step 1028, that is, steps 1030, 1032 and 1034 are repeated until j reaches h.
  • step 1028 when it is determined in step 1028 that j exceeds h, i is incremented by 1 in step 1036 and the process goes to step 1024. If it is determined in step 1024 that i exceeds h, r is incremented by 1 in step 1038 and the processing returns to step 1006.
  • the similarity matrix K is calculated by the following formula, and the process is completed.
  • the ij component represents the similarity between the graph G i 0 and the graph G j 0 .
  • step 1102 V a SORT, a V b SORT the two sorted node list of the graph, the order of the V a SORT to n a, the order of V b SORT and n b.
  • step 1106 it is determined that i> n a or j> n b, go to step 1120, where, by the following equation, similarity k is calculated.
  • step 1122 the value of k thus calculated is returned. In practice, this value is used in step 1032 which is the caller of COMPARE_LABELS ().
  • the similarity between two nodes can be calculated by the present invention as follows. That is, the target nodes are A and B, respectively.
  • the proportion of the updated label of A and the updated label of B can be obtained and used as the similarity of A and B.

Landscapes

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

Abstract

 SNSやWWWのリンクなどの極めて多数のノードをもつグラフ間の類似度を、妥当な計算時間で求めること。 グラフのノードに、そのノードのラベルに一意的な値が付与される。好適には、この値は、固定長ビット列である。このときのビット列の長さは、ラベルの種類を表現するに足りる桁数よりも十分大きい数に選ばれる。1つのグラフにつき、深さ優先探索、幅優先探索などの既存のグラフ探索技法により、そのグラフのノードを順次訪問する。その際、この発明のシステムは、1つのノードにあるとき、そのノードに隣接する全てのノードのビット列ラベル値と、そのノードのノードのビット列ラベル値とに計算を施して、ビット列値を計算する。この発明のシステムは、その計算されたビット列値と、もともとそのノードがもっているビット列ラベル値からハッシュ計算を施して、別のビット列ラベル値を計算し、それを、そのノードのラベル値とする。こうして、1つのグラフの全てのノードを訪問し終わったとき、全てのノードのラベル値は、書き換えられていることになる。グラフの類似度を比較したい別のグラフについても同様の処理を行なうと、別のグラフでも、全てのノードのラベル値が、書き換えられていることになる。すると、1つのグラフにおいて、全ノード数に対する、別のグラフと一致するラベル値の割合を計算することにより、類似度を求めることができる。

Description

グラフの類似度計算システム、方法及びプログラム
 この発明は、コンピュータ上でグラフとして表現されたデータ構造の対象物の類似度を計算あるいは評価する技術に関するものである。
 グラフとは、互いに識別するためのラベルをもつ頂点(ノードとも呼ばれる)と、頂点を繋ぐ辺(エッジや、枝、リンクとも呼ばれる)からなる数学的対象であり、現実的な対象物を考慮すると、例えば、道路地図、化学式などが、グラフであらわされることが分かる。
 例えば、道路地図においては、交差点がノードであり、道がエッジであるとみなすことができる。化学式においては、元素がノードであり、元素間の結合がエッジであるとみなすことができる。このように考えると、グラフは、遺伝子、タンパク質構造、電気回路、地理学、建築学などの非常に広い範囲にその応用を見出すことが分かる。
 最近では、ソーシャル・ネットワーキング・サービス(SNS)にもグラフ構造が適用されつつある。すなわち、SNSの個々のユーザをノードとし、それらのユーザ間のと別の間の友好関係などをエッジとみなすことにより、SNSの特定の状態をグラフで表現することができる。同様の趣旨で、WWWのリンク構造も、グラフで表現することができる。
 このように、現実の対象をグラフとして表現したとき、2つのグラフが一致するかどうか、あるいは類似するかどうかを評価したい、ということは、自然に出てくる要望である。例えば、ある薬品の化学式のグラフと、別の薬品の化学式のグラフが類似していると評価できると、その2つの薬品の薬効は似ていると推定可能である。
 ところが、従来の研究によると、2つのグラフが同じかどうかを判別する問題は、多項式時間アルゴリズムが知られておらず、あるグラフが別のグラフに含まれるかどうかを判別するためのアルゴリズムも、NP完全である。
 そのようなアルゴリズムも、比較的少ない数のノードしかないグラフなら妥当な計算時間で解が得られるが、遺伝子配列を扱うバイオインフォマティックスでは、ノードの数が数千から数万、SNSでは数百万と、ナイーブなグラフ類似度計算技法が現実的な計算量で扱える範囲を大きく上回ってしまう。
 そこで、従来により、2つのグラフの同一性または類似度を高速で計算するための技法が提案されている。
 Thomas E. Portegys, School of Information Technology, Illinois State University, "General Graph Identification With Hashing"  http://www.itk.ilstu.edu/faculty/portegys/research/graph/graph-hash.pdfは、MD5ハッシングという技法によって、2つのグラフの同一性を高速に判定する技法を開示する。しかし、この技法では、グラフの同一性が判定できるのみで、類似度の計算には適用できない。
 特にそのグラフに関連するハッシュ作成については、特開平7-334366号公報に、グラフSの全ての部分グラフのハッシュ値を記憶するハッシュテーブルを持ち、過去に存在した部分グラフと現在到達しているそのリダクション先の部分グラフの組を記憶することの記載がある。しかし、この技法では、再帰的にアプローチでハッシュ値を与えるため、有向非巡回グラフには適用できるものの、ループを含むより一般的なグラフには適用できない。
 米国特許第6473881号は、トランジスタ・レベルの設計自動化ツールが、タイミング解析、電気的規則のチェック、ノイズの解析などを通じて、回路デザインのパターンマッチングを行なう技術を開示する。しかし、この技法は、キーノードなどという回路特有の性質を用いており、一般的なグラフ比較に拡張することは困難である。
特開平7-334366号公報 米国特許第6473881号
Thomas E. Portegys, School of Information Technology, Illinois State University, "General Graph Identification With Hashing"  http://www.itk.ilstu.edu/faculty/portegys/research/graph/graph-hash.pdf
 従って、この発明の目的は、SNSやWWWのリンクなどの極めて多数のノードをもつグラフ間の類似度を、妥当な計算時間で求めることを可能ならしめる、グラフ比較技法を提供することにある。
 上記の課題は、この発明により、極めて有利に解決される。まず前提として、比較すべきグラフのデータは、行列表現、リスト表現などの、グラフ表現のための公知データ構造を用いて表現され、コンピュータのハードディスクなどの記憶装置上に保存される。グラフの各ノードは、個々にラベルをもち、ラベルは離散的な値をもつと想定する。例えば、遺伝子であれば、ラベルは、アデニン、チミン、グアニン、シトシンの4種類であり、タンパク質であるなら、グリシン、トリプトファン、イソロイシンなど20種類のアミノ酸であり、化学式であれば、水素、ヘリウム、リチウム、ベリリウム、ホウ素、炭素、窒素、酸素以下、高々100種類程度である。
 この発明によれば先ず、グラフのノードに、そのノードのラベルに一意的な値が付与される。好適には、この値は、固定長ビット列である。このときのビット列の長さは、ラベルの種類を表現するに足りる桁数よりも十分大きい数に選ばれる。後述するハッシュ衝突の可能性を減らすためである。
 そのような準備の下、この発明のシステムは、1つのグラフにつき、深さ優先探索、幅優先探索などの既存のグラフ探索技法により、そのグラフのノードを順次訪問する。その際、この発明のシステムは、1つのノードにあるとき、そのノードに隣接する全てのノードのビット列ラベル値と、そのノードのノードのビット列ラベル値とに計算を施して、ビット列値を計算する。この発明のシステムは、その計算されたビット列値と、もともとそのノードがもっているビット列ラベル値からハッシュ計算を施して、別のビット列ラベル値を計算し、それを、そのノードのラベル値とする。
 こうして、1つのグラフの全てのノードを訪問し終わったとき、全てのノードのラベル値は、書き換えられていることになる。グラフの類似度を比較したい別のグラフについても同様の処理を行なうと、別のグラフでも、全てのノードのラベル値が、書き換えられていることになる。
 すると、例えば、1つのグラフにおいて、全ノード数に対する、別のグラフと一致するラベル値の割合を計算することにより、類似度を求めることができる。後の実施例では、もう少し複雑な類似度の計算方法が説明される。
 本発明によれば、隣接ノードのラベル値から、自ノードのラベル値を計算する方法として、複数の方法のうちの1つを使用することができる。
 1つの方法は、隣接ノード全てのラベル値をXORした値と、自ノードのラベル値をビット回転した値のXORを計算して、それを自ノードのラベル値とすることである。
 別の方法は、隣接ノード全てのラベル値をソートし、その結果同一のラベル値が連続して現れると、それらを1つのラベル値で代表させ、連続して現れる回数(カウント値と称する)を加算する。そうして得られたラベル値を、カウント値分だけビット回転させ、その結果全てをXORした値と、自ノードのラベル値をビット回転した値のXORを計算して、それを自ノードのラベル値とすることである。
 本発明は、これ以外にも、隣接ノード全てのラベル値と自ノードのラベル値から自ノードのラベル値を計算する様々な方法を使用することができる。
 この発明によれば、1つのノードとその隣接ノードのラベル値とのハッシュ値を以って、その1つのノードの新ラベル値とする計算の結果得られたラベル値に基づき、グラフの類似度を計算するようにしたことによって、グラフのノードの数をNとしたとき、O(N2)以下のオーダーの計算量で高速にグラフの類似度が計算できる、という効果が得られる。知られている他のグラフ類似度比較技法では、指数オーダーであったり、少なくともO(N3)程度なので、特にNが大きい場合に、この発明は、高速化の効果が大きい。
 また、隣接ノードのラベル値をきちんと反映させる計算であるので、結果の類似度の信頼性も高い。
本発明を実施するためのハードウェア構成のブロック図である。 本発明に係る機能論理ブロック図である。 本発明に従い、グラフのノードのラベル値を計算する処理のフローチャートを示す図である。 計算ステップに従う、グラフのノードのラベル値の変化を示す図である。 自ノードのラベルと、隣接ノードのラベル集合から、自ノードの新しいラベル値を計算する処理を示す概念的なフローチャートを示す図である。 自ノードのラベルと、隣接ノードのラベル集合から、自ノードの新しいラベル値を計算する一実施例の処理を示すフローチャートを示す図である。 自ノードのラベルと、隣接ノードのラベル集合から、自ノードの新しいラベル値を計算する別の実施例の処理を示すフローチャートを示す図である。 図6の具体的な処理を示す図である。 図7の具体的な処理を示す図である。 複数のグラフを一括で比較する処理のフローチャートを示す図である。 図10の処理で呼ばれる類似度比較ルーチンの処理のフローチャートを示す図である。
 以下、図面に基づき、この発明の実施例を説明する。特に断わらない限り、同一の参照番号は、図面を通して、同一の対象を指すものとする。尚、以下で説明するのは、本発明の一実施形態であり、この発明を、この実施例で説明する内容に限定する意図はないことを理解されたい。
 図1を参照すると、本発明の一実施例に係るシステム構成及び処理を実現するためのコンピュータ・ハードウェアのブロック図が示されている。図1において、システム・パス102には、CPU104と、主記憶(RAM)106と、ハードディスク・ドライブ(HDD)108と、キーボード110と、マウス112と、ディスプレイ114が接続されている。CPU104は、好適には、32ビットまたは64ビットのアーキテクチャに基づくものであり、例えば、インテル社のPentium(商標) 4、Core(商標)2 Duo、Xeon(商標)、AMD社のAthlon(商標)などを使用することができる。主記憶106は、好適には、2GB以上の容量をもつものである。ハードディスク・ドライブ108は、大量のグラフ・データを格納できるように、例えば、320GB以上の容量をもつものであることが望ましい。
 ハードディスク・ドライブ108には、個々に図示しないが、オペレーティング・システムが、予め格納されている。オペレーティング・システムは、Linux(商標)、マイクロソフト社のWindows XP(商標)、Windows(商標)2000、アップルコンピュータのMac OS(商標)などの、CPU104に適合する任意のものでよい。
 ハードディスク・ドライブ108にはまた、C、C++、C#、Java(商標)などのプログラム言語処理系も格納されている。このプログラム言語処理系は、後で説明する、グラフ・データ処理用のモジュールまたはツールを作成し、維持するために使用される。
 ハードディスク・ドライブ108にはさらに、プログラム言語処理系でコンパイルするためのソースコードを書くためのテキスト・エディタ、及び、Eclipse(商標)などの開発環境を含んでいてもよい。
 キーボード110及びマウス112は、オペレーティング・システムまたは、ハードディスク・ドライブ108から主記憶106にロードされ、ディスプレイ114に表示されたプログラム(図示しない)を起動したり、文字を打ち込んだりするために使用される。
 ディスプレイ114は、好適には、液晶ディスプレイであり、例えば、XGA(1024×768の解像度)、またはUXGA(1600×1200の解像度)などの任意の解像度のものを使用することができる。ディスプレイ114は、図示しないが、処理すべきグラフ・データや、グラフの類似度を表示するために使用される。
 図2は、本発明に係る処理モジュールの機能ブロック図である。これらのモジュールは、C、C++、C#、Java(商標)など既存のプログラム言語で書かれ、実行可能バイナリ形式でハードディスク・ドライブ108に格納され、マウス112またはキーボード110の操作に応答して、オペレーティング・システム(図示しない)の働きで、主記憶106に呼び出されて、実行される。
 グラフ・データ作成モジュール202は、所与のグラフを、コンピュータ可読なデータ構造に変換する。このとき、例えば、ノード数n、平均隣接ノード数dのグラフgとして、次のようなデータ構造を用いる。
g.nodelist:ノードリストを表す長さnのリスト
g.labellist:ノードラベルリストを表す長さnのリスト
g.labellistx:g.labellistと同じデータ構造で、ラベル書込み用バッファとして使用される、長さnのリスト
g.adjacencymatrix:グラフの隣接行列。ノードiとノードjにリンクがあれば行列の要素(i, j)は1、そうでなければ0を持つ。大きさはn × nになるが、0要素を省略するスパース行列というデータ構造を使えばn × dで済む。
 このとき、ノードの異なるラベルの種類をpとすると、p << 2mのようなmを選んで、ラベルをmビットのデータとする。このように、2mをpよりも十分大きくとる理由は、ラベルにおけるハッシュ衝突の可能性を減らすためである。
 そうして、例えば、2m-1 < P1 < 2mであるような素数P1と、P1よりも十分大きい素数P2を用意して、i番目のラベル値をLHiとすると、例えば、下記のような式で、
ラベルLi ( i = 1, .., p )の各々に、異なるmビットのラベル値を付与することができる。
for ( i = 1; i <= p; i++ )    {
 LHi = (P2 * i) % P1;
}
 ここで、%は、割算の余りを計算する演算子である。
 あるいは、これ以外の任意の乱数生成ルーチンを使用することもできる。
 グラフ・データ作成モジュール202は、このようにして決められたラベル値LHiを、グラフの各ノードに、そのラベルLiに応じて付与しつつ、グラフ・データを構成する。すなわち、グラフ・データ作成モジュール202は、図4(a)にあるようなグラフを、例えば深さ優先でグラフを辿りながら、g.nodelistを順次作成し、併せてそのラベル値LHiをg.labellistに記録しつつ、隣接関係をg.adjacencymatrixに記録していく。その結果、図4(b)にあるように、各ラベルにラベル値としてビット列が付与される。図4(b)の例では、A = #1000, B = #0101, C = #1100である。言うまでもなく、ラベルに対して付与するラベル値は、2つのグラフで共通である。なお、ここで#0101のような表記は、2進数をあらわすものとする。ラベル値は、好適には固定ビット数とする。というのは、後で説明するが、その方が、ビット回転、XOR、基数ソートなどの計算に好都合だからである。
 構成されたグラフ・データは、主記憶106上にロードされるか、または、ハードディスク108に、保存される。グラフ・データが非常に大きい場合、グラフ・データを先ずハードディスク108上に置き、計算に必要な箇所のデータだけを主記憶にロードするようにすることもできる。
 グラフ探索モジュール206は、グラフを順次探索して、1つのグラフの全てのノードを訪問し、そのノードの隣接ノードを参照して、隣接ノードとのハッシュ計算モジュール208を呼び出しつつ、そのノードのラベル値を更新する処理を行う。
 図3は、グラフ探索モジュール206の処理のフローチャートを示す図である。図3において、ステップ302では、グラフ探索モジュール206は、グラフのすべてのノードを訪問したかどうかの判断を行う。この判断は実際は、g.nodelistの末端に達したかどうかで行われる。
 もしステップ302で、まだグラフのすべてのノードを訪問していないと判断されると、ステップ304で、g.nodelistに従い、グラフ探索モジュール206は、次のノードを訪問する。グラフ探索の最初の段階では、ステップ304では、先頭のノードを訪問することになる。
 ステップ306では、グラフ探索モジュール206は、モジュール208を呼び出すことによって、今訪問している当該ノードの隣接ノードの情報を用いて、ハッシュによりラベル値の計算を行う。ここで隣接ノードとは、当該ノードにエッジを介して直接つながっているノードである。このような隣接関係は、g.adjacencymatrixに記録されている値を参照することによって、調べることができる。この計算には、当該ノードのラベル値と、隣接ノードのラベル値とが使用される。これらのラベル値は、g.labellistを参照することによって取得される。ラベル値の計算は、図5、図6及び図7のフローチャートを参照して、後でより詳細に説明する。
 ステップ308では、グラフ探索モジュール206は、そのように計算されたラベル値で、当該ノードのラベル値を更新する。このときg.labellistに直接上書きしてもよいが、より好適には、g.labellistにではなく、g.labellistxに更新ラベルが書き込まれる。これは、g.labellistに直接上書きすると、ノードの探索順序に依存して、結果が変わってしまうからである。
 次にステップ302での判断に戻り、全てのノードを訪問し終わるまで、ステップ304、306及び308が実行される。
 全てのノードを訪問し終わると、g.labellistxの全てのノードが書き換えられている。そこで、g.labellistが、g.labellistxで置換される。このようなグラフの訪問によるラベル値の書き換えは、比較すべき2つのグラフ各々について行われる。その様子は、図4(c)に模式的に示されている。
 このようなグラフの訪問によるラベル値の書き換え処理は、好適には、図4(d)などに示されるように、複数回行われる。それによって、グラフ比較の精度は一般的に高まるが、回数が増えるほど精度が高まるとは限らないで、自ずと最適な回数がある。
 図2に戻って、グラフ類似度計算モジュール210は、書き換えられたラベル値に基づき、2つのグラフの類似度を計算する。一番素朴な類似度の計算方法は、2つのグラフの間の書き換えられたラベル値の一致比率を計算するものである。後に、もう少し複雑なグラフの類似度の計算についても説明する。
 図5は、隣接ノードとのハッシュ計算モジュール208の処理をより詳細に説明する、概要フローチャートである。
 図3のフローチャートで、ノードを訪問していくときに、今滞在しているノードを自ノードと呼ぶことにすると、自ノードのラベル502とは、今滞在しているノードに対応するラベル値であり、g.labellistから取得される。それを便宜上、ThisNodeLabelと書くことにする。
 一方、今滞在しているノードに隣接するラベルの集合504は、g.adjacencymatrixに記録されている値を参照することによって、g.labellistから取得される。それは一般的に複数ありえるので、NeighboringNodeLabels[]と書くことにする。
 そして、ハッシュ関数を、Hash()とし、新しいラベル508をNewLabelとすると、
NewLabel = Hash(ThisNodeLabel,NeighboringNodeLabels[]) と計算される。
 このように計算されたNewLabelの値が、今滞在しているノードのラベル値として、g.labellistxに上書きされる。
 図6は、図5の処理の一実施例を示す図である。すなわち、図6の処理において、自ノードのラベル602と、隣接ノードのラベル集合604とから、新しいラベル608を生成するために、ハッシュ計算ブロック606は、自ノードのラベル602を1ビット回転するブロック610と、隣接ノードのラベル集合604をXORするブロック612と、ブロック610の出力とブロック612の出力を新しいラベル608としてXORするブロック614を有する。
 図8に、図6の処理の具体的な計算例を示す。図8において、自ノードのラベルが#1000、隣接ノードのラベルがそれぞれ、#1110と#1100であるとする。すると、ブロック612の出力は#1110と#1100のXORで#0010となり、一方、ブロック610の出力は、#1000の1ビット回転で#0001となり、それらのXORをとるブロック614の出力は#0011となって、これが自ノードの新ラベルとなる。
 図7は、図5の処理のさらに別の実施例を示す図である。すなわち、図7の処理において、自ノードのラベル702と、隣接ノードのラベル集合704とから、新しいラベル708を生成するために、ハッシュ計算ブロック706は、自ノードのラベル702を1ビット回転するブロック710と、隣接ノードのラベル集合704をソートするブロック712と、ソートされた出力の重複をカウントするブロック714と、カウント値を加算するブロック716と、カウント分ビット回転するブロック718と、ビット回転された出力をXORするブロック720と、ブロック710の出力とブロック720の出力を新しいラベル708としてXORするブロック722を有する。
 尚、好適な実施例では、ラベルは固定幅のビット列であるので、ブロック712でのソートは、基数(radix)ソートを使用するのが好都合である。
 図9に、図7の処理の具体的な計算例を示す。図9において、自ノードのラベルが#1000、隣接ノードのラベルがそれぞれ、#0101、#1100、#0101であるとする。すると、ブロック712のソート出力は、#0101、#0101、#1100となる。すると、#0101は2つ続いてあらわれるので、ブロック714のカウント出力は、#0101について2、#1100について1となる。
 次に、ブロック716が、元のラベルの値にカウント出力を加える。#0101には2が加えられて#0111、#1100には1が加えられて#1101になる。
 すると、ブロック718が、カウント出力分だけビット回転させる。#0111は2ビット回転で#1101となり、#1101は1ビット回転で#1011となる。
 次に、ブロック720が、ビット回転された値である#1101と#1011とのXORを計算し、#0110を出力する。
 一方、ブロック710が、自ノードのラベルの#1000の1ビット回転である、#0001を出力する。するとブロック722が、ブロック720から出力された#0110と、ブロック710から出力された#0001のXORを計算し、その結果である#0111が、自ノードの新ラベルとなる。
 尚、自ノードのラベル値をハッシュにより計算するためのアルゴリズムは、図6または図7に示すアルゴリズムに限定されず、妥当な計算量且つハッシュ衝突が起こりにくいものであれば、任意のハッシュ・アルゴリズムを使用することができる。
すなわち、ノードに隣接するラベルの集合をNeighboringNodeLabels[]とし、自ノードのラベルをThisNodeLabelとしたとき、
NewLabel = Hash(ThisNodeLabel,NeighboringNodeLabels[])のような引数をとる関数である。
 すると、NeighboringNodeLabels[]をソートしてから並べてそれを1つの数と見なし、適当な素数P1で割った余りをNewLabelとする方法を行ってもよい。図9の例だと、
NeighboringNodeLabels[]は、#0101, #1100, #0101からなるので、それらをソートして並べることにより、#010101011100
 よって、NewLabel = #010101011100 mod P1 と計算される。
 次に、図10及び図11のフローチャートを参照して、2以上の複数のグラフどうしの類似度を一度に比較する処理について説明する。この処理を行うためのモジュールは、図2のグラフ類似度計算モジュール210に含まれている。
 図10において、ステップ1002では、Γ = {G1 0,...,Gh 0}と、互いに類似度を比較すべきh個のグラフが用意され、主記憶106またはハードディスク・ドライブ108にそれらのグラフのデータが格納される。このとき、グラフのノードには、既に説明した方法により、ラベルに応じた、所定ビット数の2進数のラベル値が付与されている。
 h = |Γ|で、すなわち、グラフの個数である。rmaxは、ハッシュ計算のための繰り返し回数である。場合によるが、rmaxは、3から5程度に選ばれる。
 ステップ1004では、r = 1とセットされ、rに関するrmaxまでのループが開始される。
 ステップ1006では、r <= rmaxかどうかが判断され、もしそうなら、ステップ1008で、Kr = Iとセットされる。ここでIは、h×hの単位行列である。
 ステップ1010では、i = 1とセットされ、ここからiに関するループに入る。ステップ1012では、i <= hかどうかが判断され、もしそうなら、ステップ1014で、次の式が実行される。
i r = NH(Gi r-1)
 ここでGi rは、Giのr乗ではなく、ハッシュ計算のr回目の結果のラベル値をもつグラフを表す。また、NH()は、図3のフローチャートの処理を行う関数またはサブルーチンである。この場合の隣接ノードとのハッシュ計算を行うアルゴリズムは、これには限定されないが、例えば、図7に示すアルゴリズムであるとする。
 次のステップ1016でVi rとあるのは、Gi rのノード・リストである。
ステップ1016では、Vi SORT = RADIX_SORT(Vi r)によって、Vi rの成分が、ラベル値に基づき基数ソートされた並びでVi SORTに格納される。ステップ1018では、iが1だけ増分されて、ステップ1012に戻る。すなわち、iがhに達するまで、ステップ1014、1016、及び1018が繰り返される。
 ステップ1012で、iがhを超えたと判断されると、ステップ1020に行き、そこで、Gr-1が除去される。ここで、Gr-1とは、G1 r-1,...,Gh r-1の総称的な記号であり、要するに、G1 r-1,...,Gh r-1を保持していた主記憶の領域を開放する処理を行なう。
 次にステップ1022で、iが1にセットされる。これは、iに関するループが始まることを意味する。ステップ1024では、i <= hかどうかが判断され、もしそうなら、ステップ1026で、jが1にセットされる。これは、jに関するループが始まることを意味する。
 ステップ1028では、j <= hかどうかが判断される。もしそうなら、ステップ1030で、j < iであるかどうかが判断される。この判断は、次のステップ1032がiとjで対称であるため、重複処理を避けるために行なわれる。
 ステップ1030で、j < iと判断されると、ステップ1032に進み、そこで、
ij r = Kji r = COMPARE_LABELS(Gi r,Gj r)という計算がなされる。COMPARE_LABELS()は、その引数で指定した2つのグラフのラベルを比較して、その比較結果を実数で返す関数であり、その詳細な処理内容は、図11のフローチャートを参照して、後で説明する。また、その具体的計算で、ステップ1016で計算されたVi SORT、Vj SORTを使用する。
 ステップ1034では、jを1だけ増分してステップ1028に戻り、すなわち、jがhに達するまで、ステップ1030、1032及び1034を繰り返す。
 こうして、ステップ1028で、jがhを超えたと判断されると、ステップ1036でiを1だけ増分して、ステップ1024に行く。ステップ1024で、iがhを超えたと判断されると、ステップ1038でrを1だけ増分して、ステップ1006に戻る。
 ステップ1006で、rがrmaxを超えたと判断されると、下記の式で類似度行列Kが計算されて、処理が完了する。類似度行列Kは、そのij成分が、グラフGi 0と、グラフGj 0の類似度をあらわしている。
Figure JPOXMLDOC01-appb-M000001


 次に、図11のフローチャートを参照して、ステップ1032で使用される関数COMPARE_LABELS()の処理の内容を説明する。
 ステップ1102では、Va SORT、Vb SORTを2つのグラフのソートされたノード・リストとし、Va SORTの次数をna、Vb SORTの次数をnbとする。
 ステップ1104では、以下で使用される変数を、c = 1, i = 1, j = 1とセットする。
 ステップ1106では、i <= na且つj <= nbであるかどうかが判断され、もしそうなら、ステップ1108で、vi = Va SORT[i], vj = Va SORT[j]とセットされる。
 ステップ1110では、la(vi) = lb(vj)かどうかが判断される。la(vi)は例えば、Via SORTのi番目の成分のノードのラベル値を示す。
 もしla(vi) = lb(vj)であると判断されたなら、ステップ1112で、c = c + 1, i = i + 1, j = j + 1とそれぞれ増分されて、ステップ1106に戻る。
 ステップ1110で、la(vi) = lb(vj)でないと判断されると、ステップ1114に進み、そこで、la(vi) < lb(vj)かどうかが判断される。もしla(vi) < lb(vj)であるなら、ステップ1116でiが1だけ増分され、そうでなければ、ステップ1118でjが1だけ増分され、何れにしても、処理は、ステップ1106に戻る。
 ステップ1106で、i > naまたはj > nbと判断されると、ステップ1120に行き、そこで、次の式により、類似度kが計算される。
Figure JPOXMLDOC01-appb-M000002


 ステップ1122では、そのように計算されたkの値がリターンされる。実際上、この値は、COMPARE_LABELS()の呼び出し側である、ステップ1032で使用される。
 以上、本発明を実施の形態を用いて説明したが、上記実施の形態に、多様な変更または改良を加えることが可能であり、その様な変更または改良を加えた形態も本発明の技術的範囲に含まれ得ることが、この分野の当業者に明らかであろう。例えば、図5に示すラベル値のハッシュ計算として、図6あるいは図7に示す具体的な処理を示したが、これらはあくまでも実施例であり、妥当な計算量の任意のハッシュ関数を使用することができる。また、類似度計算のアルゴリズムとして、図11に示す処理も一実施例であり、この分野の当業者であるなら、2つのグラフの一致するラベル値の数に基づき、様々な変形例を思いつくことができるはずである。
 加えて、以下のように2つのノード間の類似度も、本発明によって計算することができる。すなわち、対象のノードをそれぞれA、Bとする。各ノードを含む2つの部分グラフを抽出して、本発明を適用することによってAの更新ラベルとBの更新ラベルの一致する割合を求め、それをAとBの類似度とすることができる。
202・・・グラフ・データ作成モジュール
204・・・グラフ・データ
206・・・グラフ探索モジュール
208・・・隣接ノードのハッシュ計算モジュール

Claims (18)

  1.  コンピュータの処理によって、各ノードに離散ラベルが付与された、2つのグラフの間の類似度を計算する方法であって、
     前記2つのグラフの各々に、所与のノードと、その隣接ノードに、異なる離散ラベルに異なる値が対応するように、ラベル値を付与するステップと、
     前記2のグラフにおいて、順次ノードを辿るステップと、
     前記ノードを辿る間に、訪問しているノードのラベル値と、該訪問しているノードに隣接しているノードのラベル値とのハッシュ計算により新たなラベル値を計算して、該新たなラベル値で、該訪問しているノードのラベル値を更新するステップと、
     前記2つのグラフのノードに付与されている、一致するラベル列の個数に基づき、前記2つのグラフの間の類似度を計算するステップを有する、
     方法。
  2.  前記ラベル値が、固定幅のビット列である、請求項1に記載の方法。
  3.  前記ハッシュ計算が、前記訪問しているノードのラベル値のビットシフトした値と、前記隣接しているノードのラベル値のXORした値とをXORして行われる、請求項2に記載の方法。
  4.  前記ハッシュ計算が、前記訪問しているノードのラベル値のビット回転した値と、前記隣接しているノードのラベル値をソートし、重複度をカウントし、カウント値を加算し、カウント値分ビット回転し、XORした値とをXORして行われる、請求項2に記載の方法。
  5.  前記ソートが、基数ソートである、請求項4に記載の方法。
  6.  前記2つのグラフのうちの1つのグラフが、所与のグラフの第1のノードを含む第1の部分グラフであり、前記2つのグラフのうちのもう1つのグラフが、該所与のグラフの第2のノードを含む第2の部分グラフであり、
     計算された前記2つのグラフの間の類似度が、該第1のノードと該第2のノードの間の類似度と見なされる、請求項1に記載の方法。
  7.  コンピュータの処理によって、各ノードに離散ラベルが付与された、2つのグラフの間の類似度を計算するシステムであって、
     前記2つのグラフの各々に、所与のノードと、その隣接ノードに、異なる離散ラベルに異なる値が対応するように、ラベル値を付与する手段と、
     前記2のグラフにおいて、順次ノードを辿る手段と、
     前記ノードを辿る間に、訪問しているノードのラベル値と、該訪問しているノードに隣接しているノードのラベル値とのハッシュ計算により新たなラベル値を計算して、該新たなラベル値で、該訪問しているノードのラベル値を更新する手段と、
     前記2つのグラフのノードに付与されている、一致するラベル列の個数に基づき、前記2つのグラフの間の類似度を計算する手段を有する、
     システム。
  8.  前記ラベル値が、固定幅のビット列である、請求項7に記載のシステム。
  9.  前記ハッシュ計算が、前記訪問しているノードのラベル値のビットシフトした値と、前記隣接しているノードのラベル値のXORした値とをXORして行われる、請求項8に記載のシステム。
  10.  前記ハッシュ計算が、前記訪問しているノードのラベル値のビット回転した値と、前記隣接しているノードのラベル値をソートし、重複度をカウントし、カウント値を加算し、カウント値分ビット回転し、XORした値とをXORして行われる、請求項8に記載のシステム。
  11.  前記ソートが、基数ソートである、請求項10に記載のシステム。
  12.  前記2つのグラフのうちの1つのグラフが、所与のグラフの第1のノードを含む第1の部分グラフであり、前記2つのグラフのうちのもう1つのグラフが、該所与のグラフの第2のノードを含む第2の部分グラフであり、
     計算された前記2つのグラフの間の類似度が、該第1のノードと該第2のノードの間の類似度と見なされる、請求項7に記載のシステム。
  13.  コンピュータの処理によって、各ノードに離散ラベルが付与された、2つのグラフの間の類似度を計算するプログラムであって、
     前記コンピュータに、
     前記2つのグラフの各々に、所与のノードと、その隣接ノードに、異なる離散ラベルに異なる値が対応するように、ラベル値を付与するステップと、
     前記2のグラフにおいて、順次ノードを辿るステップと、
     前記ノードを辿る間に、訪問しているノードのラベル値と、該訪問しているノードに隣接しているノードのラベル値とのハッシュ計算により新たなラベル値を計算して、該新たなラベル値で、該訪問しているノードのラベル値を更新するステップと、
     前記2つのグラフのノードに付与されている、一致するラベル列の個数に基づき、前記2つのグラフの間の類似度を計算するステップを実行させる、
     プログラム。
  14.  前記ラベル値が、固定幅のビット列である、請求項13に記載のプログラム。
  15.  前記ハッシュ計算が、前記訪問しているノードのラベル値のビットシフトした値と、前記隣接しているノードのラベル値のXORした値とをXORして行われる、請求項14に記載のプログラム。
  16.  前記ハッシュ計算が、前記訪問しているノードのラベル値のビット回転した値と、前記隣接しているノードのラベル値をソートし、重複度をカウントし、カウント値を加算し、カウント値分ビット回転し、XORした値とをXORして行われる、請求項14に記載のプログラム。
  17.  前記ソートが、基数ソートである、請求項16に記載のプログラム。
  18.  前記2つのグラフのうちの1つのグラフが、所与のグラフの第1のノードを含む第1の部分グラフであり、前記2つのグラフのうちのもう1つのグラフが、該所与のグラフの第2のノードを含む第2の部分グラフであり、
     計算された前記2つのグラフの間の類似度が、該第1のノードと該第2のノードの間の類似度と見なされる、請求項13に記載のプログラム。
PCT/JP2010/059795 2009-06-30 2010-06-09 グラフの類似度計算システム、方法及びプログラム WO2011001806A1 (ja)

Priority Applications (6)

Application Number Priority Date Filing Date Title
CN201080010259.4A CN102341802B (zh) 2009-06-30 2010-06-09 图的相似度计算系统和方法
CA2757461A CA2757461C (en) 2009-06-30 2010-06-09 Graph similarity calculation system, method and program
US13/377,445 US8588531B2 (en) 2009-06-30 2010-06-09 Graph similarity calculation system, method and program
EP10793976.1A EP2442239A4 (en) 2009-06-30 2010-06-09 SYSTEM, METHOD AND PROGRAM FOR CALCULATING DIAGRAM MOLECULARITIES
JP2011520851A JP5306461B2 (ja) 2009-06-30 2010-06-09 グラフの類似度計算システム、方法及びプログラム
US14/039,805 US9122771B2 (en) 2009-06-30 2013-09-27 Graph similarity calculation system, method and program

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2009-155060 2009-06-30
JP2009155060 2009-06-30

Related Child Applications (2)

Application Number Title Priority Date Filing Date
US13/377,445 A-371-Of-International US8588531B2 (en) 2009-06-30 2010-06-09 Graph similarity calculation system, method and program
US14/039,805 Continuation US9122771B2 (en) 2009-06-30 2013-09-27 Graph similarity calculation system, method and program

Publications (1)

Publication Number Publication Date
WO2011001806A1 true WO2011001806A1 (ja) 2011-01-06

Family

ID=43410885

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2010/059795 WO2011001806A1 (ja) 2009-06-30 2010-06-09 グラフの類似度計算システム、方法及びプログラム

Country Status (6)

Country Link
US (2) US8588531B2 (ja)
EP (1) EP2442239A4 (ja)
JP (1) JP5306461B2 (ja)
CN (1) CN102341802B (ja)
CA (1) CA2757461C (ja)
WO (1) WO2011001806A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9892532B2 (en) 2014-08-25 2018-02-13 Fujitsu Limited Apparatus and method for generating a shortest-path tree in a graph
JP2019144939A (ja) * 2018-02-22 2019-08-29 Kddi株式会社 情報処理装置、情報処理方法、及びプログラム

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8588531B2 (en) * 2009-06-30 2013-11-19 International Business Machines Corporation Graph similarity calculation system, method and program
US9805307B2 (en) 2012-04-24 2017-10-31 International Business Machines Corporation Determining soft graph correspondence between node sets based on feature representations
CN102750263B (zh) * 2012-05-31 2014-10-22 常州工学院 互联网超链接网络图数据的简化方法
BR102012024729B1 (pt) 2012-09-27 2020-05-19 Mahle Int Gmbh anel de controle de óleo de três peças para motores de combustão interna, elemento expansor e elemento anelar
CN106598970B (zh) * 2015-10-14 2020-04-24 阿里巴巴集团控股有限公司 一种标签确定方法、设备和系统
US10803053B2 (en) 2015-12-03 2020-10-13 Hewlett Packard Enterprise Development Lp Automatic selection of neighbor lists to be incrementally updated
US10410113B2 (en) * 2016-01-14 2019-09-10 Preferred Networks, Inc. Time series data adaptation and sensor fusion systems, methods, and apparatus
CN108073949A (zh) * 2017-12-28 2018-05-25 合肥学院 一种绘画相似度比对系统
US11853713B2 (en) 2018-04-17 2023-12-26 International Business Machines Corporation Graph similarity analytics
US11809986B2 (en) 2020-05-15 2023-11-07 International Business Machines Corporation Computing graph similarity via graph matching

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07334366A (ja) 1994-06-07 1995-12-22 Fujitsu Ltd グラフリダクション機構の最適化方法および装置
US6473881B1 (en) 2000-10-31 2002-10-29 International Business Machines Corporation Pattern-matching for transistor level netlists

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7376643B2 (en) * 2004-05-14 2008-05-20 Microsoft Corporation Method and system for determining similarity of objects based on heterogeneous relationships
US7472121B2 (en) * 2005-12-15 2008-12-30 International Business Machines Corporation Document comparison using multiple similarity measures
WO2008083447A1 (en) 2007-01-12 2008-07-17 Synetek Systems Pty Ltd Method and system of obtaining related information
US7788254B2 (en) * 2007-05-04 2010-08-31 Microsoft Corporation Web page analysis using multiple graphs
US8588531B2 (en) * 2009-06-30 2013-11-19 International Business Machines Corporation Graph similarity calculation system, method and program

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07334366A (ja) 1994-06-07 1995-12-22 Fujitsu Ltd グラフリダクション機構の最適化方法および装置
US6473881B1 (en) 2000-10-31 2002-10-29 International Business Machines Corporation Pattern-matching for transistor level netlists

Non-Patent Citations (5)

* Cited by examiner, † Cited by third party
Title
"Proc. of the Nineth IEEE International Conference on Data Mining (ICDM2009), [online], Edited by W. Wang et al. IEEE, December 6-9, 2009", 5 July 2010, article HIDO, SHOHEI ET AL.: "A Linear-Time Graph Kernel", pages: 179 - 188, XP031585332 *
See also references of EP2442239A4
SHIGEO ABE: "Introduction of Support Vector Machines for Pattern Classification-VI : Current Topics", SYSTEM/SEIGYO/JOHO, vol. 53, no. 5, 15 May 2009 (2009-05-15), pages 41 - 46, XP008150377 *
SHOHEI HIDO ET AL.: "A Fast Graph Kernel Using Neighborhood Hash", DAI 12 KAI INFORMATION- BASED INDUCTION SCIENCES (IBIS) WORKSHOP (IBIS 2009), 19 October 2009 (2009-10-19), XP008150380, Retrieved from the Internet <URL:http://ibis-workshop.org/2009/pdf-ippan/82.pdf> [retrieved on 20100705] *
TAKAHISA WADA ET AL.: "Bubun Kozo ni Motozuku Kozo Ruijisei o Mochiita Tokucho Chushutsu System to Sono Oyo", JOURNAL OF THE DBSJ, vol. 7, no. 1, 27 June 2008 (2008-06-27), pages 187 - 192, XP008150379 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9892532B2 (en) 2014-08-25 2018-02-13 Fujitsu Limited Apparatus and method for generating a shortest-path tree in a graph
JP2019144939A (ja) * 2018-02-22 2019-08-29 Kddi株式会社 情報処理装置、情報処理方法、及びプログラム

Also Published As

Publication number Publication date
CN102341802A (zh) 2012-02-01
EP2442239A4 (en) 2015-06-03
CA2757461A1 (en) 2011-01-06
JPWO2011001806A1 (ja) 2012-12-13
JP5306461B2 (ja) 2013-10-02
US20140032490A1 (en) 2014-01-30
US20120093417A1 (en) 2012-04-19
US9122771B2 (en) 2015-09-01
CN102341802B (zh) 2014-05-28
US8588531B2 (en) 2013-11-19
CA2757461C (en) 2023-05-16
EP2442239A1 (en) 2012-04-18

Similar Documents

Publication Publication Date Title
JP5306461B2 (ja) グラフの類似度計算システム、方法及びプログラム
JP5315291B2 (ja) グラフにおけるノードの間の類似度を計算するための方法、プログラム、およびシステム
Li et al. Fast and accurate long-read alignment with Burrows–Wheeler transform
Li et al. Fast and accurate short read alignment with Burrows–Wheeler transform
US8694979B2 (en) Efficient egonet computation in a weighted directed graph
Rasheed et al. A map-reduce framework for clustering metagenomes
Alanko et al. Buffering updates enables efficient dynamic de Bruijn graphs
Djukanovic et al. An A⁎ search algorithm for the constrained longest common subsequence problem
Aberer et al. Rapid forward-in-time simulation at the chromosome and genome level
Blum et al. Hybrid techniques based on solving reduced problem instances for a longest common subsequence problem
JP6367959B2 (ja) 部分文字列位置検出装置、部分文字列位置検出方法及びプログラム
CN107305522A (zh) 用于对应用程序的重复崩溃进行检测的装置和方法
Patra et al. Motif discovery in biological network using expansion tree
Alnafisah An Algorithmic Solution for Storing Big Data on the DNA Sequence
Aborot An Oracle design for Grover’s quantum search algorithm for solving the exact string matching problem
Balewski et al. Efficient Quantum Counting and Quantum Content-Addressable Memory for DNA similarity
US11915792B2 (en) Method and a system for profiling of metagenome
Wang et al. A distributed storage MLCS algorithm with time efficient upper bound and precise lower bound
JP4082615B2 (ja) 判定装置、判定方法、及びプログラム
US20230394141A1 (en) Indexing Software Packages and Detecting Malicious or Potentially Harmful Code using API-call N-Grams
Varma et al. Hardware acceleration of de novo genome assembly
Cardona et al. Path lengths in tree-child time consistent hybridization networks
Pei et al. Transition adjacency relation computation based on unfolding: Potentials and challenges
Sacomoto Efficient algorithms for de novo assembly of alternative splicing events from RNA-seq data
Qiu Algorithmic Foundations of Genome Graph Construction and Comparison

Legal Events

Date Code Title Description
WWE Wipo information: entry into national phase

Ref document number: 201080010259.4

Country of ref document: CN

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

Ref document number: 10793976

Country of ref document: EP

Kind code of ref document: A1

WWE Wipo information: entry into national phase

Ref document number: 7036/CHENP/2011

Country of ref document: IN

WWE Wipo information: entry into national phase

Ref document number: 2757461

Country of ref document: CA

WWE Wipo information: entry into national phase

Ref document number: 2011520851

Country of ref document: JP

WWE Wipo information: entry into national phase

Ref document number: 13377445

Country of ref document: US

NENP Non-entry into the national phase

Ref country code: DE

WWE Wipo information: entry into national phase

Ref document number: 2010793976

Country of ref document: EP