IP Library Granted Patent US 9,792,337
Granted Patent B2
US 9,792,337 · App. 15/253,745 · Granted Oct 17, 2017

In-database connectivity components analysis of data

Inventors: Michael Brand (Bentleigh East, AU); Florian Schoppmann (San Francisco, CA); Chunsheng Fang (Redwood City, CA); Jarrod James Vawdrey (Atlanta, GA); Emily Kawaler (Ames, IA)
Assignee: Pivotal Software, Inc.
G06F17/30569G06F7/58G06F17/3053G06F17/30958G06F2207/58
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,792,337
App. No.
15/253,745
Granted
Oct 17, 2017
Kind
B2
Abstract

A method determines the connectivity components defined by a set of relations over a set of data elements. For each first data element of a selected subset of data elements, a second data element that is linked to the first data element by a path of relations is selected as its representative, using a randomization process. A new set of relations is created by replacing each first data element of the subset by its representative in at least part of the set of relations.

Claims (76)

1. A computer-implemented method for determining connectivity components defined by an input set of relations over an input set of data elements, wherein a connectivity component is a subset of the input set data elements that are pair-wise connected such that no other data element of the input set can be added to the subset that is connected to any of the data elements of the subset, and wherein two data elements are connected whenever the two data elements are related by a relation in the set of relations or a path of relations between data elements exists that connects the two data elements, the method comprising:

performing the following actions of selecting and forming iteratively beginning with a set of data elements that is the input set of data elements and a set of relations that is the input set of relations, and at each subsequent iteration using the contracted set of data elements as the set of data elements and the contracted set of relations as the set of relations, until the contracted set of relations is empty:

selecting a respective representative for each data element, each representative being a data element in the set of data elements, to form a contracted set of data elements, the selecting comprising:

assigning a random number to each data element in the set of data elements;

identifying for each data element a respective group of data elements that includes the data element and all other data elements that are related to the data element;

selecting as the respective representative a particular data element in the respective group that has an assigned random number with a predetermined random number position among the data elements in the respective group; and

replacing each data element with the representative of the data element to form a contracted set of data elements;

forming a contracted set of relations over the contracted set of data elements, the forming comprising:

defining two representatives in the contracted set of data elements as related in the contracted set of relations if the two representatives represent data elements that were connected in the set of relations; and

defining all other pairs of data elements in the contracted set of data elements as not related in the contracted set of relations;

whereby, when the contracted set of relations is empty, each data element in the contracted set of data elements is an isolated data element, an isolated data element being a data element that is not related to any other data element in the contracted set of data elements; and

outputting each isolated data element as a respective representative of a respective connectivity component of the input set of data elements, each connectivity component of the input set of data elements being representing by a distinct isolated data element.

2. The method of claim 1 , wherein the random number is a pseudorandom number between zero and one.

3. The method of claim 1 , wherein the predetermined random number position is the highest random number.

4. The method of claim 1 , wherein each data element has a respective weight and a respective leader, the method further comprising:

before performing the actions of selecting and forming:

assigning a common weight to each data element in the input set of data elements; and

nominating each data element in the input set of data elements as its own leader.

5. The method of claim 4 , wherein selecting a respective representative comprises:

assigning as the weight of each respective representative a sum of the weights of the data elements represented by the respective representative; and

for each first data element in the set of data elements, identifying the data elements nominating the first data element and replacing the nominations of the first data element with nominations nominating the representative of the first data element.

6. The method of claim 5 , comprising:

outputting the weight of each representative as a size of the connectivity component represented by the representative.

7. The method of claim 6 , wherein the common weight is one.

8. The method of claim 6 , comprising:

outputting the leader of each data element of the input set of data elements as an identifier of the connectivity component of which the data element is a member.

9. The method of claim 1 , comprising:

after each iteration of selecting and forming, outputting each isolated data element in the contracted set of data elements and removing the isolated data element from the set of contracted data elements.

10. Non-transitory computer-readable storage media encoded with computer program instructions for determining connectivity components defined by an input set of relations over an input set of data elements, wherein a connectivity component is a subset of the input set data elements that are pair-wise connected such that no other data element of the input set can be added to the subset that is connected to any of the data elements of the subset, and wherein two data elements are connected whenever the two data elements are related by a relation in the set of relations or a path of relations between data elements exists that connects the two data elements, the instructions when executed by one or more computers causing the one or more computers to perform operations comprising:

performing the following actions of selecting and forming iteratively beginning with a set of data elements that is the input set of data elements and a set of relations that is the input set of relations, and at each subsequent iteration using the contracted set of data elements as the set of data elements and the contracted set of relations as the set of relations, until the contracted set of relations is empty:

selecting a respective representative for each data element, each representative being a data element in the set of data elements, to form a contracted set of data elements, the selecting comprising:

assigning a random number to each data element in the set of data elements;

identifying for each data element a respective group of data elements that includes the data element and all other data elements that are related to the data element;

selecting as the respective representative a particular data element in the respective group that has an assigned random number with a predetermined random number position among the data elements in the respective group; and

replacing each data element with the representative of the data element to form a contracted set of data elements;

forming a contracted set of relations over the contracted set of data elements, the forming comprising:

defining two representatives in the contracted set of data elements as related in the contracted set of relations if the two representatives represent data elements that were connected in the set of relations; and

defining all other pairs of data elements in the contracted set of data elements as not related in the contracted set of relations;

whereby, when the contracted set of relations is empty, each data element in the contracted set of data elements is an isolated data element, an isolated data element being a data element that is not related to any other data element in the contracted set of data elements; and

outputting each isolated data element as a respective representative of a respective connectivity component of the input set of data elements, each connectivity component of the input set of data elements being representing by a distinct isolated data element.

11. The media of claim 10 , wherein each data element has a respective weight and a respective leader, the operations further comprising:

before performing the actions of selecting and forming:

assigning a common weight to each data element in the input set of data elements; and

nominating each data element in the input set of data elements as its own leader.

12. The media of claim 11 , wherein selecting a respective representative comprises:

assigning as the weight of each respective representative a sum of the weights of the data elements represented by the respective representative; and

for each first data element in the set of data elements, identifying the data elements nominating the first data element and replacing the nominations of the first data element with nominations nominating the representative of the first data element.

13. The media of claim 12 , wherein the operations comprise:

outputting the weight of each representative as a size of the connectivity component represented by the representative.

14. The media of claim 13 , wherein the common weight is one.

15. The media of claim 13 , wherein the operations comprise:

outputting the leader of each data element of the input set of data elements as an identifier of the connectivity component of which the data element is a member.

16. The media of claim 10 , wherein the operations comprise:

after each iteration of selecting and forming, outputting each isolated data element in the contracted set of data elements and removing the isolated data element from the set of contracted data elements.

17. A database system comprising one or more computers programmed for determining connectivity components defined by an input set of relations over an input set of data elements, wherein a connectivity component is a subset of the input set data elements that are pair-wise connected such that no other data element of the input set can be added to the subset that is connected to any of the data elements of the subset, and wherein two data elements are connected whenever the two data elements are related by a relation in the set of relations or a path of relations between data elements exists that connects the two data elements, wherein the one or more computers of the database system are programmed perform operations comprising:

performing the following actions of selecting and forming iteratively beginning with a set of data elements that is the input set of data elements and a set of relations that is the input set of relations, and at each subsequent iteration using the contracted set of data elements as the set of data elements and the contracted set of relations as the set of relations, until the contracted set of relations is empty:

selecting a respective representative for each data element, each representative being a data element in the set of data elements, to form a contracted set of data elements, the selecting comprising:

assigning a random number to each data element in the set of data elements;

identifying for each data element a respective group of data elements that includes the data element and all other data elements that are related to the data element;

selecting as the respective representative a particular data element in the respective group that has an assigned random number with a predetermined random number position among the data elements in the respective group; and

replacing each data element with the representative of the data element to form a contracted set of data elements;

forming a contracted set of relations over the contracted set of data elements, the forming comprising:

defining two representatives in the contracted set of data elements as related in the contracted set of relations if the two representatives represent data elements that were connected in the set of relations; and

defining all other pairs of data elements in the contracted set of data elements as not related in the contracted set of relations;

whereby, when the contracted set of relations is empty, each data element in the contracted set of data elements is an isolated data element, an isolated data element being a data element that is not related to any other data element in the contracted set of data elements; and

outputting each isolated data element as a respective representative of a respective connectivity component of the input set of data elements, each connectivity component of the input set of data elements being representing by a distinct isolated data element.

18. The database system of claim 17 , wherein each data element has a respective weight and a respective leader, the operations further comprising:

before performing the actions of selecting and forming:

assigning a common weight to each data element in the input set of data elements; and

nominating each data element in the input set of data elements as its own leader;

wherein selecting a respective representative comprises:

assigning as the weight of each respective representative a sum of the weights of the data elements represented by the respective representative; and

for each first data element in the set of data elements, identifying the data elements nominating the first data element and replacing the nominations of the first data element with nominations nominating the representative of the first data element; and

wherein the operations comprise:

outputting the weight of each representative as a size of the connectivity component represented by the representative; and

outputting the leader of each data element of the input set of data elements as an identifier of the connectivity component of which the data element is a member.

Assignments (3)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 20, 2017
From: BRAND, MICHAEL; SCHOPPMANN, FLORIAN; FANG, CHUNSHENG; VAWDREY, JARROD JAMES; KAWALER, EMILY
To: EMC CORPORATION
Reel/Frame 042445/0435 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 20, 2017
From: EMC CORPORATION
To: GOPIVOTAL, INC.
Reel/Frame 042445/0447 →
CHANGE OF NAME Recorded May 20, 2017
From: GOPIVOTAL, INC.
To: PIVOTAL SOFTWARE, INC.
Reel/Frame 042512/0552 →
Continuity (3)
Continuation 14802934 · Jul 17, 2015
Continuation 13804340 · Mar 14, 2013
Related Publication 20160371349A1 · Dec 22, 2016