추상 데이터 구조와 콘크리트 데이터 구조의 차이점은 무엇입니까?


17

연관 배열 (예 : 맵 또는 사전)과 해싱 테이블은 동일한 개념이라고 생각했습니다. Wikipedia 이라고 생각했습니다.

바인딩 수가 매우 적은 사전의 경우 연결된 바인딩 목록 인 연결 목록을 사용하여 사전을 구현하는 것이 좋습니다. ...

연관 배열의 가장 일반적으로 사용되는 범용 구현은 해시 테이블 (바인딩 배열)과 가능한 각 키를 배열 인덱스에 매핑하는 해시 함수를 사용하는 것입니다. ...

사전은 이진 검색 트리 또는 기수 트리, 시도, Judy 배열 또는 반 엠데 보아스 트리와 같은 특정 유형의 키에 특화된 데이터 구조에 저장 될 수도 있습니다. ...

따라서 내 문제는 연관 배열 (예 : 맵 또는 사전)이 추상 데이터 유형이고 해싱 테이블이 구체적인 데이터 구조이며 다른 구체적인 데이터 구조를 사용하여 구현 할 수 있다는 것을 모른다는 것입니다. 동일한 추상 데이터 형식.

내 질문은

  • 추상 데이터 구조와 구체적인 데이터 구조의 차이점과 관계는 무엇입니까?

  • 각각에 대한 예는 무엇입니까 (추상적이고 구체적인 데이터 구조)? 더 좋습니다.

  • 어떤 추상 데이터 구조를 구현하는 데 사용할 수있는 구체적인 데이터 구조의 목록이 있습니까? 하나 있으면 좋을 것입니다.

답변:


17

ADT (추상 데이터 형식)는 기본적으로 API이며 구체적인 데이터 구조는 해당 API의 구현을 제공합니다. 주어진 ADT에 대해, ADT에 의해 기술 된 질의 및 업데이트 동작을 지원하는 구체적인 데이터 구조의 선택이 종종있다. 주어진 ADT에 대한 모든 구체적인 데이터 구조는 ADT에 설명 된 모든 작업을 지원해야하지만 (임의의 구조 일 경우 약간의 성공 가능성이있을 수 있음) 각 콘크리트 구조는 각 작업의 실행 시간을 다르게 보장 할 수 있습니다. 주어진 ADT에 대해 구현할 구체적인 데이터 구조의 선택은 일반적으로 각 작업의 효율성 우선 순위 (구조 초기화 포함)와 다양한 데이터 유형을 구현하고 유지하는 복잡성에 따라 달라집니다.

단일 답변에 나열 할 ADT 및 해당 콘크리트 구조가 너무 많지만 몇 가지 예가 있습니다.

  • Find(x)엑스엑스Insert(x)Delete(x)

  • Findsuccessor(x)에스엑스에스에스<

  • 우선 순위 대기열이 필요로하는 ADT이다 insertdelete-min(뿐만 아니라 때로는 다른 작업을 같은 작업 find-min increase-key또는 delete-key). 우선 순위 큐 ADT를 구현하는 데이터 구조는 다음과 같습니다.

    1. 정렬되지 않은 연결 목록으로, 빠르지 insert만 느립니다 delete-min.

    2. 빠르지 delete-min만 느린 정렬 된 링크 목록insert

    3. insertdelete-min에스영형아르 자형()

    4. 이진 힙 대수 보유 insert하고 delete-min, 선형 시간 초기화.

    5. 힙 구현 의 다른 변형도 있습니다 .

  • stabbing(x)엑스


9

추상 데이터 유형 은 사용 가능한 작업 및 준수하는 법률을 설명 합니다 . 예를 들어 사전을 사용하면 주어진 키 아래에 값을 저장하고 키에 대한 값을 검색 할 수 있으며, 먼저 값을 저장 한 다음 동일한 키로 값을 검색하면 저장 한 값을 얻을 수 있습니다. 스택에는 푸시 및 팝 작업이 있습니다.

구체적 데이터 유형은 이러한 작업이 실제로 어떻게 구현 되는지를 나타 냅니다.


감사! 어떤 공통 데이터 구조가 어떤 추상적, 구체적인가에 대한 목록이 있습니까?
14:41에 모든

일반적인 목록은 아니지만 xlinux.nist.gov/dads
Alexey Romanov
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.