단일 차원 내에서 겹치지 않는 범위를 저장할 수있는 데이터 구조가 필요합니다. 차원의 전체 범위를 완전히 다 커버 할 필요는 없습니다.단일 차원 내에서 겹치지 않는 범위의 데이터 구조
예를 들어 회의실 스케줄러가 있습니다. 크기는 시간입니다. 두 가지 일정이 겹칠 수는 없습니다. 회의실이 항상 예약되지는 않습니다. 다시 말해, 주어진 시간 동안 최대 하나의 스케줄이있을 수 있습니다.
빠른 해결책은 시작 및 종료 시간을 저장하는 범위입니다.
Range {
Date start
Date end
}
이 비 규격화되고 겹치는 시행 않음 용기를 필요로한다. 인접한 두 범위의 경우 이전 '끝은 다음 시작과 중복됩니다.
또 다른 체계는 각 범위에 하나의 경계 값을 저장하는 것을 포함 할 수 있습니다. 그러나 일련의 연속 된 범위의 경우 범위보다 경계 값이 하나 더 많습니다. 같을 수
BrBrB
데이터 구조를B = 경계 값 R = 범위
: 시퀀스가 경계 값 및 범위가 교대로 표현 될 수있는이 이겨내
을Boundary { Date value Range prev Range next } Range { Boundary start Boundary end }
본질적으로 교대 유형으로 이중 연결된 목록입니다.
궁극적으로 내가 사용하는 모든 데이터 구조는 메모리 (응용 프로그램 코드)와 관계형 데이터베이스로 표현됩니다.
나는 학구적으로나 업계에서 시도한 해결책이 무엇인지 궁금합니다.