Information processing system, array splitting device, and array joining device
By splitting and transmitting the most significant digits of array elements to Ising machines, the system addresses the inefficiency in large-scale QUBO model data transmission, enhancing the speed and efficiency of combinatorial optimization.
Patent Information
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- NEC CORP
- Filing Date
- 2024-12-10
- Publication Date
- 2026-06-22
AI Technical Summary
Existing systems face challenges in shortening data transmission time when handling large-scale QUBO models, which are processed by Ising machines on the cloud, leading to inefficiencies in utilizing their high-speed combinatorial optimization capabilities.
An information processing system that splits numerical components representing the most significant digits of each element in an input array and sends them to a server, where the server combines these components for calculation, repeatedly performing this process until all elements are processed, thereby reducing data transmission time.
This approach significantly shortens data transmission time, allowing Ising machines to solve combinatorial optimization problems more efficiently by reducing the computational burden and increasing the likelihood of finding solutions within a given time frame.
Smart Images

Figure 2026100849000001_ABST
Abstract
Description
[Technical Field]
[0001] This disclosure relates to an information processing system and an information processing method that causes another computer to perform processing, as well as an array partitioning device, an array merging device, an array partitioning program, and an array merging program. [Background technology]
[0002] System configurations that allow other devices to perform processing via a communication network are widely known. For example, Patent Document 1 describes a system in which an information processing device requests processing from a server via a communication network. The system described in Patent Document 1 compares the amount of data of the QUBO model to be processed by the server with the amount of data of the program representing the QUBO model, and sends the one with the smaller data amount to the server. [Prior art documents] [Patent Documents]
[0003] [Patent Document 1] Patent No. 7464136 [Overview of the Initiative] [Problems that the invention aims to solve]
[0004] For example, in the system described in Patent Document 1, it is preferable that the data transmission time can be shortened even when a QUBO model is selected as the transmission target and a large-scale QUBO model is handled.
[0005] Therefore, the purpose of this disclosure is to provide an information processing system, an array partitioning device, an array merging device, an information processing method, an array partitioning program, and an array merging program that can shorten the data transmission time required to have other computers perform processing. [Means for solving the problem]
[0006] The information processing system disclosed herein comprises a client that issues execution instructions to other computers and a server that receives execution instructions from the client, and includes a splitting unit which repeatedly generates an array by splitting the numerical component representing the most significant digit of each element of an input array whose elements are numerical values and sends it to the server, and generates an array by splitting the numerical component representing the most significant digit of each element of the remaining element by subtracting the numerical values of the split array from the numerical values of the array before splitting for each element, and sends it to the server, and the server includes a merging unit which performs calculation processing using a new array generated by combining the numerical values of the received array for each element of the stored array each time the server receives an array from the client.
[0007] The array partitioning device according to this disclosure is characterized by comprising: a transmitting and receiving unit that, each time an array having numerical elements is received, performs calculation processing using a new array generated by combining the numerical values of the received array element by element of the stored array; and a partitioning unit that repeatedly performs the following processes: for each element of an input array having numerical elements, generates an array by partitioning the numerical component representing the most significant digit of that numerical value and sends it to the server; and for each element of the array that has been partitioned, subtracts the numerical value of the partitioned array from the numerical value of the array before partitioning, generates an array by partitioning the numerical component representing the most significant digit of the remaining element, and sends it to the server.
[0008] The array concatenation device according to this disclosure comprises a transmitting / receiving unit that transmits and receives data with a client that generates and transmits an array obtained by splitting the numerical component representing the most significant digit of each element of an input array whose elements are numerical values, and a concatenation unit that, each time it receives an array from the client, performs calculation processing using a new array generated by concatenating the numerical values of the received array element by element of the stored array, and the client repeatedly performs the process of subtracting the numerical values of the divided array element by element from the numerical values of the array before splitting, and then generating and transmitting an array obtained by splitting the numerical component representing the most significant digit of the remaining element's numerical value.
[0009] The information processing method disclosed herein involves a client issuing execution instructions to another computer generating an array by splitting the numerical component representing the most significant digit of each element of an input array whose elements are numbers, and sending it to a server. The server, each time it receives an array from the client, performs calculations using a new array generated by combining the numerical values of the received array element by element of the stored array. The client then generates an array by splitting the numerical component representing the most significant digit of each element of the remaining numerical value of the original array, and sends it to the server, repeating this process. It is characterized by the following:
[0010] The array partitioning program according to this disclosure is characterized in that it causes a computer to perform a transmission and reception process that, each time an array having numerical elements is received, performs calculation processing using a new array generated by combining the numerical values of the received array element by element of the stored array, and a partitioning process that repeatedly generates an array by partitioning the numerical component representing the most significant digit of each element of an input array having numerical elements and sends it to the server, and then subtracts the numerical values of the partitioned array element by element from the numerical values of the array before partitioning, generates an array by partitioning the numerical component representing the most significant digit of the remaining element, and sends it to the server.
[0011] The array concatenation program according to this disclosure is characterized by the following processes being repeated: a send / receive process in which the computer generates and sends an array in which the most significant digit of each element of an input array, which has numerical elements as its components, is divided into numerical components, and the computer sends the resulting array; and a concatenation process in which, each time an array is received from the client, the computer performs calculations using a new array generated by concatenating the numerical values of the received array element by element of the stored array; and the client generates and sends an array in which the most significant digit of each element of the remaining numerical value is divided into numerical components, and the computer sends the resulting array. [Effects of the Invention]
[0012] According to the present disclosure, the transmission time of data for causing another computer to execute processing can be shortened.
Brief Description of the Drawings
[0013] [Figure 1] It is a block diagram showing a configuration example of the information processing system of the present disclosure. [Figure 2] It is an explanatory diagram showing an example of a first division method. [Figure 3] It is an explanatory diagram for explaining the processing of a first specific example. [Figure 4] It is an explanatory diagram showing an example of a second division method. [Figure 5] It is an explanatory diagram showing an example of a third division method. [Figure 6] It is an explanatory diagram showing an operation example of the information processing system of the present disclosure. [Figure 7] It is a flowchart showing an example of processing by a first division method. [Figure 8] It is a flowchart showing an example of processing by a second division method [Figure 9] It is a flowchart showing an example of processing by a third division method. [Figure 10] It is a block diagram showing another configuration example of the information processing system of the present disclosure. [Figure 11] It is an explanatory diagram showing another example of a first division method. [Figure 12] It is an explanatory diagram showing another example of a second division method. [Figure 13] It is an explanatory diagram showing another example of a third division method. [Figure 14] It is an explanatory diagram showing another operation example of the information processing system of the present disclosure. [Figure 15] It is a flowchart showing an example of other processing by a first division method. [Figure 16] It is a flowchart showing an example of other processing by a second division method. [Figure 17] It is a flowchart showing an example of other processing by a third division method. [Figure 18] This is an explanatory diagram showing an example of annealing results. [Figure 19] This block diagram outlines the information processing system disclosed herein. [Figure 20] This block diagram shows an overview of the array splitting device of this disclosure. [Figure 21] This is a block diagram illustrating the overview of the sequence joining device in this disclosure. [Figure 22] This is a schematic block diagram showing the configuration of a computer according to at least one embodiment. [Modes for carrying out the invention]
[0014] First, let's describe an example of how the information processing system disclosed here operates. In recent years, computers called Ising machines have been widely used to solve combinatorial optimization problems at high speed. In particular, Ising machines used to solve large-scale combinatorial optimization problems often reside on the cloud.
[0015] Therefore, to use an Ising machine on the cloud, it is necessary to send the problem model. However, sending a large-scale problem to the cloud takes a lot of time. For example, if the number of variables in the problem model is 300,000, the size of the problem data (double precision) will be 400GB, and even with a 100Mbps communication line, it will take 32,000 seconds (approximately 8 hours and 53 minutes) to send the data. If sending the problem takes a lot of time, it is difficult to fully utilize the advantage of Ising machines, which is that they can solve combinatorial optimization problems at high speed.
[0016] Here, in order to prevent the formulation know-how of the combinatorial optimization problem from being leaked to the environment provider of other computers that will solve it, it is preferable that the problem model can be transmitted as is. Therefore, this disclosure describes a method for shortening the data transmission time for other computers to execute processing by dividing the problem in terms of the number of digits of the numerical value representing the model. Embodiments of this disclosure will be described below with reference to the drawings.
[0017] Embodiment 1. Figure 1 is a block diagram showing an example configuration of a first embodiment of the information processing system of the present disclosure. The information processing system 100 of this embodiment comprises a client 110 and a server 120. The client 110 and the server 120 are interconnected via a communication network.
[0018] Client 110 and Server 120 are implemented by any computer. In this embodiment, the case where Server 120 is connected to an Ising machine 200 is illustrated. However, Server 120 itself may be implemented on an Ising machine.
[0019] The client 110 includes a transmit / receive unit 111, a termination condition setting unit 112, a QUBO input unit 113, and a QUBO splitting unit 114.
[0020] The transmitting / receiving unit 111 transmits and receives data with the server 120. The transmitting / receiving unit 111 may also send to the server 120 settings such as various conditions (for example, initial conditions) necessary for the calculation process to be executed by the server 120 (for example, a process to solve a combinatorial optimization problem).
[0021] The termination condition setting unit 112 sends to the server 120 the conditions (termination conditions) for terminating the calculation process to be executed by the server 120. For example, when the server 120 is to be executed for solving a combinatorial optimization problem, the termination condition setting unit 112 may send to the server 120 the conditions for the maximum calculation time for which the server 120 will perform the calculation process, and convergence conditions for determining that the calculation results have converged.
[0022] The QUBO input unit 113 accepts input of a model that indicates the content of the calculation to be performed by the server 120. Specifically, the QUBO input unit 113 accepts input of an array whose elements are numerical values representing the content of the model. In the following description, the array representing the content of the input model may also be referred to as the input array.
[0023] In this embodiment, the calculation performed by the server 120 is assumed to be a computation process for solving a combinatorial optimization problem, and a QUBO (Quadratic Unconstrained Binary Optimization) matrix is given as an example of an array whose elements are numerical. However, the calculations performed by the server 120 are not limited to combinatorial optimization problems, and the array whose elements are numerical is not limited to a QUBO matrix. For example, the array whose elements are numerical may be represented by an Ising model equivalent to QUBO.
[0024] Furthermore, the method of representing the numerical value is arbitrary; it may be represented as a common decimal real number or integer, or as a floating-point number (double precision, single precision).
[0025] The QUBO splitting unit 114 generates an array by splitting each element of the input array (i.e., the input array) into numerical components that represent the most significant digit of the number. For example, suppose the number is "1234" in decimal. In this case, the most significant digit when considered in decimal is the thousands place, and since this thousands place is "1", the numerical component that represents the most significant digit of the number "1234" when considered in decimal is "1".
[0026] The handling of numerical values in the array elements can be predetermined between client 110 and server 120.
[0027] The QUBO splitting unit 114 then sends the sequence generated by splitting the original sequence (hereinafter sometimes referred to as the first sequence) to the server 120. In the initial state, the QUBO splitting unit 114 sends the sequence generated by splitting the input sequence to the server 120.
[0028] Furthermore, the QUBO splitting unit 114 calculates an array (hereinafter sometimes referred to as the second array) by subtracting the values of the split array element by element from the values of the array before splitting. Then, for each element of the generated array, the QUBO splitting unit 114 generates an array by splitting the numerical component representing the most significant digit of the value of each remaining element and sends it to the server 120. The splitting here is the same as the splitting described above.
[0029] From this point onward, the QUBO splitting unit 114 repeats the splitting and transmission process to the server 120 until the numerical values of all elements in the remaining array (i.e., the second array) become 0. The timing of the transmission of the array generated by the QUBO splitting unit 114 (i.e., the first array) is arbitrary. The QUBO splitting unit 114 may transmit the first array to the server 120 in accordance with instructions from the calculation result processing unit 123 of the server 120, as described later, or it may transmit the first array to the server 120 immediately after generating it.
[0030] The following describes a specific example of how the QUBO partitioning unit 114 partitions an array. In the following example, the problem model (i.e., the array) is represented by a QUBO matrix, and the numerical values represented by each element of the QUBO matrix are treated as double-precision floating-point numbers.
[0031] First, let's explain the first specific example. Figure 2 is an explanatory diagram showing an example of the first partitioning method. First, the QUBO partitioning unit 114 obtains the maximum value M (maxQ) and minimum value m (minQ) among the elements of the QUBO matrix Q. Then, the QUBO partitioning unit 114 calculates the difference Δ between the obtained maximum value M and minimum value m.
[0032] Next, the QUBO splitting unit 114 splits the matrix shown in Equation 1, which is illustrated below, from the original matrix Q and sends it to the server 120. The first term in Equation 1 is the reference matrix multiplied by the minimum value m, so in the following explanation, the matrix in the first term may also be referred to as the minimum value matrix. Also, the second term in Equation 1 is the difference between matrix Q and the minimum value matrix, so in the following explanation, the matrix in the second term may also be referred to as the difference matrix. Note that each time a matrix is sent to the server 120, the server 120 performs calculation processing using the sent array.
[0033]
number
[0034] In Equation 1, each element of the matrix whose elements are "0 or 1" (i.e., the difference matrix) is determined in the following way: The QUBO partitioning unit 114 subtracts m from the array to be partitioned, and the subtracted value is Δ / 2 1 If the above elements are present, that element is set to 1. On the other hand, the subtracted value is Δ / 2 1 If the element is smaller, the QUBO division unit 114 sets that element to 0. This process is equivalent to extracting the bit representing the most significant digit when the number is represented by 2 bits. The same applies to the following division methods.
[0035] Then, the QUBO division unit 114 adds Δ / 2 to the difference matrix and the generated matrix. 1 The matrix obtained by adding the matrix calculated by (i.e., 8) is sent to the server 120. Note that the QUBO division unit 114 may send the difference matrix to the server 120 in advance when it has calculated the difference matrix. In that case, the QUBO division unit 114 adds Δ / 2 to the generated matrix. 1 Only the matrix obtained by multiplying by the coefficient calculated (i.e., 8) should be sent to server 120.
[0036] Next, the QUBO division unit 114 subtracts the numerical values of each element of the transmitted matrix from matrix Q, and the subtracted value is Δ / 2 2If it is the above element, set that element to 1. On the other hand, if the subtracted value is less than Δ / 2 2 and it is an element smaller than that, the QUBO division unit 114 sets that element to 0. Then, the QUBO division unit 114 adds a matrix obtained by multiplying the generated matrix by the coefficient (that is, 4) calculated by Δ / 2 2 to the difference matrix and transmits the resulting matrix to the server 120.
[0037] Thereafter, the QUBO division unit 114 subtracts the numerical value of each element of the matrix that has been transmitted to the server so far from the matrix Q. If the subtracted value is greater than or equal to Δ / 2 n and it is an element (where n is the number of divisions), set that element to 1. On the other hand, if the subtracted value is less than Δ / 2 n and it is an element smaller than that, the QUBO division unit 114 sets that element to 0.
[0038] Note that in the case of a QUBO matrix, since elements other than the upper triangular matrix components are 0, for the "all-1" matrix in Equation 1 shown above, only the upper triangular matrix components may be set to 1.
[0039] Here, for the first specific example, specific numerical values will be exemplified and described in detail. FIG. 3 is an explanatory diagram for explaining the processing of the first specific example. In the example shown in FIG. 3, assume that a matrix Q is input where the elements in the first row are [+5, -8, 0], the elements in the second row are [0, -3, +8], and the elements in the third row are [0, 0, -6].
[0040] The QUBO division unit 114 obtains +8, which is the maximum value M (= maxQ) in the matrix Q, and -8, which is the minimum value m (= minQ). Further, the QUBO division unit 114 calculates the difference Δ between the maximum value M and the minimum value m as M - m = 16.
[0041] The QUBO division unit 114 generates a minimum value matrix M1 with the minimum value of -8 as the coefficient and the upper triangular components of the matrix set to 1, and a difference matrix M2 from the input matrix Q. The QUBO division unit 114 determines that the numerical value of the difference matrix M2 is Δ / 2 1The above elements are identified, and a matrix M3 is generated in which the identified elements are set to 1 and the rest to 0. Then, the QUBO partitioning unit 114 sets the minimum value matrix M1 and the generated matrix M3 to a coefficient of 8(16 / 2 1 The matrix M4, obtained by adding the matrices multiplied by ), is sent to server 120.
[0042] Next, the QUBO division unit 114 subtracts the transmitted matrix M4 from matrix Q to generate a new difference matrix M5. The QUBO division unit 114 determines that the numerical value of the difference matrix is Δ / 2 2 The above elements are identified, and a matrix M6 is generated in which the identified elements are set to 1 and the others to 0. Then, the QUBO partitioning unit 114 applies the coefficient 4(16 / 2) to the generated matrix M6. 2 The matrix M7 obtained by adding ) is sent to server 120.
[0043] After matrices M4 and M7 are sent to the server 120, the QUBO merging unit 122 (described later) performs a merge process, and matrix M8 is generated.
[0044] Similarly, the QUBO division unit 114 subtracts the transmitted matrices M4 and M7 (i.e., matrix M8) from matrix Q to generate a new difference matrix M9. The QUBO division unit 114 determines that the numerical value of the difference matrix is Δ / 2 3 The above elements are identified, and a matrix M10 is generated in which the identified elements are set to 1 and the others to 0. Then, the QUBO partitioning unit 114 applies the coefficient 2(16 / 2) to the generated matrix M10. 3 The matrix M11 obtained by multiplying by ) is sent to server 120.
[0045] After matrices M4, M7, and M11 are sent to the server 120, the QUBO coupling unit 122 (described later) performs a coupling process to generate matrix M12.
[0046] Furthermore, the QUBO division unit 114 subtracts the transmitted matrices M4, M7, and M11 (i.e., matrix M12) from matrix Q to generate a new difference matrix M13. The QUBO division unit 114 determines that the numerical value of the difference matrix is Δ / 2 4The above elements are identified, and a matrix M14 is generated in which those elements are set to 1 and the rest to 0. Then, the QUBO partitioning unit 114 applies a coefficient of 1(16 / 2) to the generated matrix M14. 4 The matrix M15 obtained by multiplying by ) is sent to server 120.
[0047] After matrices M4, M7, 11, and M15 are sent to the server 120, the QUBO joiner 122 (described later) performs a join process to generate matrix M16. Subsequently, the QUBO splitter 114 repeats the above process until all elements of the difference matrix become 0.
[0048] Thus, the QUBO partitioning unit 114 increases the difference Δ between the maximum and minimum values of the elements of the array (QUBO matrix) by a power of 2 for each number of array partitions n. n You may also send to the server an array that is the product of the number obtained by dividing by a certain factor and a matrix represented by the binary values 0 and 1.
[0049] Next, a second specific example of how the QUBO partitioning unit 114 partitions an array will be explained. Figure 4 is an explanatory diagram showing an example of the second partitioning method. In the case of a QUBO matrix, the numerical values are often evenly distributed across the positive and negative ranges (for example, the distribution is uniform). Therefore, in the second specific example, the absolute values of the numerical values are used. Specifically, the QUBO partitioning unit 114 obtains the maximum value M (=max|Q|) and minimum value m (=0) of the absolute values in the elements of the QUBO matrix Q. Then, the QUBO partitioning unit 114 calculates the difference Δ (i.e., M) between the obtained maximum value M and minimum value m.
[0050] Next, the QUBO splitting unit 114 splits the matrix shown in Equation 2, which is illustrated below, from the original matrix Q and sends it to the server 120. The first matrix in Equation 2 is a matrix that shows the signs of the numerical values of the elements. The last matrix in Equation 2 is the same as the difference matrix shown in the first specific example. The difference from the first specific example is that the target of the split is the absolute value of the elements, and for the sign, it is sufficient to calculate the product of the sign initially sent to the server 120 and the matrix.
[0051]
number
[0052] Thus, the QUBO partitioning unit 114 generates a matrix indicating the signs of the elements of the array (QUBO matrix) and the absolute value of the maximum value of its elements, increasing by a power of 2 for each n partition of the array. n You may also send to the server an array that is the product of the number obtained by dividing by a certain factor and a matrix represented by the binary values 0 and 1.
[0053] Next, a third specific example of how the QUBO partitioning unit 114 partitions an array will be explained. Figure 5 is an explanatory diagram showing an example of the third partitioning method. In the second specific example above, when using the absolute value of a numerical value, there are cases where the minimum value is far from 0 (for example, greater than a predetermined standard). Therefore, in the third specific example, the QUBO partitioning unit 114 obtains the maximum absolute value M (=max|Q|) and the minimum absolute value m (=min|Q|) among the elements of the QUBO matrix Q. Then, the QUBO partitioning unit 114 calculates the difference Δ (i.e., Mm) between the obtained maximum value M and minimum value m.
[0054] Next, the QUBO splitting unit 114 splits the matrix shown in Equation 3, which is illustrated below, from the original matrix Q and sends it to the server 120. The first term in Equation 3 is the reference matrix obtained by multiplying the sign by the minimum value m, and corresponds to the minimum value matrix in the first specific example. The second term in Equation 3 corresponds to the matrix shown in the second specific example. Regarding the sign, as in the second specific example, it is sufficient to calculate the product of the sign initially sent to the server 120 and the matrix.
[0055]
number
[0056] Thus, the QUBO partitioning unit 114 uses a matrix that indicates the signs of the elements of the array (QUBO matrix), and the difference Δ between the absolute value of the maximum and absolute value of the minimum of those elements, which is increased for each n partition of the array by a power of 2. nYou may also send to the server an array that is the product of the number obtained by dividing by a certain factor and a matrix represented by the binary values 0 and 1.
[0057] The method by which the QUBO splitting unit 114 splits the array may be predetermined, or the method of splitting the array may be determined according to the distribution of numerical values of the elements of the input array.
[0058] In the first to third division methods described above, the QUBO division unit 114 divides the numerical values of the difference matrix bit by bit from the most significant digit and sends the resulting array (QUBO matrix) to the server. Note that the division unit is not limited to 1 bit, but may be 2 bits or more.
[0059] The transmitting / receiving unit 111, the termination condition setting unit 112, the QUBO input unit 113, and the QUBO splitting unit 114 are implemented by a computer processor (e.g., a CPU (Central Processing Unit)) that operates according to a program (array splitting program). For example, the program may be stored in the storage unit (not shown) of the client 110, and the processor may read the program and operate as the transmitting / receiving unit 111, the termination condition setting unit 112, the QUBO input unit 113, and the QUBO splitting unit 114 according to the program.
[0060] Furthermore, each function of the client 110 may be provided in SaaS (Software as a Service) format. Also, the transmitting / receiving unit 111, the termination condition setting unit 112, the QUBO input unit 113, and the QUBO splitting unit 114 may each be implemented with dedicated hardware.
[0061] Furthermore, some or all of the components of each device may be implemented by general-purpose or dedicated circuits, processors, etc., or combinations thereof. These may be comprised of a single chip or multiple chips connected via a bus. Some or all of the components of each device may be implemented by a combination of the aforementioned circuits, etc., and programs.
[0062] Furthermore, if some or all of the components of client 110 are implemented by multiple information processing devices or circuits, these multiple information processing devices or circuits may be centrally located or distributed. For example, the information processing devices or circuits may be implemented in a form in which each is connected via a communication network, such as a client-server system or a cloud computing system.
[0063] On the other hand, the server 120 includes a transmitting / receiving unit 121, a QUBO coupling unit 122, and a calculation result processing unit 123. The server 120 is connected to the Ising machine 200 in a communicative manner.
[0064] The transmitting / receiving unit 121 controls the transmission and reception of data with the client 110. Specifically, the transmitting / receiving unit 121 receives the sequence transmitted from the client 110 and stores the received sequence. The transmitting / receiving unit 121 may also store the received sequence in a storage unit (not shown) included in the server 120.
[0065] Each time the QUBO merging unit 122 receives an array from the client 110, it combines the numerical values of the received array with the elements of an already received array to generate a new array. Specifically, the QUBO merging unit 122 adds the numerical values of the received array to the elements of a stored array to generate a new array used in the calculation process described later.
[0066] The QUBO coupling unit 122 then performs calculations using the newly generated array. In this embodiment, the QUBO coupling unit 122 sends the QUBO matrix to the Ising machine 200 and causes it to perform calculations (more specifically, combinatorial optimization). Since the method by which the Ising machine 200 performs calculations using the QUBO matrix is widely known, a detailed explanation is omitted here.
[0067] The calculation result processing unit 123 determines whether or not to continue the calculation process based on the calculation result. In this embodiment, the termination condition setting unit 112 of the client 110 sets conditions (termination conditions) for terminating the calculation process executed by the server 120. The calculation result processing unit 123 then determines whether or not the termination conditions are met based on the calculation result. If the termination conditions are met, the calculation result processing unit 123 sends the calculation result to the client 110.
[0068] The transmitting / receiving unit 121, the QUBO coupling unit 122, and the calculation result processing unit 123 are implemented by a computer processor (e.g., CPU) that operates according to a program (array coupling program).
[0069] As described above, client 110 is a device that processes the input array by splitting it, and can therefore be called an array splitting device, while server 210 is a device that processes the received array by combining it, and can therefore be called an array combining device.
[0070] Next, the operation of the information processing system according to the first embodiment will be described. Figure 6 is an explanatory diagram showing an example of the operation of the information processing system according to the embodiment of this disclosure. The QUBO splitting unit 114 of the client 110 generates an array in which the numerical component representing the most significant digit of the number is divided for each element of the array and sends it to the server 120 (step S11). Subsequently, the QUBO splitting unit 114 further subtracts the numerical values of the split array element by element from the numerical values of the array before splitting, and for each remaining element, generates an array in which the numerical component representing the most significant digit of the number is divided and sends it to the server 120 (step S12). On the other hand, the QUBO joining unit 122 of the server 120 performs calculation processing using the array generated by joining the numerical values of the received array element by element of the stored array each time it receives an array from the client 110 (step S21).
[0071] Next, we will explain the processing according to the method by which the QUBO partitioning unit 114 partitions the array (specifically, the QUBO matrix). First, we will explain the specific processing according to the first partitioning method. Figure 7 is a flowchart showing an example of processing according to the first partitioning method.
[0072] The QUBO input unit 113 accepts the input of the QUBO matrix, and the termination condition setting unit 112 sets the termination condition for the calculation process on the Ising machine 200 to the server 120 (step S101).
[0073] The QUBO division unit 114 obtains the maximum and minimum values of the elements of the input QUBO matrix (step S102). Furthermore, the QUBO division unit 114 calculates the difference between the maximum and minimum values of the QUBO matrix (step S103). After obtaining the minimum value, the transmitting / receiving unit 111 transmits the minimum value of the QUBO matrix to the transmitting / receiving unit 121 of the server 120 (step S104).
[0074] The QUBO coupling unit 122 generates and stores a QUBO matrix from the minimum value received by the transmitting / receiving unit 121 as the initial problem to be solved by the Ising machine 200 (step S105). The QUBO matrix generated here is the minimum value matrix shown above.
[0075] On the other hand, the QUBO division unit 114 generates a difference matrix by subtracting the transmitted matrix from the input QUBO matrix (step S106). Then, the QUBO division unit 114 generates a binary QUBO matrix from the difference matrix, which consists only of elements that are "0 or 1", and generates a QUBO matrix by multiplying it by a real coefficient (step S107). Specifically, the QUBO division unit 114 uses 2 raised to the power of the number of divisions (i.e., 2) as the real coefficient. n The value obtained by dividing the difference Δ by (Δ / 2 n The QUBO division unit 114 generates a matrix by multiplying the result by a binary QUBO matrix whose elements are only "0 or 1". Then, the QUBO division unit 114 transmits the binary QUBO matrix generated in step S107 to the server 120's transmission / reception unit 121 (step S108).
[0076] The QUBO merging unit 122 of server 120 merges (adds) the received QUBO matrix with the QUBO matrices that have been stored up to that point (step S109). Meanwhile, the QUBO splitting unit 112 of client 110 subtracts the QUBO matrix generated by server 120 (i.e., the QUBO matrix sent to server 120) from the input QUBO matrix to generate a difference matrix (step S110).
[0077] The QUBO coupling unit 122 of the server 120 instructs the Ising machine 200 to perform the process of solving the QUBO matrix generated in step S109 (step S111). Then, the calculation result processing unit 123 receives and stores the result of the Ising machine 200 solving the QUBO matrix (step S112).
[0078] The calculation result processing unit 123 determines whether or not to terminate the process based on the set termination conditions (step S113). Specifically, the calculation result processing unit 123 determines whether or not to terminate the process of sending the QUBO matrix from the client 110 to the server 120. If it is determined not to terminate the process (step No. in step S113), the calculation result processing unit 123 instructs the client 110 to send the QUBO matrix (step S114).
[0079] On the other hand, if it is determined to terminate the process (step Yes in step S113), the calculation result processing unit 123 sends the solution to the client 110 (step S115).
[0080] Next, we will explain the specific processing using the second partitioning method. Figure 8 is a flowchart showing an example of processing using the second partitioning method. The process of receiving the QUBO matrix input and setting the termination condition is the same as the content of step S101 illustrated in Figure 7.
[0081] Next, the QUBO division unit 114 obtains the sign of each element of the input QUBO matrix (step S201). Furthermore, the QUBO division unit 114 obtains the maximum absolute value of the elements of the QUBO matrix (step S202). In this division method, the difference between the maximum and minimum values is the same as the maximum absolute value. Then, the transmitting / receiving unit 111 transmits the matrix showing the obtained signs to the transmitting / receiving unit 121 of the server 120 (step S203).
[0082] Subsequently, the process of repeatedly sending the matrix generated by the QUBO splitting unit 114 to the server 120, and the QUBO joining unit 122 performing processing on the Ising machine 200 based on the received sequence, is the same as the process from step S107 to step S115 illustrated in Figure 7.
[0083] Next, we will explain the specific processing using the third partitioning method. Figure 9 is a flowchart showing an example of processing using the third partitioning method. The processing of receiving the QUBO matrix input, setting the termination condition, and obtaining the sign of each element of the QUBO matrix are the same as the contents of steps S101 and S201 illustrated in Figure 8.
[0084] Next, the QUBO division unit 114 obtains the maximum and minimum absolute values of the elements of the input QUBO matrix (step S301). The QUBO division unit 114 calculates the difference between the obtained maximum and minimum absolute values (step S302). Then, the transmitting / receiving unit 111 transmits the matrix showing the obtained codes to the transmitting / receiving unit 121 of the server 120 (step S303).
[0085] From this point onward, the process of repeatedly sending the matrix generated by the QUBO splitting unit 114 to the server 120, and the QUBO joining unit 122 performing processing on the Ising machine 200 based on the received sequence, is the same as the process from step S107 to step S115 illustrated in Figure 8.
[0086] As described above, in this embodiment, the QUBO splitting unit 114 generates an array by splitting the numerical component representing the most significant digit of each element of an input array whose elements are numerical values, and sends it to the server 120. Furthermore, the QUBO splitting unit 114 repeatedly subtracts the numerical values of the split array from the numerical values of the array before splitting, element by element, and generates an array by splitting the numerical component representing the most significant digit of the remaining element's numerical value, and sends it to the server 120. Then, each time the QUBO merging unit 122 receives an array from the client 110, it performs calculation processing using a new array generated by merging the numerical values of the received array element by element of the stored array. Therefore, the data transmission time for other computers to execute processing can be shortened.
[0087] For example, the Traveling Salesperson Problem, a type of combinatorial optimization problem, is the problem of finding a route to visit multiple cities while minimizing the distance traveled. The optimal solution to the Traveling Salesperson Problem is to find the route that is shortest, but in cases where the objective can be achieved by finding a solution that allows the visits to be completed within a given time limit, it may be acceptable to terminate the calculation before finding the shortest route.
[0088] In conventional methods, large amounts of input data are sent directly to the Ising machine without any omissions, and the calculation process is often delayed until the objective function value converges. On the other hand, in the information processing system 100 of this embodiment, the QUBO splitting unit 114 sends the input data, which has been abbreviated to reduce the computational burden, to the server 120, and the QUBO merging unit 122 uses that data to have the Ising machine 200 perform calculations. Then, the calculation result processing unit 123 decides whether or not to continue the calculation process based on whether or not the termination conditions set by the termination condition setting unit 112 are met. As a result, it is possible to increase the likelihood of finding the target solution in a shorter time than with conventional methods.
[0089] In particular, the situation in which combinatorial optimization problems are solved by annealing is well-suited to the method disclosed here, which involves first performing calculations using rough data and then gradually performing calculations with data of increasing precision.
[0090] Embodiment 2. Next, a second embodiment of the information processing system of this disclosure will be described. Depending on the model, a characteristic QUBO matrix may be used. For example, if the QUBO matrix is a sparse matrix containing many zeros, a sparse matrix storage method (CSR (Compressed Sparse Row), CSC (Compressed Sparse Column), COO (Coordinate), etc.) can be used. These storage methods record only the non-zero components. Note that CSR and CSC are fast for matrix operations when using the same storage method, while COO is fast for data manipulation.
[0091] If the QUBO matrix contains the same type of constraints, a certain number of values may appear many times. For example, the One-hot condition is a condition that only one of several variables that are either 0 or 1 is 1, and Σ N i=1 x i It is represented by =1. For example, when N=4, the QUBO matrix is the matrix shown below.
[0092]
number
[0093] The QUBO matrix shown above is a matrix containing N(N-1) / 2 zeros, N -1s, and N(N-1) / 2 two 2s as its elements.
[0094] For example, a two-way one-hot condition is a condition that includes a one-hot condition in the row and column directions for a variable that is either 0 or 1 in a two-dimensional array n with the same number of rows and columns. This condition is Σ for all j. N i=1 x ij = 1, and Σ for all i N j=1 x ij =1 (where N=n 2 It satisfies the following conditions. For example, N=n 2If = 9, the QUBO matrix will be the matrix shown below.
[0095]
number
[0096] The QUBO matrix shown above has n elements, where 0 is used as the element. 4 -n 3 n pieces, -2 2 pieces, 2 to n 2 This results in a matrix containing (n-1) elements.
[0097] With such a matrix, it is possible to transmit data using an efficient storage method. Therefore, in this embodiment, a method is described in which information contained in large quantities within the array is extracted in advance and sent to the server to further shorten the data transmission time.
[0098] Figure 10 is a block diagram showing an example configuration of a second embodiment of the information processing system of the present disclosure. The information processing system 100a of this embodiment comprises a client 210 and a server 220. The client 210 and the server 220 are interconnected via a communication network. Furthermore, both the client 210 and the server 220 can be implemented by any computer.
[0099] The client 210 includes a transmit / receive unit 111, a termination condition setting unit 112, a QUBO input unit 213, and a QUBO splitting unit 214. That is, the client 210 of this embodiment differs from the client 110 of the first embodiment in that it includes a QUBO input unit 213 and a QUBO splitting unit 214 instead of the QUBO input unit 113 and the QUBO splitting unit 114. The other configurations are the same as those of the first embodiment.
[0100] The QUBO input unit 213 saves the received QUBO matrix in sparse matrix format. However, saving the QUBO matrix in sparse matrix format is not a mandatory process.
[0101] The QUBO splitting unit 214 obtains the number of occurrences of the numerical values contained in the elements of the array that it has received as input. Then, the QUBO splitting unit 214 converts the elements of the array into a sparse array or sparse matrix. Since the method of converting the elements of an array into a sparse array or sparse matrix is widely known, a detailed explanation is omitted here.
[0102] Furthermore, the QUBO division unit 214 may convert the elements of the array into a sparse array or sparse matrix if there are numerical values whose occurrence count exceeds a predetermined criterion relative to the total elements. The criterion defined here may be, for example, the ratio of the occurrence count of numerical values relative to the total elements.
[0103] The QUBO splitting unit 214 extracts numerical elements from the input array whose occurrence count exceeds a predetermined standard. The QUBO splitting unit 214 then generates an array consisting of the extracted elements and sends it to the server 220. The QUBO splitting unit 214 generates an array (i.e., a second array) by subtracting the numerical values of the extracted array element by element from the numerical values of the input array. Subsequently, the process of generating an array by splitting the numerical components representing the most significant digit of the remaining elements and sending it to the server 120 is the same as the process performed by the QUBO splitting unit 114 in the first embodiment.
[0104] The following describes a specific example of how the QUBO partitioning unit 214 partitions an array. In the following explanation, let Q be the input array, a QUBO matrix, and assume that Q contains many numerical values a and b. Let A be the matrix that contains all a and b, and all others are 0. In this case, since A is sent to the server in advance, the QUBO matrix Q' to be partitioned becomes Q' = QA.
[0105] The following describes a method that adds a process to the first, second, and third division methods in the first embodiment, which involves dividing an array consisting of numerical elements whose occurrence count exceeds a predetermined standard.
[0106] First, let's explain the first specific example. Figure 11 is an explanatory diagram showing another example of the first partitioning method. In the example shown in Figure 11, the maximum and minimum values are obtained from the elements of the QUBO matrix Q'. The QUBO partitioning unit 214 then sends the matrix obtained by partitioning A and the minimum value to the server 220. The subsequent processing is the same as in the first embodiment.
[0107] Next, a second specific example will be described. Figure 12 is an explanatory diagram showing another example of the second partitioning method. In the example shown in Figure 12, the absolute value of the maximum value is obtained from the element of the absolute value of the QUBO matrix Q'. The QUBO partitioning unit 214 then sends the matrix with A and sign partitioned to the server 220. The subsequent processing is the same as in the first embodiment.
[0108] Next, a third specific example will be described. Figure 13 is an explanatory diagram showing another example of the third partitioning method. In the example shown in Figure 13, the absolute values of the maximum and minimum values are obtained from the absolute value elements of the QUBO matrix Q'. The QUBO partitioning unit 214 then sends the matrix obtained by partitioning A and the signed minimum value to the server 220. The subsequent processing is the same as in the first embodiment.
[0109] The transmitting / receiving unit 111, the termination condition setting unit 112, the QUBO input unit 213, and the QUBO division unit 214 are implemented by a computer processor that operates according to a program (array division program).
[0110] The server 220 includes a transmitting / receiving unit 121, a QUBO coupling unit 222, and a calculation result processing unit 123. That is, the server 220 of this embodiment differs from the server 120 of the first embodiment in that it has a QUBO coupling unit 222 instead of a QUBO coupling unit 122. The other configurations are the same as those of the first embodiment.
[0111] The QUBO junction unit 222 stores the sequence received from the client 210. Specifically, the QUBO junction unit 222 receives and stores a sequence from the client consisting of elements whose occurrence frequency exceeds a predetermined standard, extracted from the input sequence.
[0112] Then, similar to the first embodiment, the QUBO coupling unit 222 of the server 220 performs calculation processing using a new array generated by combining (adding) the numerical values of the received array element by element of the stored array each time it receives an array from the client 210.
[0113] Next, the operation of the information processing system of the second embodiment will be described. Figure 14 is an explanatory diagram showing an example of the operation of the information processing system 100a of the second embodiment.
[0114] The QUBO splitting unit 214 splits elements from the input array whose occurrence count exceeds a predetermined standard, generates an array consisting of the split elements, and sends it to the server 220 (step S13). Meanwhile, the QUBO joining unit 222 of the server 220 stores the received array (step S22).
[0115] Subsequently, the process in which the QUBO splitting unit 214 sends the generated sequence to the server 220, and the QUBO joining unit 222 of the server 220 performs calculation processing each time it receives a sequence, is the same as the process in steps S12 and S21 illustrated in Figure 6.
[0116] Next, we will explain the processing according to the method by which the QUBO partitioning unit 214 partitions the array (specifically, the QUBO matrix). Below, we will explain the first partitioning method, the second partitioning method, and the third partitioning method shown in the first embodiment, focusing on the differences from this embodiment.
[0117] First, we will explain the specific processing using the first partitioning method. Figure 15 is a flowchart showing an example of other processing using the first partitioning method. The process of receiving the QUBO matrix input and setting the termination condition is the same as the content of step S101 illustrated in Figure 6.
[0118] Furthermore, the QUBO input unit 213 stores the received QUBO matrix in sparse matrix format (step S401). The QUBO division unit 214 obtains the number of occurrences of the numerical values included in the QUBO matrix (step S402). Then, it divides the matrix into elements based on numerical values whose occurrence count exceeds a predetermined standard and sends the resulting array to the server 220 (step S403).
[0119] Subsequently, the processes from steps S102 to S104, as illustrated in Figure 7, are performed. Then, the QUBO coupling unit 222 of the server 220 generates a QUBO matrix from the received minimum value and combines it with a QUBO matrix whose elements are numerical values whose occurrence count exceeds a predetermined standard (step S404). The processes from step S106 onward are the same as those from step S106 onward, as illustrated in Figure 7.
[0120] Next, we will explain the specific processing using the second partitioning method. Figure 16 is a flowchart showing an example of other processing using the second partitioning method. The processing from receiving the QUBO matrix input to sending the array, which is partitioned with numerical values whose occurrence count exceeds a predetermined criterion as elements, to the server 220 is the same as the content of steps S101 and S401 to S403 illustrated in Figure 17. Furthermore, the processing from step S201 onwards is the same as the processing from step S201 onwards illustrated in Figure 8.
[0121] Next, we will explain the specific processing using the third partitioning method. Figure 17 is a flowchart showing an example of other processing using the third partitioning method. Similar to the second partitioning method, the processing from receiving the QUBO matrix input to sending the array, which is partitioned with numerical values whose occurrence count exceeds a predetermined criterion as elements, to the server 220 is the same as the content of steps S101 and S401 to S403 illustrated in Figure 17. Furthermore, the processing from step S201 onwards is the same as the processing from step S201 onwards illustrated in Figure 9.
[0122] As described above, in this embodiment, the QUBO splitting unit 214 splits elements whose occurrence count exceeds a predetermined standard from the input array, generates an array consisting of the split elements and sends it to the server 220, and the QUBO joining unit 222 stores the received array. Therefore, in addition to the effects of the first embodiment, it becomes possible to further shorten the data transmission time. [Examples]
[0123] The present invention will be described below with reference to specific examples, but the scope of the present invention is not limited to what is described below. In this specific example, we will explain the results of solving a 2000-bit QUBO (10MB in double precision) using an Ising machine, increasing the coefficients by one bit at a time. The coefficients were generated from a uniform distribution as double-precision floating-point numbers from -10 to 10.
[0124] Figure 18 is an explanatory diagram showing an example of the annealing results. In this specific example, the solution was all 1 for up to 4 bits with 16 different components. On the other hand, from around 8 bits with 256 different components, results close to the optimal solution were obtained. Furthermore, annealing calculations were performed by sequentially transmitting bits from 1 to 30, and in 6 out of 30 trials (when transmitting bits 17, 20, 21, 22, 28, and 29), a more favorable solution was obtained than when the QUBO was transmitted directly.
[0125] Therefore, it can be said that a benefit of repeatedly performing annealing calculations is that it increases the sample size.
[0126] Next, an overview of this disclosure will be described. Figure 19 is a block diagram showing an overview of the information processing system of this disclosure. Information processing system 1 according to this disclosure (for example, information processing systems 100, 100a) comprises a client 80 (for example, clients 110, 120) that issues execution instructions to other computers (for example, servers 120, 220) and a server 90 (for example, servers 120, 220) that receives execution instructions from the clients 80.
[0127] The client 80 includes a splitting unit 81 (for example, a QUBO splitting unit 114) that repeatedly generates an array by splitting the numerical component representing the most significant digit of each element of an input array (for example, a QUBO matrix) whose elements are numbers, and sends it to the server 90. The splitting unit 81 then subtracts the numerical values of the split array element by element from the numerical values of the array before splitting, and for the remaining elements, generates an array by splitting the numerical component representing the most significant digit of each element, and sends it to the server 90.
[0128] The server 90 includes a coupling unit 91 (for example, a QUBO coupling unit 122) that, each time it receives an array from the client 80, performs calculations using a new array generated by combining the numerical values of the received array element by element of the stored array.
[0129] Such a configuration can reduce the time it takes to transmit data for other computers to perform processing.
[0130] Furthermore, the splitting unit 81 of the client 80 may split numerical elements whose occurrence count exceeds a predetermined standard from the input array, generate an array consisting of the split elements and send it to the server 90, and the joining unit 91 of the server 90 may store the received array.
[0131] Furthermore, the coupling unit 91 of the server 90 may cause a computing process to be performed on an Ising machine in the cloud (for example, an Ising machine 200).
[0132] Alternatively, the splitting unit 81 of the client 80 may split the numerical values of the array elements bit by bit from the most significant digit and send the resulting array to the server 90. The information processing system according to claim 1 or claim 2.
[0133] Alternatively, the partitioning unit 81 of the client 80 may send to the server 90 an array represented by the product of the difference between the maximum and minimum values of the array elements, divided by a power of 2 that increases with each partition of the array, and a matrix represented by the binary values 0 and 1.
[0134] Figure 20 is a block diagram illustrating the overview of the array splitting device of the present disclosure. The array splitting device 180 according to the present disclosure (for example, clients 110, 120) comprises a transmitting / receiving unit 181 and a splitting unit 81.
[0135] The transmitting / receiving unit 181, each time it receives an array whose elements are numerical values, performs calculations with a server (for example, servers 120, 220) by combining the numerical values of the received array with the elements of the stored array to create a new array. The contents of the splitting unit 81 are the same as those illustrated in Figure 19.
[0136] Such a configuration can also reduce the time it takes to send data to other computers for processing.
[0137] Figure 21 is a block diagram illustrating the overview of the sequence merging device of the present disclosure. The sequence merging device 190 (for example, servers 120, 220) according to the present disclosure comprises a transmitting / receiving unit 191 and a merging unit 91.
[0138] The transmitting / receiving unit 191 generates and transmits an array in which the most significant digit of each element of an input array, which has numerical elements, is divided, and transmits it to a client (for example, clients 110, 120). The contents of the coupling unit 91 are the same as the coupling unit 91 illustrated in Figure 19.
[0139] Such a configuration can also reduce the time it takes to send data to other computers for processing.
[0140] Figure 22 is a schematic block diagram showing the configuration of a computer according to at least one embodiment. Computer 1000 comprises a processor 1001, main memory 1002, auxiliary memory 1003, and interface 1004. Although only one computer 1000 is shown in Figure 20, the number of computers 1000 is not limited to one, and there may be two or more. In addition, an Ising machine, an annealing machine, a simulator, etc. may be connected to computer 1000.
[0141] The aforementioned information processing system 1 (more specifically, the client 80, server 90, etc.) is implemented in the computer 1000. The operation of each of the aforementioned processing units is stored in the auxiliary storage device 1003 in the form of a program (array partitioning program, array merging program). The processor 1001 reads the program from the auxiliary storage device 1003, expands it into the main memory 1002, and executes the above processing according to the program.
[0142] In at least one embodiment, the auxiliary storage device 1003 is an example of a non-temporary tangible medium. Other examples of non-temporary tangible media include magnetic disks, magneto-optical disks, CD-ROMs (Compact Disc Read-only memory), DVD-ROMs (Read-only memory), and semiconductor memory connected via the interface 1004. Furthermore, if this program is distributed to the computer 1000 via a communication line, the computer 1000 that receives the program may expand it into the main memory 1002 and execute the above processing.
[0143] Furthermore, the program may be intended to implement some of the functions described above. In addition, the program may be a so-called differential file (differential program) that implements the functions described above in combination with other programs already stored in the auxiliary storage device 1003.
[0144] Some or all of the above embodiments may also be described as follows, but are not limited to the following:
[0145] (Note 1) A client that issues execution instructions to other computers, The system comprises a server that receives the execution instructions from the client, The aforementioned client, The program includes a splitting unit that, for each element of an input array whose elements are numbers, generates an array by splitting the numerical component representing the most significant digit of the number and sends it to the server, and then repeats the process of subtracting the numerical values of the split array from the numerical values of the original array element by element, and for the remaining elements, generates an array by splitting the numerical component representing the most significant digit of the number and sends it to the server. The aforementioned server, Each time the aforementioned array is received from the aforementioned client, the unit includes a concatenation section that performs calculations using a new array generated by concatenating the numerical values of the received array element by element of the stored array. An information processing system characterized by the following:
[0146] (Note 2) The client's splitting unit splits the input array into numerical elements whose occurrence count exceeds a predetermined standard, generates an array consisting of the split elements, and sends it to the server. The server's connection part stores the received array. The information processing system described in Appendix 1.
[0147] (Note 3) The server connection part executes computational processing on an Ising machine in the cloud. The information processing system described in Appendix 1 or Appendix 2.
[0148] (Note 4) The client's splitting unit splits the numerical values of the array elements bit by bit from the most significant digit and sends the resulting array to the server. An information processing system described in any one of the items from Appendix 1 to Appendix 3.
[0149] (Note 5) The client's splitting unit sends an array to the server that is represented by the product of a matrix consisting of binary values of 0 and 1, where the difference between the maximum and minimum values of the array elements is divided by a power of 2 that increases with each array split. An information processing system described in any one of the items from Appendix 1 to Appendix 4.
[0150] (Note 6) The client's partitioning unit sends to the server an array represented by the product of a matrix indicating the signs of the array elements, a number obtained by dividing the absolute value of the maximum value of the element by a power of 2 that increases with each partition of the array, and a matrix represented by the binary values 0 and 1. An information processing system described in any one of the items from Appendix 1 to Appendix 4.
[0151] (Note 7) The client's partitioning unit sends to the server an array represented by the product of a matrix indicating the signs of the array elements, a number obtained by dividing the difference between the absolute values of the maximum and minimum values of the element by a power of 2 that increases with each partition of the array, and a matrix represented by the binary values 0 and 1. An information processing system described in any one of the items from Appendix 1 to Appendix 4.
[0152] (Note 8) The server's connection section terminates the calculation process when the calculation results from the Ising machine converge. The information processing system described in Appendix 3.
[0153] (Note 9) The server's connection section terminates the calculation process when the pre-set calculation time is reached. An information processing system described in any one of the items from Appendix 1 to Appendix 8.
[0154] (Note 10) A transmitting and receiving unit that, each time it receives an array whose elements are numbers, performs calculation processing using a new array generated by combining the numbers in the received array element by element of the stored array, and transmits and receives data with the server, The system includes a splitting unit that, for each element of an input array whose elements are numbers, generates an array by splitting the numerical component representing the most significant digit of the number and sends it to the server. It then repeatedly subtracts the numerical values of the split array from the numerical values of the original array element by element, and for the remaining elements, generates an array by splitting the numerical component representing the most significant digit of the number and sends it to the server. A device for dividing arrays, characterized by the following features.
[0155] (Note 11) A transmitting / receiving unit that generates and transmits an array in which the numerical component representing the most significant digit of the numerical value is divided for each element of an input array whose elements are numerical values, and transmits it to a client, Each time the aforementioned array is received from the aforementioned client, the unit includes a concatenation unit that performs calculations using a new array generated by concatenating the numerical values of the received array element by element of the stored array, The client repeatedly performs the following process: subtract the values of the divided array from the values of the original array, element by element, and then, for the remaining elements, generates an array in which the numerical component representing the most significant digit of that value is divided, and sends it. A device for combining arrays, characterized by the following features.
[0156] (Note 12) A client that issues execution instructions to another computer generates an array in which the most significant digit of each element of an input array, which has numerical elements, is divided, and sends it to the server. Each time the server receives the array from the client, it performs a calculation using a new array generated by combining the numerical values of the received array element by element of the stored array. The client repeatedly performs the following process: subtract the values of the divided array from the values of the original array before division, element by element, and for the remaining elements, it generates an array in which the numerical component representing the most significant digit of the value is divided, and sends this array to the server. An information processing method characterized by the following:
[0157] (Note 13) Each time an array containing numerical elements is received, a new array is generated by concatenating the numerical values of the received array element by element of the stored array, and this array is used for calculation processing. This new array is then sent and received from the server. For each element of an input array whose elements are numbers, an array is generated by splitting the numerical component representing the most significant digit of the number, and this array is sent to the server. The number of the split array is then subtracted from the number of the original array element by element, and for the remaining element, an array is generated by splitting the numerical component representing the most significant digit of that number, and this array is sent to the server again. This process is repeated. A method for partitioning an array characterized by the following features.
[0158] (Note 14) For each element of an input array whose elements are numbers, an array is generated by splitting the numerical component representing the most significant digit of the number, and this array is sent to and from the client. Each time the aforementioned array is received from the aforementioned client, a calculation process is performed using a new array generated by concatenating the numerical values of the received array element by element of the stored array. The client repeatedly performs the following process: subtract the values of the divided array from the values of the original array, element by element, and then, for the remaining elements, generates an array in which the numerical component representing the most significant digit of that value is divided, and sends it. A method for combining sequences, characterized by the features described above.
[0159] (Note 15) A transmission and reception process that, each time an array containing numerical elements is received, performs calculations using a new array generated by concatenating the numerical values of the received array element by element of the stored array, and transmits and receives data from the server, and For each element of an input array whose elements are numbers, a split array is generated by dividing the numerical component representing the most significant digit of the number, and this is sent to the server. Then, the numerical values of the split array are subtracted element by element from the numerical values of the original array, and for the remaining elements, a split array is generated by dividing the numerical component representing the most significant digit of the number, and this is sent to the server again. This splitting process is repeated. A program for splitting arrays.
[0160] (Note 16) A send / receive process that involves sending and receiving data with a client, which generates and sends an array containing the most significant digit of each element of an input array whose elements are numbers, by splitting the numerical component representing the most significant digit of that number, and then sending the resulting array. Each time the aforementioned array is received from the aforementioned client, a concatenation process is executed to perform calculations using a new array generated by concatenating the numerical values of the received array element by element of the stored array. The client repeatedly performs the following process: subtract the values of the divided array from the values of the original array, element by element, and then, for the remaining elements, generates an array in which the numerical component representing the most significant digit of that value is divided, and sends it. A sequence concatenation program characterized by the following features.
[0161] Although the present invention has been described above with reference to the embodiments and examples, the present invention is not limited to the above embodiments and examples. Various modifications to the structure and details of the present invention can be made, as can be understood by those skilled in the art within the scope of the present invention. [Industrial applicability]
[0162] This disclosure is suitably applicable to information processing systems that perform processing on other computers. For example, the information processing system of this disclosure is suitably applicable when solving combinatorial optimization problems on an Ising machine in the cloud. [Explanation of Symbols]
[0163] 100,100a Information Processing System 110,210 clients 111 Transmitter / Receiver 112 Termination Condition Setting Section 113,213 QUBO Input Section 114,214 QUBO matrix divider 120,220 servers 121 Transmitter / Receiver 122,222 QUBO joint 123 Calculation Result Processing Unit 200 Ising Machine
Claims
1. A client that issues execution instructions to other computers, The system comprises a server that receives the execution instructions from the client, The aforementioned client, The program includes a splitting unit that, for each element of an input array whose elements are numbers, generates an array by splitting the numerical component representing the most significant digit of the number and sends it to the server, and then repeats the process of subtracting the numerical values of the split array from the numerical values of the original array element by element, and for the remaining elements, generates an array by splitting the numerical component representing the most significant digit of the number and sends it to the server. The aforementioned server, Each time the aforementioned array is received from the aforementioned client, the unit includes a concatenation section that performs calculations using a new array generated by concatenating the numerical values of the received array element by element of the stored array. An information processing system characterized by the following:
2. The client's splitting unit splits the input array into numerical elements whose occurrence count exceeds a predetermined threshold, generates an array consisting of the split elements, and sends it to the server. The server's connection part stores the received array. The information processing system according to claim 1.
3. The server's connection part executes computational processing on an Ising machine in the cloud. The information processing system according to claim 1 or claim 2.
4. The client's splitting unit splits the numerical values of the array elements bit by bit, starting from the most significant digit, and sends the resulting array to the server. The information processing system according to claim 1 or claim 2.
5. The client's partitioning unit sends an array to the server that is represented by the product of a matrix consisting of binary values (0 and 1) and a number obtained by dividing the difference between the maximum and minimum values of the array elements by a power of 2 that increases with each partition of the array. The information processing system according to claim 1 or claim 2.
6. A transmission / reception unit that, each time it receives an array of numerical elements, performs calculation processing using a new array generated by concatenating the numerical values of the received array element by element of the stored array, and transmits and receives data from the server. The system includes a splitting unit that, for each element of an input array whose elements are numbers, generates an array by splitting the numerical component representing the most significant digit of the number and sends it to the server. It then repeatedly subtracts the numerical values of the split array from the numerical values of the original array element by element, and for the remaining elements, generates an array by splitting the numerical component representing the most significant digit of the number and sends it to the server. A device for dividing arrays, characterized by the following features.
7. A transmitting and receiving unit that, for each element of an input array whose elements are numbers, generates an array in which the numerical component representing the most significant digit of the number is divided and transmits it, and performs transmission and reception with a client, Each time the aforementioned array is received from the aforementioned client, the unit includes a concatenation unit that performs calculations using a new array generated by concatenating the numerical values of the received array element by element of the stored array, The client repeatedly performs the following process: subtract the values of the divided array from the values of the original array, element by element, and then, for the remaining elements, generates an array in which the numerical component representing the most significant digit of that value is divided, and sends it. A device for combining arrays, characterized by the following features.
8. A client that issues execution instructions to another computer generates an array by splitting each element of an input array, which has numerical elements, into numerical components representing the most significant digit of that number, and sends this array to the server. Each time the server receives the array from the client, it performs a calculation using a new array generated by combining the numerical values of the received array element by element of the stored array. The client repeatedly performs the following process: subtract the values of the divided array from the values of the original array before division, element by element, and for the remaining elements, it generates an array in which the numerical component representing the most significant digit of the value is divided, and sends this array to the server. An information processing method characterized by the following:
9. On the computer, A transmission and reception process that, each time an array containing numerical elements is received, performs calculations using a new array generated by concatenating the numerical values of the received array element by element of the stored array, and transmits and receives data from the server, and For each element of an input array whose elements are numbers, a split array is generated by dividing the numerical component representing the most significant digit of the number, and this is sent to the server. Then, the numerical values of the split array are subtracted element by element from the numerical values of the original array, and for the remaining elements, a split array is generated by dividing the numerical component representing the most significant digit of the number, and this is sent to the server again. This splitting process is repeated. A program for splitting arrays.
10. On the computer, A send / receive process that involves sending and receiving data with a client, which generates and sends an array containing the most significant digit of each element of an input array whose elements are numbers, by splitting the numerical component representing the most significant digit of that number, and then sending the resulting array. Each time the aforementioned array is received from the aforementioned client, a concatenation process is executed to perform calculations using a new array generated by concatenating the numerical values of the received array element by element of the stored array. The client repeatedly performs the following process: subtract the values of the divided array from the values of the original array, element by element, and then, for the remaining elements, generates an array in which the numerical component representing the most significant digit of that value is divided, and sends it. A sequence concatenation program characterized by the following features.