Was ist ein Schlüssel in der Informatik?

14

Ich bin ein bisschen verwirrt darüber, was genau die Bedeutung eines Schlüssels in der Informatik ist. Ich verstehe Schlüssel-Wert-Paare, Primärschlüssel usw. Aber ich kann keine Definition dessen finden, was der Begriff "Schlüssel" für sich bedeutet.

Soweit ich das beurteilen kann, handelt es sich nur um ein Datenelement. In CLRS werden Daten, die Baumknoten zugeordnet sind, als "Schlüssel" bezeichnet. Daten zum Durchsuchen einer Hash-Tabelle werden als "Schlüssel" bezeichnet. Ist das, was ein "Schlüssel" ist?

TheMax
quelle
18
Es gibt keine spezifische technische Definition. Die Verwendung des Wortes ist normalerweise von seiner normalen englischen Definition inspiriert, z. B. merriam-webster.com/dictionary/key. Oder besser gesagt, ich sollte "definition s " sagen . Im Allgemeinen sollten Sie davon ausgehen, dass es keine einheitliche technische Definition für gebräuchliche englische Wörter gibt, die in mehreren Kontexten verwendet werden, selbst innerhalb eines einzelnen Studienbereichs.
Derek Elkins verließ SE
4
Es könnte sogar eines dieser Dinge auf Ihrer Tastatur sein :-)
Jamesqf
Im normalen Englisch ist es tatsächlich dasselbe - Kennzahl = die Hauptperson in der Geschichte, Schlüsselbeweis = der Hauptbeweis, der zur Lösung eines Falls geführt hat, Schlüssel = der Hauptmechanismus zum Entriegeln einer Tür usw. Es bedeutet "der Hauptweg" auf etwas zugreifen "auf Englisch. Es ist nicht spezifisch für CS
Slebetman
Es gibt auch "Schlüssel" im kryptografischen Sinne, die sich meiner Meinung nach von den von Ihnen erwähnten Beispielen für die Datensuche unterscheiden.
200_success
@slebetman Während 'key' in der englischen Sprache in der Tat viele Verwendungszwecke hat, gibt es viele Verwendungszwecke, deren genaue Definition sehr spezifisch für (ein Teilfeld von) CS ist.
Diskrete Eidechse

Antworten:

30

Im Allgemeinen ist ein Schlüssel eine Information, die zum Abrufen einiger Daten erforderlich ist. Diese Bedeutung spielt sich jedoch in Abhängigkeit von der jeweiligen Situation unterschiedlich ab.

In den Kontexten, die Sie erwähnen, ist ein Schlüssel eine eindeutige Kennung für die vollständigen Daten, die zum Abrufen dieser Daten von einer bestimmten Stelle in der Struktur verwendet werden. Jeder Schlüssel ist nur einem Element zugeordnet, sodass ein bestimmter Datensatz gefunden werden kann. Die Datenstruktur wird normalerweise so organisiert, dass das Auffinden des Schlüssels wesentlich effizienter ist als eine lineare Suche durch alle Daten. Manchmal ist der Schlüssel tatsächlich Teil der Daten und wird zusammen mit diesen gespeichert (wie Primärschlüssel in der Datenbank). In anderen Fällen wird es von den Daten selbst getrennt (wie in einer Hash-Karte). Die Datenstruktur führt außerdem häufig eine zusätzliche Verarbeitung des Schlüssels (und nur des Schlüssels) durch, um dessen effizienten Suchalgorithmus zu unterstützen (z. B. in einer Hash-Map wird der Schlüssel in einen Hash-Code konvertiert, oder eine Datenbank indiziert die Primärschlüssel mithilfe von ein B-Baum).

In der Kryptographie wird ein Schlüssel in gewisser Weise verwendet, die den physischen Schlüsseln ähneln, die für Schlösser verwendet werden. Dies sind Daten, die erforderlich sind, um das Original aus den verschlüsselten Daten zu erhalten (um die Daten sozusagen "freizuschalten").

jpmc26
quelle
3
Um mögliche Verwechslungen zu vermeiden: Im Buch CLRS werden Schlüssel normalerweise nicht als eindeutig betrachtet, da sie nicht für viele Datenstrukturen gelten müssen.
Diskrete Eidechse
Dann ist im Allgemeinen ein Schlüssel Daten, um eine Datenstruktur zu navigieren? Das ist für mich sinnvoll, weil mit einem physischen Schlüssel etwas aus einer verschlossenen Box abgerufen wird.
TheMax
@TheMax Ich würde nicht sagen, dass die Definition für die Kryptografie geeignet ist, da keine "Navigation" durchgeführt werden muss. Es passt zu Ihrer Liste von Beispielen, aber ich sehe es in diesen Fällen nicht als Parallele zu einem physischen Schlüssel.
jpmc26
@ jpmc26 diese Beschreibung ist genau richtig, betrachten Sie bitweise XOR eines Schlüssels gegen Daten,
McKenzm
Nach heutigen Maßstäben sind Hashes, die für synthetische Schlüssel verwendet werden, möglicherweise nicht eindeutig und erfordern möglicherweise Verbindungsunterbrecher oder Compoundierung.
McKenzm
12

Ein Schlüssel im Kontext von Datenstrukturen (wie im Buch CLRS) ist ein Wert (häufig eine Ganzzahl), mit dem eine bestimmte Komponente einer Datenstruktur identifiziert wird. Oft bestimmen Schlüssel, wie die zugrunde liegenden Daten gespeichert oder manipuliert werden. In binären Suchbäumen haben wir zum Beispiel, dass für jeden Knoten der Schlüssel dieses Knotens größer als die Schlüssel im linken Unterbaum und kleiner als die im rechten Unterbaum ist. Diese Eigenschaft erleichtert die Suche nach einem bestimmten Schlüssel (oder stellt fest, dass kein Knoten mit einem solchen Schlüssel vorhanden ist).

In der Praxis sind unsere „tatsächlichen“ Daten oft kein Schlüssel, sondern etwas Größeres und Relevanteres als eine einzelne Zahl. Diese Daten werden als Satellitendaten bezeichnet und können bei Manipulationen an Datenstrukturen meist ignoriert werden, solange sich die Satellitendaten bei jeder Bewegung des Schlüssels bewegen (andernfalls verlieren Sie den Überblick über Ihre Daten).


Das Konzept eines Schlüssels ist im Kontext von Datenbanken ähnlich, aber dort ist es häufig erforderlich, dass ein Schlüssel eindeutig ist . Ein Primärschlüssel muss beispielsweise eindeutig sein. Diese Anforderung ist im Zusammenhang mit Datenstrukturen häufig erforderlich, wird jedoch manchmal der Einfachheit halber gemacht.

In der Kryptographie bezieht sich ein Schlüssel normalerweise auf einen (oft geheimen, aber nicht immer!) Parameter, der zum Verschlüsseln oder Entschlüsseln mit einem bestimmten Ver- oder Entschlüsselungsalgorithmus benötigt wird. Die zum Verschlüsseln und Entschlüsseln verwendeten Schlüssel müssen "verwandt" sein (in der symmetrischen Kryptografie müssen sie identisch sein), damit der Ver- oder Entschlüsselungsprozess erfolgreich ist.

Diskrete Eidechse
quelle
Was ist dann der Unterschied zwischen Satellitendaten und Schlüsseln? Soweit ich weiß, handelt es sich bei Satellitendaten um Daten, die nach Datenstrukturen organisiert sind, die nicht Teil der tatsächlichen Struktur sind. Kann ich also sagen, dass Schlüssel und Satellitendaten beide Daten in der Struktur sind, Schlüssel jedoch Teil der Struktur sind und Satellitendaten nicht?
TheMax
1
@TheMax In gewisser Weise ja. Der genaue Inhalt der Satellitendaten ist für die Operationen in der Datenstruktur irrelevant (aber wahrscheinlich relevant für die Anwendung, die die Datenstruktur verwendet). Diese Entkopplung von Schlüssel und Daten erleichtert das Entwerfen effizienter Datenstrukturen.
Diskrete Eidechse