[0088] 自旋属性保持单元108保持本身自旋的自旋属性。自旋属性是根据要解决的问题的约束条件确定的值。自旋属性包括自旋类型以及该类型中的属性。例如,自旋属性包括指示以下各项的信息:该自旋是否为要被共同反转的自旋、多少个自旋被推测反转、在什么条件下选择推测反转期间的后续自旋等。然后,自旋属性保持单元108将与本身自旋的自旋属性有关的保持信息输出至确定单元106和反转自旋候选选择单元50。
[0089] 确定单元106从反转确定公式评估单元105接收指示能量变化量是否满足反转确定公式的确定结果的输入。此外,确定单元106从控制信号生成单元60接收读取条件的输入。这里,读取条件是以下信息,其用于确定作为已经执行了推测反转的自旋的配对并且是共同反转的目标的自旋,并且是根据自旋信息生成的,该自旋信息包括自旋状态、自旋属性和已被推测反转的自旋的自旋编号的每条信息。在不执行推测反转的情况下,读取条件是无条件的。
[0090] 因为在不执行推测反转的情况下读取条件是无条件的,所以如果能量变化量满足反转确定公式,则确定单元106生成指示本身自旋为反转候选的反转候选标志,将生成的标志输出至反转自旋候选选择单元50。如果能量变化量不满足反转确定公式,则确定单元106生成指示自旋不是反转候选的反转候选标志,并且将生成的标志输出至反转自旋候选选择单元50。例如,当假设反转候选标志为F时,确定单元106在该标志指示本身自旋是反转候选的情况下将F的值设置为1,并且在该标志指示本身自旋不是反转候选的情况下将F的值设置为0。
[0091] 在执行推测反转的情况下,确定单元106从自旋属性保持单元108获取关于本身自旋的自旋属性的信息。然后,确定单元106通过使用自旋属性的属性来确定本身自旋是否满足读取条件。是否满足读取条件的确定包括通过使用反转候选标志做出的、能量变化量是否满足反转确定公式的确定。在本身自旋满足读取条件的情况下,确定单元106生成指示本身自旋是反转候选的反转候选标志,并且将所生成的标志输出至反转自旋候选选择单元50。另一方面,在本身自旋不满足读取条件的情况下,确定单元106生成指示本身自旋不是反转候选的反转候选标志,并且将生成的标志输出至反转自旋候选选择单元50。此外,确定单元106将指示本身自旋是否为要被共同反转的自旋的信息以及关于指示多少自旋被共同反转的共同反转控制的信息输出至反转自旋候选选择单元50。
[0092] 返回图1,将继续进行描述。反转自旋候选选择单元50从退火单元10接收自旋属性、自旋状态、能量变化量和反转候选标志的输入连同每个退火单元10中的本身自旋的自旋编号。
[0093] 然后,反转自旋候选选择单元50根据从随机数生成单元40输入的随机数值,在从各个退火单元10获取的自旋编号中选择反转候选自旋。此后,反转自旋候选选择单元50将自旋属性、自旋状态和反转候选标志连同所选择的反转候选自旋的自旋编号一起输出至控制信号生成单元60。此外,反转自旋候选选择单元50将通过由反转候选自旋的反转引起的能量变化量输出至能量管理单元70。
[0094] 这里,在执行共同反转的情况下,反转自旋候选选择单元50从确定单元106接收指示本身自旋是否为要被共同反转的自旋的信息以及关于指示有多少个自旋要被共同反转的共同反转控制的信息的输入。然后,反转自旋候选选择单元50进行比赛,以通过使用所获取的信息来选择反转自旋候选。这里,由于设置了读取条件以选择特定自旋,并且将不被选择的自旋设置为在进入到反转自旋候选选择单元50之前不被标记,因此反转自旋候选选择单元50可以优选地选择要被共同反转的自旋。
[0095] 如图1所示,控制信号生成单元60包括反转自旋确认单元61、推测反转控制单元62、自旋信息保持单元63和读取条件生成单元64。控制信号生成单元60从反转自旋候选选择单元50接收反转候选自旋的自旋编号、自旋属性、自旋状态和反转候选标志的输入。
[0096] 推测反转控制单元62根据反转候选自旋的自旋属性来确定反转候选自旋是否为要被共同反转的自旋。在反转候选自旋不是要被共同反转的自旋的情况下,推测反转控制单元62将针对反转采用确定的请求输出至反转自旋确认单元61。
[0097] 另一方面,在反转候选自旋是要被共同反转的自旋的情况下,推测反转控制单元62确定反转候选自旋是否为共同反转中的采用反转目标自旋。在反转候选自旋不是采用反转目标自旋的情况下,推测反转控制单元62指示反转自旋确认单元61确认推测反转中的反转自旋。而在反转候选自旋是采用反转目标自旋的情况下,推测反转控制单元62将针对共同反转的反转采用确定的请求输出至反转自旋确认单元61。
[0098] 当从推测反转控制单元62接收到对反转采用确定的请求时,反转自旋确认单元61检查反转候选自旋的反转候选标志,并且确定是否采用反转候选自旋的反转。在反转候选标志的值指示要反转的自旋是反转候选的情况下,反转自旋确认单元61确定采用对反转候选自旋进行反转。然后,反转自旋确认单元61将反转候选自旋确认为反转自旋。此后,反转自旋确认单元61向能量管理单元70通知对反转自旋的确认。此外,反转自旋确认单元61将对反转自旋的确认连同反转自旋的自旋编号一起通知给每个退火单元10。此外,反转自旋确认单元61向自旋信息保持单元63和读取条件生成单元64通知对自旋信息和读取条件进行清除。
[0099] 另一方面,在反转候选标志的值指示要反转的自旋不是反转候选的情况下,反转自旋确认单元61确定不采用反转候选自旋。然后,反转自旋确认单元61将不采用反转候选自旋通知给自旋信息保持单元63和读取条件生成单元64。
[0100] 此外,当从推测反转控制单元62接收到用于确认推测反转中的反转自旋的指令时,反转自旋确认单元61将反转候选自旋确认为反转自旋。然后,反转自旋确认单元61将推测反转中的反转自旋的确认通知给能量管理单元70。此外,反转自旋确认单元61将对反转自旋的确认连同推测反转自旋的自旋编号一起通知给每个退火单元10。结果,与能量增加量的评估结果无关地对反转候选自旋进行反转,并且执行推测反转。此外,反转自旋确认单元61将包括推测反转自旋的自旋编号、自旋属性和自旋状态的自旋信息输出至自旋信息保持单元63。此外,反转自旋确认单元61指示读取条件生成单元64生成读取条件。
[0101] 此外,当从推测反转控制单元62接收到针对共同反转中的反转采用确定的请求时,反转自旋确认单元61检查反转候选自旋的反转候选标志,并且确定是否采用共同反转。在反转候选标志的值指示要反转的自旋是反转候选的情况下,反转自旋确认单元61确定采用对反转候选自旋进行反转。然后,反转自旋确认单元61将反转候选自旋确认为反转自旋。
此后,反转自旋确认单元61将反转自旋的确认通知给能量管理单元70。此外,反转自旋确认单元61将反转自旋的确认连同反转自旋的自旋编号一起通知给每个退火单元10。此外,反转自旋确认单元61向自旋信息保持单元63和读取条件生成单元64通知采用共同反转。
[0102] 另一方面,在反转候选标志的值指示要反转的自旋不是反转候选的情况下,反转自旋确认单元61确定不采用共同反转。然后,反转自旋确认单元61通知自旋信息保持单元63、读取条件生成单元64和能量管理单元70不采用共同反转。另外,反转自旋确认单元61将指示不采用共同反转的通知、自旋状态和局部场恢复指令通知给每个退火单元10。该反转自旋确认单元61是“采用确定单元”的示例。
[0103] 自旋信息保持单元63从反转自旋确认单元61接收包括被推测反转的自旋的自旋编号、自旋属性和自旋状态的自旋信息的输入。然后,自旋信息保持单元63存储并且保存所获取的被推测反转的自旋的自旋信息。自旋信息保持单元63在每次重复执行推测反转时顺序地并且附加地存储反转自旋的自旋信息。
[0104] 此外,自旋信息保持单元63接收指示采用或者不采用反转的通知。然后,在保持自旋信息的情况下,自旋信息保持单元63清除保持的自旋信息。此外,在接收到指示不采用共同反转的通知的情况下,自旋信息保持单元63清除保持的自旋信息。
[0105] 在执行推测反转的情况下,读取条件生成单元64从反转自旋确认单元61接收生成读取条件的指令。在这种情况下,读取条件生成单元64从自旋信息保持单元63获取执行推测反转的每个自旋的自旋信息。然后,读取条件生成单元64通过使用获取的自旋信息,生成包括信息的读取条件,其使得能够在排除已经选择的自旋的同时,从包括被推测反转的自旋的要被共同反转的自旋中选择自旋。此后,在保持所生成的读取条件的同时,读取条件生成单元64将所生成的读取条件输出至退火单元10的确定单元106。
[0106] 读取条件生成单元64接收指示采用或者不采用反转的通知。在这种情况下,在存在保持的读取条件的情况下,读取条件生成单元64清除保持的读取条件。此外,读取条件生成单元64在接收到指示不采用共同反转的通知的情况下清除保持的读取条件。
[0107] 能量管理单元70根据自旋状态计算能量。能量管理单元70包括用于推测反转的能量计算单元71和能量计算单元72。
[0108] 能量计算单元72预先具有每个自旋的初始值。例如,可以针对所有自旋状态将初始值设置为0,或者可以根据计算预先设置每个自旋的适当自旋状态。能量计算单元72通过在公式(1)中使用每个自旋的初始值来获得初始状态下的能量,并且保持所获得的能量。此外,能量计算单元72从反转自旋候选选择单元50接收反转候选自旋的自旋编号的输入。此外,能量计算单元72获取在从反转自旋候选选择单元50输入的反转自旋被反转的情况下的能量变化量。
[0109] 此后,在单个自旋的反转中确认了反转的情况下,能量计算单元72从反转自旋确认单元61接收指示反转自旋的确认的通知。能量计算单元72将来自能量计算单元72保持的各个自旋的自旋状态中的具有从反转自旋候选选择单元50通知的自旋编号的自旋的自旋状态进行反转。此外,能量计算单元72将从反转自旋候选选择单元50输入的能量变化量与由能量计算单元72保持的当前能量相加,并且计算在反转自旋的自旋状态被反转的情况下的能量。此后,能量计算单元72保持在反转自旋的自旋状态被反转的状态下的每个自旋的自旋状态。另外,能量计算单元72将反转自旋的自旋状态被反转的状态下的每个自旋的自旋状态和计算的能量输出至搜索结果保持单元80。另外,能量计算单元72指示用于推测反转的能量计算单元71清除关于推测反转的能量的信息。
[0110] 此外,在共同反转中确认对采用确定目标的反转的情况下,能量计算单元72从反转自旋确认单元61接收指示反转自转的确认的通知。接下来,能量计算单元72从用于推测反转的能量计算单元71获取加上到该点为止的推测反转的每个自旋的自旋状态。然后,能量计算单元72将所获取的各个自旋的自旋状态中的、具有从反转自旋候选选择单元50通知的自旋编号的自旋的自旋状态进行反转。此外,能量计算单元72将从反转自旋候选选择单元50输入的能量变化量与由能量计算单元72保持的当前能量相加,并且计算在反转自旋的自旋状态被反转的情况下的能量。此后,能量计算单元72保持在要被共同反转的每个自旋的自旋状态被反转的状态下每个自旋的自旋状态。此外,能量计算单元72将在要被共同反转的每个自旋的自旋状态被反转的状态下的每个自旋的自旋状态以及计算出的能量输出至搜索结果保持单元80。另外,能量计算单元72指示用于推测反转的能量计算单元71清除用于推测反转的信息。
[0111] 在共同反转中执行推测反转的情况下,用于推测反转的能量计算单元71从反转自旋确认单元61接收指示推测反转中的反转自旋的确认的通知。此外,用于推测反转的能量计算单元71获取从反转自旋候选选择单元50输入的推测反转自旋的自旋信息。另外,在共同反转中的第一推测反转的情况下,用于推测反转的能量计算单元71从能量计算单元72获取每个自旋的自旋状态。
[0112] 用于推测反转的能量计算单元71从反转自旋候选选择单元50获取在具有从反转自旋候选选择单元50通知的自旋编号的自旋的自旋状态被反转的状态下的能量变化量。在第一推测反转的情况下,用于推测反转的能量计算单元71将所获取的能量变化量设置为推测反转的能量变化量。另一方面,在已经计算出用于推测反转的能量变化量的情况下,用于推测反转的能量计算单元71将所获取的能量变化量与保持的用于推测反转的能量变化量相加,并且将相加结果设置为用于推测反转的能量变化量。此后,用于推测反转的能量计算单元71将计算出的用于推测反转的能量变化量输出至每个退火单元10。此外,用于推测反转的能量计算单元71将在具有从反转自旋确认单元61通知的自旋编号的自旋的自旋状态被反转的情况下的每个自旋的自旋状态存储在保持的每个自旋的自旋状态中。
[0113] 此后,在共同反转中确认采用确定目标的反转的情况下,用于推测反转的能量计算单元71将到那时为止的推测反转被加至的每个自旋的自旋状态有关的信息通知给能量计算单元72。此后,用于推测反转的能量计算单元71从能量计算单元72接收清除用于推测反转的信息的指令。然后,用于推测反转的能量计算单元71清除所存储的用于推测反转的能量变化量以及关于推测反转被加至的每个自旋的自旋状态的信息。
[0114] 在确认了反转自旋的情况下,搜索结果保持单元80从能量管理单元70接收每个自旋的自旋状态的输入以及关于所计算的能量的信息。在没有保持最小能量的情况下,搜索结果保持单元80将所获取的能量设置为最小能量。在这种情况下,搜索结果保持单元80保持在将所获取的能量设置为最小能量的情况下每个自旋的自旋信息。
[0115] 另一方面,在已经保持最小能量的情况下,搜索结果保持单元80将所获取的能量与保持的最小能量进行比较。在所获取的能量小于最小能量的情况下,搜索结果保持单元80将所获取的能量设置为最小能量。此外,搜索结果保持单元80将在所获取的能量是最小能量的情况下每个自旋的自旋状态保持作为最小能量下的自旋状态。在所获取的能量等于或大于最小能量的情况下,搜索结果保持单元80保持所保持的最小能量。此外,,搜索结果保持单元80保持在使用保持的最小能量的情况下每个自旋的自旋状态。搜索结果保持单元
80对应于“搜索单元”的示例。
[0116] 接下来,将参照图3A和图3B描述根据本实施方式的伊辛计算装置1的最优解搜索处理的流程。图3A和图3B是根据第一实施方式的伊辛计算装置的最优解搜索处理的流程图。
[0117] 伊辛计算装置1基于例如操作者通过使用外部终端(未示出)等输入的信息,在每个单元中设置初始值(步骤S101)。例如,每个退火单元10的自旋状态管理单元102设置本身自旋的自旋状态的初始值。此外,自旋编号保持单元107设置本身自旋的自旋编号。此外,局部场管理单元101设置用于本身自旋的局部场的初始值。此外,自旋属性保持单元108设置本身自旋的自旋属性。此外,每个自旋的初始值被输入至能量计算单元72。此外,由用于推测反转的能量计算单元71保持的每个自旋的自旋状态和用于推测反转的能量变化量、由自旋信息保持单元63保持的自旋状态以及由读取条件生成单元64保持的读取条件被清除。
[0118] 接下来,退火单元10的能量变化量计算单元103获取关于由局部场管理单元101保持的局部场的信息。此外,能量变化量计算单元103从自旋状态管理单元102接收被反转的本身自旋的自旋状态的输入。然后,能量变化量计算单元103使用公式(2)计算当本身自旋被反转时的能量变化量(步骤S102)。此后,能量变化量计算单元103将计算出的本身自旋被反转时的能量变化量输出至推测反转能量加法单元104。
[0119] 推测反转能量加法单元104从能量变化量计算单元103接收本身自旋被反转时的能量变化量的输入。接下来,在执行推测反转的情况下,推测反转能量加法单元104从能量计算单元72获取由已经执行的推测反转引起的用于推测反转的能量变化量。在不执行推测反转的情况下,从能量管理单元70获取的用于推测反转的能量变化量为0。然后,推测反转能量加法单元104将所获取的本身自旋被反转时的能量变化量与用于推测反转的能量变化量相加(步骤S103)。此后,推测反转能量加法单元104将作为相加结果的能量变化量输出至反转确定公式评估单元105。
[0120] 反转确定公式评估单元105从推测反转能量加法单元104接收能量变化量的输入。此外,反转确定公式评估单元105从阈值生成单元30接收要成为阈值的、公式(6)的右侧的值的输入。然后,反转确定公式评估单元105使用从阈值生成单元30获取的值作为公式(6)的右侧来确定所获取的能量变化量是否满足反转确定公式。此后,反转确定公式评估单元
105将指示能量变化量是否满足反转确定公式的确定结果输出至确定单元106。确定单元
106从反转确定公式评估单元105接收指示能量变化量是否满足反转确定公式的确定结果的输入。此外,确定单元106从控制信号生成单元60接收读取条件的输入。此外,确定单元
106从自旋属性保持单元108获取关于本身自旋的自旋属性的信息。然后,在本身自旋满足读取条件的情况下,确定单元106生成指示本身自旋是反转候选的反转候选标志。另一方面,在本身自旋不满足读取条件的情况下,确定单元106生成指示本身自旋不是反转候选的反转候选标志(步骤S104)。此后,确定单元106将所生成的反转候选标志输出至反转自旋候选选择单元50。
[0121] 反转自旋候选选择单元50从退火单元10接收自旋属性、自旋状态、能量变化量和反转候选标志的输入以及每个退火单元10中的本身自旋的自旋编号。然后,反转自旋候选选择单元50根据从随机数生成单元40输入的随机数值,从自各个退火单元10获取的自旋编号中选择反转候选自旋(步骤S105)。此后,反转自旋候选选择单元50将自旋属性、自旋状态和反转候选标志连同反转候选自旋的自旋编号一起输出至控制信号生成单元60。
[0122] 控制信号生成单元60从反转自旋候选选择单元50接收反转候选自旋的自旋编号、自旋属性、自旋状态和反转候选标志的输入。然后,推测反转控制单元62根据反转候选自旋的自旋属性,确定反转候选自旋是否为要被共同反转的自旋(步骤S106)。
[0123] 在反转候选自旋是要被共同反转的自旋(步骤S106:是)的情况下,推测反转控制单元62确定反转候选自旋是否为共同反转中的采用反转目标自旋(步骤S107)。
[0124] 在反转候选自旋不是采用反转目标自旋(步骤S107:否)的情况下,推测反转控制单元62指示反转自旋确认单元61确认推测反转中的反转自旋。在接收到确认推测反转中的反转自旋的指令时,反转自旋确认单元61将反转候选自旋确认为反转自旋(步骤S108)。此后,反转自旋确认单元61向能量管理单元70通知对推测反转中的反转自旋的确认。此外,反转自旋确认单元61将反转自旋的确认连同推测反转自旋的自旋编号一起通知给每个退火单元10。此外,反转自旋确认单元61将包括推测反转自旋的自旋编号、自旋属性和自旋状态的自旋信息输出至自旋信息保持单元63。此外,反转自旋确认单元61指示读取条件生成单元64生成读取条件。
[0125] 自旋信息保持单元63从反转自旋确认单元61接收推测反转自旋的自旋信息的输入。然后,自旋信息保持单元63保持推测反转自旋的自旋信息(步骤S109)。
[0126] 在接收到生成读取条件的指示时,读取条件生成单元64从自旋信息保持单元63获取已经执行推测反转的每个自旋的自旋信息。然后,读取条件生成单元64通过使用所获取的自旋信息生成读取条件(步骤S110)。
[0127] 能量管理单元70的用于推测反转的能量计算单元71接收指示推测反转中的反转自旋的确认的通知。此外,用于推测反转的能量计算单元71从反转自旋候选选择单元50获取反转自旋的自旋状态被反转的情况下的能量变化量。然后,能量管理单元70通过将通过将能量变化量与保持的用于推测反转的能量变化量相加而获得的量设置为用于推测反转的能量变化量,来更新保持的用于推测反转的能量变化量(步骤S111)。此外,用于推测反转的能量计算单元71将在具有从反转自旋确认单元61通知的自旋编号的自旋的自旋状态被反转的情况下每个自旋的自旋状态存储在保持的每个自旋的自旋状态中。
[0128] 退火单元10从反转自旋确认单元109接收推测反转自旋的自旋编号和反转自旋的确认的输入。在本身自旋是被确认为要反转的推测反转自旋的情况下,自旋状态管理单元102更新自旋状态(步骤S112)。
[0129] 局部场管理单元101通过在公式(4)中使用被确认为要反转的反转自旋的自旋编号来计算局部场的变化量。然后,局部场管理单元101通过将计算出的局部场的变化量用于局部场的保存信息来计算关于本身自旋的局部场。此后,局部场管理单元101使用关于计算出的局部场的信息作为关于当前局部场的信息来更新关于局部场的保存信息(步骤S113)。此后,最优解搜索处理进行至步骤S128。
[0130] 而在反转候选自旋是采用反转目标自旋(步骤S107:是)的情况下,推测反转控制单元62将针对共同反转的反转采用确定的请求输出至反转自旋确认单元61。在接收到针对共同反转的反转采用确定的请求时,反转自旋确认单元61检查反转候选自旋的反转候选标志,并且确定是否采用共同反转(步骤S114)。在采用共同反转(步骤S114:是)的情况下,最优解搜索处理进行至步骤S119。
[0131] 另一方面,在不采用共同反转(步骤S114:否)的情况下,将不采用共同反转通知给自旋信息保持单元63、读取条件生成单元64和能量管理单元70。此外,反转自旋确认单元61将指示不采用共同反转的通知以及自旋状态和局部场恢复指令通知给每个退火单元10。在接收到指示不采用共同反转的通知时,自旋信息保持单元63清除保持的自旋信息。此外,读取条件生成单元64在接收到指示不采用共同反转的通知时清除保持的读取条件(步骤S115)。
[0132] 此外,在接收到指示不采用共同反转的通知时,能量管理单元70的用于推测反转的能量计算单元71清除保持的用于推测反转的能量变化量(步骤S116)。
[0133] 此外,每个退火单元10从反转自旋确认单元61接收指示不采用共同反转的通知以及自旋状态和局部场恢复指令。然后,在本身自旋为要被共同反转的自旋的情况下,自旋状态管理单元102从用于恢复的自旋状态保持单元112获取自旋状态,并且通过将所获取的自旋状态设置为本身自旋的当前自旋状态来恢复自旋状态。此外,局部场管理单元101从用于恢复的局部场保持单元111获取关于局部场的信息,并且使用所获取的关于局部场的信息作为关于与本身自旋对应的当前局部场的信息来恢复局部场(步骤S117)。
[0134] 另一方面,在反转候选自旋不是要被共同反转的自旋(步骤S106:否)的情况下,推测反转控制单元62将针对反转采用确定的请求输出至反转自旋确认单元61。当从推测反转控制单元62接收到针对反转采用确定的请求时,检查反转候选自旋的反转候选标志,并且确定是否采用反转候选自旋的反转(步骤S118)。在不采用反转候选自旋的反转(步骤S118:否)的情况下,最优解搜索处理进行至步骤S128。
[0135] 在采用共同反转(步骤S114:是)的情况下并且在采用反转候选自旋的反转(步骤S118:是)的情况下,反转自旋确认单元61将反转候选自旋确认为反转自旋(步骤S119)。然后,反转自旋确认单元61将反转自旋的确认通知给能量管理单元70。此外,反转自旋确认单元61将反转自旋的确认连同反转自旋的自旋编号一起通知给每个退火单元10。另外,反转自旋确认单元61向自旋信息保持单元63和读取条件生成单元64通知采用反转。
[0136] 当接收到指示采用共同反转的通知时,自旋信息保持单元63清除保持的自旋信息。此外,读取条件生成单元64在接收到指示采用共同反转的通知时清除保持的读取条件(步骤S120)。
[0137] 在接收到指示反转自旋的确认的通知时,能量管理单元70的能量计算单元72从用于推测反转的能量计算单元71获取加上到该点为止的推测反转的每个自旋的自旋状态。然后,能量计算单元72将到该点为止的推测反转被加至的每个自旋的自旋状态中的、具有从反转自旋候选选择单元50获取的自旋编号的自旋的自旋状态反转。此外,能量计算单元72将从反转自旋候选选择单元50输入的能量变化量与由能量计算单元72保持的当前能量相加,并且计算在反转自旋的自旋状态被反转的情况下的能量。这里,由于在不执行推测反转的情况下不从用于推测反转的能量计算单元71接收自旋信息,因此能量计算单元72将能量计算单元72的每个自旋的自旋状态中的、具有从反转自旋候选选择单元50获取的自旋编号的自旋的自旋状态进行反转。此外,能量计算单元72将从反转自旋候选选择单元50输入的能量变化量与由能量计算单元72保持的当前能量相加,并且计算在反转自旋的自旋状态被反转的情况下的能量。此后,能量计算单元72更新每个自旋的自旋状态以及保持的关于能量的信息(步骤S121)。
[0138] 接下来,能量计算单元72指示用于推测反转的能量计算单元71清除用于推测反转的能量变化量。当从能量计算单元72接收到指令时,用于推测反转的能量计算单元71清除保持的用于推测反转的能量变化量(步骤S122)。
[0139] 此外,能量计算单元72将与计算出的能量和每个自旋的自旋状态有关的信息输出至搜索结果保持单元80。搜索结果保持单元80确定从能量计算单元72获取的能量是否小于保持的最小能量(步骤S123)。在从能量计算单元72获取的能量等于或大于保持的最小能量(步骤S123:否)的情况下,最优解搜索处理进行至步骤S125。
[0140] 另一方面,在从能量计算单元72获取的能量小于保持的最小能量(步骤S123:是)的情况下,搜索结果保持单元80通过将从能量计算单元72获取的能量设置为最小能量来更新保持的最小能量。此外,搜索结果保持单元80将从能量计算单元72获取的每个自旋的自旋状态保存为最小能量的情况下的自旋状态(步骤S124)。
[0141] 退火单元10从反转自旋确认单元61接收反转自旋的确认的输入连同反转自旋的自旋编号。在本身自旋是被确认为要反转的反转自旋的情况下,自旋状态管理单元102更新自旋状态(步骤S125)。
[0142] 局部场管理单元101通过在公式(4)中使用被确认为要反转的反转自旋的自旋编号来计算局部场的变化量。然后,局部场管理单元101通过将局部场的变化量用于保持的关于局部场的信息来计算关于本身自旋的局部场。此后,局部场管理单元101使用关于计算出的局部场的信息作为关于当前局部场的信息来更新保持的关于局部场的信息(步骤S126)。
[0143] 此后,用于恢复的自旋状态保持单元112保存由自旋状态管理单元102保持的自旋状态。此外,用于恢复的局部场保持单元111保存由局部场管理单元101保持的关于局部场的信息(步骤S127)。
[0144] 此后,搜索结果保持单元80确定预定次数的计算是否终止(步骤S128)。在预定次数的计算没有终止(步骤S128:否)的情况下,最优解搜索处理返回到步骤S102。另一方面,在预定次数的计算被终止(步骤S128:是)的情况下,搜索结果保持单元80将此时具有最小能量的自旋状态确定为最优解,并且终止最优解搜索处理。
[0145] 图4是伊辛计算装置的布置配置图。根据本实施方式的伊辛计算装置1对应于图4中的退火电路201。退火电路201是可以执行退火的功能单元。每个退火电路201包括多个单元电路202和控制电路203。例如,在单个退火电路201上安装1024个单元电路202。单元电路202是用于单个自旋确定和状态管理的逻辑和实现单元并且对应于退火单元10。此外,控制电路203是在退火电路201中执行控制的电路,并且对应于控制信号生成单元60、能量管理单元70、搜索结果保持单元80等。例如,当负责各个单元电路202的本身自旋中的任何一个被选择作为反转候选自旋时,控制电路203采用反转候选自旋,并且确认反转自旋,向单元电路202发出通知。
[0146] 此外,图5是单元电路的电路图像的图。图5中所示的选择电路204对应于反转自旋候选选择单元50的示例,并且使用从每个单元电路202输入的信息进行比赛以选择自旋。控制电路203使自旋状态反转或恢复,并且基于关于由选择电路204选择的自旋的信息来创建要作为自旋选择条件的读取条件。
[0147] 示出为单元电路202中的确定自旋反转的一侧的电路执行用于由局部场管理单元101计算局部场的处理,以及由能量变化量计算单元103、推测反转能量加法单元104、反转确定公式评估单元105和确定单元106进行的处理。在单元电路202的确定自旋反转的一侧,由控制电路203输入到该点为止的推测反转的能量变化量,并且加上由下一个反转引起的能量变化量,并且计算总值。此外,确定条件匹配的电路21基于读取条件的输入来确定条件是否匹配。
[0148] 此外,单元电路202中的更新自旋状态和局部场的一侧的电路是使用从控制电路203输入的关于反转自旋的信息来输出用于生成要发送至自旋反转确定电路的数据的信息的电路。在这种情况下,安装用于数据保持的随机存取存储器(RAM)210。在确认反转自旋时,将保存信号输入至选择电路22。在这种情况下,选择电路22选择取值为1的路径的值,例如,局部场的输出值。此外,选择电路23选择取值为0的路径的值,例如,当前局部场的值。在恢复时,将恢复信号输入至选择电路23。选择电路23选择取值为1的路径的值,例如,用于恢复的局部场的值。此外,选择电路22选择取值为0的路径的值,例如,用于恢复的局部场的值。RAM 210对应于用于恢复的局部场保持单元111和用于恢复的自旋状态保持单元112的示例。
[0149] 此外,将参照图6描述在执行最优解搜索处理时的根据本实施方式的伊辛计算装置1的操作。图6是根据第一实施方式的伊辛计算装置执行最优解搜索处理时的操作图像的图。这里,将描述四个自旋共同反转的情况。这里,图6中的(1)至(4)表示以第N(N=1、2、3、4)顺序读取的推测反转自旋的自旋编号。
[0150] 在执行共同反转的情况下,如状态211所示,选择共同反转中的第一自旋,并且控制电路203将关于第一自旋的反转自旋的确认发送至单元电路202。接下来,如状态212所示,选择第二自旋,并且控制电路203将关于第二自旋的反转自旋的确认发送至单元电路202。接下来,如状态213所示,选择第三自旋,并且控制电路203将关于第三自旋的反转自旋的确认发送至单元电路202。此后,控制电路203在选择第四自旋时采用共同反转。在采用共同反转的情况下,如状态214所示,控制电路203将关于第四自旋的反转自旋的确认发送至单元电路202,并且更新自旋状态和局部场。另一方面,在不采用共同反转的情况下,如状态
215所示,控制电路203向单元电路202发送不采用共同反转。然后,每个单元电路202将自旋状态和局部场恢复到执行推测反转之前的状态。在这种情况下,不管是采用还是不采用共同反转,要执行的循环数量都是相同的。例如,如表216所示,在要共同反转的自旋的数量为N的情况下,采用时和不采用时的循环数量均为N。
[0151] 图7是使用伊辛计算装置时的处理的流程图。这里,将使用伊辛计算装置1的使用者称为用户。
[0152] 存在用户期望解决的要解决的问题51。用户使用计算机等将要解决的问题转换为伊辛模型(步骤S151)。利用该转换,获取由公式(1)表达的伊辛模型能量公式53。
[0153] 此外,在将问题转换为伊辛模型之后,用户提取约束条件以解决问题(步骤S152)。结果,获取了自旋属性和初始自旋状态54。
[0154] 接下来,由计算机等使用伊辛模型能量公式53以及自旋属性和初始自旋状态54来计算局部场和能量的初始值(步骤S153)。
[0155] 此外,用户确定操作条件52,例如在执行计算时的计算次数。然后,将伊辛模型能量公式53、自旋属性和初始自旋状态54、局部场和能量的初始值以及操作条件52作为参数输入至伊辛计算装置1(步骤S154)。
[0156] 此后,伊辛计算装置1执行计算(步骤S155)。该处理是由上述伊辛计算装置1进行的最优解搜索处理。结果,获得计算结果55。
[0157] 用户获取计算结果55(步骤S156)。然后,用户解释获取的计算结果55(步骤S157)。利用该解释,用户相对于要解决的问题51获得要解决的问题的解56。
[0158] 如上所述,根据本实施方式的伊辛计算装置推测地反转满足条件的多个自旋,并且共同确定是否采用一系列自旋反转。然后,在不采用反转的情况下,可以使用为恢复保存的信息将值返回到原始值。结果,可以在更短的时间内达到最小的能量,并且可以改善针对伊辛计算装置的组合优化问题的处理性能。此外,在根据本实施方式的伊辛计算装置的情况下,因为布置有保持用于恢复的局部场和自旋状态的存储装置,因此用于存储装置的物理量增加。然而,不需要用于恢复的额外循环,并且可以提高处理效率。
[0159] [第二实施方式]
[0160] 图8是示出根据第二实施方式的退火单元的细节的框图。根据本实施方式的伊辛计算装置1与第一实施方式中的伊辛计算装置1的不同之处在于,在不采用共同反转的情况下,通过再反转推测反转自旋来执行恢复。在下文中,将主要描述通过推测反转自旋的再反转进行的恢复处理。在以下描述中,存在省略与第一实施方式的各个单元类似的单元的处理的描述的情况。
[0161] 这里,在执行共同反转的情况下,反转自旋候选选择单元50从确定单元106接收以下信息的输入:指示自旋是否是要被共同反转的自旋的信息;以及指示多少个自旋被共同反转的关于共同反转控制的信息。然后,反转自旋候选选择单元50使用所获取的关于集体反向控制的信息进行比赛以选择反转自旋候选者。这里,由于设置了读取条件以选择特定自旋,并且将不被选择的自旋设置为在进入反转自旋候选选择单元50之前不被标记,因此反转自旋候选选择单元50可以优选地选择要被共同反转的自旋。
[0162] 当从反转自旋候选选择单元50输入反转候选自旋的自旋编号时,推测反转控制单元62检查保持的恢复处理标志并且确定是否执行恢复处理。在执行恢复处理的情况下,推测反转控制单元62指示反转自旋确认单元61确认恢复处理中的反转自旋。
[0163] 另一方面,在不执行恢复处理的情况下,推测反转控制单元62如在第一实施方式中那样根据反转候选自旋的自旋属性来确定反转候选自旋是否为要被共同反转的自旋,并且根据确定结果来执行共同反转处理或用于反转单个自旋的处理。
[0164] 此外,在不采用共同反转的情况下,推测反转控制单元62从反转自旋确认单元61接收指示不采用共同反转的通知。然后,推测反转控制单元62生成表示执行恢复处理的恢复处理标志。
[0165] 此外,当所有推测反转自旋的恢复完成时,推测反转控制单元62从反转自旋确认单元61接收清除恢复处理标志的指令。然后,推测反转控制单元62根据来自反转自旋确认单元61的指令将保持的恢复处理标志清除。
[0166] 在是否采用共同反转的确定中不采用共同反转的情况下,反转自旋确认单元61向自旋信息保持单元63、读取条件生成单元64和能量管理单元70通知不采用共同反转。此外,在本实施方式中,自旋信息保持单元63根据由自旋信息保持单元63保持的自旋信息来生成要成为恢复中的反转自旋的自旋的条件。然后,自旋信息保持单元63向推测反转控制单元62通知不采用共同反转并且将要成为恢复中的反转自旋的自旋的条件输出至退火单元10。
[0167] 此外,在执行恢复处理的情况下,反转自旋确认单元61从推测反转控制单元62接收用于确认恢复处理中的反转自旋的指令。然后,反转自旋确认单元61将从反转自旋候选选择单元50输出的反转候选自旋确认为反转自旋。此后,反转自旋确认单元61向能量管理单元70通知恢复处理中的反转自旋的确认。
[0168] 接下来,反转自旋确认单元61使自旋信息保持单元63删除被确认为反转自旋的推测反转自旋的自旋信息。然后,反转自旋确认单元61根据是否仍保留有由自旋信息保持单元63保持的自旋信息来确定所有恢复目标的恢复是否完成。在所有恢复目标的恢复完成的情况下,反转自旋确认单元61指示推测反转控制单元62清除恢复处理标志。
[0169] 在能量管理单元70接收到指示恢复处理中的反转自旋的确认的通知的情况下,能量计算单元72维持保持的关于能量的信息。在其他情况下,能量管理单元70如第一实施方式中那样操作。
[0170] 在恢复处理的情况下,退火单元10接收指示反转自旋的确认的通知以及要恢复的推测反转自旋的自旋编号,并且如普通的最优解搜索处理中那样更新自旋状态和局部场。例如,退火单元10从反转自旋确认单元61接收反转自旋的确认的输入以及反转自旋的自旋编号。然后,在本身自旋是被确认为要反转的反转自旋的情况下,自旋状态管理单元102更新自旋状态。此外,局部场管理单元101通过在公式(4)中使用被确认为要反转的反转自旋的自旋编号来计算局部场的变化量。然后,局部场管理单元101通过将计算出的局部场的变化量用于保持的关于局部场的信息来计算关于本身自旋的局部场。此后,局部场管理单元
101使用关于计算的局部场的信息作为关于当前局部场的信息来更新保持的关于局部场的信息。利用该更新,反转并恢复推测反转自旋的单个自旋。
[0171] 此外,退火单元10从控制信号生成单元60接收要成为恢复中的反转自旋的自旋的条件的输入。然后,退火单元10的确定单元106使用要成为恢复中的反转自旋的自旋的条件来进行确定,如在共同反转的情况下那样。然后,确定单元106将用于恢复控制的信息(例如,指示本身自旋为要恢复的自旋的信息)与确定结果一起输出至反转自旋候选选择单元50。
[0172] 反转自旋候选选择单元50使用于恢复控制的信息参与比赛以选择反向候选自旋并且选择自旋。这里,由于设置了读取条件以选择特定自旋,并且将不被选择的自旋被设置为在进入反转自旋候选选择单元50之前不被标记,因此反转自旋候选选择单元50可以优选地选择要被共同反转的自旋。
[0173] 接下来,将参照图9描述由根据本实施方式的伊辛计算装置1进行的最优解搜索处理的流程。图9是根据第二实施方式的由伊辛计算装置进行的最优解搜索处理的流程图。
[0174] 伊辛计算装置1基于例如由操作者通过使用外部终端(未示出)等输入的信息,在每个单元中设置初始值(步骤S201)。
[0175] 接下来,退火单元10的能量变化量计算单元103获取关于由局部场管理单元101保持的局部场的信息。此外,能量变化量计算单元103从自旋状态管理单元102接收反转的本身自旋的自旋状态的输入。然后,能量变化量计算单元103使用公式(2)计算当本身自旋被反转时的能量变化量(步骤S202)。此后,能量变化量计算单元103将计算出的本身自旋被反转时的能量变化量输出至推测反转能量加法单元104。
[0176] 推测反转能量加法单元104从能量变化量计算单元103接收本身自旋被反转时的能量变化量的输入。接下来,在执行推测反转的情况下,推测反转能量加法单元104从能量计算单元72获取由已经执行的推测反转引起的用于推测反转的能量变化量。在不执行推测反转的情况下,从能量管理单元70获取的用于推测反转的能量变化量为0。然后,推测反转能量加法单元104将所获取的本身自旋被反转时的能量变化量与用于推测反转的能量变化量相加(步骤S203)。此后,推测反转能量加法单元104将作为相加结果的能量变化量输出至反转确定公式评估单元105。
[0177] 反转确定公式评估单元105从推测反转能量加法单元104接收能量变化量的输入。此外,反转确定公式评估单元105从阈值生成单元30接收要成为阈值的公式(6)的右侧值的输入。然后,反转确定公式评估单元105使用从阈值生成单元30获取的值作为公式(6)的右侧来确定所获取的能量变化量是否满足反转确定公式。然后,反转确定公式评估单元105将指示能量变化量是否满足反转确定公式的确定结果输出至确定单元106。确定单元106从反转确定公式评估单元105接收指示能量变化量是否满足反转确定公式的确定结果的输入。
此外,确定单元106从控制信号生成单元60接收读取条件的输入。此外,确定单元106从自旋属性保持单元108获取关于本身自旋的自旋属性的信息。然后,在本身自旋满足读取条件的情况下,确定单元106生成指示本身自旋是反转候选的反转候选标志。另一方面,在本身自旋不满足读取条件的情况下,确定单元106生成指示本身自旋不是反转候选的反转候选标志(步骤S204)。此后,确定单元106将所生成的反转候选标志输出至反转自旋候选选择单元
50。
[0178] 反转自旋候选选择单元50从退火单元10接收自旋属性、自旋状态、能量变化量和反转候选标志的输入连同每个退火单元10中的本身自旋的自旋编号。然后,反转自旋候选选择单元50根据从随机数生成单元40输入的随机值,在从各个退火单元10获取的自旋编号中选择反转候选自旋(步骤S205)。此后,反转自旋候选选择单元50将自旋属性、自旋状态和反转候选标志连同反转候选自旋的自旋编号一起输出至控制信号生成单元60。
[0179] 控制信号生成单元60从反转自旋候选选择单元50接收反转候选自旋的自旋编号、自旋属性、自旋状态和反转候选标志的输入。接下来,推测反转控制单元62检查保持的恢复处理标志,并且确定是否执行恢复处理(步骤S206)。在不执行恢复处理(步骤S206:否)的情况下,推测反转控制单元62根据反转候选自旋的自旋属性,来确定反转候选自旋是否是要被共同反转的自旋(步骤S207)。
[0180] 在反转候选自旋是要被共同反转的自旋(步骤S207:是)的情况下,推测反转控制单元62确定反转候选自旋是否为共同反转中的采用反转目标自旋(步骤S208)。
[0181] 在反转候选自旋不是采用反转目标自旋(步骤S208:否)的情况下,推测反转控制单元62指示反转自旋确认单元61确认推测反转中的反转自旋。在接收到用于确认推测反转中的反转自旋的指令时,反转自旋确认单元61将反转候选自旋确认为反转自旋(步骤S209)。此后,反转自旋确认单元61向能量管理单元70通知对反转自旋的确认。此外,反转自旋确认单元61将反转自旋的确认连同推测反转自旋的自旋编号一起通知给每个退火单元10。此外,反转自旋确认单元61将包括推测反转自旋的自旋编号、自旋属性和自旋状态的自旋信息输出至自旋信息保持单元63。此外,反转自旋确认单元61指示读取条件生成单元64生成读取条件。
[0182] 自旋信息保持单元63从反转自旋确认单元61接收推测反转自旋的自旋信息的输入。然后,自旋信息保持单元63保存推测反转自旋的自旋信息(步骤S210)。
[0183] 在接收到生成读取条件的指令时,读取条件生成单元64从自旋信息保持单元63获取已经执行推测反转的每个自旋的自旋信息。然后,读取条件生成单元64通过使用所获取的自旋信息来生成读取条件(步骤S211)。
[0184] 在接收到指示对推测反转中的反转自旋的确认的通知时,能量管理单元70的用于推测反转的能量计算单元71从反转自旋候选选择单元50获取反转自旋的自旋状态被反转的情况下的能量变化量。然后,能量管理单元70通过将通过将能量变化量与保持的用于推测反转的能量变化量相加而获得的量设置为用于推测反转的能量变化量,来更新保持的用于推测反转的能量变化量(步骤S212)。此外,用于推测反转的能量计算单元71将在具有从反转自旋确认单元61通知的自旋编号的自旋的自旋状态被反转的情况下的每个自旋的自旋状态存储在保持的每个自旋的自旋状态中。此后,最优解搜索处理进行至步骤S221。
[0185] 而在反转候选自旋是采用反转目标自旋(步骤S208:是)的情况下,推测反转控制单元62将针对共同反转的反转采用确定的请求输出至反转自旋确认单元61。在接收到针对共同反转的反转采用确定的请求时,反转自旋确认单元61检查反转候选自旋的反转候选标志,并且确定是否采用共同反转(步骤S213)。在采用共同反转(步骤S213:是)的情况下,最优解搜索处理进行至步骤S218。
[0186] 另一方面,在不采用共同反转(步骤S213:否)的情况下,反转自旋确认单元61检查自旋信息保持单元63所保持的自旋信息,并且指定推测反转自旋(步骤S214)。
[0187] 接下来,反转自旋确认单元61通知自旋信息保持单元63、读取条件生成单元64和能量计算单元72不采用共同反转。此外,自旋信息保持单元63向推测反转控制单元62通知用于选择指定的推测反转自旋的条件连同指示不采用共同反转的通知。在接收到指示不采用共同反转的通知时,推测反转控制单元62生成表示执行恢复处理的恢复处理标志(步骤S215)。
[0188] 当接收到指示不采用共同反转的通知时,自旋信息保持单元63清除保持的自旋信息。此外,读取条件生成单元64在接收到指示不采用共同反转的通知时清除保持的读取条件(步骤S216)。此后,最优解搜索处理进行至步骤S221。
[0189] 另一方面,在反转候选自旋是将不被共同反转的自旋(步骤S207:否)的情况下,推测反转控制单元62将针对反转采用确定的请求输出至反转自旋确认单元61。当从推测反转控制单元62接收到针对反转采用确定的请求时,反转自旋确认单元61检查反转候选自旋的反转候选标志,并且确定是否采用反转候选自旋的反转(步骤S217)。在不采用反转候选自旋的反转(步骤S217:否)的情况下,最优解搜索处理进行至步骤S229。
[0190] 在采用共同反转(步骤S213:是)的情况下并且在采用反转候选自旋的反转(步骤S217:是)的情况下,反转自旋确认单元61将反转候选自旋确认为反转自旋(步骤S218)。然后,反转自旋确认单元61向能量管理单元70通知反转自旋的确认。此外,反转自旋确认单元61将对反转自旋的确认连同反转自旋的自旋编号一起通知给每个退火单元10。此外,反转自旋确认单元61向自旋信息保持单元63和读取条件生成单元64通知采用反转。
[0191] 当接收到指示采用共同反转的通知时,自旋信息保持单元63清除保持的自旋信息。此外,读取条件生成单元64在接收到指示采用共同反转的通知时清除保持的读取条件(步骤S219)。
[0192] 在接收到指示反转自旋的确认的通知时,能量管理单元70的能量计算单元72从用于推测反转的能量计算单元71获取加上到该点为止的推测反转的每个自旋的自旋状态。然后,能量计算单元72将在加上到该点为止的推测反转的每个自旋的自旋状态中的具有从反转自旋候选选择单元50获取的自旋编号的自旋的自旋状态反转。此外,能量计算单元72将从反转自旋候选选择单元50输入的能量变化量与由能量计算单元72保持的当前能量相加,并且计算在反转自旋的自旋状态被反转的情况下的能量。这里,由于在不执行推测反转的情况下不从用于推测反转的能量计算单元71接收自旋信息,因此能量计算单元72将在能量计算单元72的每个自旋的自旋状态中的具有从反转自旋候选选择单元50获取的自旋编号的自旋的自旋状态反转。此外,能量计算单元72将从反转自旋候选选择单元50输入的能量变化量与由能量计算单元72保持的当前能量相加,并且计算在反转自旋的自旋状态被反转的情况下的能量。此后,能量计算单元72更新每个自旋的自旋状态以及保持的关于能量的信息(步骤S220)。能量计算单元72将与计算的能量和每个自旋的自旋状态有关的信息输出至搜索结果保持单元80。
[0193] 此外,能量计算单元72指示用于推测反转的能量计算单元71清除用于推测反转的能量变化量。当从能量计算单元72接收到指令时,用于推测反转的能量计算单元71清除保持的用于推测反转的能量变化量(步骤S221)。
[0194] 搜索结果保持单元80确定从能量计算单元72获取的能量是否小于保持的最小能量(步骤S222)。在从能量计算单元72获取的能量等于或大于保持的最小能量(步骤S222:否)的情况下,最优解搜索处理进行至步骤S227。
[0195] 另一方面,在从能量计算单元72获取的能量小于保持的最小能量(步骤S222:是)的情况下,搜索结果保持单元80通过将从能量计算单元72获取的能量设置为最小能量来更新保持的最小能量。此外,搜索结果保持单元80将从能量计算单元72获取的每个自旋的自旋状态保存为最小能量的情况下的自旋状态(步骤S223)。
[0196] 另一方面,在执行恢复处理(步骤S206:是)的情况下,推测反转控制单元62指示反转自旋确认单元61确认恢复处理中的反转自旋。在接收到确认恢复处理中的反转自旋的指令时,反转自旋确认单元61从由自旋信息保持单元63保持的自旋信息中选择要作为反转自旋的自旋,并且确认反转自旋(步骤S224)。然后,反转自旋确认单元61向能量管理单元70通知针对恢复处理中的反转自旋的确认。在接收到指示恢复处理中的反转自旋的确认的通知的情况下,能量管理单元70的能量计算单元72维持保持的关于能量的信息。
[0197] 接下来,反转自旋确认单元61使自旋信息保持单元63删除被确认为反转自旋的推测反转自旋的自旋信息。然后,反转自旋确认单元61根据由自旋信息保持单元63保持的自旋信息是否仍存在来确定是否完成了所有恢复目标的恢复(步骤S225)。在恢复目标仍存在(步骤S225:否)的情况下,最优解搜索处理进行至步骤S227。
[0198] 另一方面,在所有恢复目标的恢复完成(步骤S225:是)的情况下,反转自旋确认单元61指示推测反转控制单元62清除恢复处理标志。在接收到来自反转自旋确认单元61的指令时,推测反转控制单元62清除保持的恢复处理标志(步骤S226)。此后,最优解搜索处理进行至步骤S227。
[0199] 退火单元10从反转自旋确认单元61接收反转自旋的确认的输入连同反转自旋的自旋编号。在本身自旋是被确认为要反转的反转自旋的情况下,自旋状态管理单元102更新自旋状态(步骤S227)。
[0200] 局部场管理单元101通过在公式(4)中使用被确认为要反转的反转自旋的自旋编号来计算局部场的变化量。然后,局部场管理单元101通过将计算出的局部场的变化量用于保持的关于局部场的信息来计算关于本身自旋的局部场。此后,局部场管理单元101使用关于计算出的局部场的信息作为关于当前局部场的信息来更新关于局部场的保存信息(步骤S228)。
[0201] 此后,搜索结果保持单元80确定预定次数的计算是否终止(步骤S229)。在预定次数的计算未终止(步骤S229:否)的情况下,最优解搜索处理返回到步骤S202。另一方面,在预定次数的计算被终止(步骤S229:是)的情况下,搜索结果保持单元80将此时具有最小能量的自旋状态确定为最优解,并且终止最优解搜索处理。
[0202] 此外,将参照图10描述在执行最优解搜索处理时的根据本实施方式的伊辛计算装置1的操作。图10是当根据第二实施方式的伊辛计算装置执行最优解搜索处理时的操作图像的图。这里,将描述四个自旋共同反转的情况。图10中的(1)至(4)表示以第N(N=1、2、3、4)顺序读取的推测反转自旋的自旋编号。
[0203] 在执行共同反转的情况下,如状态221所示,选择共同反转中的第一自旋,并且控制电路203将关于第一自旋的反转自旋的确认发送至单元电路202。接下来,如状态222所示,选择第二自旋,并且控制电路203将关于第二自旋的反转自旋的确认发送至单元电路202。接下来,如状态223所示,选择第三自旋,并且控制电路203将关于第三自旋的反转自旋的确认发送至单元电路202。此后,控制电路203在选择第四自旋时采用共同反转。在采用共同反转的情况下,如状态224所示,控制电路203将关于第四自旋的反转自旋的确认发送至单元电路202,并且更新自旋状态和局部场。
[0204] 另一方面,在不采用共同反转的情况下,如状态225所示,控制电路203将对作为反转自旋的第三自旋的确认发送至单元电路202,并且反转并且恢复第三自旋。接下来,如状态226所示,控制电路203将作为反转自旋的第二自旋的确认发送至单元电路202,并且将第二自旋反转并恢复。接下来,如状态227所示,控制电路203将作为反转自旋的第一自旋的确认发送至单元电路202,并且将第一自旋反转并恢复。利用该操作,每个单元电路202将自旋状态和局部场恢复到执行推测反转之前的状态。
[0205] 在这种情况下,在不采用共同反转的情况下比采用共同反转的情况多执行两个循环。例如,如表228所示,在要共同反转的自旋的数量为N的情况下,采用时的循环数量为N,而在不采用时的循环数量为2(N‑1)。
[0206] 如上所述,根据本实施方式的伊辛计算装置推测地反转满足条件的多个自旋,并且共同确定是否采用一系列自旋反转。然后,在不采用反转的情况下,可以通过顺序地再次将推测反转自旋反转来将值返回到原始值。结果,可以改善用于伊辛计算装置的组合优化问题的处理性能。此外,在根据本实施方式的伊辛计算装置的情况下,用于恢复的循环数量增加。然而,不需要新提供存储用于恢复的信息的存储装置,并且可以减少物理量。
[0207] [第三实施方式]
[0208] 接下来,将描述第三实施方式。在将表示每个自旋的位分配给每个自旋的情况下,根据本实施方式的伊辛计算装置1解决了具有在预定数量的位的自旋中n个位中的每一位均为1的约束条件的问题。在下文中,将该约束条件称为“n‑hot约束”。具有n‑hot约束的问题包括四色定理等。在下文中,存在自旋被称为“位”的情况,该“位”指示分配给自旋的位。
[0209] 这里,在搜索针对具有n‑hot约束的问题的最优解的情况下,可以通过满足以下条件来符合n‑hot约束。第一条件是如下条件,即,在根据n‑hot约束具有为1的自旋状态的自旋被反转的情况下,在符合n‑hot约束的一组自旋中具有为0的自旋状态的自旋被共同反转。此外,第二条件是如下条件,即,在根据n‑hot约束具有为0的自旋状态的自旋被反转的情况下,在符合n‑hot约束的一组自旋中具有为1的自旋状态的自旋被共同反转。因此,在具有n‑hot约束的问题的情况下,认为将两个自旋共同反转的搜索是有效的。因此,下面将描述两个自旋被共同反转的情况。在下文中,将符合相同n‑hot约束的一组自旋称为n‑hot约束组。
[0210] 此外,在本实施方式中,作为恢复方法,采用了第二实施方式中所描述的顺序地恢复推测反转自旋的方法。然而,由于将两个自旋共同反转,因此,当不采用共同反转时,通过使一个推测反转自旋返回来完成恢复。因此,恢复处理不会发生。
[0211] 图11是示出根据第三实施方式的退火单元的细节的框图。根据本实施方式的自旋属性保持单元108包括n‑hot目标信息181、组编号182、组内标识符183作为自旋属性。
[0212] n‑hot目标信息181是用于确定位是否是符合n‑hot约束的位的标志。例如,n‑hot目标信息181被表示为Ti,Ti=1的情况表示该位符合n‑hot约束,并且Ti=0的情况表示该位不符合n‑hot约束。此外,组编号182表示在位符合n‑hot约束的情况下该位所属的n‑hot约束组的组编号。在下文中,存在将组编号表示为Gi的情况。此外,组内标识符183是用于区分n‑hot约束组中的自旋的标识符。在下文中,存在将组内标识符183被表示为Ni的情况。
[0213] 在从反转自旋候选选择单元50输入的反转候选自旋满足Ti=1的情况下,推测反转控制单元62确定反转候选自旋是符合n‑hot约束的共同反转目标。然后,推测反转控制单元62指示反转自旋确认单元61确认推测反转中的反转自旋。
[0214] 在从推测反转控制单元62接收到用于确认推测反转中的反转自旋的指令时,反转自旋确认单元61与反转候选标志的值无关地确认反转候选自旋的反转并且执行推测反转。
[0215] 此外,在选择候选自旋是采用确定目标的情况下,反转自旋确认单元61从推测反转控制单元62接收用于确定是否采用共同反转的指令。然后,反转确认单元61检查反转候选标志并且确定是否采用共同反转。在采用共同反转的情况下,反转自旋确认单元61将选择候选自旋确认为反转自旋。然后,反转自旋确认单元61将反转自旋的确认输出至能量管理单元70和每个退火单元10。
[0216] 另一方面,在不采用共同反转的情况下,反转自旋确认单元61根据由自旋信息保持单元63保持的自旋信息来指定推测反转自旋,生成用于选择推测反转自旋的条件,并且将生成的条件输出至退火单元10。此外,反转自旋确认单元61将自旋信息和读取条件的清除输出至旋转信息保持单元63和读取条件生成单元64。此后,在从推测反转控制单元62接收到用于确认恢复中的反转自旋的指令时,反转自旋确认单元61将反转自旋的确认输出至能量管理单元70和退火单元10。根据上述在反转自旋确认单元61不采用共同反转时的处理,完成恢复。
[0217] 读取条件生成单元64生成满足Tj=1、Gj=Gi、Nj≠Ni、xj≠xi和确定公式的读取条件作为随后的位读取条件。这里,Gi、Ni和xi分别指示在第一位中选择的自旋的组编号182、组内标识符183以及自旋状态。此外,Tj、Gj、Nj和xj指示在第二位中选择的自旋的自旋属性的值。
[0218] 根据Tj=1,选择符合n‑hot约束的位作为第二位。此外,根据Gj=Gi和xj≠xi,选择与第一位处于相同n‑hot约束组并且与第一位具有不同的自旋状态的位作为第二位。此外,根据Nj≠Ni,排除了将与已被推测反转的第一位相同的位的重新选择为第二位。
[0219] 然后,读取条件生成单元64向退火单元10输出满足Tj=1、Gj=Gi、Nj≠Ni和xj≠xi和确定公式的读取条件。
[0220] 满足n‑hot约束的状态被输入至退火单元10作为初始设置。图12是示出由根据第三实施方式的伊辛计算装置进行的初始值设置指令的示例的图。如图12所示,根据本实施方式的伊辛计算装置1设置满足1‑hot约束的自旋属性以及局部场和自旋状态的初始值。
[0221] 接下来,将参照图13A和图13B描述由根据本实施方式的伊辛计算装置1进行的最优解搜索处理的流程。图13A和图13B是由根据第三实施方式的伊辛计算装置对具有n‑hot约束的问题进行的最优解搜索处理的流程图。
[0222] 伊辛计算装置1基于例如由操作员通过使用外部终端(未示出)等输入的信息,在每个单元中设置初始值(步骤S301)。
[0223] 接下来,退火单元10的能量变化量计算单元103获取关于由局部场管理单元101保持的局部场的信息。此外,能量变化量计算单元103从自旋状态管理单元102接收反转本身自旋的自旋状态的输入。然后,能量变化量计算单元103使用公式(2)来计算本身自旋被反转时的能量变化量(步骤S302)。此后,能量变化量计算单元103将计算出的本身自旋被反转时的能量变化量输出至推测反转能量加法单元104。
[0224] 推测反转能量加法单元104从能量变化量计算单元103接收本身自旋被反转时的能量变化量的输入。接下来,在执行推测反转的情况下,推测反转能量加法单元104从能量计算单元72获取由已经执行的推测反转引起的用于推测反转的能量变化量。在不执行推测反转的情况下,从能量管理单元70获取的用于推测反转的能量变化量为0。然后,推测反转能量加法单元104将所获取的本身自旋被反转时的能量变化量与用于推测反转的能量变化量相加(步骤S303)。此后,推测反转能量加法单元104将作为相加结果的能量变化量输出至反转确定公式评估单元105。
[0225] 反转确定公式评估单元105从推测反转能量加法单元104接收能量变化量的输入。此外,反转确定公式评估单元105从阈值生成单元30接收要成为阈值的公式(6)的右侧值的输入。然后,反转确定公式评估单元105使用从阈值生成单元30获取的值作为公式(6)的右侧来确定所获取的能量变化量是否满足反转确定公式。此后,反转确定公式评估单元105将指示能量变化量是否满足反转确定公式的确定结果输出至确定单元106。确定单元106从反转确定公式评估单元105接收指示能量变化量是否满足反转确定公式的确定结果的输入。
此外,确定单元106从控制信号生成单元60接收读取条件的输入。此外,确定单元106从自旋属性保持单元108获取关于本身自旋的自旋属性的信息。然后,在本身自旋满足读取条件的情况下,确定单元106生成指示本身自旋是反转候选的反转候选标志。另一方面,在本身自旋不满足读取条件的情况下,确定单元106生成指示本身自旋不是反转候选的反转候选标志(步骤S304)。此后,确定单元106将所生成的反转候选标志输出至反转自旋候选选择单元
50。
[0226] 反转自旋候选选择单元50从退火单元10接收自旋属性、自旋状态、能量变化量和反转候选标志的输入以及每个退火单元10中的本身自旋的自旋编号。然后,反转自旋候选选择单元50根据从随机数生成单元40输入的随机数值,从自各个退火单元10获取的自旋编号中选择反转候选自旋(步骤S305)。此后,反转自旋候选选择单元50将自旋属性、自旋状态和反转候选标志连同反转候选自旋的自旋编号一起输出至控制信号生成单元60。
[0227] 控制信号生成单元60从反转自旋候选选择单元50接收反转候选自旋的自旋编号、自旋属性、自旋状态和反转候选标志的输入。接下来,推测反转控制单元单元62检查包括在反转候选自旋的自旋属性中的n‑hot目标信息181,并且确定是否满足T=1(步骤S306)。
[0228] 在满足T=1(步骤S306:是)的情况下,由于反转候选自旋是要被共同反转的自旋,因此推测反转控制单元62确定反转候选自旋是否是共同反转中的采用反转目标自旋(步骤S307)。
[0229] 在反转候选自旋不是采用反转目标自旋(步骤S307:否)的情况下,推测反转控制单元62指示反转自旋确认单元61确认推测反转中的反转自旋。在接收到用于确认推测反转中的反转自旋的指令时,反转自旋确认单元61将反转候选自旋确认为反转自旋(步骤S308)。此后,反转自旋确认单元61向能量管理单元70通知对反转自旋的确认。此外,反转自旋确认单元61将反转自旋的确认连同推测反转自旋的自旋编号一起通知给每个退火单元10。此外,反转自旋确认单元61将包括推测反转自旋的自旋编号、自旋属性和自旋状态的自旋信息输出至自旋信息保持单元63。此外,反转自旋确认单元61指示读取条件生成单元64生成读取条件。
[0230] 自旋信息保持单元63从反转自旋确认单元61接收推测反转自旋的自旋信息的输入。然后,自旋信息保持单元63保存推测反转自旋的自旋信息(步骤S309)。
[0231] 在接收到生成读取条件的指令时,读取条件生成单元64从自旋信息保持单元63获取已经执行推测反转的每个自旋的自旋信息。然后,读取条件生成单元64通过使用所获取的自旋信息来生成读取条件(步骤S310)。
[0232] 在接收到指示对推测反转中的反转自旋的确认的通知时,能量管理单元70的用于推测反转的能量计算单元71从反转自旋候选选择单元50获取反转自旋的自旋状态被反转的情况下的能量变化量。然后,能量管理单元70通过将通过将能量变化量与保持的用于推测反转的能量变化量相加而获得的量设置为用于推测反转的能量变化量,来更新保持的用于推测反转的能量变化量(步骤S311)。此外,用于推测反转的能量计算单元71将在具有从反转自旋确认单元61通知的自旋编号的自旋的自旋状态被反转的情况下的每个自旋的自旋状态存储在保持的每个自旋的自旋状态中。此后,最优解搜索处理进行至步骤S322。
[0233] 而在反转候选自旋是采用反转目标自旋(步骤S307:是)的情况下,推测反转控制单元62将针对共同反转的反转采用确定的请求输出至反转自旋确认单元61。在接收到针对共同反转的反转采用确定的请求时,反转自旋确认单元61检查反转候选自旋的反转候选标志,并且确定是否采用共同反转(步骤S312)。在采用共同反转(步骤S312:是)的情况下,最优解搜索处理进行至步骤S316。
[0234] 另一方面,在不采用共同反转(步骤S312:否)的情况下,反转自旋确认单元61检查自旋信息保持单元63所保持的自旋信息,并且指定推测反转自旋(步骤S313)。接下来,反转自旋确认单元61通知自旋信息保持单元63、读取条件生成单元64和能量计算单元72不采用共同反转。此外,自旋信息保持单元63向推测反转控制单元62通知用于选择指定的推测反转自旋的条件以及指示不采用共同反转的通知。
[0235] 当接收到指示不采用共同反转的通知时,自旋信息保持单元63清除保持的自旋信息。此外,读取条件生成单元64在接收到指示不采用共同反转的通知时清除保持的读取条件(步骤S314)。此后,最优解搜索处理进行至步骤S320。
[0236] 另一方面,在反转候选自旋是将不被共同反转的自旋(步骤S306:否)的情况下,推测反转控制单元62将针对反转采用确定的请求输出至反转自旋确认单元61。当从推测反转控制单元62接收到针对反转采用确定的请求时,反转自旋确认单元61检查反转候选自旋的反转候选标志,并且确定是否采用反转候选自旋的反转(步骤S315)。在不采用反转候选自旋的反转(步骤S315:否)的情况下,最优解搜索处理进行至步骤S324。
[0237] 在采用共同反转(步骤S315:是)的情况下并且在采用反转候选自旋的反转(步骤S312:是)的情况下,反转自旋确认单元61将反转候选自旋确认为反转自旋(步骤S316)。然后,反转自旋确认单元61向能量管理单元70通知反转自旋的确认。此外,反转自旋确认单元61将对反转自旋的确认连同反转自旋的自旋编号一起通知给每个退火单元10。此外,反转自旋确认单元61向自旋信息保持单元63和读取条件生成单元64通知采用反转。
[0238] 当接收到指示采用共同反转的通知时,自旋信息保持单元63清除保持的自旋信息。此外,读取条件生成单元64在接收到指示采用共同反转的通知时清除保持的读取条件(步骤S317)。
[0239] 在接收到指示反转自旋的确认的通知时,能量管理单元70的能量计算单元72从用于推测反转的能量计算单元71获取加上到该点为止的推测反转的每个自旋的自旋状态。然后,能量计算单元72将在加上到该点为止的推测反转的每个自旋的自旋状态中的具有从反转自旋候选选择单元50获取的自旋编号的自旋的自旋状态反转。此外,能量计算单元72将从反转自旋候选选择单元50输入的能量变化量与由能量计算单元72保持的当前能量相加,并且计算在反转自旋的自旋状态被反转的情况下的能量。这里,在不执行推测反转的情况下,能量计算单元72不从用于推测反转的能量计算单元71接收自旋信息。在这种情况下,能量计算单元72将在能量计算单元72的每个自旋的自旋状态中的具有从反转自旋候选选择单元50获取的自旋编号的自旋的自旋状态反转。此外,能量计算单元72将从反转自旋候选选择单元50输入的能量变化量与由能量计算单元72保持的当前能量相加,并且计算在反转自旋的自旋状态被反转的情况下的能量。此后,能量计算单元72更新每个自旋的自旋状态和保持的关于能量的信息(步骤S318)。能量计算单元72将与计算的能量和每个自旋的自旋状态有关的信息输出至搜索结果保持单元80。
[0240] 此外,能量计算单元72指示用于推测反转的能量计算单元71清除用于推测反转的能量变化量。当从能量计算单元72接收到指令时,用于推测反转的能量计算单元71清除保持的用于推测反转的能量变化量(步骤S319)。
[0241] 搜索结果保持单元80确定从能量计算单元72获取的能量是否小于保持的最小能量(步骤S320)。在从能量计算单元72获取的能量等于或大于保持的最小能量(步骤S320:否)的情况下,最优解搜索处理进行至步骤S322。
[0242] 另一方面,在从能量计算单元72获取的能量小于保持的最小能量(步骤S320:是)的情况下,搜索结果保持单元80通过将从能量计算单元72获取的能量设置为最小能量来更新保持的最小能量。此外,搜索结果保持单元80将从能量计算单元72获取的每个自旋的自旋状态保存为最小能量的情况下的自旋状态(步骤S321)。
[0243] 退火单元10从反转自旋确认单元61接收反转自旋的确认的输入连同反转自旋的自旋编号。在本身自旋是被确认为要反转的反转自旋的情况下,自旋状态管理单元102更新自旋状态(步骤S322)。
[0244] 局部场管理单元101通过在公式(4)中使用被确认为要反转的反转自旋的自旋编号来计算局部场的变化量。然后,局部场管理单元101通过将计算出的局部场的变化量用于保持的关于局部场的信息来计算关于本身自旋的局部场。此后,局部场管理单元101使用关于计算的局部场的信息作为关于当前局部场的信息来更新关于局部场的保存信息(步骤S323)。
[0245] 此后,搜索结果保持单元80确定预定次数的计算是否终止(步骤S324)。在预定次数的计算没有终止(步骤S324:否)的情况下,最优解搜索处理返回到步骤S302。另一方面,在预定次数的计算被终止(步骤S324:是)的情况下,搜索结果保持单元80将此时具有最小能量的自旋状态确定为最优解,并且终止最优解搜索处理。
[0246] 如上所述,根据本实施方式的伊辛计算装置可以在短时间内解决具有n‑hot约束的问题。以这种方式,可以改善用于伊辛计算装置的组合优化问题的处理性能。
[0247] [第四实施方式]
[0248] 接下来,将描述第四实施方式。根据本实施方式的伊辛计算装置1解决具有以下约束条件的问题,所述约束条件为每个自旋属于两个组,并且在属于每个组的自旋中的具有为1的自旋状态的自旋的数量为1。在下文中,将该约束条件称为“2way‑1hot约束”。具有2way‑1hot约束的问题包括旅行推销员问题(TSP)、二次分配问题(QAP)等。这里,假设并描述了将位分配给每个自旋的状态。
[0249] 图14是示出对自旋的旅行推销员问题的修改的图。图14是其中图形401所示的五个城市的旅行推销员问题的示例,其中旅行顺序和城市名称由图形402所示的25位自旋来图示。每个自旋属于两个组,其包括指示顺序的“顺序组”以及指示城市名称的“城市名称组”。然后,所有顺序组和所有城市组的一个特定位的值为1。在查看图形402中所示的5×5矩阵的情况下,要求满足如下约束,即,在所有垂直列和水平行中,仅一个自旋具有为1的自旋状态,并且可以说,旅行推销员问题具有2way‑1hot约束。根据本实施方式的伊辛计算装置1获得图形403所示的最小能量下的每个自旋的自旋状态,在该图形403中图形402中的位成直线地和一维地对准。
[0250] 伊辛计算装置1在将满足2way‑1hot约束的状态设置为初始状态之后开始计算。在其中每两个位被垂直和水平布置的四个位的情况下,为了满足2way‑1hot约束,要求自旋状态为1的自旋数量在水平方向和垂直方向上均为1。因此,在将符合2way‑1hot约束的自旋反转的情况下,如果伊辛计算装置1将其中两个位分别被垂直地和水平地布置的四个位共同反转,则可以在反转结果满足2way‑1hot约束的同时进行最小能量搜索计算。
[0251] 图15是示出根据第四实施方式的退火单元的细节的框图。根据本实施方式的自旋属性保持单元108包括2way‑1hot目标信息185、第一组编号186和第二组编号187作为自旋属性。
[0252] 2way‑1hot目标信息185是用于确定位是否符合n‑hot约束的标志。例如,将2way‑1hot目标信息185表示为Ti,Ti=2t的情况表示该位符合2way‑1hot约束,并且Ti为其他值的情况表示该位不符合2way‑1hot约束。此外,第一组编号186是作为在位符合2way‑1hot约束的情况下该位所属的两个2way‑1hot约束组之一的第一组的组编号。此外,第二组编号
187是作为在位符合2way‑1hot约束的情况下该位所属的两个2way‑1hot约束组中的另一个的第二组的组编号。在下文中,第一组编号186被表示为Xi,并且第二组编号187被表示为Yi。
[0253] 在从反转自旋候选选择单元50输入的反转候选自旋满足Ti=2的情况下,推测反转控制单元62确定反转候选自旋是符合2way‑1hot约束的共同反转目标。然后,推测反转控制单元62指示反转自旋确认单元61确认推测反转中的反转自旋。
[0254] 在从推测反转控制单元62接收到用于确认推测反转中的反转自旋的指令时,反转自旋确认单元61与反转候选标志的值无关地确认反转候选自旋的反转并且执行推测反转。
[0255] 此外,在选择候选自旋是采用确定目标的情况下,反转自旋确认单元61从推测反转控制单元62接收用于确定是否采用共同反转的指令。然后,反转确认单元61检查反转候选标志并且确定是否采用共同反转。在采用共同反转的情况下,反转自旋确认单元61将选择候选自旋确认为反转自旋。然后,反转自旋确认单元61将反转自旋的确认输出至能量管理单元70和每个退火单元10。
[0256] 另一方面,在不采用共同反转的情况下,反转自旋确认单元61根据由自旋信息保持单元63保持的自旋信息来指定推测反转自旋,生成用于选择推测反转自旋的条件,并且将生成的条件输出至退火单元10。此外,反转自旋确认单元61将自旋信息和读取条件的清除输出至旋转信息保持单元63和读取条件生成单元64。此后,在从推测反转控制单元62接收到用于确认恢复中的反转自旋的指令时,反转自旋确认单元61将反转自旋的确认输出至能量管理单元70和退火单元10。根据上述在反转自旋确认单元61不采用共同反转时的处理,完成恢复。
[0257] 读取条件生成单元64设置读取条件,使得如图16所示的那样选择要被共同反转的位。图16是示出由根据第四实施方式的伊辛计算装置进行的根据2way‑1hot约束的自旋反转方法的示例的图。
[0258] 这里,四个位被表示为位i、位k、位j和位l。以网格图案布置位i至位l,并且两个位分别被垂直和水平布置。然后,位i属于第一组Xi和第二组Yi。此外,位j属于第一组Xi和第二组Yj。此外,位k属于第一组Xj和第二组Yi。此外,位l属于第一组Xj和第二组Yj。在这种情况下,由于这些位符合2way‑1hot约束,因此位i至l的相邻位处于不同的自旋状态。
[0259] 然后,读取条件生成单元64将如图17所示的第一位的后续位的读取条件设置为共同反转,以执行图16所示的反转。图17是示出根据第四实施方式的读取条件的示例的图。这里,第一位至第四位分别是共同反转中的第一选择位至第四选择位。
[0260] 例如,在如在图16中的反转转变411中那样被共同反转的第一自旋的自旋状态为0的情况下,读取条件生成单元64将第二位至第四位的读取条件生成为图17中的读取条件421。这里,参考标记i、j、k和l分别表示第一选择自旋、第二选择自旋、第三选择自旋和第四选择自旋。此外,参考标记f表示要求满足反转公式的条件,并且条件是当f的值为1时满足反转公式。由于第四位是确定是否采用共同反转的位,因此读取条件生成单元64将f=1包括在第四位自旋的读取条件中。另一方面,由于即使不满足反转确定公式,第二位和第三位也被推测地反转,因此读取条件生成单元64不将f的条件包括在第二位和第三位的自旋的读取条件中。此外,根据Ti=2,选择符合2way‑1hot约束的位作为第二位至第四位。
[0261] 如果第一位是共同反转的目标,则执行推测反转。接下来,根据读取条件421中的第二位的读取条件,在第二位中,如图16中的第二位中所示的那样,位xj被反转。接下来,根据读取条件421中的第三位的读取条件,在第三位中,如图16中的第三位中所示的那样,位xk被反转。接下来,根据读取条件421中的第四位的读取条件,在第四位中,如图16中的第四位中所示的那样位xl被反转,并且进行采用确定。
[0262] 此外,在如图16的反转转变412中那样要共同反转的第一自旋的自旋状态为1的情况下,读取条件生成单元64将第二位至第四位的读取条件生成为图17中的读取条件422。
[0263] 如果第一位是共同反转的目标,则执行推测反转。接下来,根据读取条件422中的第二位的读取条件,在第二位中,如图16中的第二位中所示,位xj被反转。接下来,根据读取条件422中的第三位的读取条件,在第三位中,如图16中的第三位中所示的那样,位xl被反转。接下来,根据读取条件422中的第四位的读取条件,在第四位中,如图16的第四位中所示的那样,位xk被反转,并且另外,进行采用确定。
[0264] 满足2way‑1hot约束的状态被输入至退火单元10作为初始设置。图18是示出由根据第四实施方式的伊辛计算装置进行的初始值设置指令的示例的图。如图18所示,根据本实施方式的伊辛计算装置1设置满足2way‑1hot约束的自旋属性以及局部场和自旋状态的初始值。
[0265] 如在第一实施方式中一样,根据本实施方式的伊辛计算装置1保持关于用于恢复的自旋状态和用于恢复的局部场的信息。然后,伊辛计算装置1使用关于用于恢复的自旋状态和用于恢复的局部场的信息来恢复自旋状态和局部场。因此,如第一实施方式中那样,根据本实施方式的伊辛计算装置1的最优解搜索处理被表示为图3A和图3B中的流程图。然后,在根据本实施方式的伊辛计算装置1中,在图3的流程图中的步骤S107的处理中,如果反转候选自旋是作为要被共同反转的自旋的第四位自旋,则推测式反转控制单元62将反转候选自旋确定为共同反转的采用确定目标。
[0266] 如上所述,根据本实施方式的伊辛计算装置可以在短时间内解决具有2way‑1hot约束的问题。以这种方式,可以改善用于伊辛计算装置的组合优化问题的处理性能。