적어도에있는 항목 찾기


11

고려 값 세트 (중복되지 정렬 된 배열로 표현하고, 알려진 크기 (예. 크기는 O (1)) 값은 O 평등에 대한 테스트 할 수 있습니다. (1) 시간을 얻을 수 있습니다. 내가 원하는 n 중 적어도 k 개의 상이한 세트에 존재하는 값 세트를 획득하기 위해 .nkn

이를 수행하는 확실한 알고리즘은 모든 세트를 거치고 각 값의 발생 횟수를 세고 보다 높은 카운트를 가진 것을 반환하는 것 입니다. 그러나, 어떤 경우에는, 당신은 잘 할 수 있습니다 : 예를 들어, N = K = 2 와 한 세트의 경우 S 1은 다른 세트보다 훨씬 작은 S 2 , 모든 항목을보고하는 것이 더 효율적이다 S 1 과 수행 S 2 에서 이들 각각에 대한 이진 검색 : 이진 검색 접근 비용은 O ( | S 1 | log ( | S 2 |kn=k=2S1S2S1S2 순진한 접근 비용 반면 O는 ( | S (1) | + | S 2 | ) 악화되는 경우 | S 1 | < < | S 2 | .O(|S1|log(|S2|))O(|S1|+|S2|)|S1|<<|S2|

이를 염두에두고 순진 알고리즘보다 어떤 상황에서 더 잘할 수 있습니까? (이것이 잘 알려진 문제라면, 나는 일반적인 이름을 알고 기꺼이 참고할 것입니다.)


3
이것은 "top-K"결과 또는 "무거운 타자"의 일반 범주에 속합니다. 후자는 당신이 찾고있는 것에 더 가깝습니다. 이 공간에서 대부분의 작업은 큰 데이터 세트와 하위 선형 메모리 제한에 중점을 둡니다.
Suresh Venkat

9
O(|S1|log(|S2|/|S1|))

답변:



1

문제는 연관 규칙 학습 이라고도 하는 빈번한 항목 집합 을 찾는 데이터 마이닝 문제와 유사합니다 . 올바르게 이해하면 문제가 지원 > = k 인 카디널리티 1의 빈번한 항목 세트 (즉, 싱글 톤)를 찾는 것으로 줄어들 수 있습니다 . 물론 문제에 사용 가능한 알고리즘 (예 : Apriori, Eclat, D-CLUB 등)을 통해 카디널리티> 1의 빈번한 항목 집합을 결정할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.