IP Library Patent Application 14840318
Patent Application
App. No. 14/840,318

COMPUTING TRANSITIVE CLOSURES

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 None
App. No.
14/840,318
Abstract

Methods, systems, and apparatus, including computer programs encoded on computer storage media, for computing transitive closures of relations. One of the methods includes initializing the transitive closure F of an initial iteration with the tuples in another relation f. New first tuples and new second tuples are iteratively computed until no new first tuples are generated, including: generating new first tuples on each iteration by matching destination elements of tuples in the auxiliary relation of a previous iteration with source elements of tuples in the auxiliary relation of the previous iteration, generating second tuples on each iteration by matching destination elements of the new first tuples with source elements of tuples in F of the previous iteration, and adding the new first tuples and the new second tuples to F of a current iteration.

Claims (85)

1 . A computer-implemented method comprising:

receiving a request to compute a transitive closure F of a relation f, wherein the relation f includes tuples that each relate a source element s to a destination element d;

initializing F of an initial iteration with the tuples in f;

initializing an auxiliary relation of the initial iteration with the tuples in f;

iteratively computing new first tuples and new second tuples on each iteration until no new first tuples are generated, including:

generating new first tuples on each iteration by matching destination elements of tuples in the auxiliary relation of a previous iteration with source elements of tuples in the auxiliary relation of the previous iteration,

generating second tuples on each iteration by matching destination elements of the new first tuples with source elements of tuples in F of the previous iteration, and

adding the new first tuples and the new second tuples to F of a current iteration; and

providing an indication that the tuples in F of the current iteration represent the transitive closure off.

2 . The method of claim 1 , further comprising:

generating evaluation predicates that include:

a first predicate that when evaluated generates the new first tuples,

a second predicate that when evaluated generates the new second tuples, and

an F n+1 predicate that when evaluated generates a relation having tuples in F n , tuples generated by the first predicate, and tuples generated by the second predicate,

wherein iteratively computing new first tuples and new second tuples comprises iteratively evaluating the evaluation predicates.

3 . The method of claim 2 , wherein:

the first predicate is defined by:

ψ 1 (s,d):—f(s,d)

ψ n+1 (s,d):—exists(a: ψ n (s,a), ψ n (a,d)), F n (s,d),

and the second predicate is defined by:

F 1 (s,d):—f(s, d)

F n+1 (s,d):—F n (s,d); ψ n+1 (s,d); exists(a: ψ n+1 (s,a), F n (a,d)).

4 . The method of claim 1 , further comprising:

adding the new first tuples to a new auxiliary relation for a current iteration.

5 . The method of claim 1 , wherein the new first tuples for an iteration n includes tuples representing 2 n chained uses of f.

6 . The method of claim 1 , wherein the second tuples for an iteration n includes tuples representing between 2 n and 2 n+1 chained uses of f.

7 . The method of claim 1 , further comprising computing the transitive relation off while generating duplicate tuples only due to branches and loops.

8 . The method of claim 1 , further comprising computing the transitive relation of f in O(log 2 (lsp)) iterations, wherein lsp represents a length of a longest shortest path of tuples in F.

9 . A system comprising:

one or more computers and one or more storage devices storing instructions that are operable, when executed by the one or more computers, to cause the one or more computers to perform operations comprising:

receiving a request to compute a transitive closure F of a relation f, wherein the relation f includes tuples that each relate a source element s to a destination element d;

initializing F of an initial iteration with the tuples in f;

initializing an auxiliary relation of the initial iteration with the tuples in f;

iteratively computing new first tuples and new second tuples on each iteration until no new first tuples are generated, including:

generating new first tuples on each iteration by matching destination elements of tuples in the auxiliary relation of a previous iteration with source elements of tuples in the auxiliary relation of the previous iteration,

generating second tuples on each iteration by matching destination elements of the new first tuples with source elements of tuples in F of the previous iteration, and

adding the new first tuples and the new second tuples to F of a current iteration; and

providing an indication that the tuples in F of the current iteration represent the transitive closure off.

10 . The system of claim 9 , wherein the operations further comprise:

generating evaluation predicates that include:

a first predicate that when evaluated generates the new first tuples,

a second predicate that when evaluated generates the new second tuples, and

an F n+1 predicate that when evaluated generates a relation having tuples in F n , tuples generated by the first predicate, and tuples generated by the second predicate,

wherein iteratively computing new first tuples and new second tuples comprises iteratively evaluating the evaluation predicates.

11 . The system of claim 10 , wherein:

the first predicate is defined by:

ψ 1 (s,d):—f(s,d)

ψ n+1 (s,d):—exists(a: ψ n (s,a), ψ n (a,d)), F n (s,d),

and the second predicate is defined by:

F 1 (s,d):—f(s, d)

F n+1 (s,d):—F n (s,d); ψ n+1 (s,d); exists(a: ψ n+1 (s,a), F n (a,d)).

12 . The system of claim 9 , wherein the operations further comprise:

adding the new first tuples to a new auxiliary relation for a current iteration.

13 . The system of claim 9 , wherein the new first tuples for an iteration n includes tuples representing 2 n chained uses of f.

14 . The system of claim 9 , wherein the second tuples for an iteration n includes tuples representing between 2 n and 2 n+1 chained uses of f.

15 . The system of claim 9 , wherein the operations further comprise computing the transitive relation off while generating duplicate tuples only due to branches and loops.

16 . The system of claim 9 , wherein the operations further comprise computing the transitive relation of f in O(log 2 (lsp)) iterations, wherein lsp represents a length of a longest shortest path of tuples in F.

17 . A computer program product, encoded on one or more non-transitory computer storage media, comprising instructions that when executed by one or more computers cause the one or more computers to perform operations comprising:

receiving a request to compute a transitive closure F of a relation f, wherein the relation f includes tuples that each relate a source element s to a destination element d;

initializing F of an initial iteration with the tuples in f;

initializing an auxiliary relation of the initial iteration with the tuples in f;

iteratively computing new first tuples and new second tuples on each iteration until no new first tuples are generated, including:

generating new first tuples on each iteration by matching destination elements of tuples in the auxiliary relation of a previous iteration with source elements of tuples in the auxiliary relation of the previous iteration,

generating second tuples on each iteration by matching destination elements of the new first tuples with source elements of tuples in F of the previous iteration, and

adding the new first tuples and the new second tuples to F of a current iteration; and

providing an indication that the tuples in F of the current iteration represent the transitive closure off.

18 . The computer program product of claim 17 , wherein the operations further comprise:

generating evaluation predicates that include:

a first predicate that when evaluated generates the new first tuples,

a second predicate that when evaluated generates the new second tuples, and

an F n+1 predicate that when evaluated generates a relation having tuples in F n , tuples generated by the first predicate, and tuples generated by the second predicate,

wherein iteratively computing new first tuples and new second tuples comprises iteratively evaluating the evaluation predicates.

19 . The computer program product of claim 18 , wherein:

the first predicate is defined by:

ψ 1 (s,d):—f(s,d)

ψ n+1 (s,d):—exists(a: ψ n (s,a), ψ n (a,d)), F n (s,d),

and the second predicate is defined by:

F 1 (s,d):—f(s, d)

F n+1 (s,d):—F n (s,d); ψ n+1 (s,d); exists(a: ψ n+1 (s,a), F n (a,d)).

20 . The computer program product of claim 17 , wherein the operations further comprise:

adding the new first tuples to a new auxiliary relation for a current iteration.

21 . The computer program product of claim 17 , wherein the new first tuples for an iteration n includes tuples representing 2 n chained uses of f.

22 . The computer program product of claim 17 , wherein the second tuples for an iteration n includes tuples representing between 2 n and 2 n+1 chained uses of f.

23 . The computer program product of claim 17 , wherein the operations further comprise computing the transitive relation off while generating duplicate tuples only due to branches and loops.

24 . The computer program product of claim 17 , wherein the operations further comprise computing the transitive relation of f in O(log 2 (lsp)) iterations, wherein lsp represents a length of a longest shortest path of tuples in F.

Assignments (3)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 27, 2020
From: GITHUB SOFTWARE UK LTD.
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 051710/0252 →
CHANGE OF NAME Recorded Dec 11, 2019
From: SEMMLE LTD.
To: GITHUB SOFTWARE UK LTD.
Reel/Frame 052027/0912 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 11, 2015
From: LYNAGH, IAN
To: SEMMLE LIMITED
Reel/Frame 036542/0672 →