GOMOKU:検索時間が限られています
解決
#include <time.h>
time_t start_time = time(NULL);
while (((int)(time(NULL) - start_time)) < 10) {
//search
}
つまり、私の頭に浮かぶものです。ただし、テストされていません。
他のヒント
唯一の時間チェックは仕事をしません! Minimaxは再帰的な深度検索アルゴリズムであり、明らかにはるかに優れた動きがあり、最後の1秒で良い動きを見つけるために、非常に間違った動きを調べる30秒を費やすことができます!
短時間で非常に良い動きを見つけるアルゴリズムを使用する必要があり、その後、ますます多くの時間を利用できるようにすると、ソリューションが改善されます! Minimax(またはAlpha-beta)アルゴリズムを変更する必要があります 幅の最初の検索 ストラテジー。その後、いつでも非常に良い動きをすることができます。
使用できます alarm
信号。単に信号ハンドラーにグローバルフラグを設定してもらう okWereDoneNow
検索を開始し、確認し、リセットしてください。
タイマー関数よりもこれの利点は、検索の反復ごとに1回の比較のみが必要であることです。信号作業は高価ですが、一度だけ実行されます。集中的で、おそらくCPUに縛られた繰り返し操作では、これは大きな利点になる可能性があります。しかし、私の言葉を受け取らないでください - テスト!
Time()関数をTime.H.一般に、返された値は秒単位です。そうでない場合でも、同じヘッダーからdifftime()を単に使用できます。
これ 必要な機能に関する優れたリソースです。
上記のリンクはC ++リファレンスサイトからのものですが、そのヘッダーと例はすべてCコードです。
所属していません StackOverflow