IP Library Granted Patent US 10,262,333
Granted Patent B2
US 10,262,333 · App. 14/821,269 · Granted Apr 16, 2019

Linear programming approach for querying a trie data structure

Inventor: Swapnil Suresh Jamthe (Bangalore, IN)
Assignee: INMOBI PTE. LTD.
G06Q30/0241
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 10,262,333
App. No.
14/821,269
Granted
Apr 16, 2019
Kind
B2
Abstract

The present invention provides a method and system for querying a trie data structure. The method and system include constructing a pool of linear programming problems for a trie data structure, storing the pool of linear programming problems in a memory, receiving a request, setting variables in one linear programming problem to unity, sending the one linear programming problem to a solver, wherein the solver sets a p variable corresponding to each path to 0 or 1, iterating through p variables corresponding to one or more paths, considering at most n paths, selecting one path from the n paths, assigning same values as that of one or more variables of the unknown value type nodes that are present in the selected one path, and reselling variables in the one linear programming problem to zero that was previously set to unity.

Claims (55)

1. A computer implemented method for processing data stored in a trie data structure, the method comprising:

a. constructing a pool of linear programming problems for a trie data structure, wherein the pool of linear programming problems for the trie data structure is constructed at regular intervals, wherein the pool comprises similar linear programming problems, wherein the trie data structure comprises one or more paths, wherein each path of the one or more paths comprises three or more known value type nodes and two or more unknown value type nodes, wherein each path has a path value, wherein at least three of the known value types correspond to a location, an operating system, and a device identifier and at least two of the unknown value type nodes respectively correspond to an ad template and an advertiser;

b. storing the pool of linear programming problems in a memory;

c. receiving a request, wherein the request comprises one or more values for the one or more known value type nodes;

d. setting variables in one linear programming problem to unity, wherein the one linear programming problem is picked from the pool of linear programming problems, wherein the variables correspond to one or more values received in the request;

e. sending the one linear programming problem to a solver, wherein the solver sets a p variable corresponding to each path to 0 or 1, wherein the solver considers the variables corresponding to each known value type node as constants;

f. iterating through p variables corresponding to the one or more paths;

g. considering at most n paths, wherein a value of the p variable is set to 0 in the considered at most n paths;

h. selecting one path from the n paths, wherein selecting is based on the weighted random method;

i. assigning same values as that of one or more variables of the unknown value type nodes, wherein the one or more variables of the unknown value type nodes are present in the selected one path to select at least a location, an operating system, a device identifier, and an ad, and an advertiser corresponding to the one or more values in the request;

j. serving the ad from the advertiser to the device corresponding to the device identifier for an operating system of the device at the location of the device; and

k. resetting variables in the one linear programming problem to zero that was previously set to unity, wherein the one linear programming problem is put back into the pool of linear programming problems.

2. The computer implemented method as claimed in claim 1 , wherein the computer implemented method further comprises assigning random values to one or more variables of the unknown value type nodes, wherein the one or more variables of the unknown value type nodes are not present in the selected one path.

3. The computer implemented method as claimed in claim 1 , wherein each linear programming problem of the pool of linear programming problems comprises an objective function and at east one constraint relationship.

4. The computer implemented method as claimed in claim 1 , wherein the solver sets the p variable to 0 or 1 based on the objective function and the at least one constraint relationship.

5. A system for processing data stored in a trie data structure, the system comprising:

a processor; and

a memory comprising code stored therein and executable by the processor, wherein the code includes:

a. a building module, wherein the construction module is configured to construct a pool of linear programming problems for a trie data structure, wherein the pool comprises similar linear programming problems, wherein the trie data structure comprises one or more paths, wherein each path of the one or more paths comprises one or more known value type nodes and one or more unknown value type nodes, wherein each path has a path value;

b. a storage module, wherein the storage module is configured to store the pool of linear programming problems in a memory;

c. a receiving module, wherein the receiving module is configured to receive a request, wherein the request comprises one or more values for the one or more known value type nodes;

d. a configuration module, wherein the configuration module is configured to set variables in one linear programming problem to unity, wherein the one linear programming problem is picked from the pool of linear programming problems, wherein the variables correspond to one or more values received in the request;

e. a transmitting module, wherein the transmitting module is configured to send the one linear programming problem to a solver, wherein the solver sets a p variable corresponding to each path to 0 or 1, wherein the solver considers the variables corresponding to each known value type node as constants;

f. an iteration module, wherein the iteration module is configured to iterate through p variables corresponding to one or more paths;

g. an identification module, wherein the identification module is configured to consider at most n paths, wherein value of the p variable is set to 0 in the considered at most n paths;

h. a selection module, wherein the selection module is configured to select one path from the n paths;

l. an assignment module, wherein the assignment module is configured to assign same values as that of one or more variables of the unknown value type nodes, wherein the one or more variables of the unknown value type nodes are present in the selected one path to select at least a location, an operating system, a device identifier, and an ad, and an advertiser corresponding to the one or more values in the request;

m. a serving module, wherein the serving module is configured to serve the ad from the advertiser to the device corresponding to the device identifier for an operating system of the device at the location of the device; and

i. a resetting module, wherein the resetting module is configured to reset the variables in the one linear programming problem to zero.

6. The system as claimed in claim 5 , wherein the construction module constructs the pool of linear programming problems for the trie data structure at regular intervals.

7. The system as claimed in claim 5 , wherein the selection module selects one path from the n paths based on the weighted random method.

8. The system as claimed in claim 5 , wherein the assignment module assigns same values to the one or more variables of the unknown value type nodes that are present in the selected one path.

9. The system as claimed in claim 5 , wherein the assignment module assigns random values to the one or more variables of the unknown value type nodes that are not present in the selected one path.

10. The system as claimed in claim 5 , wherein the resetting module resets the variables in the one linear programming problem to zero that was previously set to unity.

11. The system as claimed in claim 10 , wherein the resetting module puts back the one linear programming problem into the pool of linear programming problems.

12. The system as claimed in claim 5 , wherein the assignment module assigns random values to one or more variables of the unknown value type nodes, wherein the one or more variables of the unknown value type nodes are not present in the selected one path.

13. A non-transitory, computer program product comprising code stored therein and executable by the processor, wherein the code includes:

a. a building module, wherein the construction module is configured to construct a pool of linear programming problems for a trie data structure, wherein the pool comprises similar linear programming problems, wherein the trie data structure comprises one or more paths, wherein each path of the one or more paths comprises one or more known value type nodes and one or more unknown value type nodes, wherein each path has a path value;

b. a storage module, wherein the storage module is configured to store the pool of linear programming problems in a memory;

c. a receiving module, wherein the receiving module is configured to receive a request, wherein the request comprises one or more values for the one or more known value type nodes;

d. a configuration module, wherein the configuration module is configured to set variables in one linear programming problem to unity, wherein the one linear programming problem is picked from the pool of linear programming problems, wherein the variables correspond to one or more values received in the request;

e. a transmitting module, wherein the transmitting module is configured to send the one linear programming problem to a solver, wherein the solver sets a p variable corresponding to each path to 0 or 1, wherein the solver considers the variables corresponding to each known value type node as constants;

f. an iteration module, wherein the iteration module is configured to iterate through p variables corresponding to one or more paths;

g. an identification module, wherein the identification module is configured to consider at most n paths, wherein value of the p variable is set to 0 in the considered at most n paths;

h. a selection module, wherein the selection module is configured to select one path from the n paths;

n. an assignment module, wherein the assignment module is configured to assign same values as that of one or more variables of the unknown value type nodes, wherein the one or more variables of the unknown value type nodes are present in the selected one path to select at least a location, an operating system, a device identifier, and an ad, and an advertiser corresponding to the one or more values in the request;

o. a serving module, wherein the serving module is configured to serve the ad from the advertiser to the device corresponding to the device identifier for an operating system of the device at the location of the device; and

i. a resetting module, wherein the resetting module is configured to reset the variables in the one linear programming problem to zero.

14. The non-transitory, computer program product in claim 13 , wherein the construction module constructs the pool of linear programming problems for the trie data structure at regular intervals.

15. The non-transitory, computer program product claim 13 , wherein the selection module selects one path from the n paths based on the weighted random method.

16. The non-transitory, computer program product in claim 13 , wherein the assignment module assigns same values to the one or more variables of the unknown value type nodes that are present in the selected one path.

17. The non-transitory, computer program product in claim 13 , wherein the assignment module assigns random values to the one or more variables of the unknown value type nodes that are not present in the selected one path.

18. The non-transitory, computer program product in claim 13 , wherein the resetting module resets the variables in the one linear programming problem to zero that was previously set to unity.

19. The non-transitory, computer program product in claim 18 , wherein the resetting module puts back the one linear programming problem into the pool of linear programming problems.

20. The non-transitory, computer program product in claim 13 , wherein the assignment module assigns random values to one or more variables of the unknown value type nodes, wherein the one or more variables of the unknown value type nodes are not present in the selected one path.

Assignments (10)
SECURITY INTEREST Recorded Apr 1, 2026
From: INMOBI TECHNOLOGY SERVICES PTE. LTD.
To: MADISON PACIFIC TRUST LIMITED
Reel/Frame 074244/0228 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 31, 2026
From: INMOBI PTE LTD.
To: INMOBI TECHNOLOGY SERVICES PTE. LTD.
Reel/Frame 074233/0395 →
RELEASE OF SECURITY INTEREST Recorded Dec 31, 2025
From: MARS GROWTH CAPITAL PRE-UNICORN FUND, L.P.
To: INMOBI PTE LTD.; INMOBI HOLDINGS PTE LTD.
Reel/Frame 073343/0448 →
RELEASE OF SECURITY INTEREST Recorded Dec 31, 2025
From: MARS GROWTH CAPITAL PRE-UNICORN FUND, L.P.
To: INMOBI PTE LTD.; INMOBI HOLDINGS PTE LTD.
Reel/Frame 073343/0481 →
SECURITY INTEREST Recorded Dec 31, 2025
From: INMOBI PTE LTD.
To: MADISON PACIFIC TRUST LIMITED
Reel/Frame 073343/0572 →
CORRECTIVE ASSIGNMENT TO CORRECT THE THE PROPERTY TYPE FOR NUMBERS 10725921, 11244354, 11455274, AND 11330398 FROM APPLICATION NUMBERS TO PATENT NUMBERS PREVIOUSLY RECORDED ON REEL 68126 FRAME 833. ASSIGNOR(S) HEREBY CONFIRMS THE SECURITY INTEREST. Recorded Aug 5, 2024
From: INMOBI PTE. LTD.; INMOBI HOLDINGS PTE. LTD.
To: MARS GROWTH CAPITAL PRE-UNICORN FUND, L.P.
Reel/Frame 068309/0178 →
SECURITY INTEREST Recorded Jul 30, 2024
From: INMOBI PTE. LTD.; INMOBI HOLDINGS PTE. LTD.
To: MARS GROWTH CAPITAL PRE-UNICORN FUND, L.P.
Reel/Frame 068126/0833 →
RELEASE OF SECURITY INTEREST IN PATENTS AT REEL 53147/FRAME 0341 Recorded Jul 30, 2024
From: CRESTLINE DIRECT FINANCE, L.P.
To: INMOBI PTE. LTD.
Reel/Frame 068202/0824 →
SECURITY INTEREST Recorded Jul 8, 2020
From: INMOBI PTE. LTD.
To: CRESTLINE DIRECT FINANCE, L.P., AS COLLATERAL AGENT FOR THE RATABLE BENEFIT OF THE SECURED PARTIES
Reel/Frame 053147/0341 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 11, 2018
From: JAMTHE, SWAPNIL SURESH
To: INMOBI PTE. LTD.
Reel/Frame 046838/0240 →
Priority Claims (1)
IN 3870/CHE/2014 · Aug 7, 2014 · national
Continuity (1)
Related Publication 20160042384A1 · Feb 11, 2016