これらは基本的に、2つの異なるパースペクティブ、または実行時間を表示する2つの異なる方法です。どちらも有効です(どちらも正しくありません)が、O (bd) AIで通常発生する設定では、間違いなくより便利です。
アルゴリズムコミュニティとCS理論コミュニティでは、グラフの頂点とエッジの数の関数として実行時間を数える傾向があります。どうして?その意味では、最悪の場合の実行時間が最も理にかなっています。また、そのコミュニティで通常検討されている問題では、最悪の場合はグラフ全体を調べる必要があるため、通常はこれよりも上手くいくことは望めません。O (| V| + | E| )。
AIコミュニティでは、実行時間を異なる方法でカウントする傾向があります。彼らはしばしば特定の種類のグラフを考慮します:分岐因子を持つツリーb。また、そこで発生する状況では、グラフはしばしば無限または非常に大きくなります。通常、すべてのグラフを調べないように努力します。これは、多くの場合、アルゴリズムの主要な目標の1つです。したがって、| V| そして | E| 意味がありません: |V| は無限である可能性があり、いずれの場合でも、すべてのグラフを調べるつもりはないので、問題となるのは、実際にアクセスする頂点の数であり、他の場所に存在する可能性がある数ではなく、気にしない数です。
したがって、AIコミュニティでよく発生する状況では、ツリーの分岐係数の観点から実行時間を測定する方が意味がある場合がありますb)およびゴールノードの深さ(d)。通常、ゴールノードが見つかると、アルゴリズムは停止します。このようなツリーで、すべての頂点を詳細に調べると≤d ゴールノードを見つける前に、 O(bd)停止する前の頂点。したがって、必要に応じて、これをグラフのサブセットにアクセスすると考えることができます。|V|=O(bd) (今どこ V 訪問する頂点のみが含まれます) |E|=O(bd) (E 私たちが見るエッジのみが含まれます)、そしてあなたは考えることができます O(bd)-timeアルゴリズムは、実行時間が O(|V|+|E|)...これは少し乱用ですが |V|,|E|表記。とにかく、うまくいけば、あなたはその理由を見ることができますO(bd) より情報的です O(|V|+|E|) この文脈で。