コンピューターサイエンスの「キー」とは何ですか?


14

私は、コンピュータサイエンスにおける「キー」の正確な意味について少し混乱しています。キーと値のペア、主キーなどを理解しています。しかし、「キー」という用語自体の意味の定義を見つけることができません。

私が知る限り、それは単なるデータを意味します。CLRSでは、ツリーノードに関連付けられたデータは「キー」と呼ばれます。ハッシュテーブルを検索するデータは「キー」と呼ばれます。これは「キー」とは何ですか?


18
特定の技術的な定義はありません。単語の使用は、通常、その通常、英語の定義、例えば触発されmerriam-webster.com/dictionary/keyというか、私は「定義言うべき」。一般に、単一の研究分野内であっても、複数のコンテキストで使用される一般的な英語の単語には統一された技術的定義がないことが期待されるはずです。
デレクエルキンズは

4
それはキーボード上のものの1つでもあります:
jamesqf

実際には通常の英語でも同じです-キー数値=ストーリーの主要人物、重要な証拠=ケースの解決につながる主要な証拠、キー=ドアのロックを解除する主要なメカニズムなど。英語で何かにアクセスするには」。CSに固有ではありません
slebetman

暗号化の意味での「キー」もありますが、これはあなたが言及したデータ検索の例とは異なると考えます。
200_success

@slebetman「キー」は実際に英語で多くの用途がありますが、CS(のサブフィールド)に非常に特有の正確な定義を持つ多くの用途があります。
離散トカゲ

回答:


30

最も一般的な意味では、キーはデータを取得するために必要な情報です。ただし、この意味は、あなたがどのような状況で対処しているかによって正確に異なります。

あなたが言及した文脈では、キーは構造内のある場所からそれを取得するために使用される完全なデータの一意の識別子です。各キーは1つのアイテムにのみ関連付けられているため、特定のデータセットを検索するために使用できます。通常、データ構造は、すべてのデータを線形検索するよりもキーを見つける方がはるかに効率的な方法で編成されます。キーは実際にはデータの一部であり、データとともに格納されている場合があります(データベースのプライマリキーなど)。それ以外の場合は、データ自体から分離されます(ハッシュマップなど)。データ構造は、キー(およびキーのみ)で追加の処理を実行して、効率的な検索アルゴリズム(ハッシュマップ、キーがハッシュコードに変換される、またはデータベースがプライマリキーにインデックスを付けるなど) Bツリー)。

暗号化では、キーは、ロックで使用される物理キーに似た意味で使用されます。それらは、暗号化されたデータから元のデータを取得するために必要なデータです(いわば、データを「ロック解除」するため)。


3
混乱を防ぐために、本CLRSでは、キーは多くのデータ構造用である必要がないため、通常、一意であると見なされません。
離散トカゲ

そして、一般的に、キーはデータ構造をナビゲートするデータですか?物理的なキーがロックされたボックスから何かを取得するために使用されるように、それは私にとって理にかなっています。
TheMax

@TheMax行うべき「ナビゲーション」がないため、定義が暗号化に適しているとは言いません。それはあなたの例のリストに合っていますが、私はそれがそれらの場合の物理的なキーに類似しているとは思いません。
jpmc26

@ jpmc26はその説明にスポットがあるので、データに対するキーのビット単位のXORを検討して
ください。– mckenzm

現在の規模では、合成キーに使用されるハッシュは実際には一意ではない場合があり、タイブレーカーまたはコンパウンドが必要になる場合があります。
mckenzm

12

キー(例えば書籍CLRSのように)データ構造の文脈では、データ構造の特定のコンポーネントを識別するために使用される値(しばしば整数)です。多くの場合、キーは、基礎となるデータの格納方法または操作方法を決定します。たとえば、バイナリ検索ツリーでは、すべてのノードについて、そのノードのキーは左側のサブツリーのキーより大きく、右側のサブツリーのキーよりも小さくなっています。このプロパティを使用すると、特定のキーを簡単に検索できます(または、そのようなキーを持つノードがないと判断します)。

実際には、「実際の」データは多くの場合キーではなく、単一の数値よりも大きく関連性の高いものです。このデータはサテライトデータと呼ばれ、キーが移動するたびにサテライトデータが移動する限り、データ構造の操作を処理する場合はほとんど無視できます(そうでなければ、データを追跡できなくなります)。


キーの概念はデータベースのコンテキストでは似ていますが、キーが一意であることがしばしば必要です。たとえば、主キーは一意である必要があります。この要件は、多くの場合、データ構造のコンテキストでは必須ですが、簡単にするために作成されることもあります。

暗号化では、キーは通常、特定の暗号化または暗号化解除アルゴリズムで暗号化または暗号化解除するために必要な(多くの場合、秘密ではありませんが!)パラメーターを指します。暗号化または復号化に使用されるキーは、暗号化または復号化のプロセスが成功するために「関連」する必要があります(対称暗号法では、同じである必要があります)。


衛星データとキーの違いは何ですか?私が理解していることから、衛星データは、実際の構造の一部ではないデータ構造によって編成されたデータです。キーと衛星データは両方とも構造内のデータであると言えますが、キーは構造の一部であり、衛星データはそうではありませんか?
TheMax

1
@TheMaxある意味では、そうです。衛星データの正確な内容は、データ構造の操作には関係ありません(ただし、データ構造を使用するアプリケーションには関係がある可能性があります)。キーとデータのこの分離により、効率的なデータ構造の設計が容易になります。
離散トカゲ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.