IP Library › Granted Patent US 9,372,928
Granted Patent B2
US 9,372,928 · App. 13/932,377 · Granted Jun 21, 2016

System and method for parallel search on explicitly represented graphs

Inventor: Rong Zhou (San Jose, CA)
Assignee: PALO ALTO RESEARCH CENTER INCORPORATED
G06F17/30867G06F17/30584G06Q10/04G06Q30/0631G06F17/30445
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,372,928
App. No.
13/932,377
Filed
Jul 1, 2013
Granted
Jun 21, 2016
Kind
B2
Art Unit
2162
USPC
707/798
Abstract

One embodiment of the present invention provides a system for partitioning a graph representing customer purchases to facilitate parallel computations. During operation, the system initially receives graph data indicating vertices and edges of the graph, wherein the vertices represent customers and products and the edges represent purchases. Next, the system partitions edges of the graph to generate a partitioned graph such that each edge of the graph is a member of a respective partition. The system may then perform parallel computations on the graph data in one or more partitions to determine product recommendations.

Claims (50)

1. A computer-executable method for recommending a product to a consumer, comprising:

copying, by one or more processors to a memory of one or more computing devices, data representing source vertices, destination vertices, and edges of a graph, wherein a respective edge pointing from a source vertex representing a respective consumer to a destination vertex representing a respective product indicates that the respective consumer consumes the respective product;

partitioning the graph edges based on destination vertices to generate a plurality of successor-partitioned graphs;

partitioning the graph edges based on source vertices to generate a plurality of predecessor-partitioned graphs;

determining, by a plurality of processors operating in parallel, one or more products that the consumer consumes, which includes traversing, by a respective processor, a successor-partitioned graph from a source vertex representing the consumer to one or more destination vertices, wherein a respective destination vertex represents a product the consumer consumes;

determining, by the plurality of processors operating in parallel, one or more other consumers that consumes at least one product that the consumer also consumes, which includes traversing, by a respective processor, a predecessor-partitioned graph from a respective destination vertex to a respective source vertex, wherein a respective source vertex represents another consumer that consumes a product that the consumer also consumes;

determining one or more other products that the one or more other consumers consume; and

providing a recommendation to the consumer to consume one of the one or more other products.

2. The method of claim 1 , wherein the parallel computations comprise executing an n-bit parallel breadth-first search where n bits represent a degree of separation or a vertex and n<8.

3. The method of claim 1 , further comprising:

assigning a first successor-partitioned graph with vertices in a first range to a first processor; and

assigning a second successor-partitioned graph with vertices in a second range to a second processor, wherein the first range and second range are different ranges.

4. The method of claim 1 , wherein no two processors of the plurality of processors operating in parallel operate on the same vertex.

5. The method of claim 1 , wherein partitioning the graph edges based on destination vertices further comprises:

determining a number of partitions for dividing the destination vertices; and

dividing a range of the destination vertices among the number of partitions.

6. A non-transitory computer-readable storage medium storing instructions that when executed by a computer cause the computer to perform a method for recommending a product to a consumer, comprising:

copying, by one or more processors to a memory of one or more computing devices, data representing source vertices, destination vertices, and edges of a graph, wherein a respective edge pointing from a source vertex representing a respective consumer to a destination vertex representing a respective product indicates that the respective consumer consumes the respective product;

partitioning the graph edges based on destination vertices to generate a plurality of successor-partitioned graphs;

partitioning the graph edges based on source vertices to generate a plurality of predecessor-partitioned graphs;

determining, by a plurality of processors operating in parallel, one or more products that the consumer consumes, which includes traversing, by a respective processor, a successor-partitioned graph from a source vertex representing the consumer to one or more destination vertices, wherein a respective destination vertex represents a product the consumer consumes;

determining, by the plurality of processors operating in parallel, one or more other consumers that consumes at least one product that the consumer also consumes, which includes traversing, by a respective processor, a predecessor-partitioned graph from a respective destination vertex to a respective source vertex, wherein a respective source vertex represents another consumer that consumes a product that the consumer also consumes;

determining one or more other products that the one or more other consumers consume; and

providing a recommendation to the consumer to consume one of the one or more other products.

7. The non-transitory computer-readable storage medium of claim 6 , wherein the parallel computations comprise executing an n-bit parallel breadth-first search where n bits represent a degree of separation or a vertex and n<8.

8. The non-transitory computer-readable storage medium of claim 6 , wherein the method further comprises:

assigning a first successor-partitioned graph with vertices in a first range to a first processor; and

assigning a second successor-partitioned graph with vertices in a second range to a second processor, wherein the first range and second range are different ranges.

9. The non-transitory computer-readable storage medium of claim 6 , wherein no two processors of the plurality of processors operating in parallel operate on the same vertex.

10. The non-transitory computer-readable storage medium of claim 6 , wherein partitioning the graph edges based on destination vertices further comprises:

determining a number of partitions for dividing the destination vertices; and

dividing a range of the destination vertices among the number of partitions.

11. A computing system for recommending a product to a consumer, the system comprising:

one or more processors,

a non-transitory computer-readable medium coupled to the one or more processors having instructions stored thereon that, when executed by the one or more processors, cause the one or more processors to perform a method comprising:

copying, by one or more processors to a memory of one or more computing devices, data representing source vertices, destination vertices, and edges of a graph, wherein a respective edge pointing from a source vertex representing a respective consumer to a destination vertex representing a respective product indicates that the respective consumer consumes the respective product;

partitioning the graph edges based on destination vertices to generate a plurality of successor-partitioned graphs;

partitioning the graph edges based on source vertices to generate a plurality of predecessor-partitioned graphs;

determining, by a plurality of processors operating in parallel, one or more products that the consumer consumes, which includes traversing, by a respective processor, a successor-partitioned graph from a source vertex representing the consumer to one or more destination vertices, wherein a respective destination vertex represents a product the consumer consumes;

determining, by the plurality of processors operating in parallel, one or more other consumers that consumes at least one product that the consumer also consumes, which includes traversing, by a respective processor, a predecessor-partitioned graph from a respective destination vertex to a respective source vertex, wherein a respective source vertex represents another consumer that consumes a product that the consumer also consumes;

determining one or more other products that the one or more other consumers consume; and

providing a recommendation to the consumer to consume one of the one or more other products.

12. The computing system of claim 11 , wherein the parallel computations comprise executing an n-bit parallel breadth-first search where n bits represent a degree of separation or a vertex and n<8.

13. The computing system of claim 11 , wherein the method further comprises:

assigning a first successor-partitioned graph with vertices in a first range to a first processor, and

assigning a second successor-partitioned graph with vertices in a second range to a second processor, wherein the first range and second range are different ranges.

14. The computing system of claim 11 , wherein no two processors of the plurality of processors operating in parallel operate on the same vertex.

15. The computing system of claim 11 , wherein partitioning the graph edges based on destination vertices further comprises:

determining a number of partitions for dividing the destination vertices; and

dividing a range of the destination vertices among the number of partitions.

Assignments (7)
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS RECORDED AT RF 064760/0389 Recorded Feb 13, 2024
From: CITIBANK, N.A., AS COLLATERAL AGENT
To: XEROX CORPORATION
Reel/Frame 068261/0001 →
SECURITY INTEREST Recorded Feb 13, 2024
From: XEROX CORPORATION
To: CITIBANK, N.A., AS COLLATERAL AGENT
Reel/Frame 066741/0001 →
SECURITY INTEREST Recorded Nov 20, 2023
From: XEROX CORPORATION
To: JEFFERIES FINANCE LLC, AS COLLATERAL AGENT
Reel/Frame 065628/0019 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVAL OF US PATENTS 9356603, 10026651, 10626048 AND INCLUSION OF US PATENT 7167871 PREVIOUSLY RECORDED ON REEL 064038 FRAME 0001. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Jun 28, 2023
From: PALO ALTO RESEARCH CENTER INCORPORATED
To: XEROX CORPORATION
Reel/Frame 064161/0001 →
SECURITY INTEREST Recorded Jun 22, 2023
From: XEROX CORPORATION
To: CITIBANK, N.A., AS COLLATERAL AGENT
Reel/Frame 064760/0389 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 20, 2023
From: PALO ALTO RESEARCH CENTER INCORPORATED
To: XEROX CORPORATION
Reel/Frame 064038/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 1, 2013
From: ZHOU, RONG
To: PALO ALTO RESEARCH CENTER INCORPORATED
Reel/Frame 030723/0087 →
Continuity (1)
Related Publication 20150006316A1 · Jan 1, 2015