다음 알고리즘 / 문제에 대한 참고 문헌을 찾고 있습니다. 이름을 "BiSelect"또는 "t-ary Select"또는 "Selected Union of Sorted Arrays"로 지정했지만 이전에 다른 이름으로 소개 된 것 같습니다.
문제
다음 문제를 고려하십시오.
감안 이산 정렬 된 어레이 , 각 크기의 및 정수 는 무엇 그들의 정렬 연합 번째 값 ?
솔루션
시간에 실행 매우 소쇄 알고리즘가 의 경우 K = 2 : 만약 K = 2 , 단지 비교 A_1를 [t / 2] 와 A_2 [t / 2] 와 재귀 A_1 [t / 2..t] 및 A_2 [1..t / 2 또는 A_1 [1..t / 2] 와 A_2 [t / 2..t] 따라서, 두 경우에서와 매개 변수 t / 2 (및 n_1 또는 n_2 가 t 보다 작은 경우 일부 최적화 )
시간에 실행하는 좀더 정교한 알고리즘이 일반화 의 더 큰 값 , 값들의 중간 값 계산에 기반 에 대한 다음 작은 요소는 또한 무시 될 수있는 어레이 여기서 중앙값보다 작은 경우와, 등급 요소 상기에서 무시할 수있는 다른 배열 은 각 반복에서 t 의 절반을 초래 합니다 (중앙값 은 입니다).
참조?
내 솔루션에 만족하지만 문제 (및 솔루션)가 이미 알려져 있다고 가정합니다. 그것은 중간 크기를 계산하기위한 선형 시간 알고리즘과 관련이 있으며 (크기가 인 그룹을 정렬 하고 중간의 중앙값을 되풀이하여) 약간 더 일반적입니다. 나는 오르후스 (덴마크)의 Madalgo에있는 여러 대학에 성공하지 않고 워크샵 Stringology (Rouen)의 다른 대학에 물었습니다.
동기 부여
이 문제에 대한 솔루션에는 배열의 지연된 데이터 구조에 대한 응용 프로그램이 있습니다 (실제로 정렬 된 배열의 결합을 위해 지연된 데이터 구조의 연산자로 볼 수 있음). 보다 복잡한 방식으로, 최적 프리픽스 프리 코드의 적응 계산에 적용된다.