IP Library Granted Patent US 9,607,104
Granted Patent B1
US 9,607,104 · App. 15/143,021 · Granted Mar 28, 2017

Systems and methods of using a bitmap index to determine bicliques

Inventors: Travis Turner (Austin, TX); Ryan Edward Ebanks (Austin, TX); Kevin Troy Safford (Austin, TX); Matthew Isaac Jaffee (Austin, TX); Todd Wesley Gruben (Cedar Park, TX); Cody Stephen Soyland (Austin, TX); Higinio O. Maycotte (Austin, TX); Charles Martin (Austin, TX)
Assignee: UMBEL CORPORATION
G06F17/30979G06F17/30864G06F17/30958
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,607,104
App. No.
15/143,021
Granted
Mar 28, 2017
Kind
B1
Abstract

A method includes receiving, at a computing device comprising a processor, a request to determine bicliques in a graph, where the graph includes a first set of nodes, a second set of nodes, and a set of edges, each edge in the set of edges connecting a node in the first set of nodes to a node in the second set of nodes. The method also includes determining at least one biclique based on querying a bitmap index representing the graph, where the bitmap index includes a plurality of bit strings corresponding to the first set of nodes, and where a value stored in a particular location in each bit string indicates whether an edge connects a first node corresponding to the bit string to a second node corresponding to the particular location.

Claims (49)

1. A method comprising:

receiving, at a computing device comprising a processor, a request to determine bicliques in a graph, wherein the graph includes a first set of nodes, a second set of nodes, and a set of edges, each edge in the set of edges connecting a node in the first set of nodes to a node in the second set of nodes; and

determining at least one biclique based on querying a bitmap index representing the graph,

wherein the bitmap index includes a plurality of bit strings corresponding to the first set of nodes,

wherein a value stored in a particular location in each bit string indicates whether an edge connects a first node corresponding to the bit string to a second node corresponding to the particular location, and

wherein determining the at least one biclique includes:

adding a particular node from the first set of nodes to a third set of nodes;

adding nodes of the second set of nodes that are connected to the particular node to a fourth set of nodes;

in response to determining that another node of the first set of nodes is connected to each node in the fourth set of nodes, adding the other node to the third set of nodes; and

outputting an indication that a combination of the third set of nodes and the fourth set of nodes corresponds to a maximal biclique of the graph.

2. The method of claim 1 , wherein the bitmap index represents data stored in a data store.

3. The method of claim 2 , wherein the data stored in the data store is determined based on event signals received from devices associated with users that accessed a web site.

4. The method of claim 3 , wherein the graph includes nodes corresponding to less than all of the users.

5. The method of claim 3 , wherein the graph includes nodes corresponding to a custom segment of the users.

6. The method of claim 3 , wherein the graph corresponds to top N signals associated with the website, wherein N is an integer greater than or equal to one.

7. The method of claim 3 , wherein the event signals include at least one registration event signal.

8. The method of claim 1 , wherein one or more of the plurality of bit strings corresponds to a demographic attribute, a behavior, a brand affinity, or a combination thereof.

9. The method of claim 1 , wherein the bitmap index is distributed across a plurality of storage nodes.

10. The method of claim 9 , wherein each of the plurality of bit strings is stored as one or more distributed slices, and wherein at least a first slice of a particular bit string of the plurality of bit strings is stored in a different storage node than a second slice of the particular bit string.

11. The method of claim 1 , wherein querying the bitmap index includes generating a query execution plan for a query.

12. The method of claim 11 , wherein the query execution plan identifies:

one or more set operations;

that one or more first storage nodes are to send stored portions of one or more bit strings to a second storage node; and

that the second storage node is to perform the one or more set operations with respect to:

the portions of the one or more bit strings received from the one or more first storage nodes; and

portions of one or more bit strings stored at the second storage node; and

that the second storage node is to concatenate results of performing the one or more set operations to generate a result bit string that indicates a result of the query.

13. An apparatus comprising:

a processor; and

a memory storing instructions executable by the processor to perform operations comprising:

receiving an event signal, wherein the event signal includes information corresponding to a profile identifier associated with a user;

modifying a value of at least one bit stored in a bitmap index, wherein the bitmap index corresponds to a graph having a first set of nodes, a second set of nodes, and a set of edges, wherein each edge in the set of edges connecting a node in the first set of nodes to a node in the second set of nodes, wherein the bitmap index includes a plurality of bit strings corresponding to the first set of nodes, and wherein a value stored in a particular location in each bit string indicates whether an edge connects a first node corresponding to the bit string to a second node corresponding to the particular location;

receiving a request to determine bicliques in the graph, wherein the request specifies a target segment of users; and

determining at least one biclique based on querying the bitmap index.

14. The apparatus of claim 13 , wherein the bitmap index represents data stored in a data store.

15. The apparatus of claim 14 , wherein the data stored in the data store represents users that accessed a website, wherein the target segment of users corresponds to fewer than all of the users that accessed the website.

16. The apparatus of claim 13 , wherein the bitmap index is distributed across a plurality of storage nodes.

17. The apparatus of claim 16 , wherein each of the plurality of bit strings is stored as one or more distributed slices, and wherein at least a first slice of a particular bit string is stored in a different storage node than a second slice of the particular bit string.

18. A computer readable storage device storing instructions that, when executed, cause a computer to perform operations comprising:

receiving, at a first storage node, a request to determine bicliques in a graph, wherein the graph includes a first set of nodes, a second set of nodes, and a set of edges, each edge in the set of edges connecting a node in the first set of nodes to a node in the second set of nodes;

identifying one or more portions of bit strings that are stored at the first storage node and that are associated with a bitmap index, wherein the bitmap index includes a plurality of bit strings corresponding to the first set of nodes, and wherein a value stored in a particular location in each bit string indicates whether an edge connects a first node corresponding to the bit string to a second node corresponding to the particular location;

determining, at the first storage node, at least a first biclique based on the one or more portions of bit strings that are stored at the first storage node;

forwarding the request to at least a second storage node for determination of at least a second biclique;

receiving data identifying the second biclique from the second storage node; and

outputting data identifying the first biclique and the data identifying the second biclique in response to the request.

19. The computer readable storage device of claim 18 , wherein the bitmap index is generated by a measurement system, and wherein the graph corresponds to at least one of:

less than all users tracked by the measurement system,

a custom segment of the users tracked by the measurement system, or

top N signals associated tracked by the measurement system, wherein N is an integer greater than or equal to one.

Assignments (6)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 7, 2025
From: CIRCUIT, INC.
To: CIRCUIT HOLDINGS, INC.
Reel/Frame 072497/0436 →
MERGER AND CHANGE OF NAME Recorded Aug 15, 2024
From: MOLECULA CORP.; CIRCUIT MERGER SUB, INC.
To: CIRCUIT, INC.
Reel/Frame 068300/0045 →
SECURITY INTEREST Recorded Feb 12, 2024
From: MOLECULA CORP.
To: FIRST-CITIZENS BANK & TRUST COMPANY (SUCCESSOR BY PURCHASE TO THE FEDERAL DEPOSIT INSURANCE CORPORATION AS RECEIVER FOR SILICON VALLEY BRIDGE BANK, N.A. (AS SUCCESSOR TO SILICON VALLEY BANK))
Reel/Frame 066440/0187 →
CHANGE OF NAME Recorded Nov 22, 2019
From: PILOSA CORP.
To: MOLECULA CORP.
Reel/Frame 051097/0072 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 20, 2017
From: UMBEL CORP.
To: PILOSA CORP.
Reel/Frame 042086/0911 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 29, 2016
From: TURNER, TRAVIS; EBANKS, RYAN EDWARD; SAFFORD, KEVIN TROY; JAFFEE, MATTHEW ISAAC; GRUBEN, TODD WESLEY; SOYLAND, CODY STEPHEN; MAYCOTTE, HIGINIO O.; MARTIN, CHARLES
To: UMBEL CORPORATION
Reel/Frame 038425/0108 →