IP Library Granted Patent US 8,484,651
Granted Patent B2
US 8,484,651 · App. 12/115,031 · Granted Jul 9, 2013

Distributed priority queue that maintains item locality

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 8,484,651
App. No.
12/115,031
Granted
Jul 9, 2013
Kind
B2
Abstract

A method of administering a distributed priority queue structure that includes removing a highest priority item from a current root node of a tree structure to create a temporary root node, determining for each subtree connected to the temporary root node a subtree priority comprising the priority of the highest priority data item in the each subtree, determining as the highest priority subtree connected to the temporary root node the subtree connected to the temporary root node having the highest subtree priority, determining whether any of the one or more data items stored at the temporary root node has a higher priority than the highest subtree priority and directing an arrow to the subtree having the highest priority or to the temporary root itself if the priority of the data items stored at temporary root is higher than the priorities of the connected subtrees.

Claims (59)

1. A method of administering a distributed priority queue structure, the distributed priority queue structure comprising a tree having nodes storing one or more data items having a priority, one of the nodes storing a data item with a highest priority in the tree comprising a current root node, at least one pointer pointing to the current root node, each node connected directly to a given node comprising a subtree node of the given node, and all nodes connected to the given node through the subtree node comprising a subtree of the given node, the method comprising:

removing the highest priority item from the current root node to create a temporary root node;

determining for each subtree connected to the temporary root node a subtree priority comprising the priority of the highest priority data item in the each subtree;

determining as the highest priority subtree connected to the temporary root node the subtree connected to the temporary root node having the highest subtree priority;

determining whether any of the one or more data items stored at the temporary root node has a higher priority than the highest subtree priority;

if any of the one or more data items stored at the temporary root node has a priority higher than the highest subtree priority, defining the temporary root node as the current root node; and

if none of the one or more data items stored at the temporary root node has a priority higher than the highest subtree priority, changing the direction of the pointer between the temporary root node and the highest priority subtree to point to the subtree node of the highest priority subtree, and defining the subtree node of the highest priority subtree as the new temporary root node.

2. The method of claim 1 wherein the new temporary root node includes at least one subtree node connected to the new temporary root node and including the additional steps of:

a) determining for each subtree connected to the new temporary root node a subtree priority comprising the priority of the highest priority data item in the each subtree connected to the new temporary root node;

b) determining a highest priority subtree connected to the new temporary root node,

c) if any of the one or more data items stored at the new temporary root node has a priority higher than the priority of the highest priority subtree connected to the new temporary root node, defining the new temporary root node as the current root node; and

d) if none of the one or more data items stored at the new temporary root node has a priority higher than the priority of the highest priority subtree connected to the new temporary root node, changing the direction of the pointer between the new temporary root node and the highest priority subtree connected to the new temporary root node to point to the highest priority subtree connected to the new temporary root node and defining the subtree node of the highest priority subtree connected to the new temporary root node as the new temporary root node.

3. The method of claim 2 including the additional step of performing steps a-d until the step c is satisfied.

4. The method of claim 1 including the additional step of storing a list of subtree weights for each subtree in the tree.

5. The method of claim 1 including the additional step of storing, for each node in the tree, a list of the subtree priorities of each subtree connected to said each node in the tree.

6. The method of claim 5 including the additional step of inserting a new data item into a particular node.

7. The method of claim 6 including the additional step of updating at least some of the subtree priorities after the step of inserting a new data item into a particular node.

8. The method of claim 7 wherein said step of updating at least some of the subtree priorities comprises orienting a pointer at the particular node to point to the highest priority subtree connected to the particular node.

9. The method of claim 2 including the additional step of, when the new temporary root node is defined as the current root, directing a pointer from the current root node to the current root node.

10. The method of claim 1 wherein said nodes comprise agents in a call center.

11. The method of claim 10 wherein said data items comprise data related to telephone calls.

12. The method of claim 11 wherein priority comprises a time that a given data item was received at a given node.

13. A method of administering a distributed priority queue structure, the distributed priority queue structure comprising a tree having nodes storing one or more data items having a priority; each node connected directly to a given node being a subtree node of the given node, and all nodes connected to the given node through the subtree node being a subtree of the given node, wherein the priority of a given subtree comprises the priority of the highest priority data item stored on a node in the given subtree, the method comprising:

for a first node, providing a pointer pointing to a subtree node of a subtree of the first node, the subtree node of the subtree of the first node having a higher priority than the priorities of the one or more data items stored at the first node;

for a second node, providing a pointer pointing to a subtree node of a subtree of the second node, the subtree node of the second node having a higher priority than the priorities of the one or more data items stored at the second node; and

if no subtree connected to the first node has a priority higher than the priorities of the one or more data items stored at the first node, defining the first node as the root node.

14. The method of claim 13 including the additional step of:

a) for a next node, providing a pointer pointing to a subtree node of a subtree of the next node, the subtree node of the next node having a higher priority than the priorities of the one or more data items stored at the next node; and

b) if no subtree connected to the next node has a priority higher than the priorities of the one or more data items stored at the next node, defining the next node as the root node.

15. The method of claim 14 including the additional step of repeating steps a and b until step b is satisfied.

16. The method of claim 14 including the additional step of storing a list of subtree weights for each subtree in the tree.

17. The method of claim 14 including the additional step of storing, for each node in the tree, a list of the subtree priorities of each subtree connected to said each node in the tree.

18. The method of claim 14 including the additional step of inserting a new data item into a particular node.

19. The method of claim 18 including the additional step of updating at least some of the subtree priorities after the step of inserting a new data item into a particular node.

20. The method of claim 19 wherein said step of updating at least some of the subtree priorities comprises orienting a pointer at the particular node to point to the highest priority subtree connected to the particular node.

21. A computer configured for administering a distributed priority queue structure, the distributed priority queue structure comprising a tree having nodes storing one or more data items having a priority, one of the nodes storing a data item with a highest priority in the tree comprising a current root node, a plurality of pointers pointing from a first node to a second node or from the first node to the first node, each node connected directly to a given node comprising a subtree node of the given node, and all nodes connected to the given node through the subtree node comprising a subtree of the given node, the computer comprising:

computer memory storing a weight table storing weights for each subtree of each node in the tree;

means for changing the direction of the plurality of pointers;

means for removing the highest priority data item from the tree;

means for inserting a new data item into the tree; and

means for updating the weight table when the highest priority item is removed from the tree and when a new data item is inserted into the tree.

22. The apparatus of claim 21 wherein said nodes comprise agents in a call center.

23. The apparatus of claim 22 wherein said data items comprise data related to telephone calls.

24. The apparatus of claim 23 wherein the priority comprises a time that a given data item was received at a given node.

25. A non-transitory computer readable recording medium storing a program for causing a computer to perform a method of administering a distributed priority queue structure, the distributed priority queue structure comprising a tree having nodes storing one or more data items having a priority, one of the nodes storing a data item with a highest priority in the tree comprising a current root node, at least one pointer pointing to the current root node, each node connected directly to a given node comprising a subtree node of the given node, and all nodes connected to the given node through the subtree node comprising a subtree of the given node, the method comprising:

removing the highest priority item from the current root node to create a temporary root node;

determining for each subtree connected to the temporary root node a subtree priority comprising the priority of the highest priority data item in the each subtree;

determining as the highest priority subtree connected to the temporary root node the subtree connected to the temporary root node having the highest subtree priority;

determining whether any of the one or more data items stored at the temporary root node has a higher priority than the highest subtree priority;

if any of the one or more data items stored at the temporary root node has a priority higher than the highest subtree priority, defining the temporary root node as the current root node; and

if none of the one or more data items stored at the temporary root node has a priority higher than the highest subtree priority, changing the direction of the pointer between the temporary root node and the highest priority subtree to point to the subtree node of the highest priority subtree, and defining the subtree node of the highest priority subtree as the new temporary root node.

26. A method of administering a distributed priority queue structure, the distributed priority queue structure comprising a tree having nodes, the nodes comprising servers at which telephone calls are received, the nodes storing one or telephone calls having a priority, one of the nodes storing a telephone call with a highest priority in the tree comprising a current root node, at least one pointer pointing to the current root node, each node connected directly to a given node comprising a subtree node of the given node, and all nodes connected to the given node through the subtree node comprising a subtree of the given node, the method comprising:

answering the highest priority telephone call and removing the highest priority telephone call from the current root node to create a temporary root node;

determining for each subtree connected to the temporary root node a subtree priority comprising the priority of the highest priority telephone call in the each subtree;

determining as the highest priority subtree connected to the temporary root node the subtree connected to the temporary root node having the highest subtree priority;

determining whether any of the one or more telephone calls stored at the temporary root node has a higher priority than the highest subtree priority;

if any of the one or more telephone calls stored at the temporary root node has a priority higher than the highest subtree priority, defining the temporary root node as the current root node; and

if none of the one or more telephone calls stored at the temporary root node has a priority higher than the highest subtree priority, changing the direction of the pointer between the temporary root node and the highest priority subtree to point to the subtree node of the highest priority subtree, and defining the subtree node of the highest priority subtree as the new temporary root node.

27. The method of claim 13 , wherein the nodes comprise servers at which telephone calls are received.

Assignments (21)
(SECURITY INTEREST) GRANTOR'S NAME CHANGE Recorded Sep 21, 2023
From: AVAYA INC.
To: AVAYA LLC
Reel/Frame 065019/0231 →
RELEASE OF SECURITY INTEREST IN PATENTS (REEL/FRAME 53955/0436) Recorded May 18, 2023
From: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
To: AVAYA MANAGEMENT L.P.; AVAYA INC.; INTELLISIST, INC.; AVAYA INTEGRATED CABINET SOLUTIONS LLC
Reel/Frame 063705/0023 →
RELEASE OF SECURITY INTEREST IN PATENTS (REEL/FRAME 61087/0386) Recorded May 18, 2023
From: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
To: AVAYA MANAGEMENT L.P.; AVAYA INC.; INTELLISIST, INC.; AVAYA INTEGRATED CABINET SOLUTIONS LLC
Reel/Frame 063690/0359 →
RELEASE OF SECURITY INTEREST IN PATENTS (REEL/FRAME 045034/0001) Recorded May 18, 2023
From: GOLDMAN SACHS BANK USA., AS COLLATERAL AGENT
To: AVAYA INC.; INTELLISIST, INC.; AVAYA INTEGRATED CABINET SOLUTIONS LLC; OCTEL COMMUNICATIONS LLC; VPNET TECHNOLOGIES, INC.; ZANG, INC. (FORMER NAME OF AVAYA CLOUD INC.); HYPERQUALITY, INC.; HYPERQUALITY II, LLC; CAAS TECHNOLOGIES, LLC; AVAYA MANAGEMENT L.P.
Reel/Frame 063779/0622 →
INTELLECTUAL PROPERTY SECURITY AGREEMENT Recorded May 4, 2023
From: AVAYA INC.; AVAYA MANAGEMENT L.P.; INTELLISIST, INC.
To: CITIBANK, N.A., AS COLLATERAL AGENT
Reel/Frame 063542/0662 →
INTELLECTUAL PROPERTY SECURITY AGREEMENT Recorded May 3, 2023
From: AVAYA MANAGEMENT L.P.; AVAYA INC.; INTELLISIST, INC.; KNOAHSOFT INC.
To: WILMINGTON SAVINGS FUND SOCIETY, FSB [COLLATERAL AGENT]
Reel/Frame 063742/0001 →
RELEASE OF SECURITY INTEREST IN PATENTS AT REEL 45124/FRAME 0026 Recorded Apr 26, 2023
From: CITIBANK, N.A., AS COLLATERAL AGENT
To: AVAYA HOLDINGS CORP.; AVAYA INC.; AVAYA MANAGEMENT L.P.; AVAYA INTEGRATED CABINET SOLUTIONS LLC
Reel/Frame 063457/0001 →
INTELLECTUAL PROPERTY SECURITY AGREEMENT Recorded Aug 5, 2022
From: AVAYA INC.; INTELLISIST, INC.; AVAYA MANAGEMENT L.P.; AVAYA CABINET SOLUTIONS LLC
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS COLLATERAL AGENT
Reel/Frame 061087/0386 →
SECURITY INTEREST Recorded Sep 25, 2020
From: AVAYA INC.; AVAYA MANAGEMENT L.P.; INTELLISIST, INC.; AVAYA INTEGRATED CABINET SOLUTIONS LLC
To: WILMINGTON TRUST, NATIONAL ASSOCIATION
Reel/Frame 053955/0436 →
SECURITY INTEREST Recorded Jan 23, 2018
From: AVAYA INC.; AVAYA INTEGRATED CABINET SOLUTIONS LLC; OCTEL COMMUNICATIONS LLC; VPNET TECHNOLOGIES, INC.; ZANG, INC.
To: CITIBANK, N.A., AS COLLATERAL AGENT
Reel/Frame 045124/0026 →
SECURITY INTEREST Recorded Jan 10, 2018
From: AVAYA INC.; AVAYA INTEGRATED CABINET SOLUTIONS LLC; OCTEL COMMUNICATIONS LLC; VPNET TECHNOLOGIES, INC.; ZANG, INC.
To: GOLDMAN SACHS BANK USA, AS COLLATERAL AGENT
Reel/Frame 045034/0001 →
BANKRUPTCY COURT ORDER RELEASING ALL LIENS INCLUDING THE SECURITY INTEREST RECORDED AT REEL/FRAME 030083/0639 Recorded Dec 15, 2017
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
To: AVAYA INC.
Reel/Frame 045012/0666 →
BANKRUPTCY COURT ORDER RELEASING ALL LIENS INCLUDING THE SECURITY INTEREST RECORDED AT REEL/FRAME 025863/0535 Recorded Dec 15, 2017
From: THE BANK OF NEW YORK MELLON TRUST, NA
To: AVAYA INC.
Reel/Frame 044892/0001 →
BANKRUPTCY COURT ORDER RELEASING ALL LIENS INCLUDING THE SECURITY INTEREST RECORDED AT REEL/FRAME 041576/0001 Recorded Dec 15, 2017
From: CITIBANK, N.A.
To: AVAYA INC.; AVAYA INTEGRATED CABINET SOLUTIONS INC.; OCTEL COMMUNICATIONS LLC (FORMERLY KNOWN AS OCTEL COMMUNICATIONS CORPORATION); VPNET TECHNOLOGIES, INC.
Reel/Frame 044893/0531 →
BANKRUPTCY COURT ORDER RELEASING ALL LIENS INCLUDING THE SECURITY INTEREST RECORDED AT REEL/FRAME 029608/0256 Recorded Dec 15, 2017
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
To: AVAYA INC.
Reel/Frame 044891/0801 →
SECURITY INTEREST Recorded Jan 27, 2017
From: AVAYA INC.; AVAYA INTEGRATED CABINET SOLUTIONS INC.; OCTEL COMMUNICATIONS CORPORATION; VPNET TECHNOLOGIES, INC.
To: CITIBANK, N.A., AS ADMINISTRATIVE AGENT
Reel/Frame 041576/0001 →
SECURITY AGREEMENT Recorded Mar 13, 2013
From: AVAYA, INC.
To: BANK OF NEW YORK MELLON TRUST COMPANY, N.A., THE
Reel/Frame 030083/0639 →
SECURITY AGREEMENT Recorded Jan 10, 2013
From: AVAYA, INC.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
Reel/Frame 029608/0256 →
SECURITY AGREEMENT Recorded Feb 22, 2011
From: AVAYA INC., A DELAWARE CORPORATION
To: BANK OF NEW YORK MELLON TRUST, NA, AS NOTES COLLATERAL AGENT, THE
Reel/Frame 025863/0535 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 21, 2008
From: BAJPAI, RATAN; DHARA, KRISHNA KISHORE; KRISHNASWAMY, VENKATESH
To: AVAYA TECHNOLOGY CORP.
Reel/Frame 021265/0114 →
REASSIGNMENT Recorded Jun 26, 2008
From: AVAYA TECHNOLOGY LLC
To: AVAYA INC
Reel/Frame 021156/0734 →