'คีย์' ในวิทยาศาสตร์คอมพิวเตอร์คืออะไร?


14

ฉันสับสนเล็กน้อยเกี่ยวกับความหมายของ 'คีย์' ในวิทยาศาสตร์คอมพิวเตอร์ ฉันเข้าใจคู่คีย์ - ค่า, คีย์หลัก, ฯลฯ ... แต่ฉันไม่สามารถหาคำจำกัดความของคำว่า 'คีย์' ได้ด้วยตัวเอง

เท่าที่ฉันสามารถบอกได้ว่ามันหมายถึงชิ้นส่วนของข้อมูล ใน CLRS ข้อมูลที่เกี่ยวข้องกับโหนดต้นไม้จะถูกเรียกว่า 'keys' ข้อมูลในการค้นหาตารางแฮชเรียกว่า 'กุญแจ' นี่คือสิ่งที่ 'สำคัญ' คืออะไร?


18
ไม่มีคำจำกัดความทางเทคนิคเฉพาะหนึ่งข้อ การใช้คำมักจะได้รับแรงบันดาลใจจากคำจำกัดความภาษาอังกฤษตามปกติเช่นmerriam-webster.com/dictionary/keyหรือฉันควรจะพูดว่า "definition s " โดยทั่วไปความคาดหวังของคุณควรเป็นเพราะไม่มีคำจำกัดความด้านเทคนิคที่รวมเป็นหนึ่งเดียวสำหรับคำภาษาอังกฤษทั่วไปที่ใช้ในหลายบริบทแม้จะอยู่ในสาขาวิชาเดียว
Derek Elkins ออกจาก SE

4
มันอาจเป็นหนึ่งในสิ่งเหล่านั้นบนแป้นพิมพ์ของคุณ :-)
jamesqf

จริงๆแล้วมันเหมือนกันในภาษาอังกฤษปกติ - ตัวเลขหลัก = บุคคลหลักในเรื่อง, หลักฐานชิ้นสำคัญ = หลักฐานหลักที่นำไปสู่การแก้ไขคดี, คีย์ = กลไกหลักในการปลดล็อคประตู ฯลฯ มันหมายถึง "วิธีหลัก เพื่อเข้าถึงบางสิ่ง "ในภาษาอังกฤษ มันไม่เฉพาะ CS
slebetman

นอกจากนี้ยังมี "คีย์" ในแง่การเข้ารหัสซึ่งฉันจะพิจารณาว่าแตกต่างจากตัวอย่างการค้นหาข้อมูลที่คุณได้กล่าวถึง
200_success

@slebetman ในขณะที่ 'สำคัญ' แน่นอนมีประโยชน์หลายอย่างในภาษาอังกฤษมีประเพณีหลายอย่างที่มีคำจำกัดความที่แม่นยำที่เฉพาะเจาะจงมากกับ (สาขาย่อยของ) CS
จิ้งจกไม่ต่อเนื่อง

คำตอบ:


30

โดยทั่วไปแล้วคีย์คือส่วนของข้อมูลที่จำเป็นในการดึงข้อมูลบางอย่าง อย่างไรก็ตามความหมายนี้เล่นแตกต่างกันไปขึ้นอยู่กับสถานการณ์ที่คุณกำลังเผชิญ

ในบริบทที่คุณพูดถึงคีย์คือตัวระบุที่ไม่ซ้ำกันสำหรับข้อมูลทั้งหมดที่ใช้ในการดึงข้อมูลจากบางตำแหน่งในโครงสร้าง แต่ละคีย์จะเชื่อมโยงกับรายการเดียวเท่านั้นดังนั้นจึงสามารถใช้เพื่อค้นหาชุดข้อมูลเฉพาะ โครงสร้างข้อมูลมักจะถูกจัดระเบียบในลักษณะที่การค้นหาคีย์มีประสิทธิภาพมากขึ้นกว่าการค้นหาเชิงเส้นผ่านข้อมูลทั้งหมด บางครั้งคีย์เป็นส่วนหนึ่งของข้อมูลและเก็บไว้พร้อมกับมัน (เช่นคีย์หลักในฐานข้อมูล); บางครั้งมันถูกแยกออกจากข้อมูลเอง (เช่นในแผนที่แฮช) โครงสร้างข้อมูลมักจะทำการประมวลผลเพิ่มเติมบนคีย์ (และเฉพาะคีย์) เพื่อสนับสนุนอัลกอริธึมการค้นหาที่มีประสิทธิภาพ (เช่นในแผนที่แฮชคีย์จะถูกแปลงเป็นรหัสแฮชหรือฐานข้อมูลจะทำดัชนีคีย์หลักโดยใช้ ต้นไม้ B)

ในวิทยาการเข้ารหัสลับคีย์ถูกใช้ในความหมายคล้ายกับคีย์ทางกายภาพที่ใช้ในการล็อก พวกเขาเป็นส่วนหนึ่งของข้อมูลที่จำเป็นในการรับต้นฉบับจากข้อมูลที่เข้ารหัส (เพื่อ "ปลดล็อก" ข้อมูลเพื่อพูด)


3
เพื่อป้องกันความสับสนที่อาจเกิดขึ้น: ในหนังสือ CLRS โดยปกติกุญแจจะไม่ถือว่าเป็นเอกลักษณ์เนื่องจากไม่จำเป็นสำหรับโครงสร้างข้อมูลจำนวนมาก
จิ้งจกไม่ต่อเนื่อง

โดยทั่วไปแล้วคีย์คือข้อมูลเพื่อนำทางโครงสร้างข้อมูล ที่เหมาะสมกับฉันเช่นใช้กุญแจทางกายภาพเพื่อดึงบางสิ่งบางอย่างจากกล่องล็อค
TheMax

@TheMax ฉันจะไม่พูดว่านิยามนั้นเหมาะกับการเข้ารหัสเนื่องจากไม่มี "การนำทาง" ที่จะต้องทำ มันเหมาะกับรายการตัวอย่างของคุณ แต่ฉันไม่เห็นว่ามันขนานกับฟิสิคัลคีย์ในกรณีเหล่านั้น
jpmc26

@ jpmc26 คำอธิบายที่เป็นจุดพิจารณา XOR bitwise ของคีย์กับข้อมูล
24419

ในระดับที่เราเห็นอยู่ทุกวันนี้แฮชที่ใช้กับกุญแจสังเคราะห์อาจไม่เหมือนกันจริง ๆ และอาจต้องใช้ตัวแบ่งเบรกเกอร์หรือการผสม
mckenzm

12

สำคัญในบริบทของโครงสร้างข้อมูล (เช่นใน CLRS หนังสือ) เป็นค่า (มักจะเป็นจำนวนเต็ม) ที่ใช้ในการระบุส่วนหนึ่งของข้อมูลโครงสร้าง บ่อยครั้งที่คีย์กำหนดวิธีการจัดเก็บหรือจัดการข้อมูลพื้นฐาน ตัวอย่างเช่นในแผนผังการค้นหาแบบไบนารีเรามีปุ่มนั้นสำหรับทุกโหนดปุ่มของโหนดนั้นมีขนาดใหญ่กว่าปุ่มในต้นไม้ย่อยด้านซ้ายและเล็กกว่าในต้นไม้ย่อยด้านขวา คุณสมบัตินี้ช่วยให้ค้นหาคีย์ที่กำหนดได้ง่ายขึ้น (หรือพิจารณาว่าไม่มีโหนดที่มีคีย์ดังกล่าว)

ในทางปฏิบัติข้อมูล 'ที่เกิดขึ้นจริง' ของเรามักไม่ได้เป็นสิ่งสำคัญ แต่เป็นสิ่งที่มีขนาดใหญ่และมีความเกี่ยวข้องมากกว่าซึ่งเป็นตัวเลขเดียว ข้อมูลนี้เรียกว่าข้อมูลดาวเทียมและส่วนใหญ่จะถูกละเว้นเมื่อจัดการกับโครงสร้างข้อมูลตราบใดที่ข้อมูลดาวเทียมเคลื่อนที่เมื่อใดก็ตามที่คีย์ถูกย้าย (มิฉะนั้นคุณจะสูญเสียการติดตามข้อมูลของคุณ)


แนวคิดของคีย์จะคล้ายกันในบริบทของฐานข้อมูล แต่มีก็มักจะเป็นสิ่งจำเป็นที่สำคัญคือไม่ซ้ำกัน คีย์หลักจะต้องไม่ซ้ำกันเช่น ข้อกำหนดนี้มักเป็นสิ่งจำเป็นในบริบทของโครงสร้างข้อมูล แต่บางครั้งก็ทำเพื่อความเรียบง่าย

ในการเข้ารหัสคีย์มักจะอ้างถึงพารามิเตอร์ (มักจะเป็นความลับ แต่ไม่เสมอไป!) ที่จำเป็นในการเข้ารหัสหรือถอดรหัสด้วยอัลกอริทึมการเข้ารหัสหรือการถอดรหัสที่กำหนด กุญแจที่ใช้ในการเข้ารหัสและถอดรหัสจะต้องเป็น 'ที่เกี่ยวข้อง' (ในการเข้ารหัสแบบสมมาตรจำเป็นต้องเหมือนกัน) เพื่อให้กระบวนการในการเข้ารหัสหรือถอดรหัสประสบความสำเร็จ


ข้อมูลดาวเทียมและคีย์ต่างกันอย่างไร? จากสิ่งที่ฉันเข้าใจข้อมูลดาวเทียมคือข้อมูลที่จัดระเบียบโดยโครงสร้างข้อมูลที่ไม่ได้เป็นส่วนหนึ่งของโครงสร้างจริง ดังนั้นฉันสามารถพูดได้ว่าคีย์และข้อมูลดาวเทียมเป็นข้อมูลทั้งสองในโครงสร้าง แต่คีย์เป็นส่วนหนึ่งของโครงสร้างและข้อมูลดาวเทียมไม่ใช่
TheMax

1
@TheMax ในทางที่ใช่ เนื้อหาที่แม่นยำของข้อมูลดาวเทียมนั้นไม่เกี่ยวข้องกับการดำเนินการกับโครงสร้างข้อมูล (แต่น่าจะเกี่ยวข้องกับแอปพลิเคชันโดยใช้โครงสร้างข้อมูล) การแยกคีย์และข้อมูลออกทำให้การออกแบบโครงสร้างข้อมูลมีประสิทธิภาพยิ่งขึ้น
จิ้งจกไม่ต่อเนื่อง
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.