2

これは私の最後のコンプ統計予選でした。私はかなり良いと思った答えを出しました。特定の問題に正解したかどうかではなく、試験で点数を取得するだけです。コミュニティがこれに関するガイダンスを提供してくれることを願っていますが、私は何がテストされているのか、どこに行けばそれについてもっと読むことができ、次の試験の前に練習できるのかという答えにはあまり興味がありません.

一見、時間計算量の問題のように見えますが、マッピング関数とデータの事前並べ替えについて話し始めると、どう処理すればよいかわかりません。では、あなたはどのように答えますか?

ここにあります:

あるドメイン Z から引き出されたアイテムのセット X = {x1, x2, ..., xn} が与えられた場合、あなたのタスクは、Z 内のクエリ アイテム q がセット内で発生するかどうかを見つけることです。簡単にするために、各項目が X で 1 回だけ発生し、Z で任意の 2 つの項目を比較するのに O(l) の時間がかかると仮定できます。

(a) X に q があるかどうかをチェックするアルゴリズムの疑似コードを書いてください。あなたのアルゴリズムの最悪の場合の時間計算量はどれくらいですか?

(b) l が非常に大きい場合 (たとえば、X の各要素が長いビデオの場合)、q \in X をチェックする効率的なアルゴリズムが必要です。k 個の関数 h_i: Z -> {1, 2 へのアクセスが与えられているとします。 , ..., m} は、Z の要素を 1 から m の間の数に一様にマッピングし、k << l および m > n とします。関数 h_1...h_k を使用して q \in X かどうかをチェックするアルゴリズムの擬似コードを記述します。データを前処理することが許可されていることに注意してください。アルゴリズムの最悪の場合の時間の複雑さは?

疑似コードの入力、出力、および仮定について明示してください。

4

1 に答える 1

1

1 つ目は単純な線形スキャンのようです。時間計算量は ですO(n * l)。最悪の場合は、すべての要素を比較することです。注 -nデータがソートされている場合は情報がないため、 ではサブリニアにはなりません。

2 番目の (b) は実際には Bloom -filterのバリエーションであり、セットを表す確率論的な方法です。ブルーム フィルターを使用すると、偽陽性 (セットに含まれていないものがあると言う) が発生する可能性がありますが、偽陰性 (セットに含まれているのに、セットに含まれていないものがあると言う) は発生しません。

于 2012-09-20T11:23:00.487 に答える