2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

SWI-Prologを超える:Parallel N-Prologがを巡回騎士問題を数秒で解く

Last updated at Posted at 2025-09-07

最近、N-Prologコンパイラを「Elimination(消去)」を考慮するよう改良したところ、明らかな性能向上がありました。この改善を受けて、分散並列能力を再評価してみたところ、ワクワクする発見がありました。なんと、N-Prologは特定のケースでSWI-Prologを上回る性能を発揮できるようになったのです。以下がその経緯です。

bandicam 2025-08-31 15-15-26-991.jpg

5×5盤では十分ではなかった理由

以前は5×5盤で性能テストを行いました。8方向の並列計算を行っても、N-Prologは順次実行のSWI-Prologよりもはるかに遅かったのです。なぜでしょうか? 5×5の小さな盤では、並列計算の恩恵を受ける余地がほとんどありません。例えば、[1,2] からスタートすると解は存在せず、探索空間は非常に狭いのです。中心の [3,3] からはナイトは8方向に動けます。しかし [1,2] からだとそのうち5方向が塞がれており、並列計算をしても多くの計算能力が活かされません。

night.png

6×6盤に挑戦

本当に並列計算の効果を示すため、6×6盤に移行しました。この盤では四隅だけでなく、複数の経路が存在します。[3,5] から探索を開始しました。

bandicam 2025-09-04 15-44-16-817.jpg

Raspberry Piクラスタ上で、N-Prologは約8秒で解を見つけました。

bandicam 2025-09-04 15-39-10-495.jpg

一方、同じRaspberry Piで順次実行のSWI-Prologは10分以上かかります。

順次実行だけでは追いつかない理由

解に至らない経路では、おおよそ 8³⁶ 通りの可能性を探索する必要があります。これは天文学的な数です。最適化されたSWI-Prologでも苦戦します。6×6盤では5×5盤よりも探索経路が格段に多く、並列計算は有用というだけでなく、不可欠となります。ついに、分散並列計算が真価を発揮するシナリオが生まれたのです。

大谷翔平になった気分!?

N-Prologはまだ順次速度ではSWI-Prologに及びませんが、並列計算という「速球」を使うことで、世界クラスのSWI-Prologに匹敵する力を発揮できます。まるで、投手と打者の両方で活躍する日本の野球スター、大谷翔平になった気分です!

メジャーリーグのスカウトの皆さん、もし読んでいたら、ぜひお声がけください(笑)。

日本人はもっとチャレンジを!

1980年代のICOT、第五世代コンピューター計画は失敗であったと言われています。ほんとにそうでしょうか?
当時は日本は経済的に豊かでした。ロックフェラービルを日本企業が買ったなんて話もありました。ところがバブル崩壊後はすっかり日本人は自信を失ったのかスケールが小さくなってしまいました。1980年当時は国家財政は豊でありICOTのような成功するかどうかわからない国家プロジェクトをやれるだけの国力がありました。技術者、研究者にチャレンジ精神がありました。大谷選手のように、投げるだけでなく打つことも楽しむ冒険心、そして世界レベルで挑戦する精神を見習って、日本人ももっと大胆にチャレンジしていいのではないでしょうか?

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?