The teachings in accordance with the exemplary embodiments of this invention relate generally to filtering and matching in a computerized publish-subscribe-system and, more specifically, relate to constructing prefix codes of a shortest length to identify subscription categories.
This section is intended to provide a background or context to the invention that is recited in the claims. The description herein may include concepts that could be pursued, but are not necessarily ones that have been previously conceived or pursued. Therefore, unless otherwise indicated herein, what is described in this section is not prior art to the description and claims in this application and is not admitted to be prior art by inclusion in this section.
Certain abbreviations that may be found in the description and/or in the Figures are herewith defined as follows:
Message publish and subscribe systems have been an important way for computer network users to retrieve desired content specific information. In a publish/subscribe system, users can select message sources of content specific information according to their own requirements. Then when a publisher publishes a message which relates to a user's requirements the message is delivered to the user.
In a computerized publish-subscribe system, a category of content specific information may be represented by a sequence of binary bits (i.e., a bit string). For communication bandwidth and memory space considerations, it is desirable that the length of the bit string be minimized. On the other hand, for efficiency of computer processing, it is desirable that the matching between publication and subscription can be done by efficient prefix matching. The exemplary embodiments as described below provide at least a binary coding algorithm to reach these goals.
In an exemplary aspect of the invention, there is a method comprising: determining, by a network device, a shortest code length of at least one category of a publish-subscribe system such that a maximum length requirement of prefix code system for the at least one category is not exceeded; and assigning, by the network device, a prefix code of the shortest code length to each of the at least one category of the publish-subscribe system.
In another exemplary aspect of the invention, there is an apparatus comprising: at least one processor; and at least one memory including computer program code, where the at least one memory and the computer program code are configured, with the at least one processor, to cause the apparatus to at least: determine a shortest code length of at least one category of a publish-subscribe system such that a maximum length requirement of prefix code system for the at least one category is not exceeded; and assign a prefix code of the shortest code length to each of the at least one category of the publish-subscribe system
The foregoing and other aspects of embodiments of this invention are made more evident in the following Detailed Description, when read in conjunction with the attached Drawing Figures, wherein:
In this invention, there is at least a method and apparatus to filter and match in a computerized publish-subscribe-system to construct prefix codes of a shortest length to identify subscription categories.
This invention relates to filtering/matching in a computerized publish-subscribe system. Publish-subscribe is a widely used mechanism for scalable communication of information. In this mechanism, publications are characterized into categories (also called topics, subjects, channels, classes, groups, etc.), without knowledge of what subscriptions there may be. Subscribers register their interests in a category and then asynchronously receive publications matching their interest. In many cases, categories form a hierarchical structure. For example, there is hierarchical categorization for points of interest [1], businesses [2], goods [3], books [4], and research fields [5]. In these cases, a subscription may refer to an arbitrary level of the hierarchy. For example, a user looking for a place to eat may express a general interest on the “restaurant” category, or he/she may want to be very specific about the food style, e.g., “restaurant/Italy food”.
Before describing the exemplary embodiments of the invention in further detail reference is now made to
The UE 200 includes processing means such as at least one data processor (DP) 202, storing means such as at least one computer-readable memory (MEM) 204 storing data 206 and at least one computer program (PROG) 208 or other set of executable instructions, communicating means such as a transmitter TX 210 and a receiver RX 212 for bidirectional wireless communications with the UE 100 via an antenna 214.
The eNB 220 includes processing means such as at least one data processor (DP) 222, storing means such as at least one computer-readable memory (MEM) 224 storing data 226 and at least one computer program (PROG) 228 or other set of executable instructions, communicating means such as a transmitter TX 230 and a receiver RX 232 for bidirectional wireless communications with the UE 100 via an antenna 234.
The UE 100 includes processing means such as at least one data processor (DP) 252, storing means such as at least one computer-readable memory (MEM) 254 storing data 256 and at least one computer program (PROG) 258 or other set of executable instructions, communicating means such as a transmitter TX 260 and a receiver RX 262 for bidirectional wireless communications with the UE 200 or the eNB 220 via one or more antennas 264. The UE 100, e.g. if capable of dual connectivity, may have multiple transmitters TX and receivers RX to enable simultaneous communication with UE 200 and eNB 220. In addition, it is noted that although
At least one of the PROGs 208 in the UE 200 is assumed to include a set of program instructions that, when executed by the associated DP 202, enable the device to operate in accordance with the exemplary embodiment to at least determine a shortest code length of at least one category of a publish-subscribe system such that a maximum length requirement of prefix code system for the at least one category is not exceeded, and assign a prefix code of the shortest code length to each of the at least one category of the publish-subscribe system, as detailed herein in accordance with the exemplary embodiments. In these regards the exemplary embodiments of this invention may be implemented at least in part by computer software stored on the MEM 204, which is executable by the DP 202 of the UE 200, or by hardware, or by a combination of tangibly stored software and hardware (and tangibly stored firmware).
Similarly, at least one of the PROGs 228 in the eNB 220 is assumed to include a set of program instructions that, when executed by the associated DP 222, enable the device to at least enable the device to operate in accordance with the exemplary embodiment to at least determine a shortest code length of at least one category of a publish-subscribe system such that a maximum length requirement of prefix code system for the at least one category is not exceeded, and assign a prefix code of the shortest code length to each of the at least one category of the publish-subscribe system, as detailed herein in accordance with the exemplary embodiments. In these regards the exemplary embodiments of this invention may be implemented at least in part by computer software stored on the MEM 224, which is executable by the DP 222 of the eNB 220, or by hardware, or by a combination of tangibly stored software and hardware (and tangibly stored firmware).
Similarly, at least one of the PROGs 258 in the UE 100 is assumed to include a set of program instructions that, when executed by the associated DP 252, enable the device to operate in accordance with the exemplary embodiments of this invention, as detailed above. In these regards the exemplary embodiments of this invention may be implemented at least in part by computer software stored on the MEM 254, which is executable by the DP 252 of the UE 100, or by hardware, or by a combination of tangibly stored software and hardware (and tangibly stored firmware). Electronic devices implementing these aspects of the invention need not be the entire devices as depicted at
In general, the various embodiments of the UE 100 and the UE 200 can include, but are not limited to personal portable digital devices having wireless communication capabilities, including but not limited to cellular telephones, navigation devices, laptop/palmtop/tablet computers, smart watches, wearables, digital cameras and music devices, and Internet appliances.
Various embodiments of the computer readable MEM 204, 224, and 254 include any data storage technology type which is suitable to the local technical environment, including but not limited to semiconductor based memory devices, magnetic memory devices and systems, optical memory devices and systems, fixed memory, removable memory, disc memory, flash memory, DRAM, SRAM, EEPROM and the like. Various embodiments of the DP 202, 222, and 252 include but are not limited to general purpose computers, special purpose computers, microprocessors, digital signal processors (DSPs) and multi-core processors.
While various exemplary embodiments have been described above it should be appreciated that the practice of the invention is not limited to the exemplary embodiments shown and discussed here. Various modifications and adaptations to the foregoing exemplary embodiments of this invention may become apparent to those skilled in the relevant arts in view of the foregoing description.
Further, some of the various features of the above non-limiting embodiments may be used to advantage without the corresponding use of other described features.
The foregoing description should therefore be considered as merely illustrative of the principles, teachings and exemplary embodiments of this invention, and not in limitation thereof.
In a computerized publish-subscribe system, a category is represented by a sequence of binary bits (i.e., a bit string). For communication bandwidth and memory space considerations, it is desirable that the length of the bit string be minimized. On the other hand, for efficiency of computer processing, it is desirable that the matching between publication and subscription can be done by efficient prefix matching. This invention provides a binary coding algorithm that reaches both goals.
This invention may be applied to any category based publish-subscribe services. The publishers and subscribers may be mobile or fixed. They may reside in a single computer or distributed in a network. The communication may be wired or wireless. Example applications include newsgroup (matching of topic categories), social networks (matching of community categories), transportation (matching of POI categories), e-commerce (matching of goo ds categories), and middleware/internet of things (matching of event categories). Potential users of this invention are publish-subscribe system designers and service providers.
The invention is particularly useful in an environment where the communication bandwidth is highly constrained. For example, in the emerging LTE-Direct mobile peer-to-peer communication technology, such as between the UE 100 and the UE 200 of
A set of codes are said to be prefix codes if no code in the set is a prefix of any other code in the same set. Intuitively, if the codes of categories start with prefix codes, then the categories can be efficiently filtered or matched by a subscription to a specific prefix code.
Since the code lengths for each level is fixed, such a coding strategy is referred to as fixed-length coding.
The problem with this coding scheme is that there is a lot of waste of coding space. Specifically, the length of a subcategory code is fixed to be 5 bits, even though most categories do not need this many bits to represent their subcategories. For example, the “Convenience Store” category only needs 1 bit for its two subcategories, so does “Bookshop”, “Department Store”, and “Mall-Shopping Complex”.
Now consider another extreme coding strategy, which is to have flat codes across all subcategories. For the example shown in
This invention provides an algorithm, called Minimum code Assignment for Category Hierarchy (MACH), that is able to automatically produce a coding scheme for a given hierarchical category structure. The algorithm has two desirable properties: (i) code length is minimized; (ii) prefix matching at an arbitrary level is enabled. As an early advertisement, for the category structure shown in
In a publish-subscribe system, a category is traditionally represented by an ASCII string, e.g., “Food and Drink”, “Food and Drink/Grocery”. This representation is too lengthy for a code-length constrained system. For example, “Food and Drink/Grocery” contains 22 characters and therefore would occupy 22×8=176 bits, whereas the length of a publication in a LTE-Direct system is limited to 128 bits. More compact coding is required for such a system.
Hierarchical category structures exist in many applications, such as book classification [4], industry classification [2], research field classification [8], and so on. These classification systems adopt fixed-length coding. As discussed above, this approach leads to waste of code space. Our invention adopts variable-length coding wherein the code length may be different for different categories.
There is a large body of work on lossless coding to compress digital data. A widely used technique is entropy coding (e.g., Huffman coding) which represents frequently occurring symbols with few bits and rarely occurring symbols with more bits. Thus entropy coding is variable-length coding. However, our invention has a different objective than entropy coding. The objective of entropy coding is to minimize the average code length. The objective of our invention, on the other hand, is to minimize the maximum code length. We care about the maximum code length because in a communication protocol it determines the number of bits that a publish-subscribe system needs to reserve for a category hierarchy.
U.S. Pat. No. 8,665,988 provides a method to construct prefix codes for a given set of code lengths. Specifically, given a set of code lengths l1, l2, . . . , ln, the method constructs binary prefix codes w1, w2, . . . , wn, such that the length of wi is li. In their case, the code lengths are given a priori, whereas in our case the code lengths are unknown and to be determined. Furthermore, they do not deal with hierarchical structures whereas the exemplary embodiments of the invention does.
The problem studied in this invention is somehow similar to Glassful network addresses. The classful network address architecture divides the IP address space into multiple address classes. All classes have a common address length (which is 32 bits for IPv4). The first few bits of an address are used as prefix code to distinguish between different classes. Each class has a different prefix code length. For example, all class A addresses start with 0, all class B addresses start with 10, all class C addresses start with 110, etc. In this way a class can be efficiently detected by prefix matching. A class with shorter prefix code leaves more bits for network addresses and therefore is able to accommodate more network hosts. The difference between the classful network address architecture and our invention is that the two systems work with different preconditions. In the case of the classful network address architecture, the prefix codes of different classes are designed a priori. The number of network addresses under each class is then constrained by the number of remaining bits. In our case, it is the other way around; the number of subcategories under each category is given a priori and we need to construct the prefix code.
Given a category hierarchy, the MACH algorithm constructs codes level by level from specific categories to general categories. For each level, the algorithm invokes a procedure called children-coding to assign codes for the categories at that level. The procedure takes as input the cumulative code lengths of lower levels. The procedure goes through two stages. At the first stage, the procedure determines the shortest possible code lengths for each category such that the length requirements of a prefix code system are satisfied. In doing this, the procedure takes into account the cumulative code lengths of lower levels such that the cumulative code lengths up to the current level are minimized. At the second stage, the procedure assigns prefix codes such that the determined code lengths are observed. Compared to fixed-length coding, the MACH algorithm generates shorter code lengths without losing the power of efficient prefix matching. In addition, the MACH algorithm automatically identifies the bits that are not necessary for prefix matching. These bits are saved to allow growth of categories. The bit saving is prioritized according to a configurable criterion. For example, the categories that are expected to grow faster get more bit saving. Furthermore, the bit saving is spread across various categories to the extent allowed by requirements of prefix codes.
This section is organized as follows. In the “Preliminaries” subsection we introduce the preliminaries including notions, denotations, and theories used in the MACH algorithm. In the “Description of the MACH Algorithm” subsection we describe the algorithm. In the “Analysis of Algorithm Properties” subsection we analyze the properties of the algorithm. In the “Examples” subsection we demonstrate the benefit of the algorithm using two real-life examples. It is noted that the described contents of these sections is not limiting and the described contents of any subsection may be found at least in part in other sections of the description.
Preliminaries
The input to our algorithm is a category hierarchy represented as a tree (see
The full code of node x, denoted FC(x), is the concatenation of the codewords along the path starting from the root node down to x. For example, the full code of “Food and Drink/Sweet Shop” is 1110. Given a coding scheme S, the longest full code from the root to a leaf node is called the rank of S and is denoted by rank(S). The rank determines the maximum number of bits that is needed to publish or subscribe a category using the coding scheme. The dominant downstream length of node x, denoted by DDL(x), is defined to be max (y is a child of x) CCL(y), wherein CCL(y) is the cumulative code length of node y and is defined to be length (code(y))+DDL(y). Intuitively, DDL(x) indicates how many bits are needed to code all the descendants of x. CCL(x) indicates how many bits are needed to x's descendants plus x itself Clearly, rank(S)=DDL(root). For the coding scheme shown in
A set of codewords is said to be a prefix code system if there is no codeword in the set that is a prefix of any other codeword in the same set. Each codeword in a prefix code system is called a prefix code. A coding scheme is said to be prefix matchable if for every d such that 1≤d≤H, the full codes of all level-d nodes form a prefix code system. Intuitively, if a coding scheme is prefix matchable then the full code of any category uniquely identifies itself from the other categories at the same level. In this case, full codes can be safely used in subscription for efficiently filtering/matching at an arbitrary level. Thus, the objective of the MACH algorithm is to construct a prefix matchable coding scheme with the rank minimized.
The following inequality, which is called Kraft's inequality, gives a sufficient and necessary condition for the existence of a prefix code system. Kraft's inequality: A prefix code system with the codeword lengths l1, l2, . . . , ln exists if and only if Σi=2n(½)l
Kraft's inequality suggests that we can always construct a legitimate prefix code system using sufficiently long codeword lengths. This idea has been discussed above. However we want the codeword lengths to be as short as possible. Kraft's inequality provides a tool for us to minimize codeword lengths without violating the length requirements of a prefix code system.
Given an ordered sequence of n natural numbers l1≤/l2≤ . . . ≤ln satisfying Kraft's inequality, one can construct a prefix code system with codeword lengths equal to li by pruning subtrees from a full binary tree of depth ln. First choose any node from the full tree at depth and remove all of its descendants, and then l2, and so on. This construction method is introduced in Kraft and we refer to it as binary tree pruning.
Description of the MACH Algorithm
Given a category tree, the MACH algorithm builds codewords level by level from bottom up. For each node x at level-d, the algorithm invokes a procedure called children-coding to assign codeword for each children of x. The procedure takes as input the list (DDL(x1), DDL(x2), . . . , DDL(xn), where x1, x2, . . . , xn are the children of x. The procedure consists of two stages. At the first stage, the shortest possible codeword lengths for each child xi are determined using Kraft's inequality. At the second stage, the codewords are assigned following the determined codeword lengths. The pseudo code of the MACH algorithm including the children-coding procedure is provided in
Let us explain the above steps. li is used to store the code length of a child node z. Step 2 initializes li's such that (i) they satisfy Kraft's inequality (will be proved); and (ii) li and mi are complementary to each other (i.e., the value of li+mi is the same value for all i's). As will be proved, this step minimizes the DDL value of the parent node x.
At steps 3-5, some li's are reduced without violating Kraft's inequality. The saved bits allow future growth of the category hierarchy under node x. Notice that the reduction follows a round-robin fashion in the descending order of l value. Since l and m are initially complementary to each other, effectively the child nodes with lower m values (i.e., DDL values) get more bit saving. The justification is as follows. mi bits can represent at most 2m
In the children-coding procedure, we prioritize bit saving to favor small categories. Other prioritization strategies are possible. For example, the priority may be based on the difference or ratio between the number of subcategories under node xi and the 2m
Analysis of Algorithm Properties
Since the MACH algorithm is a recursive invocation of the children-coding procedure, we first analyze the properties of the children-coding procedure, and then the properties of the MACH algorithm.
Properties of the Children-Coding Procedure
We formulate and prove that the children-coding procedure has the following desirable properties:
Proposition 1 (formulation of Property (C-i)). Let li's be the code lengths assigned by the children-coding procedure. li≥1 and Σi=1n(½)l
Thus, each li is no less than 1 when step 2 is finished. After that li may be reduced but it will never be smaller than 1. This is because if li is ever reduced to 0, Σj=1n(½)l
Thus, li's satisfy Kraft's inequality when step 1 is finished. After that, li may be reduced but step 5 guarantees that Kraft's inequality remains satisfied at the end of the procedure.
Proposition 2 (formulation of Property (C-ii)). Let li's be the code lengths assigned by the children-coding procedure.
Let li's be a different code length assignment satisfying Kraft's inequality.
We are to show that Σi=1n(½)l
Therefore:
Proposition 3 (formulation of Property C-III). If mi<mj, then
Proposition 4 (Formulation of Property C-IV). If mi<mj, then li≥lj. € Proof: Let li0 and lj0 be the value of li and that of lj when step 2 is finished, respectively. Clearly, li0+mi=lj0+mj. Since mi<mj, li0>lj0. There are two cases afterward:
Properties of the MACH Algorithm
Proposition 5 (formulation of Property M-I). With the coding scheme generated by the MACH algorithm, for every d such that 1≤d≤H, the full codes of all level-d nodes form a prefix code system. €Proof: Prove by induction on d. When d=1, a level-1 node's full code is identical to its codeword. According to Property (C-i), the codewords of all level-1 nodes form a prefix code system. Assume that the proposition holds for d=k. We are to show that the full codes of all level-(k+1) nodes form a prefix code system. Consider two different level-(k+1) nodes xi and xj. We are to show that FC(xi) is not a prefix of FC(xj). Depending on whether xi and xj have a common parent, there are two cases.
Proposition 6 (formulation of Property M-II). Let S be the coding scheme generated by the MACH algorithm for a category tree and be a prefix matchable coding scheme for the same category tree. rank(S)≤(). €Proof: Prove by induction on H. When H=1, the proposition holds according to Proposition 2. Assume that the proposition holds for H=k. We are to show that rank(S)≤rank() if S and are prefix matchable coding schemes on a category tree with H=k+1. Let x1, x2, . . . , xn be the level-1 nodes. Denote by S(xi) the part of S for the subtree rooted at each xi. Since S is prefix matchable, S(xi) is also prefix matchable. The same is true for (xi). Thus, rank(S(xi))≤rank((xi)). Observe that rank(S(xi))'s are input values (i.e., m values) to the children-coding procedure invoked on the root node. According Proposition 2,
In this subsection we provide three examples to demonstrate the MACH algorithm. The first example is the coding scheme generated by MACH for the category structure shown in
It is noted that the term “HERE places” as used herein is non-limiting and can refer to categories of any company, corporation, or other entity which uses subscription categories as referenced herein.
The blank cells in
Consider the saved bits (blank cells) between level-1 codewords and level-2 codewords. Let us discuss how these bits can be used to accommodate category growth. These bits can shift to level-2 codewords, in which case more level-2 categories can be accommodated; or they can shift to level-3 codewords, in which case more level-3 categories can be accommodated. For example, the level-1 category “Accommodation” has two saved bits between its level-1 codeword and level-2 codewords. If some time in the future there are more than two subcategories of “Accommodation”, then one or both of the saved bits can shift to level-2 codewords. Or if there are more than 8 kinds of “Lodging”, then one or both of the saved bits can shift to level-3 codewords.
The OpenStreetMap Features categorizes physical features on the ground (see
The Table below summarizes the comparison of code length among MACH coding, fixed-length coding, and flat coding for the three examples discussed in this subsection.
Advantages of at least the method in accordance with the exemplary embodiments includes:
Further, in accordance with the exemplary embodiments there is subscribing, based at least on a determined shortest code length of at least one category of a publish-subscribe system as described herein, a user to receive content specific subscriptions, and facilitating sending the subscriptions to the user via electronic and/or mail order methods.
In accordance with the exemplary embodiments as described in the paragraph above, each category includes a subcategory, and wherein the determining the shortest code length of a category is taking into account the subcategory.
In accordance with the exemplary embodiments as described in the paragraphs above, the determining comprises identifying code bits of a code length of at least one of the category and the subcategory that are not necessary for prefix matching and removing the bits from the code length.
In accordance with the exemplary embodiments as described in the paragraphs above, the determining comprises applying a minimum code assignment for category hierarchy algorithm first to bits of the subcategory and then the category to determine the shortest code length of the at least one category.
In accordance with the exemplary embodiments as described in the paragraphs above, the determining takes as input a list (DDL(x1), DDL(x2), . . . , DDL(xn)), wherein x1, x2, . . . , xn are the descendants of x, wherein the descendants comprise subcategories, and wherein DDL(x) indicates how many bits are needed to code all the descendants of x.
In accordance with the exemplary embodiments as described in the paragraphs above, the determining takes as input a list (DDL(x1), DDL(x2), . . . , DDL(xn)), wherein x1, x2, . . . , xn are children of x, wherein the children comprise subcategories, and wherein DDL(x) indicates how many bits are needed to code all the children of x.
In accordance with the exemplary embodiments as described in the paragraphs above, there is determining a number of children of x; for a case where the number of children of x=1 then let code (x1)=0, else for a case where the number of children of x>1 then compute a value l for each of the children of x, where l is an integer.
In accordance with the exemplary embodiments as described in the paragraphs above, where computing the value l for each of the children of x comprises computing:
For each 1≤i≤n, let
li=┌log2(Σj=1n2m
In accordance with the exemplary embodiments as described in the paragraphs above, there is picking a biggest value lk of the values l1, l2, . . . ln; reducing the value lk by 1; determining for the value lk if inequality is violated, wherein for a case the inequality is violated then increase lk by 1, else compute a value l for lk.
In accordance with the exemplary embodiments as described in the paragraphs above, there is using binary tree pruning to assign codewords code (xi) such that length(code (xi))=li.
In accordance with the exemplary embodiments as described in the paragraphs above, the prefix code system comprises a set of codewords, and wherein each codeword of the set of codewords is a prefix code.
In accordance with the exemplary embodiments as described in the paragraphs above, there is sending a message comprising the assigned prefix code to the publish-subscribe system to subscribe to the at least one category of the publish-subscribe system.
In accordance with an exemplary embodiment of the invention as described above there is an apparatus comprising: means for determining [e.g., DP202, DP222, and/or DP252], by a device [UE 100 and/or a UE 200 and/or a eNB 220 as in
In the exemplary aspect of the invention according to the paragraph above, wherein the means for determining and assigning comprises a non-transitory computer readable medium [MEM 204, 224, and/or 254] encoded with a computer program [PROG 208, 228, and/or 258]; and/or [Data 206, 226, and 256] executable by at least one processor [DP 202, 222, and/or 252].
The apparatus may be, include or be associated with at least one software application, module, unit or entity configured as arithmetic operation, or as a computer program or portions thereof (including an added or updated software routine), executed by at least one operation processor, unit or module. Computer programs, also called program products or simply programs, including software routines, applets and/or macros, may be stored in any apparatus-readable data storage medium. A computer program product may comprise one or more computer-executable components which, when the program is run, are configured to carry out embodiments described above by means of
The apparatus, such as an access node or user device, or a corresponding component, may be configured as a computer or a microprocessor, such as single-chip computer element, or as a chipset, including or being coupled to a memory for providing storage capacity used for software or arithmetic operation(s) and at least one operation processor for executing the software or arithmetic operation(s).
In general, the various embodiments may be implemented in hardware or special purpose circuits, software, logic or any combination thereof. For example, some aspects may be implemented in hardware, while other aspects may be implemented in firmware or software which may be executed by a controller, microprocessor or other computing device, although the invention is not limited thereto. While various aspects of the invention may be illustrated and described as block diagrams, flow charts, or using some other pictorial representation, it is well understood that these blocks, apparatus, systems, techniques or methods described herein may be implemented in, as non-limiting examples, hardware, software, firmware, special purpose circuits or logic, general purpose hardware or controller or other computing devices, or some combination thereof.
Embodiments of the inventions may be practiced in various components such as integrated circuit modules. The design of integrated circuits is by and large a highly automated process. Complex and powerful software tools are available for converting a logic level design into a semiconductor circuit design ready to be etched and formed on a semiconductor substrate.
The foregoing description has provided by way of exemplary and non-limiting examples a full and informative description of the best method and apparatus presently contemplated by the inventors for carrying out the invention. However, various modifications and adaptations may become apparent to those skilled in the relevant arts in view of the foregoing description, when read in conjunction with the accompanying drawings and the appended claims. However, all such and similar modifications of the teachings of this invention will still fall within the scope of this invention.
It should be noted that the terms “connected,” “coupled,” or any variant thereof, mean any connection or coupling, either direct or indirect, between two or more elements, and may encompass the presence of one or more intermediate elements between two elements that are “connected” or “coupled” together. The coupling or connection between the elements can be physical, logical, or a combination thereof. As employed herein two elements may be considered to be “connected” or “coupled” together by the use of one or more wires, cables and/or printed electrical connections, as well as by the use of electromagnetic energy, such as electromagnetic energy having wavelengths in the radio frequency region, the microwave region and the optical (both visible and invisible) region, as several non-limiting and non-exhaustive examples.
Furthermore, some of the features of the preferred embodiments of this invention could be used to advantage without the corresponding use of other features. As such, the foregoing description should be considered as merely illustrative of the principles of the invention, and not in limitation thereof.
Number | Name | Date | Kind |
---|---|---|---|
4122440 | Langdon, Jr. | Oct 1978 | A |
5263124 | Weaver | Nov 1993 | A |
5267349 | Barabash | Nov 1993 | A |
5745504 | B.ang.ng | Apr 1998 | A |
6449394 | Florencio | Sep 2002 | B1 |
7609179 | Diaz-Gutierrez | Oct 2009 | B2 |
7644052 | Chang | Jan 2010 | B1 |
8665988 | Yu et al. | Mar 2014 | B2 |
20010037324 | Agrawal | Nov 2001 | A1 |
20020176494 | Zhao | Nov 2002 | A1 |
20030212695 | Rissanen | Nov 2003 | A1 |
20060290539 | Tomic | Dec 2006 | A1 |
20080133541 | Fletcher | Jun 2008 | A1 |
20080307069 | Froment | Dec 2008 | A1 |
20120095943 | Yankov | Apr 2012 | A1 |
20130262485 | Li | Oct 2013 | A1 |
20150215409 | Chow | Jul 2015 | A1 |
Entry |
---|
amazon.com, “Toys & Games”, retrieved from <https://www.amazon.com/b?ie=UTF8&node=165795011> on Jul. 6, 2016, 7 pages. |
Association for Computing Machinery, Inc., “The 2012 ACM Computing Classification System”, 2012, retrieved from <http://www.acm.org/about/class/2012> on Jul. 6, 2016, 6 pages. |
Library of Congress, “Library of Congress Classification Outline”, retrieved from <https://www.loc.gov/catdir/cpso/lcco/> on Jul. 6, 2016, 1 page. |
Liu, Y., et al., “Survey of Publish Subscribe Event Systems”, Technical Report TR574, Indiana University, School of Informatics and Computing, May 2003, retrieved from <http://www.cs.indiana.edu/pub/techreports/TR574.pdf> on Jul. 6, 2016, 19 pages. |
Ordnance Survey, “Points of Interest: User guide and technical specification”, Aug. 2009, retrieved from <http://webarchive.nationalarchives.gov.uk/20100402192348/ordnancesurvey.co.uk/oswebsite/products/pointsofinterest/pdf/poiuserguide.pdf> on Jul. 6, 2016. |
Pu, Ida Mengyi, “2.3 Variable Length Codes”, Fundamental Data Compression, 2005, 12 pages, Butterworth-Heinemann, U.S.A. |
Qualcomm Technologies, Inc., “LTE Direct Always-on Device-to-Device Proximal Discovery”, Aug. 2014, retrieved from <https://www.qualcomm.com/media/documents/files/lte-direct-always-on-device-to-device-proximal-discovery.pdf> on Jul. 6, 2016, 13 pages. |
The Institute of Electrial and Electroics Engineers, “IEEE Computer Society—Keywords”, retieved from <http://web.archive.org/web/20090715125107/http://www2.computer.org/portal/web/publications/acmtaxonomy> on Jul. 6, 2016, 38 pages. |
United States Census Bureau, “North American Industry Classification System”, Nov. 7, 2011, retrieved from <http://www.census.gov/cgi-bin/sssd/naics/naicsrch?chart=2012>on Jul. 6, 2016, 4 pages. |
Wikipedia Contributors, “Classful Network”, Wikipedia, the Free Encyclopedia, created Jun. 4, 2005, retrieved from <https://en.wikipedia.org/wiki/Classful_network> on Jul. 6, 2016, 7 pages. |
Wikipedia Contributors, “Kraft's Inequality”, Wikipedia, the Free Encyclopedia, created Feb. 6, 2005, retrieved from <https://en.wikipedia.org/wiki/Kraft's_inequality> on Jul. 6, 2016, 8 pages. |
Number | Date | Country | |
---|---|---|---|
20160182669 A1 | Jun 2016 | US |