WO2019072063A1 - 随机游走、基于集群的随机游走方法、装置以及设备 - Google Patents

随机游走、基于集群的随机游走方法、装置以及设备 Download PDF

Info

Publication number
WO2019072063A1
WO2019072063A1 PCT/CN2018/104922 CN2018104922W WO2019072063A1 WO 2019072063 A1 WO2019072063 A1 WO 2019072063A1 CN 2018104922 W CN2018104922 W CN 2018104922W WO 2019072063 A1 WO2019072063 A1 WO 2019072063A1
Authority
WO
WIPO (PCT)
Prior art keywords
node
vector
identifier
index
index vector
Prior art date
Application number
PCT/CN2018/104922
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 EP18865577.3A priority Critical patent/EP3648039A4/en
Priority to SG11202000911TA priority patent/SG11202000911TA/en
Publication of WO2019072063A1 publication Critical patent/WO2019072063A1/zh
Priority to US16/736,673 priority patent/US10776334B2/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/382Payment protocols; Details thereof insuring higher security of transaction
    • 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
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2237Vectors, bitmaps or matrices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/284Relational databases
    • G06F16/285Clustering or classification
    • 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/906Clustering; Classification
    • 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/95Retrieval from the web
    • G06F16/951Indexing; Web crawling techniques

Definitions

  • the present specification relates to the field of computer software technology, and in particular, to a random walk, cluster-based random walk method, device and device.
  • each user acts as a node, and if there is a transfer relationship between the two users, there is an edge between the corresponding two nodes, and the edge may be undirected. It is also possible to define the direction according to the transfer direction; and so on, the graph data including multiple nodes and multiple edges can be obtained, and the graph calculation is performed based on the graph data to realize the wind control.
  • the random walk algorithm is a basic and important part of the graph calculation, which provides support for the upper layer complex algorithm.
  • a random walk algorithm is generally adopted: a node included in the graph data is randomly read in the database, and then a neighboring node of the node is randomly read in the database, and so on. Random walks in the graph data.
  • the embodiments of the present specification provide a random walk, cluster-based random walk method, device, and device to solve the following technical problem: a more efficient random walk scheme that can be applied to large-scale map data is needed.
  • the cluster acquires information of each node included in the graph data
  • a random sequence is generated based on the index vector and the element vector, the random sequence reflecting a random walk in the graph data.
  • the element in the index vector includes an accumulated value of degrees of one or more of the nodes, and an element in the element vector includes an identifier of a neighboring node of the node.
  • a cluster-based random walk device provided by the embodiment of the present specification, the device belongs to the cluster, and includes:
  • a first generating module configured to generate an index vector according to the information of each node, where an element in the index vector includes an accumulated value of one or more degrees of the node;
  • a second generation module configured to generate an element vector according to the index vector, where an element in the element vector includes an identifier of a neighboring node of the node;
  • the third generation module generates a random sequence according to the index vector and the element vector, and the random sequence reflects a random walk in the graph data.
  • Obtaining a module acquiring an index vector generated according to information of each node included in the graph data, and an element vector generated according to the index vector;
  • the element in the index vector includes an accumulated value of degrees of one or more of the nodes, and an element in the element vector includes an identifier of a neighboring node of the node.
  • a cluster-based random walk device provided by the embodiment of the present specification, the device belongs to the cluster, and includes:
  • At least one processor and,
  • the memory stores instructions executable by the at least one processor, the instructions being executed by the at least one processor to enable the at least one processor to:
  • the element in the element vector including an identifier of a neighboring node of the node
  • a random sequence is generated based on the index vector and the element vector, the random sequence reflecting a random walk in the graph data.
  • At least one processor and,
  • the memory stores instructions executable by the at least one processor, the instructions being executed by the at least one processor to enable the at least one processor to:
  • the element in the index vector includes an accumulated value of degrees of one or more of the nodes, and an element in the element vector includes an identifier of a neighboring node of the node.
  • the above at least one technical solution adopted by the embodiment of the present specification can achieve the following beneficial effects: it is advantageous to reduce access to the database of the original saved map data, and the index vector and the element vector do not need to depend on the database after being generated, and the index vector and the element vector can be used.
  • the scheme can be applied to large-scale graph data and is highly efficient, and the efficiency can be further improved in the case of implementing the scheme based on the cluster.
  • FIG. 1 is a schematic diagram of an overall architecture involved in an implementation scenario of the present specification
  • FIG. 2 is a schematic flowchart diagram of a cluster-based random walk method according to an embodiment of the present disclosure
  • FIG. 3 is a schematic flowchart of a cluster-based index vector generation process in an actual application scenario according to an embodiment of the present disclosure
  • FIG. 4 is a schematic diagram of a cluster-based element vector generation process in an actual application scenario according to an embodiment of the present disclosure
  • FIG. 5 is a schematic diagram of a cluster-based random sequence generation process in an actual application scenario according to an embodiment of the present disclosure
  • FIG. 6 is a schematic flowchart diagram of a random walk method according to an embodiment of the present disclosure.
  • FIG. 7 is a schematic structural diagram of a cluster-based random walk device corresponding to FIG. 2 according to an embodiment of the present disclosure
  • FIG. 8 is a schematic structural diagram of a random walk device corresponding to FIG. 6 according to an embodiment of the present specification.
  • Embodiments of the present specification provide a random walk, cluster-based random walk method, apparatus, and device.
  • the solution of this specification applies to both clusters and stand-alone machines.
  • the processing of large-scale graph data is more efficient under clusters because the tasks can be split, and then a plurality of machines in the cluster execute a part of the tasks assigned to them in parallel.
  • the following embodiments are mainly described based on a cluster scenario.
  • clusters involved in the scheme There may be one or more clusters involved in the scheme. For example, in Figure 1, two clusters are involved.
  • FIG. 1 is a schematic diagram of an overall architecture involved in an implementation scenario of the present specification.
  • the overall architecture there are mainly three parts: server cluster, worker cluster, and database.
  • the database saves the graph data for the cluster to read, and the server cluster cooperates with the working machine cluster to realize the random walk in the graph data according to the data read from the database.
  • the solution may involve a cluster, the cluster includes at least one dispatcher and a plurality of work machines; for example, the solution may also involve a work machine cluster and a server; etc.; the machines involved in the solution cooperate with each other to implement the map. Random walks in the data.
  • FIG. 2 is a schematic flowchart diagram of a cluster-based random walk method according to an embodiment of the present disclosure.
  • the steps in Figure 2 are performed by at least one machine (or a program on the machine) in the cluster, and the execution entities of the different steps may be different.
  • the process in Figure 2 includes the following steps:
  • S202 The cluster acquires information about each node included in the graph data.
  • the information of the node specifically refers to one or more kinds of information such as a degree value of the node, an identifier of a neighboring node of the node, and the like.
  • the information of each node may be acquired once, or may be acquired multiple times, and different types of information may be acquired each time; for the latter method, for example, the degree value of each node may be obtained first, and an index may be generated according to the same.
  • Vector and then obtain the identity of the adjacent nodes of each node to generate an element vector.
  • the original map data is stored in the database.
  • the information of each node needs to be read by accessing the database.
  • multiple machines in the cluster can separately read information of a part of the nodes that are not repeated. Further, multiple machines can read the database in parallel to quickly acquire information of the nodes.
  • information of a part of the nodes may be read from the database in parallel by each working machine in the working machine cluster, and the information of each node read by the working machine cluster is further synchronized to the server cluster processing.
  • S204 Generate an index vector according to the information of each node, where an element in the index vector includes an accumulated value of degrees of one or more of the nodes.
  • S206 Generate an element vector according to the index vector, and an element in the element vector includes an identifier of a neighboring node of the node.
  • each node corresponds to at least one element in the index vector and to at least one element in the element vector, respectively.
  • Each node has a certain order according to its specific information, taking the specific information as the identifier of the node as an example. Specifically, the number is used as the identifier of the node, and the order of each node is defined by the identifier size of each node. For example, if the identifier of the node is a non-negative integer and the count is started from 0, the identifier of the first node is 0, and the order is The identity of the second node is 1, and so on. The following embodiments are described based on the definitions in this example.
  • the index vector is generated according to the degree value of each node, wherein the degree value of the node is equal to the number of adjacent nodes of the node.
  • the element vector is obtained by inserting the identifier of the vector node of each node in the empty vector according to the element in the index vector.
  • the index vector it is possible to quickly index the accumulated value of the degree corresponding to any node (the sum of the degree values of the node and the node before the node), and then quickly index to any adjacent node of the arbitrary node according to the element vector.
  • the identification thus, facilitates efficient random walks in the graph data.
  • the various vectors mentioned are generally implemented based on arrays.
  • the array is preferably a dynamic array, thereby being able to conveniently adjust the number of elements in the vector according to changes in the graph data. Without having to regenerate the vector in full.
  • Arrays are examples of data structures for implementing vectors. They are not unique. For example, it is possible to implement the above vectors using other data structures such as linked lists.
  • S208 Generate a random sequence according to the index vector and the element vector, where the random sequence reflects a random walk in the graph data.
  • the random sequence is a sequence consisting of identifiers of multiple nodes, and the order of each identifier in the random sequence is a random walk sequence, and the maximum length of the random sequence is generally determined by a predetermined random walk step. .
  • step S208 can be performed multiple times independently of each other, thereby obtaining a plurality of mutually independent random sequences.
  • each working machine generates one or more random sequences according to an index vector and an element vector, respectively.
  • the method of FIG. 2 it is advantageous to reduce the access to the database of the original saved graph data, and the index vector and the element vector do not need to depend on the database after the generation, and the index node and the element vector can quickly index the adjacent nodes of the node, and the method can It is suitable for large-scale graph data and is highly efficient. Since the method is implemented based on clusters, it is also possible to further improve efficiency.
  • the embodiment of the present specification further provides some specific implementations of the method, and an extended solution.
  • the following uses the architecture in FIG. 1 as an example for description.
  • the cluster may include a server cluster and a working machine cluster.
  • the cluster obtains the information of each node included in the graph data, which may include:
  • the working machine cluster reads the degree value of each node included in the graph data from the database, wherein each working machine reads the degree value of a part of the nodes; each of the working machines respectively identifies the node according to the self-reading degree value, The identity of the neighboring node of the node is read from the database.
  • the working machine cluster includes the working machine 0, the working machine 1, and the working machine 2.
  • Each working machine reads the degree value of a part of the nodes from the database respectively; for example, the working machine 0 reads the degree values of the node 0 and the node 1, respectively, 1 2; the working machine 1 reads the degree values of the node 2 and the node 3, respectively, 3, 2; the working machine 2 reads the degree value of the node 4, which is 2.
  • each working machine reads part of the data, instead of the full amount of data, and requires a server cluster, or a dispatcher, or a designated device such as a single server to integrate the data read by each working machine. Processing, obtaining a full amount of data expressed in a predetermined format (such as a vector, etc.), thereby facilitating subsequent calculations.
  • the server cluster is integrated.
  • the generating an index vector according to the information of each node may include:
  • the working machine cluster synchronizes the degree values of the nodes to the server cluster; the server cluster generates a degree vector according to the identifier and the degree value of each node, and the elements in the degree vector include the node a degree value; the server cluster generates an index vector by performing an accumulation calculation according to the degree vector;
  • the element in the index vector is equal to: a sum of the corresponding element of the element in the degree vector and all elements before the corresponding element.
  • server cluster can synchronize the index vectors to each working machine for subsequent calculation.
  • FIG. 3 is a schematic flowchart of a cluster-based index vector generation process in an actual application scenario according to an embodiment of the present disclosure.
  • the data table in the database uses the identifier of the node as a primary key, and records the degree value of each node and the identifier of its neighboring node, wherein the neighboring node of node 0 is node 1, and the adjacent node of node 1 It is node 0, node 2, the neighboring nodes of node 2 are node 1, node 3, node 4, the neighboring nodes of node 3 are node 2, node 4, and the adjacent nodes of node 4 are node 2, node 3.
  • the working machines 0 to 2 preferably read the degree values of a part of the nodes from the database in parallel, and the read degree values are expressed in the order of the corresponding nodes.
  • each working machine obtains a part of the degree vector according to the degree value read by itself.
  • the first element defaults to 0 (for the convenience of subsequent calculation), and the subsequent elements can record the degree of one node according to the node order. value.
  • the degree vector is an example of a storage format of the degree value, and is not limited to the application.
  • the worker cluster synchronizes the read values to the server cluster for merging to obtain the degree vector: (0, 1, 2, 3, 2, 2).
  • the server cluster contains servers 0 to 2, and each server can also split the tasks to improve processing efficiency.
  • an index vector is generated by performing an accumulation calculation on elements in the degree vector.
  • the server cluster After generating the index vector, the server cluster synchronizes the index vectors to each worker.
  • the generating the element vector according to the index vector may specifically include:
  • Each of the working machines is indexed according to the index vector, and the part of the element vector is generated by performing an array element insertion operation corresponding to the identifier of the node of the node according to the identifier of the node to which the index is obtained;
  • the worker cluster synchronizes portions of the element vector to the server cluster; the server cluster generates the element vector based on portions of the element vector.
  • the elements in the element vector are arranged correspondingly based on the order of the elements in the index vector, and the specific arrangement may be various.
  • the identifiers of adjacent nodes of each node may be sequentially arranged as an element in the element vector; for example, the identifiers of adjacent nodes of each node may be stored in a linked list, and then each linked list is separately Arranged as an element in the element vector; and so on. This arrangement can be achieved by inserting an array element.
  • the following multi-level index can be realized and the index efficiency is high: from the identifier of a certain node to the corresponding element in the index vector, and then from the corresponding element in the index vector to the corresponding element in the element vector; the correspondence in the element vector
  • the element includes an identification of at least one neighboring node of the node to enable random walk from the node to the at least one neighboring node.
  • the element vector is also synchronized to each working machine, and each working machine can independently generate a random sequence according to the index vector and the element vector.
  • FIG. 4 is a schematic diagram of a cluster-based element vector generation process in an actual application scenario according to an embodiment of the present disclosure.
  • each working machine respectively reads the identifiers of the neighboring nodes of a part of the nodes, and the reading process may be performed together with the process of reading the degree values of the nodes, or may be performed after the index vectors are generated.
  • the node of the read degree value is node 0 and node 1, and correspondingly, the identifiers of the adjacent nodes of the two nodes are read, and the vector can be expressed as (1, 0, 2), that is, It is a part of the front of the element vector;
  • the nodes of the read value are node 2 and node 3, and correspondingly, the identifiers of the adjacent nodes of the two nodes are read, and the vector can be expressed as (1) , 3, 4, 2, 4), which is a part of the middle of the element vector;
  • the node of the read value is node 4, and correspondingly, the identifier of the adjacent node of the node is read again,
  • the vector can be expressed as (2,3), which is part of the element vector.
  • the worker cluster synchronizes all parts of the element vector to the server cluster for merging to get the element vector: (1,0,2,1,3,4,2,4,2,3); the server cluster then synchronizes the element vectors Give each work machine.
  • the generating a random sequence according to the index vector and the element vector may specifically include:
  • the working machine randomly determines an identifier in the identifier of each node as an identifier of the target node; performs indexing and calculation according to the identifier of the target node and the index vector, and obtains a degree value of the target node; Determining a non-negative integer smaller than the degree value of the target node, indicating the non-negative integer number of adjacent nodes of the target node; calculating the phase according to the non-negative integer and the element vector
  • the identifier of the neighboring node by repeating the iterative calculation of the neighboring node as the target node, a random sequence composed of the identifiers of the target nodes obtained in sequence is generated.
  • random walks are achieved through multi-level indexes.
  • the first level index is performed in the index vector to obtain the degree value of the node; and according to the degree value, a non-negative integer is randomly determined (for randomly selecting the node)
  • An adjacent node according to the non-negative integer, performs a second level index in the element vector to obtain an identifier of the neighboring node. Thereby, it is possible to randomly walk from the node to the adjacent node.
  • FIG. 5 is a schematic diagram of a cluster-based random sequence generation process in an actual application scenario according to an embodiment of the present disclosure.
  • the graph data includes a total of N nodes, and the identifier of the nth node is n, and n is counted from 0.
  • the random sequence is generated according to the index vector and the element vector, which may specifically include :
  • N 5
  • the identifiers of the plurality of nodes that pass through in sequence constitute a random sequence.
  • the number of random walk steps is set to 8 in advance, and the number of lots is 5. It is represented by a matrix.
  • the number of random walks is, for example, the number of columns of the matrix, and the number of rows is the number of rows of the matrix. Each row of the matrix can store a random sequence.
  • the random walk step defines the maximum length of a random sequence. When the random sequence reaches the maximum length, the next random sequence can be generated without relying on the random sequence.
  • the batch number defines the maximum number of random sequences generated by each work machine before the database write has been generated.
  • the work machine can generate multiple random sequences that have not been written by itself (represented as The corresponding matrix) is written to the database.
  • the work machine 2 has generated an unwritten random sequence that has reached the maximum number of 5, and the corresponding matrix can be written into the database.
  • the random sequence represents a random walk through the following nodes in sequence: node 3.
  • a threshold may also be preset to limit the maximum total number of random sequences generated by the entire working machine cluster. When the set threshold is reached, each working machine can stop generating a random sequence.
  • some working machines in the working machine cluster may be abnormal, resulting in the loss of the index vector and/or element vector obtained from the previous synchronization. For example, if the working machine will only store the vector in memory, the data in the memory will be lost after the machine is down. In this case, when these work machines return to normal, the missing vectors can be retrieved from the server cluster. This is illustrated by the working machine 1 in FIG.
  • the embodiment of the present specification further provides a schematic flowchart of a random walk method, as shown in FIG. 6.
  • the execution body of the process in FIG. 6 may be a single computing device or multiple computing devices, and the process includes the following steps:
  • S602 Acquire an index vector generated according to information of each node included in the graph data, and an element vector generated according to the index vector, where an element in the index vector includes an accumulated value of degrees of one or more of the nodes.
  • the element in the element vector includes an identification of a neighboring node of the node.
  • step S602 the index vector and the element vector are specifically generated by whom, and the application is not limited. Generally, as long as the map data has not changed, the index vector and the element vector that have been generated according to the graph data can be multiplexed all the time.
  • S604 Generate a random sequence according to the index vector and the element vector, where the random sequence reflects a random walk in the graph data.
  • the embodiment of the present specification further provides corresponding devices of the above methods, as shown in FIG. 7 and FIG. 8.
  • FIG. 7 is a schematic structural diagram of a cluster-based random walk device corresponding to FIG. 2 according to an embodiment of the present disclosure, where the device belongs to the cluster, and includes:
  • the obtaining module 701 is configured to obtain information about each node included in the graph data.
  • the first generation module 702 generates an index vector according to the information of each node, where an element in the index vector includes an accumulated value of one or more degrees of the node;
  • the second generation module 703 is configured to generate an element vector according to the index vector, where an element in the element vector includes an identifier of a neighboring node of the node;
  • the third generation module 704 generates a random sequence according to the index vector and the element vector, and the random sequence reflects a random walk in the graph data.
  • the cluster includes a server cluster and a working machine cluster
  • the acquiring module 701 acquires information about each node included in the graph data, and specifically includes:
  • the working machine cluster reads the degree value of each node included in the graph data from the database, wherein each working machine reads the degree value of a part of the nodes;
  • Each of the working machines reads the identifier of the neighboring node of the node from the database according to the identifier of the node of the self-reading degree value.
  • the first generating module 702 generates an index vector according to the information of each node, and specifically includes:
  • the working machine cluster synchronizes the degree values of the nodes to the server cluster
  • the element in the index vector is equal to: a sum of the corresponding element of the element in the degree vector and all elements before the corresponding element.
  • the second generating module 703 generates an element vector according to the index vector, and specifically includes:
  • Each of the working machines is indexed according to the index vector, and the part of the element vector is generated by inserting an identifier of the adjacent node of the node according to the identifier of the node to which the index is obtained;
  • the working machine cluster synchronizes portions of the element vector to the server cluster
  • the server cluster generates the element vector based on portions of the element vector.
  • the third generation module 704 synchronizes the index vector and the element vector to each working machine before generating a random sequence according to the index vector and the element vector.
  • the third generating module 704 generates a random sequence according to the index vector and the element vector, and specifically includes:
  • the working machine randomly determines an identifier in the identifier of each node as an identifier of the target node;
  • the graph data includes a total of N nodes, and the identifier of the nth node is n, and n starts counting from 0;
  • the third generation module 704 generates a random sequence according to the index vector and the element vector, and specifically includes:
  • the working machine randomly generates an integer belonging to [0, N-1] as the identifier of the target node, denoted as i;
  • adj[i,j] elem[idx[i]+j]
  • the identifier of the neighboring node is calculated, wherein adj[i,j] represents the jth neighboring node of the node identified as i Identification, elem represents the element vector;
  • the working machine generates a random sequence that is formed by the identifiers of the target nodes that are sequentially obtained, and specifically includes:
  • the third generating module 704 generates a random sequence, and specifically includes:
  • Each of the working machines generates a random sequence until the total number of generated random sequences reaches a set threshold.
  • the working machine is locally lost, the index vector and/or the element vector is lost, and the working machine is re-acquired from the server cluster.
  • FIG. 8 is a schematic structural diagram of a random walk device corresponding to FIG. 6 according to an embodiment of the present disclosure, the device includes:
  • the obtaining module 801 is configured to acquire an index vector generated according to information of each node included in the graph data, and an element vector generated according to the index vector;
  • the generating module 802 is configured to generate a random sequence according to the index vector and the element vector, where the random sequence reflects a random walk in the graph data;
  • the element in the index vector includes an accumulated value of degrees of one or more of the nodes, and an element in the element vector includes an identifier of a neighboring node of the node.
  • the embodiment of the present specification further provides a cluster-based random walk device corresponding to FIG. 2, the device belongs to the cluster, and includes:
  • At least one processor and,
  • the memory stores instructions executable by the at least one processor, the instructions being executed by the at least one processor to enable the at least one processor to:
  • the element in the element vector including an identifier of a neighboring node of the node
  • a random sequence is generated based on the index vector and the element vector, the random sequence reflecting a random walk in the graph data.
  • the embodiment of the present specification further provides a random walk device corresponding to FIG. 6, including:
  • At least one processor and,
  • the memory stores instructions executable by the at least one processor, the instructions being executed by the at least one processor to enable the at least one processor to:
  • the element in the index vector includes an accumulated value of degrees of one or more of the nodes, and an element in the element vector includes an identifier of a neighboring node of the node.
  • the embodiment of the present specification further provides a non-volatile computer storage medium corresponding to FIG. 2, which stores computer executable instructions, and the computer executable instructions are set as:
  • the element in the element vector including an identifier of a neighboring node of the node
  • a random sequence is generated based on the index vector and the element vector, the random sequence reflecting a random walk in the graph data.
  • the embodiment of the present specification further provides a non-volatile computer storage medium corresponding to FIG. 6, storing computer executable instructions, and the computer executable instructions are set as:
  • the element in the index vector includes an accumulated value of degrees of one or more of the nodes, and an element in the element vector includes an identifier of a neighboring node of the node.
  • the device, the device, the non-volatile computer storage medium and the method provided by the embodiments of the present specification are corresponding, and therefore, the device, the device, and the non-volatile computer storage medium also have similar beneficial technical effects as the corresponding method, since The beneficial technical effects of the method are described in detail, and therefore, the beneficial technical effects of the corresponding device, device, and non-volatile computer storage medium are not described herein.
  • PLD Programmable Logic Device
  • FPGA Field Programmable Gate Array
  • HDL Hardware Description Language
  • the controller can be implemented in any suitable manner, for example, the controller can take the form of, for example, a microprocessor or processor and a computer readable medium storing computer readable program code (eg, software or firmware) executable by the (micro)processor.
  • computer readable program code eg, software or firmware
  • examples of controllers include, but are not limited to, the following microcontrollers: ARC 625D, Atmel AT91SAM, The Microchip PIC18F26K20 and the Silicone Labs C8051F320, the memory controller can also be implemented as part of the memory's control logic.
  • the controller can be logically programmed by means of logic gates, switches, ASICs, programmable logic controllers, and embedding.
  • Such a controller can therefore be considered a hardware component, and the means for implementing various functions included therein can also be considered as a structure within the hardware component.
  • a device for implementing various functions can be considered as a software module that can be both a method of implementation and a structure within a hardware component.
  • the system, device, module or unit illustrated in the above embodiments may be implemented by a computer chip or an entity, or by a product having a certain function.
  • a typical implementation device is a computer.
  • the computer can be, for example, a personal computer, a laptop computer, a cellular phone, a camera phone, a smart phone, a personal digital assistant, a media player, a navigation device, an email device, a game console, a tablet computer, a wearable device, or A combination of any of these devices.
  • embodiments of the specification can be provided as a method, system, or computer program product.
  • embodiments of the present specification can take the form of an entirely hardware embodiment, an entirely software embodiment, or a combination of software and hardware.
  • embodiments of the present specification can take the form of a computer program product embodied on one or more computer usable storage media (including but not limited to disk storage, CD-ROM, optical storage, etc.) including computer usable program code.
  • the computer program instructions can also be stored in a computer readable memory that can direct a computer or other programmable data processing device to operate in a particular manner, such that the instructions stored in the computer readable memory produce an article of manufacture comprising the instruction device.
  • the apparatus implements the functions specified in one or more blocks of a flow or a flow and/or block diagram of the flowchart.
  • These computer program instructions can also be loaded onto a computer or other programmable data processing device such that a series of operational steps are performed on a computer or other programmable device to produce computer-implemented processing for execution on a computer or other programmable device.
  • the instructions provide steps for implementing the functions specified in one or more of the flow or in a block or blocks of a flow diagram.
  • a computing device includes one or more processors (CPUs), input/output interfaces, network interfaces, and memory.
  • processors CPUs
  • input/output interfaces network interfaces
  • memory volatile and non-volatile memory
  • the memory may include non-persistent memory, random access memory (RAM), and/or non-volatile memory in a computer readable medium, such as read only memory (ROM) or flash memory.
  • RAM random access memory
  • ROM read only memory
  • Memory is an example of a computer readable medium.
  • Computer readable media includes both permanent and non-persistent, removable and non-removable media.
  • Information storage can be implemented by any method or technology.
  • the information can be computer readable instructions, data structures, modules of programs, or other data.
  • Examples of computer storage media include, but are not limited to, phase change memory (PRAM), static random access memory (SRAM), dynamic random access memory (DRAM), other types of random access memory (RAM), read only memory. (ROM), electrically erasable programmable read only memory (EEPROM), flash memory or other memory technology, compact disk read only memory (CD-ROM), digital versatile disk (DVD) or other optical storage, Magnetic tape cartridges, magnetic tape storage or other magnetic storage devices or any other non-transportable media can be used to store information that can be accessed by a computing device.
  • computer readable media does not include temporary storage of computer readable media, such as modulated data signals and carrier waves.
  • program modules include routines, programs, objects, components, data structures, and the like that perform particular tasks or implement particular abstract data types.
  • the present specification can also be practiced in distributed computing environments where tasks are performed by remote processing devices that are connected through a communication network.
  • program modules can be located in both local and remote computer storage media including storage devices.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • General Engineering & Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • Software Systems (AREA)
  • Accounting & Taxation (AREA)
  • Computing Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Finance (AREA)
  • Strategic Management (AREA)
  • General Business, Economics & Management (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本说明书实施例公开了随机游走、基于集群的随机游走方法、装置以及设备,方案包括:获取图数据包含的各节点的信息,根据各节点的信息生成反映节点的度值的索引向量,并进一步地生成反映节点的相邻节点的标识的元素向量,根据索引向量和元素向量生成随机序列,实现在图数据中的随机游走;该方案可以既适用于集群也适用于单机。

Description

随机游走、基于集群的随机游走方法、装置以及设备 技术领域
本说明书涉及计算机软件技术领域,尤其涉及随机游走、基于集群的随机游走方法、装置以及设备。
背景技术
随着计算机和互联网技术的迅速发展,很多业务都可以在网上进行,图计算是处理社交方面的网上业务的一种常用手段。
例如,对于社交风控业务中的账户欺诈识别:每个用户分别作为一个节点,若两个用户之间存在转账关系,则对应的两个节点之间存在一条边,边可以是无向的,也可以是根据转账方向定义了方向的;以此类推,可以得到包含多个节点和多条边的图数据,进而基于图数据进行图计算以实现风控。
随机游走算法是图计算中比较基础和重要的一环,其为上层复杂算法提供支持。在现有技术中,一般采用这样的随机游走算法:在数据库中随机读取图数据包含的一个节点,再继续在该数据库中随机读取该节点的一个相邻节点,以此类推,实现在图数据中的随机游走。
基于现有技术,需要能够应用于大规模图数据的更为高效的随机游走方案。
发明内容
本说明书实施例提供随机游走、基于集群的随机游走方法、装置以及设备,用以解决如下技术问题:需要能够应用于大规模图数据的更为高效的随机游走方案。
为解决上述技术问题,本说明书实施例是这样实现的:
本说明书实施例提供的一种基于集群的随机游走方法,包括:
所述集群获取图数据包含的各节点的信息;
根据所述各节点的信息,生成索引向量,所述索引向量中的元素包括一个或者多个所述节点的度的累加值;
根据所述索引向量,生成元素向量,所述元素向量中的元素包括所述节点的相邻节 点的标识;
根据所述索引向量和所述元素向量,生成随机序列,所述随机序列反映在所述图数据中的随机游走。
本说明书实施例提供的一种随机游走方法,包括:
获取根据图数据包含的各节点的信息生成的索引向量,以及根据所述索引向量生成的元素向量;
根据所述索引向量和所述元素向量,生成随机序列,所述随机序列反映在所述图数据中的随机游走;
其中,所述索引向量中的元素包括一个或者多个所述节点的度的累加值,所述元素向量中的元素包括所述节点的相邻节点的标识。
本说明书实施例提供的一种基于集群的随机游走装置,所述装置属于所述集群,包括:
获取模块,获取图数据包含的各节点的信息;
第一生成模块,根据所述各节点的信息,生成索引向量,所述索引向量中的元素包括一个或者多个所述节点的度的累加值;
第二生成模块,根据所述索引向量,生成元素向量,所述元素向量中的元素包括所述节点的相邻节点的标识;
第三生成模块,根据所述索引向量和所述元素向量,生成随机序列,所述随机序列反映在所述图数据中的随机游走。
本说明书实施例提供的一种随机游走装置,包括:
获取模块,获取根据图数据包含的各节点的信息生成的索引向量,以及根据所述索引向量生成的元素向量;
生成模块,根据所述索引向量和所述元素向量,生成随机序列,所述随机序列反映在所述图数据中的随机游走;
其中,所述索引向量中的元素包括一个或者多个所述节点的度的累加值,所述元素向量中的元素包括所述节点的相邻节点的标识。
本说明书实施例提供的一种基于集群的随机游走设备,所述设备属于所述集群,包 括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够:
获取图数据包含的各节点的信息;
根据所述各节点的信息,生成索引向量,所述索引向量中的元素包括一个或者多个所述节点的度的累加值;
根据所述索引向量,生成元素向量,所述元素向量中的元素包括所述节点的相邻节点的标识;
根据所述索引向量和所述元素向量,生成随机序列,所述随机序列反映在所述图数据中的随机游走。
本说明书实施例提供的一种随机游走设备,包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够:
获取根据图数据包含的各节点的信息生成的索引向量,以及根据所述索引向量生成的元素向量;
根据所述索引向量和所述元素向量,生成随机序列,所述随机序列反映在所述图数据中的随机游走;
其中,所述索引向量中的元素包括一个或者多个所述节点的度的累加值,所述元素向量中的元素包括所述节点的相邻节点的标识。
本说明书实施例采用的上述至少一个技术方案能够达到以下有益效果:有利于减少对原始保存图数据的数据库的访问,索引向量和元素向量在生成后无需依赖该数据库,通过索引向量和元素向量能够快速索引节点的相邻节点,该方案能够适用于大规模图数据且效率较高,在基于集群实施该方案的情况下,还能够进一步地提高效率。
附图说明
为了更清楚地说明本说明书实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本说明书的方案在一种实际应用场景下涉及的一种整体架构示意图;
图2为本说明书实施例提供的一种基于集群的随机游走方法的流程示意图;
图3为本说明书实施例提供的一种实际应用场景下,基于集群的索引向量生成流程示意图;
图4为本说明书实施例提供的一种实际应用场景下,基于集群的元素向量生成流程示意图;
图5为本说明书实施例提供的一种实际应用场景下,基于集群的随机序列生成流程示意图;
图6为本说明书实施例提供的一种随机游走方法的流程示意图;
图7为本说明书实施例提供的对应于图2的一种基于集群的随机游走装置的结构示意图;
图8为本说明书实施例提供的对应于图6的一种随机游走装置的结构示意图。
具体实施方式
本说明书实施例提供随机游走、基于集群的随机游走方法、装置以及设备。
为了使本技术领域的人员更好地理解本说明书中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本说明书实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
本说明书的方案既适用于集群,也适用于单机。在集群下对于大规模图数据的处理效率更高,原因在于:可以拆分任务,进而由集群中的多个机器并行执行被分配给自己 的一部分任务。以下各实施例主要基于集群场景进行说明。
方案涉及的集群可以有一个或者多个,以图1为例,涉及了两个集群。
图1为本说明书的方案在一种实际应用场景下涉及的一种整体架构示意图。该整体架构中,主要涉及三部分:服务器集群、工作机集群、数据库。数据库保存有图数据,供集群读取,服务器集群与工作机集群相互配合,根据从数据库读取的数据,实现在图数据中的随机游走。
图1中的架构是示例性的,并非唯一。比如,方案可以涉及一个集群,该集群中包含至少一个调度机和多个工作机;再比如,方案也可以涉及一个工作机集群和一个服务器;等等;方案涉及的机器相互配合,实现在图数据中的随机游走。
下面对本说明书的方案进行详细说明。
图2为本说明书实施例提供的一种基于集群的随机游走方法的流程示意图。图2中各步骤由集群中的至少一个机器(或者机器上的程序)执行,不同步骤的执行主体可以不同。
图2中的流程包括以下步骤:
S202:所述集群获取图数据包含的各节点的信息。
在本说明书实施例中,节点的信息具体指:节点的度值、节点的相邻节点的标识等一种或者多种信息。各节点的信息可以是一次性获取的,也可以是分多次获取的,每次可以获取不同种类的信息;对于后一种方式,比如,可以先获取各节点的度值并据此生成索引向量,再获取各节点的相邻节点的标识以生成元素向量。
一般地,原始的图数据保存于数据库中,在这种情况下,需要通过访问数据库,读取得到各节点的信息。为了避免重复读取数据增加数据库的负担,集群中的多个机器可以分别读取不重复的一部分节点的信息,进一步地,多个机器可以并行读取数据库,以快速获取节点的信息。
例如,可以由工作机集群中的各工作机并行地、分别从数据库读取一部分节点的信息,工作机集群读取的各节点的信息进一步地同步至服务器集群处理。
S204:根据所述各节点的信息,生成索引向量,所述索引向量中的元素包括一个或者多个所述节点的度的累加值。
S206:根据所述索引向量,生成元素向量,所述元素向量中的元素包括所述节点的 相邻节点的标识。
在本说明书实施例中,每个节点分别对应于索引向量中的至少一个元素,以及对应于元素向量中的至少一个元素。
各节点依据其特定信息,具有一定的顺序,以特定信息是节点的标识为例。具体地,以数字作为节点的标识,用各节点的标识大小定义各节点的顺序,比如,假定节点的标识为非负整数,且从0开始计数,顺序最先的节点的标识为0、顺序第二的节点的标识为1,依次类推。以下各实施例基于该例中的定义进行说明。
在本说明书实施例中,索引向量根据各节点的度值生成,其中,节点的度值等于该节点的相邻节点的个数。元素向量根据索引向量中的元素,在空向量中插入各节点的向量节点的标识得到。
根据索引向量,能够快速索引到任意节点对应的度的累加值(该节点以及该节点之前的节点的度值之和),进而再根据元素向量,能够快速索引到该任意节点的任意相邻节点的标识,从而,有利于高效地在图数据中随机游走。
在本说明书实施例中,所提到的各种向量一般基于数组实现。为了更好地适应于图数据后续的可能变化(比如,节点增减、边增减等),所述数组优选地是动态数组,从而能够根据图数据的变化,便利地调整向量中的元素数量,而无需全量地重新生成向量。
数组是实现向量的一种数据结构示例,并非唯一,比如,利用链表等其他数据结构也可能实现上述向量。
S208:根据所述索引向量和所述元素向量,生成随机序列,所述随机序列反映在所述图数据中的随机游走。
在本说明书实施例中,随机序列为多个节点的标识构成的序列,各标识在该随机序列中的顺序即为随机游走顺序,随机序列的最大长度一般由预定的随机游走步数决定。
在得到索引向量和元素向量后,可以相互独立地多次执行步骤S208,进而得到多个相互独立的随机序列。比如,各工作机分别根据索引向量和元素向量,生成一个或者多个随机序列。
通过图2的方法,有利于减少对原始保存图数据的数据库的访问,索引向量和元素向量在生成后无需依赖该数据库,通过索引向量和元素向量能够快速索引节点的相邻节点,该方法能够适用于大规模图数据且效率较高,由于基于集群实施该方法,因此,还 能够进一步地提高效率。
基于图2的方法,本说明书实施例还提供了该方法的一些具体实施方案,以及扩展方案,下面以图1中的架构为例,进行说明。
在本说明书的实施例中,所述集群可以包括服务器集群和工作机集群,对于步骤S202,所述集群获取图数据包含的各节点的信息,具体可以包括:
所述工作机集群从数据库读取图数据包含的各节点的度值,其中,每个工作机读取一部分节点的度值;各所述工作机分别根据自己读取度值的节点的标识,从数据库读取所述节点的相邻节点的标识。
例如,假定有标识分别为0~4的5个节点,度值分别为1、2、3、2、2,保存于数据库中。工作机集群包括工作机0、工作机1、工作机2,每个工作机分别从数据库读取一部分节点的度值;比如,工作机0读取节点0和节点1的度值,分别为1、2;工作机1读取节点2和节点3的度值,分别为3、2;工作机2读取节点4的度值,为2。
在本说明书实施例中,每个工作机都读取到部分数据,而非全量的数据,需要服务器集群、或者调度机、或者单个服务器等指定的设备对各工作机读取到的数据进行整合处理,得到以预定格式(比如向量等)表示的全量的数据,从而便于后续计算。
假定由服务器集群整合,对于步骤S204,所述根据所述各节点的信息,生成索引向量,具体可以包括:
所述工作机集群将所述各节点的度值向所述服务器集群同步;所述服务器集群根据所述各节点的标识和度值,生成度向量,所述度向量中的元素包括所述节点的度值;所述服务器集群根据所述度向量,通过累加计算生成索引向量;
其中,所述索引向量中的元素等于:所述元素在所述度向量中的对应元素及该对应元素前全部元素之和。
进一步地,服务器集群可以将索引向量分别同步给各工作机,用于后续计算。
沿用上例,结合图3进行说明。图3为本说明书实施例提供的一种实际应用场景下,基于集群的索引向量生成流程示意图。
在图3中,数据库中的数据表以节点的标识作为主键,记录了各节点的度值及其相邻节点的标识,其中,节点0的相邻节点为节点1,节点1的相邻节点为节点0、节点2,节点2的相邻节点为节点1、节点3、节点4,节点3的相邻节点为节点2、节点4、节 点4的相邻节点为节点2、节点3。工作机0~2如前所述,优选地可以并行分别从数据库读取一部分节点的度值,读取的各度值是按照对应节点的顺序进行表示的。
每个工作机根据自己读取的度值,得到度向量的一部分,在度向量中,第1个元素默认为0(为了便于后续计算),之后的元素按照节点顺序分别可以记录一个节点的度值。需要说明的是,度向量是度值的一种存储格式示例,并非对本申请的限定。
工作机集群将读取的度值都同步至服务器集群进行合并,得到度向量:(0,1,2,3,2,2)。图3中假定服务器集群包含服务器0~2,各服务器也可以对任务进行拆分以提高处理效率。
进一步地,通过对度向量中的元素进行累加计算,生成索引向量。比如,索引向量的第0个元素等于度向量的第0个元素,即0;索引向量的第1个元素等于度向量的第0、1个元素之和,即0+1=1;索引向量的第2个元素等于度向量的第0、1、2个元素之和,即0+1+2=3;索引向量的第3个元素等于度向量的第0、1、2、3个元素之和,即0+1+2+3=6;以此类推,得到索引向量:(0,1,3,6,8,10)。
生成索引向量后,服务器集群将索引向量分别同步给各工作机。
上面对索引向量的生成进行了说明,下面进一步地对元素向量的生成进行说明。
在本说明书实施例中,对于步骤S206,所述根据所述索引向量,生成元素向量,具体可以包括:
各所述工作机分别根据所述索引向量进行索引,通过根据索引到的节点的标识,将所述节点的相邻节点的标识,对应地进行数组元素插入操作,生成元素向量的一部分;所述工作机集群将所述元素向量的各部分向所述服务器集群同步;所述服务器集群根据所述元素向量的各部分,生成所述元素向量。
可以看到,与度向量的生成类似,也是由各工作机获得元素向量的一部分,再同步给服务器集群进行合并,得到元素向量。
元素向量中的元素是基于索引向量中的元素顺序对应地进行排列的,具体的排列方式可以有多种。比如,可以依次将各节点的相邻节点的标识分别作为一个元素在元素向量中顺序排列;再比如,可以将每个节点的相邻节点的标识存储在一个链表中,再将每个链表分别作为一个元素在元素向量中顺序排列;等等。通过数组元素插入操作即可实现上述排列。
如此,能够实现如下的多级索引且索引效率较高:从某节点的标识至索引向量中的对应元素,再从索引向量中的对应元素至元素向量中的对应元素;该元素向量中的对应元素包括该节点的至少一个相邻节点的标识,从而实现从该节点至该至少一个相邻节点的随机游走。
进一步地,服务器集群在生成元素向量后,将元素向量也同步给各工作机,则各工作机可以分别独立地根据索引向量和元素向量,生成随机序列。
进一步地沿用图3的例子,结合图4说明。图4为本说明书实施例提供的一种实际应用场景下,基于集群的元素向量生成流程示意图。
在图4中,各工作机分别读取一部分节点的相邻节点的标识,该读取过程可以与读取节点的度值的过程一同执行,也可以在生成索引向量之后再执行。
对于工作机0,所读取度值的节点为节点0和节点1,相应地,再读取这两个节点的相邻节点的标识,以向量可表示为(1,0,2),即为元素向量前面的一部分;对于工作机1,所读取度值的节点为节点2和节点3,相应地,再读取这两个节点的相邻节点的标识,以向量可表示为(1,3,4,2,4),即为元素向量中间的一部分;对于工作机2,所读取度值的节点为节点4,相应地,再读取这个节点的相邻节点的标识,以向量可表示为(2,3),即为元素向量后面的一部分。
工作机集群将元素向量的各部分都同步至服务器集群进行合并,得到元素向量:(1,0,2,1,3,4,2,4,2,3);服务器集群再将元素向量同步给各工作机。
在本说明书实施例中,对于步骤S208,所述根据所述索引向量和所述元素向量,生成随机序列,具体可以包括:
所述工作机在所述各节点的标识中,随机确定一个标识,作为目标节点的标识;根据目标节点的标识和所述索引向量,进行索引并计算,得到所述目标节点的度值;随机确定一个小于所述目标节点的度值的非负整数,用于指示所述目标节点的第所述非负整数个相邻节点;根据所述非负整数和所述元素向量,计算得到该相邻节点的标识;通过将该相邻节点重新作为目标节点进行迭代计算,生成由依次得到的各目标节点的标识构成的随机序列。
前面已经提到,通过多级索引实现随机游走。在上一段中,根据随机确定的一个节点的标识,在索引向量中进行第一级索引,得到该节点的度值;再根据该度值,随机确定非负整数(用于随机选择该节点的一个相邻节点),根据该非负整数,在元素向 量中进行第二级索引,得到该相邻节点的标识。从而可以实现从该节点随机游走到该相邻节点。
进一步地沿用图3和图4的例子,结合图5说明。图5为本说明书实施例提供的一种实际应用场景下,基于集群的随机序列生成流程示意图。
假定图数据共包含N个节点,第n个所述节点的标识为n,n从0开始计数;对于步骤S208,所述根据所述索引向量和所述元素向量,生成随机序列,具体可以包括:
所述工作机随机生成一个属于[0,N-1]的整数,作为目标节点的标识,记作i;按照公式dgr[i]=idx[i+1]-idx[i],索引并计算得到所述目标节点的度值,记作D 0,其中,dgr[i]表示标识为i的节点的度值,idx表示所述索引向量;随机生成一个属于[0,D 0-1]的整数,记作j,用于指示所述目标节点的第j个相邻节点;按照公式adj[i,j]=elem[idx[i]+j],计算得到该相邻节点的标识,其中,adj[i,j]表示标识为i的节点的第j个相邻节点的标识,elem表示所述元素向量;通过将该相邻节点重新作为目标节点进行迭代计算,生成由依次得到的各目标节点的标识构成的随机序列。
在图5中,N=5,假定随机生成的属于[0,N-1=4]的整数为i=2,即目标节点为节点2,按照公式dgr[2]=idx[2+1]-idx[2]=6-3=3,即D 0;假定随机生成的属于[0,D 0-1=2]的整数为j=1,按照adj[2,1]=elem[idx[2]+1]=elem[3+1]=3,即目标节点的第1个相邻节点,为节点3。也即,能够实现从节点2随机游走到节点3,进而将节点3作为目标节点迭代计算,继续随机游走,如此,依次经过的多个节点的标识构成随机序列。
在图5中,预先设定随机游走步数为8,批数为5。用矩阵进行表示,随机游走步数比如为该矩阵的列数,批数为该矩阵的行数,该矩阵的每一行可以存储一个随机序列。
随机游走步数定义了一个随机序列的最大长度,每当随机序列达到该最大长度时,可以不依赖该随机序列而开始生成下一个随机序列。
批数定义了每个工作机在向数据库写入已生成前,生成随机序列的最大个数,到达该最大个数时,工作机可以将自己已生成未写入的多个随机序列(表示为对应的矩阵)写入数据库。比如,图5中工作机2当前已生成未写入的随机序列已经到达最大个 数5,则可以将对应的矩阵写入数据库。
以图5中工作机0生成的第一个随机序列(3,4,3,2,4,2,3,2)为例,该随机序列即表示依次经过下列节点的随机游走过程:节点3、节点4、节点3、节点2、节点4、节点2、节点3、节点2。
进一步地,还可以预先设定阈值,用于限定整个工作机集群生成的随机序列的最大总数量。当到达该设定阈值时,各工作机可以停止生成随机序列。
另外,在实际应用中,工作机集群中的某些工作机可能会出现异常,导致之前同步得到的索引向量和/或元素向量丢失。比如,若工作机将得到的向量只存储在内存中,则宕机后内存中的数据会丢失。在这种情况下,当这些工作机恢复正常时,可以从服务器集群重新获取丢失的向量。图5中通过工作机1示出了这种情况。
上面主要是基于集群场景,对本说明书的方案进行说明的,本说明书的方案也可以脱离集群场景。比如,基于同样的思路,本说明书实施例还提供了一种随机游走方法的流程示意图,如图6所示。
图6中的流程的执行主体可以是单一的计算设备,也可以是多个计算设备,该流程包括以下步骤:
S602:获取根据图数据包含的各节点的信息生成的索引向量,以及根据所述索引向量生成的元素向量,其中,所述索引向量中的元素包括一个或者多个所述节点的度的累加值,所述元素向量中的元素包括所述节点的相邻节点的标识。
在步骤S602中,索引向量和元素向量具体由谁生成,本申请并不做限定。一般地,只要图数据未发生变化,根据该图数据已生成的索引向量和元素向量可以一直复用。
S604:根据所述索引向量和所述元素向量,生成随机序列,所述随机序列反映在所述图数据中的随机游走。
基于同样的思路,本说明书实施例还提供了上面各方法的对应装置,如图7、图8所示。
图7为本说明书实施例提供的对应于图2的一种基于集群的随机游走装置的结构示意图,该装置属于所述集群,包括:
获取模块701,获取图数据包含的各节点的信息;
第一生成模块702,根据所述各节点的信息,生成索引向量,所述索引向量中的 元素包括一个或者多个所述节点的度的累加值;
第二生成模块703,根据所述索引向量,生成元素向量,所述元素向量中的元素包括所述节点的相邻节点的标识;
第三生成模块704,根据所述索引向量和所述元素向量,生成随机序列,所述随机序列反映在所述图数据中的随机游走。
可选地,所述集群包括服务器集群和工作机集群;
所述获取模块701获取图数据包含的各节点的信息,具体包括:
所述工作机集群从数据库读取图数据包含的各节点的度值,其中,每个工作机读取一部分节点的度值;
各所述工作机分别根据自己读取度值的节点的标识,从数据库读取所述节点的相邻节点的标识。
可选地,所述第一生成模块702根据所述各节点的信息,生成索引向量,具体包括:
所述工作机集群将所述各节点的度值向所述服务器集群同步;
所述服务器集群根据所述各节点的标识和度值,生成度向量,所述度向量中的元素包括所述节点的度值;
所述服务器集群根据所述度向量,通过累加计算生成索引向量;
其中,所述索引向量中的元素等于:所述元素在所述度向量中的对应元素及该对应元素前全部元素之和。
可选地,所述第二生成模块703根据所述索引向量,生成元素向量,具体包括:
各所述工作机分别根据所述索引向量进行索引,通过根据索引到的节点的标识,将所述节点的相邻节点的标识,对应地进行数组元素插入操作,生成元素向量的一部分;
所述工作机集群将所述元素向量的各部分向所述服务器集群同步;
所述服务器集群根据所述元素向量的各部分,生成所述元素向量。
可选地,所述第三生成模块704根据所述索引向量和所述元素向量,生成随机序列前,所述服务器集群将所述索引向量和所述元素向量向各所述工作机同步。
可选地,所述第三生成模块704根据所述索引向量和所述元素向量,生成随机 序列,具体包括:
所述工作机在所述各节点的标识中,随机确定一个标识,作为目标节点的标识;
根据目标节点的标识和所述索引向量,进行索引并计算,得到所述目标节点的度值;
随机确定一个小于所述目标节点的度值的非负整数,用于指示所述目标节点的第所述非负整数个相邻节点;
根据所述非负整数和所述元素向量,计算得到该相邻节点的标识;
通过将该相邻节点重新作为目标节点进行迭代计算,生成由依次得到的各目标节点的标识构成的随机序列。
可选地,所述图数据共包含N个节点,第n个所述节点的标识为n,n从0开始计数;
所述第三生成模块704根据所述索引向量和所述元素向量,生成随机序列,具体包括:
所述工作机随机生成一个属于[0,N-1]的整数,作为目标节点的标识,记作i;
按照公式dgr[i]=idx[i+1]-idx[i],索引并计算得到所述目标节点的度值,记作D 0,其中,dgr[i]表示标识为i的节点的度值,idx表示所述索引向量;
随机生成一个属于[0,D 0-1]的整数,记作j,用于指示所述目标节点的第j个相邻节点;
按照公式adj[i,j]=elem[idx[i]+j],计算得到该相邻节点的标识,其中,adj[i,j]表示标识为i的节点的第j个相邻节点的标识,elem表示所述元素向量;
通过将该相邻节点重新作为目标节点进行迭代计算,生成由依次得到的各目标节点的标识构成的随机序列。
可选地,所述工作机生成由依次得到的各目标节点的标识构成的随机序列,具体包括:
所述工作机当依次得到的各目标节点总数量达到预设的随机游走步数时,生成由所述依次得到的各目标节点的标识构成的随机序列。
可选地,所述第三生成模块704生成随机序列,具体包括:
各所述工作机分别生成随机序列,直至生成的随机序列总数量达到设定阈值。
可选地,所述工作机若本地已有的所述索引向量和/或所述元素向量丢失,则重新从所述服务器集群获取。
图8为本说明书实施例提供的对应于图6的一种随机游走装置的结构示意图,该装置包括:
获取模块801,获取根据图数据包含的各节点的信息生成的索引向量,以及根据所述索引向量生成的元素向量;
生成模块802,根据所述索引向量和所述元素向量,生成随机序列,所述随机序列反映在所述图数据中的随机游走;
其中,所述索引向量中的元素包括一个或者多个所述节点的度的累加值,所述元素向量中的元素包括所述节点的相邻节点的标识。
基于同样的思路,本说明书实施例还提供了对应于图2的一种基于集群的随机游走设备,该设备属于所述集群,包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够:
获取图数据包含的各节点的信息;
根据所述各节点的信息,生成索引向量,所述索引向量中的元素包括一个或者多个所述节点的度的累加值;
根据所述索引向量,生成元素向量,所述元素向量中的元素包括所述节点的相邻节点的标识;
根据所述索引向量和所述元素向量,生成随机序列,所述随机序列反映在所述图数据中的随机游走。
基于同样的思路,本说明书实施例还提供了对应于图6的一种随机游走设备,包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够:
获取根据图数据包含的各节点的信息生成的索引向量,以及根据所述索引向量生成的元素向量;
根据所述索引向量和所述元素向量,生成随机序列,所述随机序列反映在所述图数据中的随机游走;
其中,所述索引向量中的元素包括一个或者多个所述节点的度的累加值,所述元素向量中的元素包括所述节点的相邻节点的标识。
基于同样的思路,本说明书实施例还提供了对应于图2的一种非易失性计算机存储介质,存储有计算机可执行指令,所述计算机可执行指令设置为:
获取图数据包含的各节点的信息;
根据所述各节点的信息,生成索引向量,所述索引向量中的元素包括一个或者多个所述节点的度的累加值;
根据所述索引向量,生成元素向量,所述元素向量中的元素包括所述节点的相邻节点的标识;
根据所述索引向量和所述元素向量,生成随机序列,所述随机序列反映在所述图数据中的随机游走。
基于同样的思路,本说明书实施例还提供了对应于图6的一种非易失性计算机存储介质,存储有计算机可执行指令,所述计算机可执行指令设置为:
获取根据图数据包含的各节点的信息生成的索引向量,以及根据所述索引向量生成的元素向量;
根据所述索引向量和所述元素向量,生成随机序列,所述随机序列反映在所述图数据中的随机游走;
其中,所述索引向量中的元素包括一个或者多个所述节点的度的累加值,所述元素向量中的元素包括所述节点的相邻节点的标识。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置、设备、非易失性计算机存储介质实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本说明书实施例提供的装置、设备、非易失性计算机存储介质与方法是对应的,因此,装置、设备、非易失性计算机存储介质也具有与对应方法类似的有益技术效果,由于上面已经对方法的有益技术效果进行了详细说明,因此,这里不再赘述对应装置、设备、非易失性计算机存储介质的有益技术效果。
在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(Programmable Logic Device,PLD)(例如现场可编程门阵列(Field Programmable Gate Array,FPGA))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字系统“集成”在一片PLD上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logic compiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(Hardware Description Language,HDL),而HDL也并非仅有一种,而是有许多种,如ABEL(Advanced Boolean Expression Language)、AHDL(Altera Hardware Description Language)、Confluence、CUPL(Cornell University Programming Language)、HDCal、JHDL(Java Hardware Description Language)、Lava、Lola、MyHDL、PALASM、RHDL(Ruby Hardware Description Language)等,目前最普遍使用的是VHDL(Very-High-Speed Integrated Circuit Hardware Description Language) 与Verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:ARC 625D、Atmel AT91SAM、Microchip PIC18F26K20以及Silicone Labs C8051F320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本说明书时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本领域内的技术人员应明白,本说明书实施例可提供为方法、系统、或计算机程序产品。因此,本说明书实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本说明书实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本说明书是参照根据本说明书实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可 提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备 所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本说明书可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本说明书,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本说明书实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。

Claims (24)

  1. 一种基于集群的随机游走方法,包括:
    所述集群获取图数据包含的各节点的信息;
    根据所述各节点的信息,生成索引向量,所述索引向量中的元素包括一个或者多个所述节点的度的累加值;
    根据所述索引向量,生成元素向量,所述元素向量中的元素包括所述节点的相邻节点的标识;
    根据所述索引向量和所述元素向量,生成随机序列,所述随机序列反映在所述图数据中的随机游走。
  2. 如权利要求1所述的方法,所述集群包括服务器集群和工作机集群;
    所述集群获取图数据包含的各节点的信息,具体包括:
    所述工作机集群从数据库读取图数据包含的各节点的度值,其中,每个工作机读取一部分节点的度值;
    各所述工作机分别根据自己读取度值的节点的标识,从数据库读取所述节点的相邻节点的标识。
  3. 如权利要求2所述的方法,所述根据所述各节点的信息,生成索引向量,具体包括:
    所述工作机集群将所述各节点的度值向所述服务器集群同步;
    所述服务器集群根据所述各节点的标识和度值,生成度向量,所述度向量中的元素包括所述节点的度值;
    所述服务器集群根据所述度向量,通过累加计算生成索引向量;
    其中,所述索引向量中的元素等于:所述元素在所述度向量中的对应元素及该对应元素前全部元素之和。
  4. 如权利要求3所述的方法,所述根据所述索引向量,生成元素向量,具体包括:
    各所述工作机分别根据所述索引向量进行索引,通过根据索引到的节点的标识,将所述节点的相邻节点的标识,对应地进行数组元素插入操作,生成元素向量的一部分;
    所述工作机集群将所述元素向量的各部分向所述服务器集群同步;
    所述服务器集群根据所述元素向量的各部分,生成所述元素向量。
  5. 如权利要求4所述的方法,所述根据所述索引向量和所述元素向量,生成随机序列前,所述方法还包括:
    所述服务器集群将所述索引向量和所述元素向量向各所述工作机同步。
  6. 如权利要求2所述的方法,所述根据所述索引向量和所述元素向量,生成随机序列,具体包括:
    所述工作机在所述各节点的标识中,随机确定一个标识,作为目标节点的标识;
    根据目标节点的标识和所述索引向量,进行索引并计算,得到所述目标节点的度值;
    随机确定一个小于所述目标节点的度值的非负整数,用于指示所述目标节点的第所述非负整数个相邻节点;
    根据所述非负整数和所述元素向量,计算得到该相邻节点的标识;
    通过将该相邻节点重新作为目标节点进行迭代计算,生成由依次得到的各目标节点的标识构成的随机序列。
  7. 如权利要求2所述的方法,所述图数据共包含N个节点,第n个所述节点的标识为n,n从0开始计数;
    所述根据所述索引向量和所述元素向量,生成随机序列,具体包括:
    所述工作机随机生成一个属于[0,N-1]的整数,作为目标节点的标识,记作i;
    按照公式dgr[i]=idx[i+1]-idx[i],索引并计算得到所述目标节点的度值,记作D 0,其中,dgr[i]表示标识为i的节点的度值,idx表示所述索引向量;
    随机生成一个属于[0,D 0-1]的整数,记作j,用于指示所述目标节点的第j个相邻节点;
    按照公式adj[i,j]=elem[idx[i]+j],计算得到该相邻节点的标识,其中,adj[i,j]表示标识为i的节点的第j个相邻节点的标识,elem表示所述元素向量;
    通过将该相邻节点重新作为目标节点进行迭代计算,生成由依次得到的各目标节点的标识构成的随机序列。
  8. 如权利要求6所述的方法,所述生成由依次得到的各目标节点的标识构成的随机序列,具体包括:
    当依次得到的各目标节点总数量达到预设的随机游走步数时,生成由所述依次得到的各目标节点的标识构成的随机序列。
  9. 如权利要求2所述的方法,所述生成随机序列,具体包括:
    各所述工作机分别生成随机序列,直至生成的随机序列总数量达到设定阈值。
  10. 如权利要求6所述的方法,所述方法还包括:
    所述工作机若本地已有的所述索引向量和/或所述元素向量丢失,则重新从所述服务器集群获取。
  11. 一种随机游走方法,包括:
    获取根据图数据包含的各节点的信息生成的索引向量,以及根据所述索引向量生成的元素向量;
    根据所述索引向量和所述元素向量,生成随机序列,所述随机序列反映在所述图数据中的随机游走;
    其中,所述索引向量中的元素包括一个或者多个所述节点的度的累加值,所述元素向量中的元素包括所述节点的相邻节点的标识。
  12. 一种基于集群的随机游走装置,所述装置属于所述集群,包括:
    获取模块,获取图数据包含的各节点的信息;
    第一生成模块,根据所述各节点的信息,生成索引向量,所述索引向量中的元素包括一个或者多个所述节点的度的累加值;
    第二生成模块,根据所述索引向量,生成元素向量,所述元素向量中的元素包括所述节点的相邻节点的标识;
    第三生成模块,根据所述索引向量和所述元素向量,生成随机序列,所述随机序列反映在所述图数据中的随机游走。
  13. 如权利要求12所述的装置,所述集群包括服务器集群和工作机集群;
    所述获取模块获取图数据包含的各节点的信息,具体包括:
    所述工作机集群从数据库读取图数据包含的各节点的度值,其中,每个工作机读取一部分节点的度值;
    各所述工作机分别根据自己读取度值的节点的标识,从数据库读取所述节点的相邻节点的标识。
  14. 如权利要求13所述的装置,所述第一生成模块根据所述各节点的信息,生成索引向量,具体包括:
    所述工作机集群将所述各节点的度值向所述服务器集群同步;
    所述服务器集群根据所述各节点的标识和度值,生成度向量,所述度向量中的元素包括所述节点的度值;
    所述服务器集群根据所述度向量,通过累加计算生成索引向量;
    其中,所述索引向量中的元素等于:所述元素在所述度向量中的对应元素及该对应元素前全部元素之和。
  15. 如权利要求14所述的装置,所述第二生成模块根据所述索引向量,生成元素向量,具体包括:
    各所述工作机分别根据所述索引向量进行索引,通过根据索引到的节点的标识,将所述节点的相邻节点的标识,对应地进行数组元素插入操作,生成元素向量的一部分;
    所述工作机集群将所述元素向量的各部分向所述服务器集群同步;
    所述服务器集群根据所述元素向量的各部分,生成所述元素向量。
  16. 如权利要求15所述的装置,所述第三生成模块根据所述索引向量和所述元素向量,生成随机序列前,所述服务器集群将所述索引向量和所述元素向量向各所述工作机同步。
  17. 如权利要求13所述的装置,所述第三生成模块根据所述索引向量和所述元素向量,生成随机序列,具体包括:
    所述工作机在所述各节点的标识中,随机确定一个标识,作为目标节点的标识;
    根据目标节点的标识和所述索引向量,进行索引并计算,得到所述目标节点的度值;
    随机确定一个小于所述目标节点的度值的非负整数,用于指示所述目标节点的第所述非负整数个相邻节点;
    根据所述非负整数和所述元素向量,计算得到该相邻节点的标识;
    通过将该相邻节点重新作为目标节点进行迭代计算,生成由依次得到的各目标节点的标识构成的随机序列。
  18. 如权利要求13所述的装置,所述图数据共包含N个节点,第n个所述节点的标识为n,n从0开始计数;
    所述第三生成模块根据所述索引向量和所述元素向量,生成随机序列,具体包括:
    所述工作机随机生成一个属于[0,N-1]的整数,作为目标节点的标识,记作i;
    按照公式dgr[i]=idx[i+1]-idx[i],索引并计算得到所述目标节点的度值,记作D 0,其中,dgr[i]表示标识为i的节点的度值,idx表示所述索引向量;
    随机生成一个属于[0,D 0-1]的整数,记作j,用于指示所述目标节点的第j个相邻节点;
    按照公式adj[i,j]=elem[idx[i]+j],计算得到该相邻节点的标识,其中,adj[i,j]表示标识为i的节点的第j个相邻节点的标识,elem表示所述元素向量;
    通过将该相邻节点重新作为目标节点进行迭代计算,生成由依次得到的各目标节点的标识构成的随机序列。
  19. 如权利要求17所述的装置,所述工作机生成由依次得到的各目标节点的标识构成的随机序列,具体包括:
    所述工作机当依次得到的各目标节点总数量达到预设的随机游走步数时,生成由所述依次得到的各目标节点的标识构成的随机序列。
  20. 如权利要求13所述的装置,所述第三生成模块生成随机序列,具体包括:
    各所述工作机分别生成随机序列,直至生成的随机序列总数量达到设定阈值。
  21. 如权利要求17所述的装置,所述工作机若本地已有的所述索引向量和/或所述元素向量丢失,则重新从所述服务器集群获取。
  22. 一种随机游走装置,包括:
    获取模块,获取根据图数据包含的各节点的信息生成的索引向量,以及根据所述索引向量生成的元素向量;
    生成模块,根据所述索引向量和所述元素向量,生成随机序列,所述随机序列反映在所述图数据中的随机游走;
    其中,所述索引向量中的元素包括一个或者多个所述节点的度的累加值,所述元素向量中的元素包括所述节点的相邻节点的标识。
  23. 一种基于集群的随机游走设备,所述设备属于所述集群,包括:
    至少一个处理器;以及,
    与所述至少一个处理器通信连接的存储器;其中,
    所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够:
    获取图数据包含的各节点的信息;
    根据所述各节点的信息,生成索引向量,所述索引向量中的元素包括一个或者多个所述节点的度的累加值;
    根据所述索引向量,生成元素向量,所述元素向量中的元素包括所述节点的相邻节点的标识;
    根据所述索引向量和所述元素向量,生成随机序列,所述随机序列反映在所述图数据中的随机游走。
  24. 一种随机游走设备,包括:
    至少一个处理器;以及,
    与所述至少一个处理器通信连接的存储器;其中,
    所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够:
    获取根据图数据包含的各节点的信息生成的索引向量,以及根据所述索引向量生成 的元素向量;
    根据所述索引向量和所述元素向量,生成随机序列,所述随机序列反映在所述图数据中的随机游走;
    其中,所述索引向量中的元素包括一个或者多个所述节点的度的累加值,所述元素向量中的元素包括所述节点的相邻节点的标识。
PCT/CN2018/104922 2017-10-10 2018-09-11 随机游走、基于集群的随机游走方法、装置以及设备 WO2019072063A1 (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
EP18865577.3A EP3648039A4 (en) 2017-10-10 2018-09-11 RANDOM WALKING AND RANDOM WALKING METHOD, DEVICE AND DEVICE ON A CLUSTER BASE
SG11202000911TA SG11202000911TA (en) 2017-10-10 2018-09-11 Random walking and cluster-based random walking method, apparatus and device
US16/736,673 US10776334B2 (en) 2017-10-10 2020-01-07 Random walking and cluster-based random walking method, apparatus and device

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN201710932631.0A CN109658094B (zh) 2017-10-10 2017-10-10 随机游走、基于集群的随机游走方法、装置以及设备
CN201710932631.0 2017-10-10

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US16/736,673 Continuation US10776334B2 (en) 2017-10-10 2020-01-07 Random walking and cluster-based random walking method, apparatus and device

Publications (1)

Publication Number Publication Date
WO2019072063A1 true WO2019072063A1 (zh) 2019-04-18

Family

ID=66101194

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/CN2018/104922 WO2019072063A1 (zh) 2017-10-10 2018-09-11 随机游走、基于集群的随机游走方法、装置以及设备

Country Status (6)

Country Link
US (1) US10776334B2 (zh)
EP (1) EP3648039A4 (zh)
CN (1) CN109658094B (zh)
SG (1) SG11202000911TA (zh)
TW (1) TWI687820B (zh)
WO (1) WO2019072063A1 (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11599578B2 (en) * 2019-06-28 2023-03-07 Microsoft Technology Licensing, Llc Building a graph index and searching a corresponding dataset
CN113612749B (zh) * 2021-07-27 2022-04-01 华中科技大学 一种面向入侵行为的溯源数据聚类方法及装置
US20230297651A1 (en) * 2022-03-21 2023-09-21 Fujitsu Limited Cost equalization spectral clustering

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103699617A (zh) * 2013-12-16 2014-04-02 西安交通大学 一种基于随机游走的社区发现方法
US20140317736A1 (en) * 2013-04-23 2014-10-23 Telefonica Digital Espana, S.L.U. Method and system for detecting fake accounts in online social networks
CN104158840A (zh) * 2014-07-09 2014-11-19 东北大学 一种分布式计算图节点相似度的方法
CN104462374A (zh) * 2014-12-09 2015-03-25 深圳大学 一种广义最大度随机游走图抽样算法
CN106777284A (zh) * 2016-12-29 2017-05-31 南京邮电大学 一种基于标签信息的图游走表示方法

Family Cites Families (47)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6549896B1 (en) 2000-04-07 2003-04-15 Nec Usa, Inc. System and method employing random walks for mining web page associations and usage to optimize user-oriented web page refresh and pre-fetch scheduling
US7043239B2 (en) * 2002-12-09 2006-05-09 Qualcomm Incorporated Download and display of system tags in wireless communication systems
US7827182B1 (en) 2004-06-02 2010-11-02 Cisco Technology, Inc Searching for a path to identify where to move entries among hash tables with storage for multiple entries per bucket during insert operations
US8626775B1 (en) 2005-01-14 2014-01-07 Wal-Mart Stores, Inc. Topic relevance
US8396864B1 (en) 2005-06-29 2013-03-12 Wal-Mart Stores, Inc. Categorizing documents
US8498999B1 (en) 2005-10-14 2013-07-30 Wal-Mart Stores, Inc. Topic relevant abbreviations
US8849830B1 (en) 2005-10-14 2014-09-30 Wal-Mart Stores, Inc. Delivering search results
US8396884B2 (en) 2006-02-27 2013-03-12 The Regents Of The University Of California Graph querying, graph motif mining and the discovery of clusters
US20070203789A1 (en) 2006-02-27 2007-08-30 Microsoft Corporation Designing hyperlink structures
WO2007100834A2 (en) * 2006-02-27 2007-09-07 The Regents Of The University Of California Graph querying, graph motif mining and the discovery of clusters
US20080097971A1 (en) 2006-10-18 2008-04-24 Telcordia Applied Research Center Taiwan Company Peer-to-peer based secondary key search method and system for cluster database
US7788254B2 (en) * 2007-05-04 2010-08-31 Microsoft Corporation Web page analysis using multiple graphs
US7818396B2 (en) 2007-06-21 2010-10-19 Microsoft Corporation Aggregating and searching profile data from multiple services
US20090070873A1 (en) 2007-09-11 2009-03-12 Yahoo! Inc. Safe web based interactions
TWI361984B (en) 2008-11-04 2012-04-11 Univ Nat Taiwan Distributed multimedia access system and method
US8122419B2 (en) 2008-11-09 2012-02-21 International Business Machines Corporation System and method for three-dimensional variational capacitance calculation
US8156129B2 (en) 2009-01-15 2012-04-10 Microsoft Corporation Substantially similar queries
US9171077B2 (en) 2009-02-27 2015-10-27 International Business Machines Corporation Scaling dynamic authority-based search using materialized subgraphs
US8073832B2 (en) 2009-05-04 2011-12-06 Microsoft Corporation Estimating rank on graph streams
US8423538B1 (en) * 2009-11-02 2013-04-16 Google Inc. Clustering query refinements by inferred user intent
CN101894123A (zh) 2010-05-11 2010-11-24 清华大学 基于子图的链接相似度的快速近似计算系统和方法
US9092483B2 (en) * 2010-10-19 2015-07-28 Microsoft Technology Licensing, Llc User query reformulation using random walks
US8818918B2 (en) 2011-04-28 2014-08-26 International Business Machines Corporation Determining the importance of data items and their characteristics using centrality measures
US8856047B2 (en) 2011-06-21 2014-10-07 Microsoft Corporation Fast personalized page rank on map reduce
US8943011B2 (en) 2011-06-28 2015-01-27 Salesforce.Com, Inc. Methods and systems for using map-reduce for large-scale analysis of graph-based data
US8903824B2 (en) 2011-12-09 2014-12-02 International Business Machines Corporation Vertex-proximity query processing
CN103198177B (zh) 2013-03-11 2015-08-12 清华大学 基于gpu的集成电路电容参数提取系统及方法
EP2994826B1 (en) 2013-05-07 2019-08-07 Psigenics Corporation Acquisition and assessment of classically non-inferable information
US9704262B2 (en) 2013-05-22 2017-07-11 Siemens Aktiengesellschaft Parameter estimation for mesh segmentation using random walks
US9286396B2 (en) * 2013-07-26 2016-03-15 Microsoft Technology Licensing, Llc Query expansion and query-document matching using path-constrained random walks
CN104063507B (zh) 2014-07-09 2017-10-17 时趣互动(北京)科技有限公司 一种图计算方法及系统
US9805138B2 (en) * 2015-02-06 2017-10-31 Xerox Corporation Efficient calculation of all-pair path-based distance measures
US10747740B2 (en) * 2015-03-24 2020-08-18 Kyndi, Inc. Cognitive memory graph indexing, storage and retrieval
US11627199B2 (en) 2016-01-05 2023-04-11 Schneider Electric USA, Inc. System and methods for creating a geospatial network model in a client environment
CN105741175B (zh) * 2016-01-27 2019-08-20 电子科技大学 一种对在线社交网络中账户进行关联的方法
CN107179940B (zh) * 2016-03-10 2020-06-19 阿里巴巴集团控股有限公司 一种任务执行的方法及装置
US10304244B2 (en) 2016-07-08 2019-05-28 Microsoft Technology Licensing, Llc Motion capture and character synthesis
CN106844426A (zh) 2016-12-09 2017-06-13 中电科华云信息技术有限公司 基于随机游走人员亲密度的计算系统及方法
CN106991133B (zh) 2017-03-13 2019-08-06 南京邮电大学 一种基于重启随机游走模型的活跃用户群组推荐方法
CN107248095A (zh) 2017-04-14 2017-10-13 北京小度信息科技有限公司 推荐方法及装置
CN107145977B (zh) 2017-04-28 2020-07-31 电子科技大学 一种对在线社交网络用户进行结构化属性推断的方法
US20190066054A1 (en) 2017-08-24 2019-02-28 Linkedln Corporation Accuracy of member profile retrieval using a universal concept graph
US20190114373A1 (en) 2017-10-13 2019-04-18 Facebook, Inc. Scalable candidate selection for recommendations
US11797838B2 (en) 2018-03-13 2023-10-24 Pinterest, Inc. Efficient convolutional network for recommender systems
US11281964B2 (en) 2018-06-27 2022-03-22 National Technology & Engineering Solutions Of Sandia, Llc Devices and methods for increasing the speed and efficiency at which a computer is capable of modeling a plurality of random walkers using a particle method
US11409922B2 (en) 2018-06-27 2022-08-09 National Technology & Engineering Solutions Of Sandia, Llc Devices and methods for increasing the speed and efficiency at which a computer is capable of modeling a plurality of random walkers using a density method
CN109934306A (zh) 2019-04-04 2019-06-25 西南石油大学 基于随机游走的多标签属性值划分方法和装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140317736A1 (en) * 2013-04-23 2014-10-23 Telefonica Digital Espana, S.L.U. Method and system for detecting fake accounts in online social networks
CN103699617A (zh) * 2013-12-16 2014-04-02 西安交通大学 一种基于随机游走的社区发现方法
CN104158840A (zh) * 2014-07-09 2014-11-19 东北大学 一种分布式计算图节点相似度的方法
CN104462374A (zh) * 2014-12-09 2015-03-25 深圳大学 一种广义最大度随机游走图抽样算法
CN106777284A (zh) * 2016-12-29 2017-05-31 南京邮电大学 一种基于标签信息的图游走表示方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
BIAN MENGYANG ET AL.: "Recommendation Method Based on Random Walk on graph Integrated with FP- Growth", COMPUTER SCIENCE, vol. 6, no. 44, 1 June 2017 (2017-06-01), pages 232 - 236, XP055664153, DOI: 10.11896/j.issn.1002-137X.2017.06.039 *
See also references of EP3648039A4 *

Also Published As

Publication number Publication date
TWI687820B (zh) 2020-03-11
US20200142875A1 (en) 2020-05-07
CN109658094A (zh) 2019-04-19
US10776334B2 (en) 2020-09-15
CN109658094B (zh) 2020-09-18
EP3648039A4 (en) 2020-05-13
EP3648039A1 (en) 2020-05-06
TW201923628A (zh) 2019-06-16
SG11202000911TA (en) 2020-03-30

Similar Documents

Publication Publication Date Title
WO2019095858A1 (zh) 随机游走、基于集群的随机游走方法、装置以及设备
KR102194074B1 (ko) 블록체인 기반 데이터 처리 방법 및 장치
JP6804668B2 (ja) ブロックデータ検証方法および装置
KR102125177B1 (ko) 블록체인 기반 데이터 처리 방법 및 장치
CN107957989B (zh) 基于集群的词向量处理方法、装置以及设备
WO2019085614A1 (zh) 随机游走、基于分布式系统的随机游走方法、装置以及设备
WO2019020094A1 (zh) 一种指标异常检测方法、装置以及电子设备
WO2019072063A1 (zh) 随机游走、基于集群的随机游走方法、装置以及设备
US20200167527A1 (en) Method, device, and apparatus for word vector processing based on clusters
CN107451204B (zh) 一种数据查询方法、装置及设备
US10901971B2 (en) Random walking and cluster-based random walking method, apparatus and device
CN103559247A (zh) 一种数据业务处理方法及装置
WO2020019894A1 (zh) 序列号的生成方法及装置
CN104239576A (zh) 查找HBase表列值中所有行的方法和装置
CN116414308A (zh) 数据存储方法、装置及系统

Legal Events

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

Ref document number: 18865577

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2018865577

Country of ref document: EP

Effective date: 20200131

NENP Non-entry into the national phase

Ref country code: DE