В данный момент я работаю над некоторой ревизией и специально перебираю нотацию Big-O. Я задал похожий вопрос (который имел дело с другим алгоритмом), но все еще не уверен, правильно ли я поступаю или нет.
Алгоритм, на который я смотрю, - это исчерпывающий поиск (он же, я думаю, грубая сила), который выглядит так:
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)
- это правильно? Я сомневаюсь, что это так, и хотел бы точно знать, как это сделать; что искать, что именно я «подсчитываю» каждый раз и т. д. Я понимаю, что необходимо подсчитать количество выполняемых операций, но это все, что мне нужно принять к сведению / count?
РЕДАКТИРОВАТЬ: я узнал, что этот алгоритм, на самом деле, O((n-1)!)
- это правильно, и если так, как это решение возникло, когда я не могу его решить?