私はツリー上のBFSのバリエーションのようなアルゴリズムを開発しましたが、確率的要因が含まれています。探しているノードがノードであるかどうかをチェックするために、統計的なテストが実行されます(これについてあまり詳しく説明しません)。テスト結果が肯定的である場合、ノードは別のキュー(tested
)に追加されます。しかし、ノードがテストに失敗すると、tested
のノードを再度テストする必要があるため、このキューはまだテストされていないノードがあるノードに追加されます。アルゴリズムは確率的である可変長キューBFSのアルゴリズム複雑度解析
...
tested = []
while q:
curr = q.pop(0)
p = statistical_test(curr)
if p:
tested.append(curr)
else:
q.extend(curr.children())
q.extend(tested)
tested = []
return tested
として、複数のノードを検索した後tested
にあるかもしれないが、それが期待されている:キューq
は、ルートノードから始まることを考慮すると、Pythonで
、。私が直面している問題は、単純にBFSの複雑さを使うことができないので、このアルゴリズムの複雑さを見積もることです。q
とtested
は可変長です。
これについては、明確な回答は必要ありません。私が必要とするのは、このような状況に対処する方法に関するいくつかの洞察です。
最悪の場合、プログラムは決して終了しません。 – Tempux
キューのサイズは関係ありません。問題は統計部分のエラー率は何ですか? –
どのように終了しませんか?テストで同じ入力に対して異なる結果が得られない限り、どのように終了しないかはわかりません。 –