Additive online fully connected clustering
The method and system facilitate time-efficient online complete linkage clustering by creating new clusters or associating input elements based on distance thresholds, addressing the offline processing limitations of conventional methods and enhancing time efficiency.
Patent Information
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- JAMF SOFTWARE LLC
- Filing Date
- 2024-05-23
- Publication Date
- 2026-06-10
Smart Images

Figure 2026518874000001_ABST
Abstract
Description
Cross - reference to related applications
[0001] This application claims the benefit of priority under 35 U.S.C. § 119 based on U.S. Provisional Patent Application No. 63 / 503,866, entitled "Additive Online Complete Linkage Clustering," filed on May 23, 2023, the disclosure of which is hereby incorporated by reference in its entirety for all purposes.
Technical Field
[0002] This disclosure generally relates to hierarchical clustering, and more specifically to additive online complete linkage clustering.
Background Art
[0003] Agglomerative hierarchical clustering methods such as complete - linkage clustering are commonly used in data mining and statistics for cluster analysis. Such cluster - analysis methods generally construct a hierarchy of clusters. The original method of complete - linkage clustering is limited to operating only in an offline mode because of the complex and time - consuming methodology required to process the complete set of collected elements at once. Some of the conventional agglomerative hierarchical clustering methods approximate the complete - linkage clustering method, but there is a need for a time - efficient complete - linkage clustering method that can process the elements input to the system sequentially.
[0004] The description provided in the background section should not be assumed to be prior art merely for the reason that it is mentioned or associated with the background section. The background section may contain information that explains one or more aspects of the target technology.
Summary of the Invention
[0005] According to certain aspects of this disclosure, a method is provided that can be performed by a computer. The method includes receiving an input element. The method includes determining whether the distance of the input element to the nearest existing element detected exceeds a clustering threshold. Based on the determination that the distance exceeds the clustering threshold, the method includes creating a new cluster and associating the new cluster with the input element. Based on the determination that the distance does not exceed the clustering threshold, the method includes determining whether all distances from the input element to the contents of the nearest existing element detected are less than the clustering threshold. Based on the determination that all distances from the input element to the contents of the nearest existing element detected are less than the clustering threshold, the method includes associating the input element with the cluster of nearest existing elements detected. Based on the determination that all distances from the input element to the contents of the nearest existing element detected are not less than the clustering threshold, the method includes processing the elements of the cluster of nearest existing elements detected together with the input element using the original fully connected algorithm, the processing generating a first cluster and a second cluster, the first cluster being smaller than the second cluster. This method involves creating another cluster and reassociating the elements of the first cluster with the new cluster.
[0006] A system is provided according to other aspects of this disclosure. The system includes a memory containing instructions and a processor configured to execute instructions, which, when executed, cause the processor to receive an input element. When executed, the processor is configured to execute an instruction causing the processor to search for the nearest existing element to the input element. When executed, the processor is configured to execute an instruction causing the processor to determine whether the distance of the input element to the nearest existing element found exceeds a clustering threshold. When executed, the processor is configured to execute an instruction causing the processor to create a new cluster and associate the new cluster with the input element, based on the determination that the distance exceeds the clustering threshold. When executed, the processor is configured to execute an instruction causing the processor to determine whether all distances from the input element to the contents of the nearest existing element found are less than the clustering threshold, based on the determination that the distance does not exceed the clustering threshold. When executed, the processor is configured to execute an instruction causing the processor to associate the input element with a cluster of the nearest existing elements found, based on the determination that all distances from the input element to the contents of the nearest existing element found are less than the clustering threshold. The processor is configured, upon execution, to execute an instruction that causes the processor to process the elements of the cluster of the detected nearest existing elements together with the input elements using the original fully connected algorithm, based on the determination that the distances from the input elements to the contents of the nearest existing elements detected are all not less than the clustering threshold, and the processing generates a first cluster and a second cluster, with the first cluster being smaller than the second cluster. The processor is configured, upon execution, to execute an instruction that causes the processor to create another cluster. The processor is configured, upon execution, to execute an instruction that causes the processor to reassociate the elements of the first cluster with the other cluster.
[0007] In other aspects of the present disclosure, a non-temporary machine-readable storage medium is provided which includes machine-readable instructions for a processor to perform a method. The method includes receiving an input element. The method includes determining whether the distance of the input element to the nearest existing element detected exceeds a clustering threshold. Based on the determination that the distance exceeds the clustering threshold, the method includes creating a new cluster and associating the new cluster with the input element. Based on the determination that the distance does not exceed the clustering threshold, the method includes determining whether all distances from the input element to the contents of the nearest existing element detected are less than the clustering threshold. Based on the determination that all distances from the input element to the contents of the nearest existing element detected are less than the clustering threshold, the method includes associating the input element with a cluster of the nearest existing element detected. This method involves processing the elements of the cluster of the detected nearest existing elements together with the input elements using the original fully connected algorithm, based on the determination that the distance from the input element to the contents of the nearest existing element detected is not less than a clustering threshold, and the processing generates a first cluster and a second cluster, with the first cluster being smaller than the second cluster. This method also involves creating another cluster and reassociating the elements of the first cluster with the other cluster.
[0008] It will be understood that other configurations of the subject technology will be readily apparent to those skilled in the art from the detailed description herein. In the detailed description, various configurations of the subject technology are shown by illustration and description. As will be understood, other different configurations of the subject technology are possible, and some of its details can be modified in various other ways without departing from the scope of the subject technology. Accordingly, the drawings and detailed description should be considered as illustrative and not restrictive in nature. [Brief explanation of the drawing]
[0009] The accompanying drawings are included to provide further understanding, are incorporated herein and constitute part of this specification, illustrate the disclosed embodiments, and illustrate the principles of the disclosed embodiments in conjunction with the description. In the drawings:
[0010] [Figure 1] Figure 1 shows an exemplary architecture for additive online fully connected clustering.
[0011] [Figure 2] Figure 2 is a block diagram illustrating at least one computing device, a hierarchical clustering service, and a database from the architecture of Figure 1, according to a particular aspect of this disclosure.
[0012] [Figure 3] Figure 3 is a block diagram illustrating an exemplary architecture of the database shown in Figure 2.
[0013] [Figure 4] Figure 4 illustrates an exemplary process for additive online fully connected clustering using at least one exemplary computing device, a hierarchical clustering service, and a database as shown in Figure 2.
[0014] [Figure 5] Figure 5 is a block diagram illustrating an exemplary computer system capable of implementing the manager device, first managed device, second managed device, mobile management service, and push notification service shown in Figure 2.
[0015] In one or more embodiments, not all components shown in each figure are required, and one or more embodiments may include additional components not shown in the figures. Variations in the arrangement and type of components may be made without departing from the scope of the disclosure of the subject matter. Additional, different, or fewer components may be used within the scope of the disclosure of the subject matter. [Modes for carrying out the invention]
[0016] The detailed description below is intended to illustrate various embodiments and is not intended to represent the only embodiments in which the subject art may be practiced. As those skilled in the art will understand, the embodiments described may be modified in various different ways without departing from the scope of this disclosure. Accordingly, the drawings and descriptions should be considered as illustrative and not restrictive.
[0017] The disclosed technology provides a solution to conventional fully connected clustering methods. For example, the disclosed technology favorably approximates fully connected clustering by sequentially processing elements received by the system, thereby improving time efficiency. The disclosed technology offers an improvement over conventional approaches by minimizing element reassociation and improving time efficiency by returning cluster-related information for each input element immediately after it is received by the system. Thus, the disclosed system can be used online, which is an improvement over existing methods that are limited to operating only in offline mode.
[0018] Throughout this specification and the claims, unless the context explicitly indicates otherwise, the following terms take the meanings expressly associated herein: “Element” is an entity to be clustered, represented as a numerical vector, but not limited thereto. “Distance” returns a non-negative real number representing the distance between two elements. For example, if the distance is zero, the elements are identical. As the distance value increases, the elements become further apart from each other. “Clustering threshold” is a user-defined non-negative real number. “Cluster” is a set of adjacent elements. “Fully connected clustering” is a method in which the distance between all elements in a cluster must be less than the clustering threshold, and the distance between clusters is defined as the maximum of all distances between their constituent elements. In the first stage, in “Agglomerative hierarchical clustering,” each element is considered a cluster, and then the pair of closest clusters is merged into a larger cluster. “Agglomerative hierarchical clustering” continues as long as the distance between the clusters being merged is less than the clustering threshold.
[0019] Figure 1 shows an exemplary architecture 100 for additive online fully connected clustering. For example, architecture 100 includes at least one computing device 10, such as a first computing device 10a, a second computing device 10b through an nth computing device 10n, a hierarchical clustering service 12, and a database 14, all connected via a network 16.
[0020] The hierarchical clustering service 12 may be any device having a suitable processor, memory, and communication capabilities for communicating with at least one computing device 10 and a database 14. For load balancing purposes, the hierarchical clustering service 12 may include multiple servers. The at least one computing device 10, such as a first computing device 10a and a second computing device 10b, with which the hierarchical clustering service 12 communicates over the network 16, may be, for example, a tablet computer, a mobile phone, a mobile computer, a laptop computer, a portable media player, an eBook reader, or any other device having a suitable processor, memory, and communication capabilities. The database 14 may be any device having a suitable processor, memory, and communication capabilities for communicating with the hierarchical clustering service 12 and at least one computing device 10. In certain embodiments, the hierarchical clustering service 12 is an Infrastructure-as-a-Service (IaaS) cloud computing server and can support Platform-as-a-Service (PaaS) and Software-as-a-Service (SaaS).
[0021] Network 16 may include, for example, one or more of the following: Personal Area Network (PAN), Local Area Network (LAN), Campus Area Network (CAN), Metropolitan Area Network (MAN), Wide Area Network (WAN), Broadband Network (BBN), Internet, etc. Furthermore, Network 16 may include, but is not limited to, one or more of the following network topologies: Bus Network, Star Network, Ring Network, Mesh Network, Starbus Network, Tree or Hierarchical Network, etc.
[0022] FIG. 2 is a block diagram showing an example of a hierarchical clustering service 12, a first computing device 10a of at least one computing device 10, and a database 14 in the architecture of FIG. 1 according to a particular aspect of the present disclosure.
[0023] The hierarchical clustering service 12, the first computing device 10a of at least one computing device 10, and the database 14 are connected via a network 16 through respective communication modules 18, 20, 22. The communication modules 18, 20, 22 are configured to interface with the network 16 to transmit and receive information such as data, requests, responses, and commands to and from devices on the network 16. The communication modules 18, 20, 22 can be, for example, a modem or an Ethernet card.
[0024] The hierarchical clustering service 12 includes a memory 26 that includes a processor 24, a communication module 18, and a clustering module 28. The processor 24 of the hierarchical clustering service 12 is configured to execute instructions such as instructions physically coded in the processor 24, instructions received from software in the memory 26, or a combination of both. The processor 24 of the hierarchical clustering service 12 is configured to receive, but is not limited to, a clustering threshold from the first computing device 10a of at least one computing device 10. For each input element, the processor 24 of the hierarchical clustering service 12 is configured to linearly search for the closest existing element via the clustering module 28. If no such element is found within the clustering threshold, the processor 24 of the hierarchical clustering service 12 is configured to create a new cluster associated with the input element via the clustering module 28.
[0025] On the one hand, when an element is detected within the clustering threshold, the processor 24 of the hierarchical clustering service 12 is configured to add the input element to an existing cluster (e.g., a target cluster) associated with the closest existing element based on the complete-linkage constraint via the clustering module 28. For example, the complete-linkage constraint is that all distances between all elements within a cluster must be less than the clustering threshold.
[0026] However, if the complete-linkage constraint is violated, the hierarchical clustering service 12 executes a complete-linkage algorithm on the elements of the target cluster and the input element via the clustering module 28, such that the target cluster is split into two valid clusters and the input element is configured to be included in one of the two valid clusters. For example, referring to FIG. 3, the database 14 includes an element table 38, and the element table 38 can be organized to include columns associated with element properties such as a vector 40, a cluster ID 42, and other appropriate element properties. The memory 36 is configured to store a cluster list 44 of at least one cluster 46. Each cluster 46 includes a cluster ID 42, and the cluster ID 42 includes an element list 48 of at least one element 50. Each element 50 includes a vector 40 and a cluster reference 52 which is a reference to the parent cluster.
[0027] In certain embodiments, as an optimization, if the data is appropriate (e.g., a vector of discrete values), a hash table 54 can be utilized to search for the same existing element prior to a linear search. In such embodiments, if the same element is detected, the input element is immediately associated with the cluster of the same existing element. It is sufficient to store only unique elements under each cluster of the data structure used for the linear (and hashed) search.
[0028] As described above, the hierarchical clustering service 12 is configured to offer advantages in terms of implementation and memory consumption via the clustering module 28, and simultaneously enables distributed processing, thus achieving horizontal scalability. Therefore, different clusters and their components can reside on different machines. For each input element, the nearest element on each machine can be searched simultaneously, and the results can then be reduced to the nearest of the nearest. Adding elements and splitting clusters (if necessary) continues on the machine where the absolutely nearest is found. In certain embodiments, the hierarchical clustering service 12 is configured to operate with quadratic time complexity on stack trace data of software crash reports via the clustering module 28. In certain embodiments where cluster associations are stored in a database, the hierarchical clustering service 12 provides economic benefits because the number of updates to already clustered data is reduced compared to conventional approaches via the clustering module 28. In a system containing initial data, the initial data can be clustered once using the original fully connected approach, and then the hierarchical clustering service 12 can use the result as the initial state via the clustering module 28 to improve the accuracy of the next input data.
[0029] The first computing device 10a includes a processor 30, a communication module 20, and memory 32. The processor 30 of the first computing device 10a is configured to execute instructions such as instructions physically coded into the processor 30, instructions received from software in memory 32, or a combination of both. The processor 30 of the first computing device 10a is configured to send clustering thresholds to the hierarchical clustering service 12.
[0030] The database 14 includes a processor 34, a communication module 22, and memory 36. The processor 34 of the push notification service 16 is configured to execute instructions such as instructions physically coded into the processor 36, instructions received from software in memory 38, or a combination of both.
[0031] Figure 4 shows an exemplary process 400 for additive online fully connected clustering using the hierarchical clustering service 12 of Figure 2, a first computing device 10a of at least one computing device 10, and a database 14. Although Figure 4 is explained with reference to Figure 2, it should be understood that the process steps in Figure 4 may be performed by other systems.
[0032] As shown in block 410, database 14 contains elements 50 tagged with cluster ID 42. The cluster structure of cluster 46 is loaded from database 14 into memory 36, as shown in block 410, if such a previous state exists. Cluster 46 and the elements 50 associated with them are stored in memory 36, as shown in block 414.
[0033] Process 400 begins in block 416 with the processor 24 of the hierarchical clustering service 12 receiving the input element 50. In response to receiving the input element 50, the processor 24 of the hierarchical clustering service 12 searches for the nearest existing element stored in memory 36, as shown in block 418. The nearest existing element is defined as the minimum distance based on the provided distance function.
[0034] In block 420, the processor 24 of the hierarchical clustering service 12 determines whether the distance of the input element to the detected nearest element exceeds the clustering threshold. If the distance of the input element to the nearest element exceeds the clustering threshold, the processor 24 of the hierarchical clustering service 12 creates a new cluster, associates the new cluster with the input element, and updates the memory 36 of the database 14, as shown in block 422. On the other hand, if the distance of the input element to the nearest element does not exceed the clustering threshold, the processor 24 of the hierarchical clustering service 12 determines whether the distances from the input element to the contents of the detected nearest element are all less than the clustering threshold, as shown in block 424. If the distances from the input element to the contents of the detected nearest element are all less than the clustering threshold, the processor 24 of the hierarchical clustering service 12 associates the input element 50 with the cluster of nearest elements, as shown in block 426. If the distances from the input element to the content of the detected nearest element are all greater than the clustering threshold, the processor 24 of the hierarchical clustering service 12 processes the elements of the cluster of the nearest element together with the input element using the original fully connected algorithm, as shown in block 428. As a result, the processor 24 of the hierarchical clustering service 12 generates two clusters (e.g., the first cluster and the second cluster) in which the input element is contained in one of two clusters. In response to generating two clusters, the processor 24 of the hierarchical clustering service 12 creates a new cluster, as shown in block 430, and reassociates all elements that appeared in the smaller of the two returned clusters into the new cluster. If the input element appears in the larger of the two returned clusters, the processor 24 of the hierarchical clustering service 12 explicitly allocates the input element and updates the memory 36 of the database 14.
[0035] Referring to Figures 1-4, an exemplary process in a specific embodiment is described in detail below. For each input element received by the processor 24 of the hierarchical clustering service 12, the clustering module 28 checks whether the element vector 40 is already included in the hash map (e.g., hash table 52) and terminates. If the element vector 40 is included in the hash map, the clustering module 28 sets the cluster ID 42 of the input element to the cluster ID 42 of the parent cluster of the element object found in the hash map. If the element vector 40 is not included in the hash map, the clustering module 28 creates a new element object for this input element and adds this new element object to the hash map. (This can be done in a single operation together with the check operation.) At this point, the element object does not have a reference to a cluster. Next, the clustering module 28 examines all existing clusters in memory 36. For each cluster, the clustering module 28 examines all elements of the cluster and (1) measures the distance between the input element vector and the clustered element vector using the provided distance function, (2) updates the distance to the nearest element by referencing the tested element if this distance is less than the distance of the nearest element, and (3) updates the maximum distance from the input element to the cluster element if the current distance is greater than the previous value. If the nearest element is updated during the iteration of this cluster and the maximum distance from the input element to the cluster element exceeds the clustering threshold, the clustering module 28 sets the value of "reconstruction needed" (whether the cluster of nearest elements contains elements whose distance from the input element is greater than the clustering threshold) to true (otherwise it remains false).
[0036] If the closest proximity distance exceeds the clustering threshold, the clustering module 28 (1) creates a new cluster object with a new cluster ID, adds element objects to that cluster, adds a reverse reference from the objects to the cluster, (2) adds the new cluster to the cluster list 44, and (3) sets the cluster ID 42 of the input elements to that of the new cluster, and then terminates.
[0037] If "Reconstruction Required" is false (the new element will not move other elements in the cluster beyond a threshold), the clustering module 28 (1) adds the new element object to the parent cluster of the nearest element and adds a dereference to that cluster to the element object, and (2) sets the cluster ID 42 of the input element to the cluster ID of the parent of the nearest element, and then terminates.
[0038] The clustering module 28 takes all elements from the parent cluster of the nearest element and adds new element objects to them. The clustering module 28 feeds this list to the original fully connected clustering algorithm, which returns two clusters (e.g., the first cluster and the second cluster). Once the two clusters are created, the clustering module 28 (1) replaces the contents of the parent cluster of the nearest element with the contents of the largest of the returned clusters, sets a reference to that cluster in the contained element objects, (2) creates a new cluster object with a new cluster ID and adds it to the cluster list (the contents of the smaller of the returned clusters are converted into element objects so that bidirectional references are established between the cluster and the contained elements, and then stored in the new cluster), (3) updates the cluster IDs of all elements in the new cluster, explicitly updates the input elements if they are assigned to an existing cluster (other elements in the existing cluster do not need to be updated as they retain their old cluster IDs), and then terminates.
[0039] Referring to FIGS. 1-4, an exemplary process according to a particular manner in which a complete-link clustering algorithm is utilized will be described in detail below. For each input vector, the complete-link clustering algorithm creates a cluster object that wraps and holds this single vector as an element. When optimization of discrete vectors is relevant, in this collection process, a hash map with the vector as the key is used to ignore duplicates. This list of clusters becomes the first / lowest level of the clustering hierarchy. The complete-link clustering algorithm merges clusters at one level as long as the output of the previous level is not empty. The input to this part is an (ordered) list of clusters of size Nc. (1) Prepare two arrays of length equal to Nc: the closest ID and the distance of the closest ID, (2) Initialize the distance of the closest ID with an infinite value, (3) For each index i from 0 to Nc (not including Nc): For each index j from i + 1 to Nc (not including Nc): (a) Measure the distance between the cluster at index i and the cluster at index j (the distance between clusters is defined as the maximum value of the distances between all their components. The distance between each two components (vectors) is calculated using the provided distance function.), (b) If the distance is less than the value of the distance of the closest ID at index i, update the value of index i with the new distance and set the value j to index i of the closest ID. (Note that at the start of this inner loop, the array index i already contains the optimal value of i measured with j <i from the previous iteration of the outer loop executed at index i.)
[0040] Subsequently, each cluster i has a reference (index) to the closest cluster and the distance between them.
[0041] For indices i from 0 to Nc (excluding Nc), the fully connected clustering algorithm (1) if the list of clusters at index i is empty, proceed to the next i (explained below), (2) if the nearest neighbor distance appearing at index i exceeds the clustering threshold, add cluster i to the list of final clusters and proceed to the next i, (3) if the value of the nearest neighbor ID at i (hereinafter j) is equal to i (this means they point to each other and are therefore the "newest pair"), add all elements of cluster j to the element list of cluster i, clear the contents of cell j in the cluster list so that element j is not processed in subsequent iterations, and (4) add cluster i to the list of clusters at the next level.
[0042] If this list of clusters at the next level is not empty, the fully connected clustering algorithm repeats the merging of clusters in the list of clusters at the next level. For each cluster in the final list of clusters, and for each element within the cluster, the fully connected clustering algorithm sets a reference to its parent cluster. The final list of clusters is the output of the fully connected clustering algorithm.
[0043] Figure 5 is a block diagram showing an exemplary computer system 500 that can implement at least one computing device 10 (such as a first computing device 10a), a hierarchical clustering service 12, and a database 14 as shown in Figure 2. In certain embodiments, the computer system 500 may be implemented using either hardware or a combination of software and hardware, within a dedicated server, integrated into another entity, or distributed across multiple entities.
[0044] The computer system 500 (for example, at least one computing device 10 such as a first computing device 10a, a hierarchical clustering service 12, and a database 14) includes a bus 508 or other communication mechanism for communicating information and processors 502 (for example, processors 24, 30, 34) coupled to the bus 508 for processing information. According to one embodiment, the computer system 500 may be an IaaS cloud computing server capable of supporting PaaS and SaaS services.
[0045] In addition to hardware, the computer system 500 may include code that creates the execution environment for the computer program in question, such as code that constitutes processor firmware, a protocol stack, a database management system, an operating system, or one or more combinations thereof, and is coupled to the bus 508 to store information and instructions stored in the included memory 504 (e.g., memories 26, 32, 36), such as random access memory (RAM), flash memory, read-only memory (ROM), programmable read-only memory (PROM), eraseable PROM (EPROM), registers, hard disks, removable disks, CD-ROMs, DVDs, or any other suitable storage device, which is executed by the processor 502. The processor 502 and memory 504 may be complemented or incorporated by special-purpose logic circuits.
[0046] The instructions are stored in memory 504 and may be implemented in one or more modules of computer program instructions encoded on a computer-readable medium to perform or control the operation of one or more computer program products, such as computer program instructions encoded on a computer-readable medium.
[0047] The computer programs described herein do not necessarily correspond to files in a file system. A program may be part of a file that holds other programs or data (e.g., one or more scripts stored in a markup language document), a single file dedicated to the program in question, or multiple coordinated files (e.g., a file containing one or more modules, subprograms, or parts of code). A computer program may be deployed to run on a single computer, located in a single site, or distributed across multiple sites and interconnected by a communication network (e.g., a cloud computing environment). The processes and logic flows described herein may be executed by one or more programmable processors that run one or more computer programs to perform a function by manipulating input data and producing an output.
[0048] The computer system 500 further includes a data storage device 506, such as a magnetic disk or optical disk, coupled to a bus 508 for storing information and instructions. The computer system 500 can be coupled to various devices via an input / output module 510. The input / output module 510 can be any input / output module. An exemplary input / output module 510 is a data port, such as a USB port. Furthermore, the input / output module 510 may be provided in a communicative manner with the processor 502 so that the computer system 500 can communicate with other devices over short distances. The input / output module 510 may, for example, provide wired communication in one embodiment, provide wireless communication in another embodiment, and may use multiple interfaces. The input / output module 510 is configured to connect to a communication module 512. An exemplary communication module 512 (e.g., communication modules 18, 20, 22) includes a network interface card, such as an Ethernet card or a modem.
[0049] In certain embodiments, the input / output module 510 is configured to connect to multiple devices, such as an input device 514 and / or an output device 516. An exemplary input device 514 includes a keyboard and a pointing device such as a mouse or trackball, which the user can use to provide input to the computer system 500. Other types of input devices 514 may also be used to provide user interaction, such as a haptic input device, a visual input device, a voice input device, or a brain-computer interface device.
[0050] According to one aspect of this disclosure, at least one computing device 10, such as a first computing device 10a, a hierarchical clustering service 12, and a database 14 may be implemented using a computer system 500 in response to a processor 502 executing one or more sequences of one or more instructions contained in memory 504. Such instructions may be read into main memory 504 from another machine-readable medium, such as a data storage device 506. The execution of the sequence of instructions contained in memory 504 causes the processor 502 to perform the process steps described herein. One or more processors in a multiprocessing arrangement may also be used to execute sequences of instructions contained in memory 504. The processor 502 may remotely access a computer program product and process such executable instructions and / or data structures by downloading executable instructions and / or data structures from a remote server, for example via a communication module 512 (e.g., in a cloud computing environment). In an alternative embodiment, hardwired circuitry may be used instead of or in combination with software instructions to implement various aspects of this disclosure. Therefore, aspects of this disclosure are not limited to any particular combination of hardware circuitry and software.
[0051] Various aspects of the subject matter described herein may be implemented in a computing system that includes a backend component (e.g., as a data server), a middleware component (e.g., an application server), or a frontend component (e.g., a client computer having a graphical user interface or web browser that allows a user to interact with an implementation of the subject matter described herein), or any combination of one or more such backend, middleware, or frontend components. For example, some aspects of the subject matter described herein may be executed in a cloud computing environment. Thus, in certain embodiments, users of the systems and methods disclosed herein may perform at least some of the steps by accessing a cloud server via a network connection. Furthermore, data files, schematics, performance specifications, etc., generated by this disclosure may be stored in a database server within the cloud computing environment or downloaded from the cloud computing environment to personal storage devices.
[0052] As used herein, the terms “machine-readable storage medium” or “computer-readable medium” refer to any one or more mediums that contribute to providing instructions or data to the processor 502 for execution. The term “storage medium,” as used herein, refers to any non-transient medium that stores data and / or instructions for operating a machine in a particular manner. Such mediums can take many forms, including but not limited to non-volatile media, volatile media, and transmission media.
[0053] As used herein, the terms “computer-readable storage medium” and “computer-readable medium” are strictly limited to tangible physical objects that store information in a format readable by a computer. These terms exclude any radio signals, wired download signals, and other transient signals. A storage medium is distinct from, but can be used in conjunction with, a transmission medium. A transmission medium is involved in the transfer of information between storage mediums. For example, transmission media include coaxial cables, copper wires, and optical fibers (including the wires that make up bus 508). Transmission media can also take the form of sound waves or light waves, such as those generated during radio communications and infrared data communications. Furthermore, as used herein, the terms “computer,” “server,” “processor,” and “memory” all refer to electronic or other technological devices. These terms exclude persons or groups of persons. For the purposes of this specification, the term “display” or “display” means a display on an electronic device.
[0054] In one embodiment, a method may be an operation, command, or function, and vice versa. In one embodiment, a clause or claim may be modified to include one or more clauses, one or more words, one or more sentences, one or more phrases, one or more paragraphs, and / or some or all of the words (e.g., command, operation, function, or component) contained in one or more claims.
[0055] To illustrate hardware-software compatibility, various exemplary blocks, modules, components, methods, operations, instructions, and algorithms are generally described in terms of their functionality. Whether such functionality is implemented in hardware, software, or a combination of hardware and software depends on the specific application and design constraints imposed on the overall system. Those skilled in the art can implement the described functionality in various ways for each specific application.
[0056] When the phrase “at least one” as used herein is placed before a list of items and separates any of the items with the terms “and” or “or,” it qualifies the list as a whole, and not each member of the list (i.e., each item). The phrase “at least one” does not require the selection of at least one item. Rather, it allows the meaning to include at least one of any one of the items, and / or at least one of any combination of the items, and / or at least one of each item. For example, the phrase “at least one of A, B, and C” or “at least one of A, B, or C” refers to A only, B only, or C only; any combination of A, B, and C; and / or at least one of each of A, B, and C.
[0057] In this specification, the word “exemplary” is used to mean “serving as an example, case, or illustration.” Embodiments described as “exemplary” in this specification should not necessarily be construed as being preferable or advantageous to other embodiments. Phrases such as one aspect, that aspect, another aspect, several aspects, one or more aspects, one example, that example, another example, several examples, one or more examples, one embodiment, that embodiment, another embodiment, several embodiments, one or more embodiments, one configuration, that configuration, another configuration, several configurations, one or more configurations, the subject art, disclosure, this disclosure, other variations thereof, and similar are for convenience only and do not imply that the disclosures associated with such phrases are essential to the subject art or that such disclosures apply to all configurations of the subject art. Disclosures associated with such phrases may apply to all configurations or one or more configurations. Disclosures associated with such phrases may provide one or more examples. Phrases such as one aspect or some aspects may refer to one or more aspects, and vice versa, and this applies similarly to the other aforementioned phrases.
[0058] When referring to an element in the singular, unless otherwise specified, it is not intended to mean "only one," but rather "one or more." The term "several" refers to one or more. Underlined and / or italicized headings and subheadings are used for convenience only and are not intended to limit the subject art, nor are they referenced in relation to the interpretation of the description of the subject art. Relational terms such as "first" and "second" may be used to distinguish one entity or action from another, and do not necessarily require or imply any actual relationship or order between such entities or actions. All structural and functional equivalents of the various configurations described throughout this disclosure, whether such equivalents are known to those skilled in the art or become known later, are expressly incorporated herein by reference and are intended to be encompassed by the subject art. Furthermore, nothing disclosed herein is intended to be dedicated to the public, whether such disclosure is expressly stated in the above description or not. No element of a claim should be interpreted pursuant to Section 112, paragraph 6 of the U.S. SC, unless the element is explicitly described using the phrase “means for” or, in the case of a method claim, the element is described using the phrase “steps for”
[0059] This specification contains many details, which should not be interpreted as limitations on the scope that can be claimed, but rather as descriptions of specific implementations of the subject matter. Certain functions described in this specification in the context of individual embodiments can also be implemented in combination in a single embodiment. Conversely, various functions described in the context of a single embodiment can also be implemented individually or in any suitable partial combination in multiple embodiments. Furthermore, even if functions are described above as acting in a particular combination and are initially claimed as such, one or more functions from the claimed combination may be removed from the combination in some cases, and the claimed combination may be directed towards a partial combination or a variation of a partial combination.
[0060] While the subject matter of this specification is described in relation to certain embodiments, other embodiments can be implemented and are within the scope of the following claims. For example, although operations are shown in a specific order in the drawings, this should not be understood as requiring such operations to be performed in a specific order shown, or in a sequential order, or that all illustrated operations be performed, in order to achieve the desired result. The actions described in the claims can achieve the desired result even if performed in a different order. As an example, the process shown in the accompanying drawings does not necessarily require the specific order or sequential order shown to achieve the desired result. In certain situations, multitasking and parallel processing may be advantageous. Furthermore, the separation of various system components in the above embodiments should not be understood as requiring such separation in all embodiments, and it should be understood that the described program components and systems can generally be integrated into a single software product or packaged into multiple software products.
[0061] The title, background, brief description of the drawings, abstract, and drawings are incorporated into this disclosure and are provided as illustrative descriptions of the disclosure, not as restrictive descriptions. It should be understood that nothing described herein is intended to limit the scope or meaning of the claims. Furthermore, in the detailed description, for the purpose of conciseness of the disclosure, examples are provided where various features are grouped together in various embodiments. This method of disclosure should not be construed as reflecting an intention that the claimed subject matter requires more functions than expressly described in each claim. Rather, as the claims reflect, the inventive subject matter lies in fewer functions than all functions of a single disclosed configuration or operation. Each claim is incorporated into the detailed description herein independently, as each claim individually claimed subject matter.
[0062] The claims are not intended to be limited to the embodiments described herein, but are intended to cover the entire scope consistent with the language of the claims and to encompass all legal equivalents. Nevertheless, none of the claims are intended, nor should they be construed, to encompass subject matter that does not meet the requirements of applicable patent law.
Claims
1. A method performed by a computer, Receiving input elements and, The process involves searching for the existing element that is closest to the aforementioned input element, Determining whether the distance of the input element to the detected nearest existing element exceeds the clustering threshold, Based on the determination that the distance exceeds the clustering threshold, a new cluster is created and the new cluster is associated with the input element. Based on the determination that the distance does not exceed the clustering threshold, it is determined whether the distance from the input element to the contents of the nearest existing element detected is less than the clustering threshold for all of them. Based on the determination that the distance of the detected nearest existing element to the contents is all less than the clustering threshold, the input element is associated with the cluster of the detected nearest existing element. Based on the determination that the distances of the detected nearest existing elements to the contents are not all less than the clustering threshold, the elements of the cluster of the detected nearest existing elements are processed together with the input elements using the original fully connected algorithm. Creating another cluster, This includes reassociating the elements of the first cluster with the other cluster, The aforementioned process generates a first cluster and a second cluster, wherein the first cluster is smaller than the second cluster.
2. The further includes assigning the input element based on the fact that the input element is in the second cluster, The method performed by a computer as described in claim 1.
3. Searching for the closest existing element to the input element further includes searching a database, the database including elements tagged with a cluster ID. The method performed by a computer as described in claim 1.
4. Searching for the closest existing element to the input element further includes determining whether the vector of the input element is included in the hash table. The method performed by a computer as described in claim 1.
5. Based on the determination that the vector of the input element is included in the hash table, the cluster ID of the input element is further set to the cluster ID of the parent cluster of the element object found in the hash map. The method performed by a computer as described in claim 4.
6. The further includes creating a new element object associated with the input element based on the determination that the vector of the input element is not included in the hash table, The method performed by a computer as described in claim 5.
7. Further includes adding the new element object to the hash table, The method performed by a computer as described in claim 6.
8. A system, including: Memory containing instructions, A system including a processor configured to execute the aforementioned instructions, The execution of the aforementioned instruction results in the processor: Receiving input elements and, The process involves searching for the existing element that is closest to the aforementioned input element, Determining whether the distance of the input element to the detected nearest existing element exceeds the clustering threshold, Based on the determination that the distance exceeds the clustering threshold, a new cluster is created, and the new cluster is associated with the input element. Based on the determination that the distance does not exceed the clustering threshold, it is determined whether the distance from the input element to the contents of the nearest existing element detected is less than the clustering threshold for all of them. Based on the determination that the distance of the detected nearest existing element to the contents is all less than the clustering threshold, the input element is associated with the cluster of the detected nearest existing element. Based on the determination that the distances of the detected nearest existing elements to the contents are not all less than the clustering threshold, the elements of the cluster of the detected nearest existing elements are processed together with the input elements using the original fully connected algorithm. Creating another cluster, The elements of the first cluster are reassociated with the other cluster, and the following is performed: The above process generates a first cluster and a second cluster, the first cluster being smaller than the second cluster, in the system.
9. The instruction further includes causing the processor to assign the input element based on the fact that the input element is in the second cluster, The system according to claim 8.
10. The instruction causing the processor to search for the nearest existing element to the input element further includes searching a database, the database including elements tagged with a cluster ID. The system according to claim 8.
11. The instruction causing the processor to search for the nearest existing element to the input element further includes causing it to determine whether the vector of the input element is included in the hash table. The system according to claim 8.
12. The instruction further includes causing the processor to set the cluster ID of the input element to the cluster ID of the parent cluster of the element object detected in the hash map, based on the determination that the vector of the input element is included in the hash table. The system according to claim 11.
13. The instruction further includes causing the processor to create a new element object associated with the input element, based on the determination that the vector of the input element is not included in the hash table, The system according to claim 12.
14. The instruction further includes causing the processor to add the new element object to the hash table, The system according to claim 13.
15. A non-temporary machine-readable storage medium containing machine-readable instructions for causing a processor to execute a method, wherein the method is Receiving input elements and, The process involves searching for the existing element that is closest to the aforementioned input element, Determining whether the distance of the input element to the detected nearest existing element exceeds the clustering threshold, Based on the determination that the distance exceeds the clustering threshold, a new cluster is created and the new cluster is associated with the input element. Based on the determination that the distance does not exceed the clustering threshold, it is determined whether the distance from the input element to the contents of the nearest existing element detected is less than the clustering threshold for all of them. Based on the determination that the distance of the detected nearest existing element to the contents is all less than the clustering threshold, the input element is associated with the cluster of the detected nearest existing element. Based on the determination that the distances of the detected nearest existing elements to the contents are not all less than the clustering threshold, the elements of the cluster of the detected nearest existing elements are processed together with the input elements using the original fully connected algorithm. Creating another cluster, This includes reassociating the elements of the first cluster with the other cluster, The above process generates a first cluster and a second cluster, the first cluster being smaller than the second cluster, in a non-temporary machine-readable storage medium.
16. The method further includes instructions for causing the processor to perform the method, The non-temporary machine-readable storage medium according to claim 15, wherein the method includes assigning the input element on the basis that the input element is in the second cluster.
17. The instruction causing the processor to perform the search for the nearest existing element to the input element further includes searching a database, the database including elements tagged with a cluster ID, The non-temporary machine-readable storage medium according to claim 15.
18. The instruction causing the processor to perform the search for the nearest existing element to the input element further includes determining whether the vector of the input element is included in the hash table. The non-temporary machine-readable storage medium according to claim 15.
19. The method further includes instructions for causing the processor to perform the method, The non-temporary machine-readable storage medium according to claim 18, wherein the method includes setting the cluster ID of the input element to the cluster ID of the parent cluster of the element object detected in the hash map, based on the determination that the vector of the input element is included in the hash table.
20. The method further includes instructions for causing the processor to perform the method, The method includes, based on the determination that the vector of the input element is not included in the hash table, creating a new element object associated with the input element, Adding the new element object to the hash table, The non-temporary machine-readable storage medium according to claim 19.