Saya agak bingung tentang apa sebenarnya arti 'kunci' dalam ilmu komputer. Saya memahami pasangan nilai kunci, kunci primer, dll ... Tapi saya tidak dapat menemukan definisi dari apa arti istilah 'kunci' dengan sendirinya.
Sejauh yang saya tahu itu hanya sepotong data. Dalam CLRS, data yang terkait dengan simpul pohon disebut sebagai 'kunci'. Data untuk mencari tabel hash disebut 'kunci'. Inikah 'kunci' itu?
terminology
TheMax
sumber
sumber
Jawaban:
Dalam arti paling umum, kunci adalah sepotong informasi yang diperlukan untuk mengambil beberapa data. Namun, makna ini bermain berbeda tergantung pada situasi apa yang Anda hadapi.
Dalam konteks yang Anda sebutkan, kunci adalah pengidentifikasi unik untuk data lengkap yang digunakan untuk mengambilnya dari beberapa lokasi dalam struktur. Setiap kunci dikaitkan dengan hanya satu item, sehingga dapat digunakan untuk menemukan set data tertentu. Struktur data biasanya akan diatur sedemikian rupa sehingga menemukan kuncinya jauh lebih efisien daripada pencarian linear melalui semua data. Terkadang kunci sebenarnya adalah bagian dari data dan disimpan bersama dengannya (seperti kunci primer dalam basis data); di lain waktu, itu dipisahkan dari data itu sendiri (seperti dalam peta hash). Struktur data juga akan sering melakukan pemrosesan ekstra pada kunci (dan hanya kunci) untuk mendukung algoritma pencarian efisien (seperti dalam peta hash, kunci tersebut dikonversi menjadi kode hash, atau database akan mengindeks kunci utama menggunakan a B-tree).
Dalam kriptografi, kunci digunakan dalam arti yang lebih mirip dengan kunci fisik yang digunakan pada kunci. Mereka adalah bagian data yang diperlukan untuk mendapatkan yang asli dari data yang dienkripsi (untuk "membuka" data, jadi untuk berbicara).
sumber
Sebuah kunci dalam konteks struktur data (seperti di CLRS buku) adalah nilai (sering integer) yang digunakan untuk mengidentifikasi komponen tertentu dari data struktur. Seringkali, kunci menentukan bagaimana data yang mendasarinya disimpan atau dimanipulasi. Sebagai contoh, di pohon pencarian biner kami memiliki itu untuk setiap node, kunci dari node itu lebih besar dari tombol di sub-tree kiri dan lebih kecil dari yang ada di subtree kanan. Properti ini membuatnya lebih mudah untuk mencari kunci yang diberikan (atau menentukan tidak ada simpul dengan kunci seperti itu).
Dalam praktiknya, data 'aktual' kami sering kali bukan kunci, tetapi sesuatu yang lebih besar dan lebih relevan daripada satu angka. Data ini disebut data satelit dan sebagian besar dapat diabaikan ketika berhadapan dengan manipulasi pada struktur data, selama data satelit bergerak setiap kali kunci dipindahkan (jika tidak, Anda kehilangan jejak data Anda).
Konsep kunci serupa dalam konteks basis data, tetapi sering kali diperlukan kunci itu unik . Kunci utama harus unik, misalnya. Persyaratan ini sering diperlukan dalam konteks struktur data, tetapi kadang-kadang dibuat untuk kesederhanaan.
Dalam kriptografi, kunci biasanya merujuk ke parameter (sering rahasia, tetapi tidak selalu!) Yang diperlukan untuk mengenkripsi atau mendekripsi dengan algoritma en- atau dekripsi yang diberikan. Kunci yang digunakan untuk mengenkripsi dan mendekripsi harus 'terkait' (dalam kriptografi simetris, kebutuhan harus sama) agar proses enkripsi atau dekripsi berhasil.
sumber