これは、オプションが非常に多いという理由だけで、これらの難しいアルゴリズムの1つです。数「N」と10未満の素数のセット、つまり{2、3、5、7}を想像してみてください。目標は、1に達するまでNを分割し続けることです。いずれかのステップで、Nが指定された素数のいずれかで割り切れない場合は、次の操作を実行できます。
i)N = N-1またはii)N = N + 1
これにより、Nが均等になり、続行できるようになります。
最小限の操作で目標を達成する必要があります。
これは些細なことのように聞こえるかもしれません。つまり、「Nが任意の素数で割り切れる場合は、それを除算する」というステップをアルゴに実装できます。しかし、これは必ずしも最適なソリューションを生み出すとは限りません
たとえば、N = 134の場合:134は2で除算できます。2で除算すると、67になります。67は素数で割り切れないため、操作を実行すると、Nは66/68になり、どちらも別の操作が必要になります。したがって、合計2つの操作。
または、N = 134で、操作N = N + 1、つまりN = 135を実行する場合、この場合、1に到達するために必要な操作の合計は1です。したがって、これが最適なソリューションです。