コンピューターサイエンスのトピックに関する本を読んでいますが、前提条件の一部が欠けています。通常、用語に出会ったとき、私は単にそれらを調べますが、ユニバーサル検索については、統計/コンピューターサイエンスの背景のない読者に適した説明を見つけることができませんでした。
私は、Scholarpediaのユニバーサル検索に関するこの記事を読んでいますが、これはトピックをカバーしているようです。ユニバーサル検索(またはレビン検索)の意味を説明していただければ幸いです。
コンピューターサイエンスのトピックに関する本を読んでいますが、前提条件の一部が欠けています。通常、用語に出会ったとき、私は単にそれらを調べますが、ユニバーサル検索については、統計/コンピューターサイエンスの背景のない読者に適した説明を見つけることができませんでした。
私は、Scholarpediaのユニバーサル検索に関するこの記事を読んでいますが、これはトピックをカバーしているようです。ユニバーサル検索(またはレビン検索)の意味を説明していただければ幸いです。
回答:
このように考えてください。入力問題があり、解決策(マトリックスの逆行列など)を見つけた場合の検証方法を知っています。
次に、お気に入りのプログラミング言語(Pythonなど)を使用して、最大10文字で構成されるすべてのPythonプログラムを作成します。次に、入力でそれぞれ10秒間、入力を使用してこれらのプログラムをすべて実行します。それらのどれもあなたに答えを与えない場合、あなたは11に行きます。入力で、最大11文字の各プログラム(もちろん、すでに試したものを含む)をそれぞれ11秒間実行します。それらのどれもあなたに正しい答えを与えない場合、あなたは12などに進みます。
より正式には、反復、それぞれ最大(有限数、ただしでは指数関数的)のすべてのプログラムを、それぞれ秒(またはステップ)実行します。
秒で正しい出力を提供するプログラム(があります。反復、このプログラムは少なくとも秒実行され、と解の両方を出力します。s P
PålGDが言ったことに加えて、長さ以下のすべてのプログラムを実行し、最大で秒間実行することを忘れないでください。したがって、100文字の長さの正しい答えを取得するプログラムがあるかもしれませんが、実行には120秒かかります。そのプログラム呼び出します。であなたはこのプログラムをチェックしますが、それはあなたがそれを破棄して実行するために時間がかかりすぎます。長さ100のすべてのプログラムをチェックした後、それらのどれも正しい答えを与えないことがわかるので、長さのプログラムと以前に試したすべてのプログラムを試します。を再試行します私P iは= 100 101 Pは、iが= 120 ≤ 120 P I = 120 P | P | = 100 s = 120 i = m a x { | P | 、s } P s 、(私たちが知っている)あなたに正しい答えを与えるプログラムですが、それでもあなたはそれを捨てるので時間がかかりすぎます。なるまで、このプロセスを続けます。次に、長さすべてのプログラムを試し、に到達したら、適切な答えを出すのに十分な時間実行します。その後、停止します-必要なアルゴリズムが見つかりました。プログラム長さは短い(と記述します)が、時間がかかって120秒()になるまで待つ必要があるため、繰り返しはです。)。したがって、単にプログラム長さの最大値を意味します実行にかかった時間。
それを見る別の方法は、正しい答えを出すのに秒かかるプログラム場合、少なくともをチェックする必要があります イテレーション、および少なくとも反復の場合ので、私たちは、それを見つけることができます前に、その後、そのプログラムをまだ確認しておらず、場合、プログラムを十分に長く実行させていません。s | P | s i < | P | i < s
この検索方法は、答えがある場合にのみ返されることが保証されていることに注意してください。最短または最速の回答を見つけることは保証されていません。その理由は、正しい答えを提供するプログラムが見つかるとすぐにプロセスが終了すると考える場合に明らかになるはずです。