2017-03-02 4 views
0

gperfは(CまたはC++を使用している場合)1つのオプションと思われますが、少なくともいくつかの状況ではより良いものがありますか?アプリケーションの例は、コードと例外をリンクすることです。例外処理の一般的な実装では、リンカは、スタックのunwindのために関数のコードを破棄/終了するアドレスに、リターンアドレス(例外を生成する関数への呼び出し用)から最適な連想検索を構築する必要があります。既知のキーのセットが与えられたら、それらのための最適なハッシュ関数を決定できますか?

+1

タイトルは、プログラミング/プログラミングの問題のように聞こえます。あなたが質問の本文で何を得ているのかは分かりません。 – NathanOliver

+0

@ NathanOliverはい、それはタグを付けた言語に関連しており、アルゴリズムにもタグを付けました。例外処理との関連性は、JavaおよびC++との関連性です。 – WaltK

+1

*「最適なハッシュ関数」*とは何ですか? –

答えて

1

既知のすべてのキーがあらかじめわかっている場合は、trie/keyword treeのキーを作成してください。各単語の終わりにユニークなインデックスを置く。

この方法では、ハッシュ関数はO(length_of_the_largest_string)時間を超えることはありません。必要なメモリがO(total_character_in_all_the_strings)

の場合は、一意のプレフィックスだけを使用すると、時間とメモリを減らすことができます。

+0

はい、実行速度が向上し、メモリ使用量が少なくなる別の方法があります。 – WaltK

+0

@ WaltKあなたはどのような特定の方法を提案していますか? – silentboy

+0

それは正直な質問です、私は示唆する方法がありません。モジュロ、FNV、CRC私は最速のハッシュ関数の中で考えています。あるキーのセットを与えられれば、それらのCRCハッシュのために最良の多項式を導き出すことができれば涼しいでしょう。 – WaltK

関連する問題