Я немного запутался в том, что именно означает «ключ» в компьютерной науке. Я понимаю пары ключ-значение, первичные ключи и т. Д. Но я не могу найти определение того, что сам по себе термин «ключ» означает.
Насколько я могу судить, это просто часть данных. В CLRS данные, связанные с узлами дерева, называются «ключами». Данные для поиска в хеш-таблице называются «ключом». Это то, что является «ключом»?
terminology
TheMax
источник
источник
Ответы:
В самом общем смысле ключ - это фрагмент информации, необходимый для извлечения некоторых данных. Однако, это значение играет по-разному, в зависимости от того, с какой именно ситуацией вы сталкиваетесь.
В упомянутых вами контекстах ключ является уникальным идентификатором для полных данных, используемых для извлечения их из некоторого места в структуре. Каждый ключ связан только с одним элементом, поэтому его можно использовать для поиска определенного набора данных. Структура данных обычно организуется таким образом, что поиск ключа намного эффективнее, чем линейный поиск по всем данным. Иногда ключ фактически является частью данных и хранится вместе с ними (например, первичные ключи в базе данных); в других случаях он отделен от самих данных (как в хэш-карте). Структура данных также часто выполняет дополнительную обработку ключа (и только ключа) для поддержки его эффективного алгоритма поиска (например, в хэш-карте, ключ преобразуется в хэш-код или база данных будет индексировать первичные ключи с использованием B-дерево).
В криптографии ключ используется в некотором роде в большей степени, чем физические ключи, используемые в замках. Это фрагменты данных, необходимые для получения оригинала из зашифрованных данных (чтобы, так сказать, «разблокировать» данные).
источник
Ключ в контексте структур данных (например, в книге КСПСЕ) представляет собой значение (часто целое число) , который используется для идентификации определенного компонента структуры данных. Часто ключи определяют, как хранятся или обрабатываются базовые данные. Например, в бинарных деревьях поиска мы имеем, что для каждого узла ключ этого узла больше, чем ключи в левом поддереве и меньше, чем ключи в правом поддереве. Это свойство облегчает поиск данного ключа (или определяет, что нет узла с таким ключом).
На практике наши «реальные» данные часто являются не ключевыми, а чем-то большим и более значимым, чем одно число. Эти данные называются спутниковыми данными и могут в основном игнорироваться при работе с структурами данных, если спутниковые данные перемещаются при каждом перемещении ключа (в противном случае вы теряете данные).
Концепция ключа аналогична в контексте баз данных, но там часто требуется, чтобы ключ был уникальным . Например, первичный ключ должен быть уникальным. Это требование часто является необязательным в контексте структур данных, но иногда делается для простоты.
В криптографии ключ обычно относится к (часто секретному, но не всегда!) Параметру, который необходим для шифрования или дешифрования с помощью данного алгоритма шифрования или дешифрования. Ключи, используемые для шифрования и дешифрования, должны быть «связаны» (в симметричной криптографии, должны быть одинаковыми), чтобы процесс шифрования или дешифрования был успешным.
источник