컴퓨터 과학의 '핵심'이란 무엇입니까?


14

컴퓨터 과학에서 '키'의 의미가 정확히 무엇인지에 대해 약간 혼란스러워합니다. 키-값 쌍, 기본 키 등을 이해하고 있습니다. 그러나 '키'라는 용어 자체의 의미에 대한 정의를 찾을 수 없습니다.

내가 알 수있는 한 단지 데이터 조각을 의미합니다. CLRS에서 트리 노드와 관련된 데이터를 '키'라고합니다. 해시 테이블을 검색하는 데이터를 '키'라고합니다. 이것이 '핵심'인가?


18
특정 기술적 정의가 없습니다. 단어의 사용은 일반적으로 정상, 영어 정의, 예를 들어 영감 merriam-webster.com/dictionary/key 또는 오히려 나는 "정의 말해야 ". 일반적으로 단일 연구 분야 내에서도 여러 상황에서 사용되는 일반적인 영어 단어에 대한 통일 된 기술적 정의 가 없을 것으로 기대합니다 .
Derek Elkins는

4
그것은 당신의 키보드에있는 것들 중 하나 일 수도 있습니다 :-)
jamesqf

실제 영어와 동일합니다. 주요 인물 = 이야기의 주요 인물, 주요 증거 = 사건 해결을 이끄는 주요 증거, 주요 = 문을 여는 주요 메커니즘 등. "주된 방법" 영어로 된 것 " CS에만 해당되는 것은 아닙니다
slebetman

암호화 의미의 "키"도 있습니다. 언급 한 데이터 조회 예제와는 다른 것으로 간주됩니다.
200_success

@slebetman 'key'는 실제로 영어에서 많은 용도를 가지고 있지만 CS의 하위 필드에 매우 특정한 정확한 정의를 가진 많은 사용법이 있습니다.
이산 도마뱀

답변:


30

가장 일반적인 의미에서 키는 일부 데이터를 검색하는 데 필요한 정보입니다. 그러나이 의미는 처리중인 상황에 따라 다르게 나타납니다.

언급 한 문맥에서 키는 구조의 특정 위치에서 키 를 검색하는 데 사용되는 전체 데이터 의 고유 식별자 입니다. 각 키는 하나의 항목에만 연결되므로 특정 데이터 집합을 찾는 데 사용할 수 있습니다. 데이터 구조는 일반적으로 키를 찾는 것이 모든 데이터를 통한 선형 검색보다 훨씬 효율적으로 구성됩니다. 때때로 키는 실제로 데이터의 일부이며 데이터베이스와 함께 기본 키와 같이 함께 저장됩니다. 다른 경우에는 해시 맵과 같이 데이터 자체와 분리됩니다. 데이터 구조는 종종 효율적인 검색 알고리즘을 지원하기 위해 키 (및 키만)에 대해 추가 처리를 수행합니다 (예 : 해시 맵에서, 키가 해시 코드로 변환되거나 데이터베이스가 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.