私は現在、いくつかの改訂に取り組んでおり、具体的には Big-O 記法について検討しています。同様の質問 (別のアルゴリズムを扱ったもの) をしましたが、正しい方法で行っているかどうかはまだわかりません。
私が検討しているアルゴリズムは、Exhaustive Search (別名ブルート フォースだと思います) で、次のようになります。
Input: G- the graph
n- the current node
p– the path so far
1) For every edge nm (from n to m) in G do
2) If m ∉ p then
3) p = p ∪ {m}
4) Exhaustive(G, m, p)
5) End If
6) End For
これまでのところ、このアルゴリズムは正しいという結果に達しましたO(n)
。これは正しいですか? 私はそれが正しいとは思えませんし、それを解決する方法を正確に知りたいと思っています。何を探すべきか、毎回「数える」のは正確には何なのか、などなど。実行中の操作の数を数える必要があることは理解していますが、メモを取る/数える必要があるのはそれだけですか?
編集: 実際、このアルゴリズムが正しいことを知りました。これはO((n-1)!)
正しいのですか? もしそうなら、この解決策はどのようにして解決できたのでしょうか?