挿入と検索のためのトライデータ構造の最良/最悪/平均の場合の複雑さ(Big-O表記)は何ですか?
すべての場合でO(K)
だと思います。ここで、K
は、挿入または検索される任意の文字列の長さです。誰かがこれを確認しますか?
Wikipedia および this source によると、トライの挿入と検索の最悪の場合の複雑さはO(M)
です。ここで、M
は長さです。キーの。挿入と検索の最良または平均的なケースの複雑さを説明するソースを見つけることができません。ただし、Big-Oは複雑さの上限のみを記述しているため、最良かつ平均的なケースの複雑さはO(M)
であり、M
はキーの長さであると安全に言えます。
k:検索または挿入する文字列の長さ。
For Search
Worst: O(26*k) = O(k)
Average: O(k) # In this case, k is an average length of the string
Best: O(1) # Your string is just 'a'.
Trieの複雑さは、検索する文字列の数によって変わることはなく、検索文字列の長さによってのみ変わります。そのため、英語の辞書で語彙全体を検索する場合のように、検索する文字列の数が多い場合にTrieが使用されます。
For Insertion
Worst: O(26*k) = O(k)
Average: O(k)
Best: O(1)
だから、はい、あなたは正しいです。あなたはおそらくO(MN)を見て、それはあなたを混乱させたかもしれませんが、それはあなたが上記を行う必要があるときについて話しているだけですO(k)操作N回数。
ウィキペディアにはこれに関するいくつかの素晴らしい情報があります。 http://en.wikipedia.org/wiki/Trie