KR20010033096A - 데이터 구조의 관리 - Google Patents

데이터 구조의 관리 Download PDF

Info

Publication number
KR20010033096A
KR20010033096A KR1020007006459A KR20007006459A KR20010033096A KR 20010033096 A KR20010033096 A KR 20010033096A KR 1020007006459 A KR1020007006459 A KR 1020007006459A KR 20007006459 A KR20007006459 A KR 20007006459A KR 20010033096 A KR20010033096 A KR 20010033096A
Authority
KR
South Korea
Prior art keywords
record
symbol
current
pointer
symbol sequence
Prior art date
Application number
KR1020007006459A
Other languages
English (en)
Inventor
뵈른슨스테판
Original Assignee
클라스 노린, 쿨트 헬스트룀
텔레폰악티에볼라겟엘엠에릭슨(펍)
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 클라스 노린, 쿨트 헬스트룀, 텔레폰악티에볼라겟엘엠에릭슨(펍) filed Critical 클라스 노린, 쿨트 헬스트룀
Publication of KR20010033096A publication Critical patent/KR20010033096A/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9024Graphs; Linked lists
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99932Access augmentation or optimizing
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99933Query processing, i.e. searching
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99951File or database maintenance
    • Y10S707/99952Coherency, e.g. same view to multiple users

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

본 발명은 데이터 구조 및, 데이터 구조의 심벌(예컨대, 수 또는 단어) 시퀀스를 관리하는 방법에 관한 것이다. 복합 레코드 세트를 가진 해결방법을 이용하는데, 여기서 제1레코드 세트는 각 심벌(예컨대, 숫자 또는 문자)마다 한 요소를 갖는 포인터 어레이 레코드인 연결된 레코드 목록으로 정해진다. 제2레코드 세트는 심벌의 완전한 시퀀스가 저장되는 스트링으로 정해진다. 데이터 구조의 관리는 심벌 시퀀스의 저장, 삭제 및, 발견/조사를 적절히 포함한다.

Description

데이터 구조의 관리{MANAGEMENT IN DATA STRUCTURES}
데이터 구조의 심벌을 관리 또는 "핸들링(handling)" 할 때, 즉 예를 들어 저장, 삭제, 또는 조사할 때, 신속한 관리와, 또한 메모리 공간을 지나치게 많이 이용하지 않는 심벌 관리 두 가지 모두 요구된다. 물론, 이러한 요구는 처리되는 데이터 양에 따라 증가한다.
오늘날에는, 예컨대 매일 수백만 회 조사되어야 하는 전화 번호 레지스터(register)와 같이 거대한 양의 데이터를 가진 데이터베이스(database)가 존재한다. 근대 사회의 어디서든지, 빈번하게 접근되는 전자 사전(electronic dictionary) 및 정보 테이블이 있다. 상기 레지스터의 데이터를 발견해내기 위한 조사 및 저장하는 방법은 변화하고 있으며, 어느 정도는 효율적이다. 그러나, 공통적인 문제점은, 상기 레지스터가 너무 많은 공간을 요구하며 시간을 낭비하여, 실시간(real time) 응용에 있어 관리 동작의 빠르고 정확한 결과가 반드시 필요하다는 점이다.
예컨대, 전화 번호와 같은 긴 심벌 스트링(string)을 다룰 때 발생할 수 있는 일반적인 문제점은, 소정의 전화번호가 미리 정해져있는 번호 집합에 속하는 지여부를 가능한 빨리 판정할 수 있어야 한다는 것이다. 예컨대, 가능성있는 응용분야는 블랙 리스트(black list) 상에 있는 번호로서, 이는 외부로부터의 호출에 접근할 수 없다. 상기 예는 전자 사전에 있는 소정의 단어를 찾는 것과 마찬가지이다. 이것을 구현하기 위한 선행기술의 실시예는 연결된 레코드(records) 목록으로 구현되는 데이터 구조를 이용한다. 상기 레코드는 각 값(예컨대 숫자)마다 요소(element)를 가진 포인터(pointers) 어레이이다. 블랙 리스트 상의 전화번호를 삽입하면, 마지막 수의 요소가 널(null) 포인터를 포함하는 레코드에서 종료하는 연결된 레코드 목록이 된다. 상기 목록을 통해 조사하여 상기 삽입된 것 중 어느 것에도 속하지 않는 수의 시퀀스를 찾아냄으로써 호출을 진행할 수 있다. 이러한 실시예는 이하의 도면을 참조하면 더욱 명확해진다.
상기 구조는 최소 정보를 이용하여 유효하지 않은 수를 검출할 수 있게 하는데; 현재 가지고있지 않는 요소 부닥치거나 또는 널 포인터를 벗어나 계속해서 조사를 시도하면 곧, 음의 결과값으로 종료될 수 있다.
이와 같은 소위 단일 레코드 유형의 구조가 지닌 문제점은 상기 구조가 긴 시퀀스를 저장함에 있어 매우 공간 집약적(space-intensive)이라는 점이다. 대개의 경우에 있어서, 일련하여 있는 것 중 맨 처음 레코드 만이 하나 이상의 현재 요소를 포함하게 된다. 따라서, 트레일링(trailing) 심벌로 이용되지 않는 공간이 매우 많게 된다.
또 다른 종류의 선행 기술이 Sussenguth에 의해 공개되어 있는데, 이는 1963년 5월, ACM 위원회의 제6권 제5호의 "Use of Tree Structures for Processing Files"이다. 여기서, Sussenguth는 트리 구조(tree structures)를 이용하여 파일을 처리하는 것을 기재하고 있다. Sussenguth에 의해 처음 제시된 이러한 응용은 가변 길이의 키 값과 초기 일치성(initial coincidences)을 가진 큰 파일을 조사하여 갱신하는 것이다. 상기에 대한 소정의 응용분야는, 예컨대 철자 검사기(specelling checkers) 및 번역기(translators) 용으로 사전 데이터를 저장하는 것이다. 상기 선행 기술 또한 도면을 참조하여 이하 더욱 명확해지게 된다.
국제 IMB-출원 제 PCT/EP94/02135 호에는, 상이한 길이의 키에 대해 가장 잘 맞는 것을 찾아내는 주제의, 예컨대 루팅 방식(routing system)에서 IP-어드레스가 제시되는 계획이 제안되어 있다. 그러나, 최적 원리와 조사 방법에 대한 해결책은 본 발명에 기재되어 있는 것과 상이하다.
본 발명은 데이터 구조의 심벌(symbols), 바람직하게는 문자와 숫자를 관리하는 직접적이며 공간 효율적인 방법에 관한 것이다.
도 1은 선행 기술에 따른 데이터 구조에 수를 저장하는 레코드 레이아웃(layout)을 나타내는 도면.
도 2는 선행 기술에 따른 데이터 구조에 수를 저장하는 또 다른 레코드 레이아웃을 나타내는 도면.
도 3은 선행 기술에 따른 데이터 구조에 수를 저장하는 레코드 레이아웃을 간단히 나타내는 도면.
도 4 내지 8은 본 발명에 따른 데이터 구조에 수를 이어서 삽입하는 레코드 레이아웃을 나타내는 도면.
도 9는 본 발명에 따른 삽입 절차에 대한 흐름도.
도 10 내지 11은 본 발명에 따른 데이터 구조에 수를 저장하는 레코드 레이아웃을 나타내는 도면.
도 12는 본 발명에 따른 데이터 구조에 수를 저장하는 상태 매트릭스 표(state matrix table)를 나타내는 도면.
도 13은 본 발명에 따른 삭제 절차에 대한 흐름도.
도 14는 본 발명에 따른 발견/조사 절차에 대한 흐름도.
도 15는 단일 레코드 유형의 설계 대 복합 레코드 유형의 설계에 대한 기억장소 요구량을 나타내는 도면.
소프트웨어 공학 논문(literature)에는, 검색(trie)("reTRIEve") 저장/조사 방법이 "사전" 데이터를 관리하는 보편적인 방법으로 기재되어 있으며, 이것을 조사하여 소정의 단어가 존재하는지 여부를 알아낸다. 검색에 필요한 공간 또한 강조되며, 이러한 요구를 제한하기 위한 다양한 방법이 제시된다. 그러나, 간단한 방식으로 공간을 확보하는 동시에 조사 속도를 유지하는 방법은 결여되어 있는 듯하다.
본 발명의 핵심은, 선행 기술 방법을 새로운 문제와 결합하여, 복합(double) 레코드 세트를 가진 데이터 구조를 이용하는 해결책을 형성하는 방법이다. 이는 메모리 공간을 절약하기 위한 것이며, 숫자 또는 문자와 같은 심벌을 포함하고 있는 긴 레코드 세트를 통해 저장하고 조사해야 하는 응용에서도 역시 매우 높은 성능을 갖는다.
이러한 해결방법은 데이터 구조와, 데이터 구조에서 단어나 수를 저장, 삭제 및 발견하는 방법을 포함하는데, 여기서 복합 레코드 세트라 함은 제1세트가 선행 기술에 나타나있는 바와 같은 연결된 레코드 목록을 의미하지만, 완전한 숫자를 포함하는 제2의 스트링 목록이 또한 존재한다. 실시예는 상기 해결책의 장점이 명확히 나타나며 전화번호를 이용하는 것이 제시된다. 그러나, 본 발명은 상기 응용으로만 제한되는 것으로 보아서는 안된다. 숫자 이외의(예컨대, 문자) 다른 심벌 시퀀스도 이용할 수 있다. 또한, 빠르고 효과적인 심벌 관리가 필요할 때(예컨대, 전자 사전을 이용하여 조사함) 및, 최대 시/공간 성능이 중요할 때 언제라도 상기 아이디어를 이용할 수 있다. 이러한 데이터 구조 관리에 대한 필요성은, 수 천 개의 서브세트(subsets)의 저장/조사가 다양한 전기통신 서비스에서 이루어지며 이렇게 하기 위한 빠르고 공간 효율적인 방법이 시스템의 현재 성능에 중요할 때 자명해진다.
참신한 것으로 여겨지는 본 발명의 특징은 특히 첨부한 특허청구범위에서 설명된다. 그러나, 본 발명의 다른 목적 및 특징과 함께, 구성 및 동작 방법 모두에 대한 본 발명 자체는, 첨부한 도면과 관련하는 다음 상세한 설명을 참조하면 가장 잘 이해할 수 있다.
본 발명에 대한 실시형태는 다음 도면과 관련하여 설명된다.
도 1은 관련 선행 기술의 실시예를 도시하는 것으로서, 전화호출(dialing) 가입자가 블랙 리스트 상에 있는지 여부를 빨리 찾아내기 위해, 단일 레코드 유형 구조의 연결된 레코드 목록에 블랙리스트상의 전화번호를 어떻게 삽입하는지를 설명하는 방법이 나타나있다. 여기서, 번호는 한 숫자씩 입력된다고 가정한다. 미리 정해져있는 번호에 속하지 않는 번호가 나타나면, 곧 조사를 종료하여 호출을 진행할 수 있다. 이러한 문제 범위는 종종 "검색 조사(trie search)(원래는 reTRIEve임)"라 하는 상기와 같으며, 관련 데이터 구조는 연결된 레코드 목록으로 구현된다. 레코드는 각 값마다 하나의 요소를 갖는 포인터 어레이이다(대개의 경우는 알파벳 심벌이며, 상기 경우에는 숫자 0-9임). 어떠한 유효한 시퀀스에 대해서도, 연결된 레코드 목록이 존재하며, 마지막 유효 심벌 요소가 널 포인터를 포함하는 레코드에서 종료한다. 따라서, 도 1은 시퀀스(123, 321 및, 3245)가 어떻게 표현되는지에 대한 실시예를 도시한다. 레코드내에 표시되는 위치는 "x" 표로 표현되며, 널 포인터는 "≠" 심벌로 표현된다.
도 2는 다른 종류의 선행 기술, 즉 상기 설명한 바와 같은 Sussenguth의 방법을 도시한다. 상기 도면에서, 각각 9개의 숫자를 가진 다섯가지의 전화번호가 Sussenguth에 따라 어떻게 저장되는지를 알 수 있다. 그 번호는 123456789, 321456789, 334567890, 351567890 및, 354567890이다. Sussenguth 가 제안한 구조에서 레코드 각각은 하나의 키 값(예컨대, 숫자)과 두 개의 포인터 값으로 구성된다. 제1포인터는 동일한 레벨상의 다른 레코드를 가리키는 것으로서, 이것은 같은 숫자 위치의 키 값을 포함하는 레코드이다. 제2포인터는 적어도 현재 정도(숫자의 개수)까지 동일한 초기 시퀀스를 가진 모든 수의 "다음 세트(filial set)"를 가리킨다. 따라서, 작은 사각형은, 단지 다음 세트만을 가리키는 레코드를 의미한다. 이러한 트레일링 레코드에 있어서, 동일한 숫자 위치(레코드에서의 중간 요소)를 표현하는 레코드에 대한 포인터는 전혀 없다.
Sussenguth의 해결책은 상기 설명한 단일 레코드 유형 트리의 해결책과 유사하지만, 상기 두 가지 방법 간의 차이점은, Sussenguth의 제안에서는 일부 소정 레벨에서의 숫자 위치가 어레이 요소로 표현되는 대신 포인터로 연결된다는 점이다.
도 3에서는, 상기와 동일한 실시예에 얼마나 많은 스트링이 필요한지를 알 수 있으며, 여기서 선행 기술에 제안되어 있는 바와 같은 단일 레코드 유형 구조의 기억장소(storage)를 이용한다. 작은 사각형은 하나의 요소만 이용되는 포인터 레코드를 의미한다. 상기 구조는 814 바이트의 데이터를 필요로하는데, 이는 본 발명에 따른 126바이트와 비교되는 것이다. 그 계산은 이하에서 설명된다.
그러나, 본 발명은 도 1의 데이터 구조를 2중 레코드 세트로 대체하는 해결책을 제안한다. 제1세트는 상기와 같이 연결된 레코드 목록이지만, 완전한 숫자를 포함하는 제2스트링 목록이 존재한다. 연결된 레코드는 상기와 같이 표시된 둘 이상의 요소가 존재하는 경우에만 이용된다. 종료하는 레코드 요소가 상응하는 스트링을 가리키게 된다.
도 4내지 8은, 상기와 동일한 시퀀스, 즉 123456789, 321456789, 334567890, 351567890 및, 354567890 한 숫자마다 삽입 원리가 적용되는 방법을 도시한다. 이러한 경우, 심벌 " ≠"은 포인터가 스트링 쪽으로되며 다른 레코드로 쪽으로 되지 않음을 나타낸다. 도 4 내지 8은 상기 수를 이어서 삽입하는 레코드 레이아웃을 도시한다.
포인터 어레이 레코드는 '유형 A'로 나타내는 반면, 수를 포함하는 스트링의 레코드는 '유형 B'로 나타낸다. 목록에 정해진 숫자가 없다고 하더라도, 유형 A의 맨 처음 레코드가 처음부터 존재한다. 상기 레코드의 모든 항목은 널 포인터로 시작된다. 이제, 새로운 숫자의 삽입 절차를 단계별로 설명한다. 또한, 도 4 내지 8은 단계별 진행 결과를 나타낸다.
이하에서 상기 실시예가 전화번호의 관리를 다룬다 하더라도, 그 데이터는 다른 심벌 시퀀스로도 구성될 수 있다는 것을 알아두어야 한다:
새로운 번호의 삽입:
1. 제1레코드이거나, 또는 처음에 제1 A-레코드를 가리키는 현재의 포인터가 가리키는 레코드인 현재의 레코드를 선택한다. 처음에 0으로 설정된 카운터(depth counter)를 하나 증가시킨다.
2. 삽입할 번호의 다음 숫자를 선택한다. 처음에 이것은 = 제1숫자이다. 이하에서는 이것을 '현재 숫자'라 한다.
3. 현재 숫자값을 현재 레코드로의 인덱스(index)로 이용하여, 레코드에서의 상응하는 위치에서 현재 포인터를 발견한다. 상기 포인터가 유형 A의 또 다른 레코드를 가리킨다면 단계 1로 돌아가고, 그렇지 않다면 계속 진행한다.
4. 현재 포인터가 널이라면, 유형 B의 레코드를 생성하여 그 안에 수 전체를 저장한다. 현재의 포인터를 갱신하여 새로운 B-레코드를 가리킨다. 이것으로서 삽입 절차가 종료한다. 그렇지 않다면, 계속 진행한다.
5. 현재의 B-레코드가 삽입할 수와 동일한 수의 값을 포함하는지를 검사한다. 그러한 경우, 상기 삽입 절차는 오류인 '수 존재'로 종료한다. 그렇지 않다면, 계속 진행한다.
6. 이전 포인터를 다시 정의함을 또한 의미하는 새로운 A-레코드를 생성하여 연결시킨다. 카운터를 하나 증가시킨다. 삽입될 수의 다음 숫자를 현재 숫자로 한다.
7. 현재의 B-레코드에서, 카운터에 상응하는 숫자를 선택한다. 이 수를 상기 수에 삽입될 수의 현재 숫자와 비교한다. 상기 숫자가 일치한다면, 단계 6으로 되고, 그렇지 않다면 계속 진행된다.
8. 새로운 B-레코드를 생성하고, 그 곳에 새로운 수 전체를 삽입하여, 인덱스 위치에서 B-레코드로의 포인터를 현재 숫자에 상응하는 이전의 A-레코드에 삽입한다. 이것으로서 삽입 절차가 종료한다.
도 4 내지 8을 보면, 상기 단계별 절차에 따라 수 123456789, 321456789, 334567890, 351567890 및, 354567890 의 삽입 결과를 알 수 있다.
도 4는 제1수의 삽입을 도시한다. 처음 A-레코드와 하나의 B-레코드 엔트리(entry)가 정해진다.
도 5는 제2수의 삽입을 도시한다. 새로운 B-레코드 엔트리가 정해진다.
도 6은 제3수의 삽입을 도시한다. 새로운 A-레코드가 생성되며, 정해진 새로운 B-레코드 엔트리와 삽입할 제2수로의 이전 포인터가 다시 정해진다.
도 7은 제4수의 삽입을 도시한다. 새로운 B-레코드 엔트리가 정해진다.
도 8은 상기 실시예에서의 제5의 마지막 수의 삽입을 도시한다. 또 하나의 A-레코드가 여기서 필요하다. 또한, 여기서 이전 포인터(제4수)가 어떻게 다시 정해지는지 알 수 있다.
본 발명에 따른 삽입 절차의 모두스 오퍼랜디(modus operandi)는 도 9에 나타나있는 흐름도로 쉽게 도시될 수 있다.
첨부 도면 10 내지 11을 이용하여 도 12를 보면, 상기 방법에 대한 또 다른 설명이 존재한다. 여기서, 상기와 같이 주어진 실시예에 제5의 마지막 수(354567890)의 삽입을 상태 매트릭스 형태로 설명한다. 여기서, 도 10(전(前)) 및 11(후(後))는 여기서 참조 번호를 이용하여 나타나있다.
이제, 상기 삽입 절차는 공간 효율적인 한편 조사 속도를 유지한다. 상기 아이디어에 대한 범위는 본 발명의 실제 범위내에서 실현되어, 하나의 일반적인 발명 개념을 형성할 수 있다. 상기 설명한 삽입 방법을 이용하면, 레코드의 수를 삭제하는 방법 및 수를 발견하는 방법은 상기 아이디어에 대한 꼭 필요한 범위가 된다. 관련 흐름도를 나타내는 도 11 및 12와 함께 삭제 및 발견/조사 절차에 대한 단계별 설명은 상기 방법을 명료하게 한다.
기존 수의 삭제:
1. 현재 레코드를 선택하는데, 이는 제1레코드이거나, 또는 현재 포인터가 가리키는 레코드이다. 처음에 0으로 설정된 카운터를 하나 증가시킨다.
2. 삭제할 수의 다음 숫자를 선택한다. 처음에 이것은 = 제1숫자이다. 이하, 이것을 '현재 숫자'라 한다.
3. 현재 숫자의 값을 현재 레코드로의 인덱스로 이용하여, 레코드의 상응하는 위치에서 새로운 현재 포인터를 찾는다. 카운터에 상응하는 인덱스 값의 임시 어레이에 현재 포인터 값을 저장한다. 이 포인터가 유형 A의 또 다른 레코드를 가리킨다면, 단계 1로 돌아가고, 그렇지 않다면 계속 진행한다.
4. 현재 포인터가 널 값을 포함하면, 상기 삭제 절차는 오류: '발견하지 못함'로 종료된다.
5. 그렇지 않고 현재 포인터가 유형 B의 레코드를 가리킨다면, 상기 B-레코드에 포함된 수가 삭제될 수와 동일한가를 검사한다. 동일한 경우, 상기 레코드를 삭제하고, 그렇지 않은 경우에는 오류:'발견하지 못함'으로 종료한다.
6. A-레코드에서의 현재 B-포인터를 널로 설정한다.
7. 현재의 A-레코드에 B포인터가 하나보다 많이 있다거나 또는 임의의 A 포인터가 있다면, 삭제 절차가 종료한다.
8. 그렇지 않은 경우, 현재의 A-레코드에 단 하나의 B-포인터가 남아있다면, 상기 A-레코드를 삭제한다. B-포인터가 이전의 A-레코드로 이동하여, 이것을 현재 레코드로 만들어 삭제된 레코드로의 A-포인터를 B-포인터로 교체한다. 단계 7로 돌아간다.
수의 발견:
1. 현재의 레코드를 선택하는데, 이는 제1레코드이거나, 또는 현재 포인터가 가리키는 레코드이다. 처음에 0으로 설정된 카운터를 하나씩 증가시킨다.
2. 발견할 수의 다음 숫자를 선택한다. 처음에 이것은 = 제1숫자이다. 이하에서는 이것을 '현재 숫자'라 한다.
3. 현재 숫자의 값을 현재 레코드로의 인덱스로 이용하여, 레코드에서의 상응하는 위치에서 새로운 현재 포인터를 발견해낸다. 이 포인터가 유형 A의 또 다른 레코드를 가리킨다면, 단계 1로 돌아가고, 그렇지 않다면 계속 진행한다.
4. 현재 포인터가 널 값을 포함한다면, 조사 과정은 '발견하지 못함'으로 종료된다.
5. 그렇지 않고, 현재 포인터가 유형 B의 레코드라면, 후보(candidate) 수로 상기 레코드를 검색한다.
6. 후보 수를 한 숫자씩 스캔하여, 발견할 수의 상응하는 숫자와 비교한다. 상응하는 위치에서 숫자가 맞지 않거나, 또는 상기 수가 상이한 길이를 가지면, '발견하지 못함'으로 종료된다. 상기 두 수에서의 모든 숫자를 비교하여 이것이 일치하는 것으로 밝혀지면, 상기 조사는 '발견함'으로 종료한다.
9개 숫자의 5가지 수를 이용한 상기 삽입하는 실시예에 필요한 공간은 다음과 같이 선행 기술에 각각 비교된다: 각 포인터가 2바이트이고, 포인터에 대해 총 20 바이트를 이루며, 각 레코드마다 플래그(flag)용의 여분 2바이트가 있어, 즉 22바이트/레코드라고 가정하면, 도 1의 단일 레코드 유형의 경우는 도 3에 도시한 바와 같이 37레코드나, 또는 814바이트가 필요한데, 상기 도면에서 작은 사각형은 단 하나의 요소만 이용되는 포인터 레코드를 나타낸다.
도 2에 나타나있는 Sussenguth 방법은, 각 레코드가 포인터에 대해 2x2 바이트와 키(숫자)에 대해 1바이트라고 가정하면, 동일한 실시예에 대해 41x5 = 205 바이트의 기억 공간을 필요로함을 의미한다.
본 발명에 따른 2중 레코드 유형의 경우는 세 개의 포인터 어레이 레코드와 5개의 스트링 레코드(도 8)를 필요로한다. 스트링 레코드 각각이 24 숫자(=12바이트)를 포함하는 크기로 되어있다고 가정하면, 이는 총 3x22 + 5x12 = 126 바이트, 즉 단일 레코드 유형의 경우에 필요한 공간의 약 15%를 나타낸다.
Sussenguth 방법은 복합 레코드 유형의 방법보다는 나쁘지만, 상기 설명한 단일 어레이 레코드의 경우보다는 더 우수하다. Sussenguth 방법을 이용하여 조사하면, 단일 어레이나 또는 복합 어레이 방법에서보다 속도가 더 늦어진다. 조사 속도가 늦어지는 이유는, 일치/불일치를 발견해기 위해 각 초기 레벨마다 평균적으로 5개의 포인터가 이어져야 하기 때문이다. 또한, 컴퓨터 로직은 어레이 인덱스보다 포인터로 주소 지정하는 것이 덜 효과적이다.
가변 길이를 가진 더 큰 세트의 수에 대해 상기 두 방법을 비교하기 위해서는, 수학적인 시뮬레이션이 이루어진다. 2 내지 24 개 숫자의 범위를 갖는, 임의의 길이를 가진 일련의 1000 이상의 임의 수가 생성된다. 그 분포는 상기 수의 대다수가 대략 12 숫자를 갖도록 한다. 그 결과, 1000 개의 수에 대해, 단일 레코드 유형 모델이 약 200 kbytes를 필요로 하는 반면, 복합 레코드 유형 모델은 약 27kbytes, 또는 13% 만을 필요로 한다. 이는, 상당한 양의 메모리를 절약할 수 있음을 나타내는 것으로서, 많은 수의 프로그램 모듈이 예컨대 전화교환국(telephone switching station)에서 이용가능한 데이터 메모리 공간을 경합할 때 중요하다.
도 15는 가변 수의 요소에 대해 상기 두 가지 설계 유형이 어떻게 비교되는지를 도시한다. 이 도면은 소정의 수 분포에 대한 상기 언급된 수학적인 시뮬레이션의 결과이다. 이러한 분석은, 스트링으로서 올림순으로 분류되는(ascending order)(즉 '229999' 보다는 '23'이 더 높은 분류 순위를 가짐) 임의의 수의 세트에서 이루어진다.
상기 응용에 대한 아이디어는 다른 조사 응용에 이용될 수도 있으며, 여기서 입력 키 값은 한 번에 한 요소로 주어진다. 이것은, 예컨대 루팅 분석 및 홈 레지스터 위치 조사에 응용할 수 있다.

Claims (7)

  1. 연결된 레코드 목록을 포함하는 데이터 구조의 심벌 시퀀스 관리 방법에 있어서, 상기 심벌 시퀀스는:
    - 각 심벌(예컨대 0-9)마다 한 요소를 가진 포인터의 어레이 레코드인 연결된 레코드 목록의 제1세트(A-레코드)
    - 입력된 심벌 시퀀스 전체를 포함하는 스트링의 제2세트(B-레코드)인 복합 레코드 세트로 한 심벌씩 삽입되는 것을 특징으로 하는 데이터 구조의 심벌 시퀀스 관리 방법.
  2. 제1항에 있어서, 처음 제1A-레코드가 정해지며, 상기 A-레코드의 모든 요소는 널-포인터로 시작된 다음 심벌 시퀀스의 삽입이 이루어지는데, 상기 심벌 시퀀스 삽입은:
    - (i) 제1레코드이거나, 또는 처음에 제1 A-레코드를 가리키는 현재의 포인터가 가리키는 레코드인 현재의 레코드를 선택하여, 처음에 0으로 설정된 카운터(depth counter)를 하나 증가시키는 단계,
    - (ii) 처음에는 "제1" 심벌이며 이후 "현재" 심벌이되는 삽입될 심벌 시퀀스의 다음 심벌을 선택하는 단계,
    - (iii) 현재의 심벌값을 현재 레코드로의 인덱스로 이용하여, 레코드에서의 상응하는 위치에서 현재 포인터를 발견하여, 이 포인터가 또 다른 A-레코드를 가리킨다면 단계 (i)로 돌아가는 단계,
    - (iv) 현재 포인터가 널이라면, B-레코드를 생성하고 그 안에 심벌 시퀀스 전체를 저장하며, 현재의 포인터를 갱신하여 삽입 절차가 종료하는 새로운 B-레코드를 가리키며, 그렇지 않다면 계속 진행하는 단계,
    - (v) 현재의 B-레코드가 삽입될 심벌 시퀀스와 동일한 심벌 시퀀스를 포함하는지를 검사하여, 만일 그렇다면 삽입 절차를 종료하고, 그렇지 않다면 계속 진행하는 단계,
    - (vi) 새로운 A-레코드를 생성하고 연결하여, 카운터를 하나 증가시켜, 상기 심벌 시퀀스에서의 다음 심벌을 삽입될 "현재" 심벌로 하는 단계,
    - (vii) 현재의 B-레코드에서 카운터에 상응하는 심벌을 선택하여, 이 심벌을 삽입될 심벌 시퀀스의 현재 심벌과 비교하여, 상기 심벌이 일치한다면 단계 (vi)로 이동하고, 그렇지 않다면 계속 진행하는 단계,
    - (viii) 새로운 B-레코드를 생성하고, 그 곳에 새로운 심벌 시퀀스 전체를 삽입하여, 인덱스 위치에서 B-레코드로의 포인터를 현재 숫자에 상응하는 이전의 A-레코드에 삽입하는 단계를 포함하는 것을 특징으로 하는 데이터 구조의 심벌 시퀀스 관리 방법.
  3. 제1항에 있어서, 심벌 시퀀스의 삭제는,
    - (i) 제1레코드나, 또는 현재 포인터가 가리키는 레코드인 현재 레코드를 선택하여, 처음에 0으로 설정된 카운터를 하나 증가시키는 단계,
    - (ii) 처음에 "제1" 심벌이며 이후 "현재" 심벌로 되는 삭제될 심벌 시퀀스의 다음 심벌을 선택하는 단계,
    - (iii) 현재의 심벌값을 현재 레코드로의 인덱스로서 이용하여, 상기 레코드의 상응하는 위치에서 새로운 현재 포인터를 발견하고, 카운터에 상응하는 인덱스 값의 임시 어레이에 현재 포인터 값을 저장하여, 이 포인터가 또 다른 A-레코드를 가리킨다면 단계 (i)로 돌아가고, 그렇지 않다면 계속 진행하는 단계,
    - (iv) 현재 포인터가 널 값을 포함하는지 검사하여, 만일 그렇다면 삭제 절차를 종료하는 단계,
    - (v) 그렇지 않고 현재 포인터가 B-레코드를 가리킨다면, 상기 B-레코드에 포함된 심벌 시퀀스가 삭제될 심벌 시퀀스와 동일한지를 검사하여, 동일하다면 상기 레코드를 삭제하며, 동일하지 않다면 상기 삭제 절차를 종료하는 단계,
    - (vi) A-레코드에서의 현재의 B-포인터를 널로 설정하는 단계,
    - (vii) 현재의 A-레코드에 B포인터가 하나보다 많이 있다거나 또는 임의의 A 포인터가 있다면, 삭제 절차를 종료하는 단계,
    - (viii) 그렇지 않고 현재의 A-레코드에 단 하나의 B-포인터가 남아있다면, 상기 A-레코드를 삭제하고, B-포인터를 이전의 A-레코드로 이동시키며, 이것을 현재의 레코드로 만들며, 삭제된 레코드에 대한 A-포인터를 B-포인터로 교체한 다음, 단계 (vii)로 돌아가는 단계를 포함하는 것을 특징으로 하는 데이터 구조의 심벌 시퀀스 관리 방법.
  4. 제1항에 있어서, 심벌 시퀀스의 발견은:
    - (i) 제1레코드이거나, 또는 현재 포인터가 가리키는 레코드인 현재의 레코드를 선택하여, 처음에 0으로 설정된 카운터를 하나 증가시키는 단계,
    - (ii) 처음에는 제1심벌이며 이후에 "현재" 심벌로 되는 발견할 심벌 시퀀스의 다음 심벌을 선택하는 단계,
    - (iii) 현재의 심벌값을 현재 레코드로의 인덱스로 이용하여, 상기 레코드에서의 상응하는 위치의 새로운 현재 포인터를 발견하며, 이 포인터가 또 다른 A-레코드를 가리킨다면 단계 (i)로 돌아가고, 그렇지 않다면 계속 진행하는 단계,
    - (iv) 현재 포인터가 널 값을 포함하는지를 검사하여, 만일 그렇다면 상기 조사 과정이 '발견하지 못함'으로 종료하는 단계,
    - (v) 그렇지 않고 현재 포인터가 유형 B의 레코드라면, 상기 레코드를 심벌의 후보 시퀀스로서 검색하는 단계,
    - (vi) 후보 수를 한 심벌씩 스캔하고, 발견될 심벌 시퀀스에서의 상응하는 심벌과 비교하여, 상응하는 위치의 심벌이 일치하지 않거나, 또는 심벌 시퀀스의 길이가 같지 않다면, '발견하지 못함'으로 상기 조사를 종료하고, 상기 두 가지 심벌 시퀀스의 모든 심벌을 비교하여 이것이 일치하는 것으로 밝혀지면, 상기 조사를 '발견함'으로 종료하는 단계를 포함하는 것을 특징으로 하는 데이터 구조의 심벌 시퀀스 관리 방법.
  5. 제1항 내지 4항 중 어느 한 항에 있어서, 상기 심벌이 숫자를 의미하며, 심벌 시퀀스는 전화 번호를 의미하는 것을 특징으로 하는 데이터 구조의 심벌 시퀀스 관리 방법.
  6. 상기 레코드로의 심벌 시퀀스를 관리하는 연결된 레코드 목록을 포함하는 데이터 구조에 있어서, 상기 데이터 구조는:
    - 각 심벌마다 한 요소를 가진 포인터 어레이 레코드인 연결된 레코드 목록의 제1세트(A-레코드),
    - 입력된 심벌 시퀀스 전체를 포함하는 스트링의 제2세트(B-레코드)인 복합 레코드 세트를 포함하는 것을 특징으로 하는 데이터 구조.
  7. 제6항에 있어서, 심벌은 숫자를 의미하고, 심벌 시퀀스는 전화 번호를 의미하는 것을 특징으로 하는 데이터 구조.
KR1020007006459A 1997-12-19 1998-12-04 데이터 구조의 관리 KR20010033096A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
SE9704767-4 1997-12-19
SE9704767A SE513248C2 (sv) 1997-12-19 1997-12-19 Metod för hantering av datastrukturer
PCT/SE1998/002221 WO1999032994A2 (en) 1997-12-19 1998-12-04 Management in data structures

Publications (1)

Publication Number Publication Date
KR20010033096A true KR20010033096A (ko) 2001-04-25

Family

ID=20409473

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020007006459A KR20010033096A (ko) 1997-12-19 1998-12-04 데이터 구조의 관리

Country Status (8)

Country Link
US (1) US6298339B1 (ko)
EP (1) EP1040430B1 (ko)
JP (1) JP2001527240A (ko)
KR (1) KR20010033096A (ko)
AU (1) AU1793299A (ko)
DE (1) DE69840875D1 (ko)
SE (1) SE513248C2 (ko)
WO (1) WO1999032994A2 (ko)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7249149B1 (en) 1999-08-10 2007-07-24 Washington University Tree bitmap data structures and their use in performing lookup operations
US6560610B1 (en) * 1999-08-10 2003-05-06 Washington University Data structure using a tree bitmap and method for rapid classification of data in a database
US6725326B1 (en) 2000-08-15 2004-04-20 Cisco Technology, Inc. Techniques for efficient memory management for longest prefix match problems
US6775737B1 (en) 2001-10-09 2004-08-10 Cisco Technology, Inc. Method and apparatus for allocating and using range identifiers as input values to content-addressable memories
US6754795B2 (en) 2001-12-21 2004-06-22 Agere Systems Inc. Methods and apparatus for forming linked list queue using chunk-based structure
US6970971B1 (en) 2002-01-08 2005-11-29 Cisco Technology, Inc. Method and apparatus for mapping prefixes and values of a hierarchical space to other representations
US7899067B2 (en) 2002-05-31 2011-03-01 Cisco Technology, Inc. Method and apparatus for generating and using enhanced tree bitmap data structures in determining a longest prefix match
US7299317B1 (en) 2002-06-08 2007-11-20 Cisco Technology, Inc. Assigning prefixes to associative memory classes based on a value of a last bit of each prefix and their use including but not limited to locating a prefix and for maintaining a Patricia tree data structure
US7558775B1 (en) 2002-06-08 2009-07-07 Cisco Technology, Inc. Methods and apparatus for maintaining sets of ranges typically using an associative memory and for using these ranges to identify a matching range based on a query point or query range and to maintain sorted elements for use such as in providing priority queue operations
US7441074B1 (en) 2002-08-10 2008-10-21 Cisco Technology, Inc. Methods and apparatus for distributing entries among lookup units and selectively enabling less than all of the lookup units when performing a lookup operation
US7415463B2 (en) * 2003-05-13 2008-08-19 Cisco Technology, Inc. Programming tree data structures and handling collisions while performing lookup operations
US7415472B2 (en) * 2003-05-13 2008-08-19 Cisco Technology, Inc. Comparison tree data structures of particular use in performing lookup operations
US7478109B1 (en) 2004-03-15 2009-01-13 Cisco Technology, Inc. Identification of a longest matching prefix based on a search of intervals corresponding to the prefixes

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4468728A (en) * 1981-06-25 1984-08-28 At&T Bell Laboratories Data structure and search method for a data base management system
US4611272A (en) * 1983-02-03 1986-09-09 International Business Machines Corporation Key-accessed file organization
US5497485A (en) * 1993-05-21 1996-03-05 Amalgamated Software Of North America, Inc. Method and apparatus for implementing Q-trees
US5560007A (en) * 1993-06-30 1996-09-24 Borland International, Inc. B-tree key-range bit map index optimization of database queries
SE503376C2 (sv) * 1994-06-13 1996-06-03 Ericsson Telefon Ab L M Kundprofilerad telekommunikationstjänst
US5787430A (en) * 1994-06-30 1998-07-28 International Business Machines Corporation Variable length data sequence backtracking a trie structure
JP3152871B2 (ja) * 1995-11-10 2001-04-03 富士通株式会社 ラティスをキーとした検索を行う辞書検索装置および方法
US5758353A (en) * 1995-12-01 1998-05-26 Sand Technology Systems International, Inc. Storage and retrieval of ordered sets of keys in a compact 0-complete tree
US6065046A (en) * 1997-07-29 2000-05-16 Catharon Productions, Inc. Computerized system and associated method of optimally controlled storage and transfer of computer programs on a computer network
US6141655A (en) * 1997-09-23 2000-10-31 At&T Corp Method and apparatus for optimizing and structuring data by designing a cube forest data structure for hierarchically split cube forest template

Also Published As

Publication number Publication date
US6298339B1 (en) 2001-10-02
WO1999032994A3 (en) 1999-08-26
SE9704767L (sv) 1999-06-20
JP2001527240A (ja) 2001-12-25
SE9704767D0 (sv) 1997-12-19
EP1040430B1 (en) 2009-06-03
SE513248C2 (sv) 2000-08-07
DE69840875D1 (de) 2009-07-16
WO1999032994A2 (en) 1999-07-01
AU1793299A (en) 1999-07-12
EP1040430A2 (en) 2000-10-04

Similar Documents

Publication Publication Date Title
US6678687B2 (en) Method for creating an index and method for searching an index
Bentley Multidimensional binary search trees in database applications
JP3771271B2 (ja) コンパクト0完全木における順序付けられたキーの集まりの記憶と検索のための装置及び方法
US8255398B2 (en) Compression of sorted value indexes using common prefixes
US7080091B2 (en) Inverted index system and method for numeric attributes
EP0419889A2 (en) Prefix search tree with partial key branching
US8190591B2 (en) Bit string searching apparatus, searching method, and program
KR20010033096A (ko) 데이터 구조의 관리
Spiegler et al. Storage and retrieval considerations of binary data bases
Darragh et al. Bonsai: a compact representation of trees
Liu et al. Succinct filters for sets of unknown sizes
Bercea et al. Fully-dynamic space-efficient dictionaries and filters with constant number of memory accesses
Ernvall et al. An algorithm for unbiased random sampling
Sahni Tries
Gupta et al. A framework for dynamizing succinct data structures
US7870138B2 (en) File storage and retrieval method
CN109657108B (zh) 一种域名资产数据存储和查询方法和系统
CN110321346B (zh) 一种字符串散列表实现方法和系统
CN114398373A (zh) 应用于数据库存储的文件数据存储读取方法及装置
US11354093B1 (en) Integer and characters prefix based methodologies combined with parallel data sort methodology enhance the execution performance of any string sorting algorithm
Du et al. Multilevel extendible hashing: A file structure for very large databases
Comer English dictionary searching with little extra space
CN115563353A (zh) 字符串处理方法、装置、设备及介质
Masud et al. A hashing technique using separate binary tree
Yang et al. Approximate search engine optimization for directory service

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application