결정 론적 선형 시간으로 요소 고유성을 해결할 수 있습니까?


9

다음 문제를 고려하십시오.

입력 :리스트X,Y 정수

목표 : 정수가 있는지 확인x 그것은 두 목록에 있습니다.

두 목록을 모두 가정하자 X,Y 크기가 n. 이 문제에 대한 결정 론적 선형 시간 알고리즘이 있습니까? 즉,이 문제를 해결할 수 있습니까?O(n) 무작위성을 사용하지 않고 결정 론적으로 시간?

불행히도 목록 요소가 모두 작다고 가정 할 수는 없습니다.


나는 그것을 해결하는 방법을 볼 수 있습니다 O(n) 무작위 알고리즘을 사용한 예상 시간 : 임의로 2 개의 범용 해시 함수 선택 h의 요소를 저장 X 해시 테이블로 h 해시 함수)와 같은 각 요소를 찾습니다. Y해시 테이블에 있는지 확인하십시오. 예상 실행 시간은O(n). 그러나 나는 결정적 알고리즘을 찾는 방법을 볼 수 없다O(n)시간을 실행. 이것을 무작위 화 해제하고 단일 특정 해시 함수를 수정하려고하면이 절차가 실행되는 최악의 입력이 있습니다.Θ(n2)시각. 내가 찾을 수있는 가장 결정적인 알고리즘은 값 정렬과 관련이 있지만 선형 시간은 아닙니다. 선형 주행 시간을 달성 할 수 있습니까?

또한 모든 목록 요소가 범위의 정수라고 가정하면 선형 시간으로 해결하는 방법을 볼 수 있습니다 [1,n] (기본적으로 카운팅 정렬)-그러나 우리가 그것을 추측 할 수없는 일반적인 경우에 어떤 일이 일어나고 있는지에 관심이 있습니다.

답이 계산 모델에 의존한다면 RAM 모델이 떠오를 것이지만 합리적인 계산 모델에 대한 결과에 관심이 있습니다. 나는 알고있다Ω(nlog⁡n) 요소 고유성에 대한 의사 결정 트리 알고리즘의 하한 이지만, 때때로 우리는 선형 시간 알고리즘을 찾을 수 있기 때문에 결정적이지는 않습니다.Ω(nlog⁡n) 의사 결정 트리 모델에 바인딩됩니다.


충돌을 처리해야하므로 해시 테이블은 O (n log n)입니다.
— Thorbjørn Ravn Andersen 님이

1
@ ThorbjørnRavnAndersen, 나는 당신이 어디서 그것을 얻지 못하고 있습니다. 2 개의 범용 해시 함수와 적절한 크기의 해시 테이블을 사용하면 해시 충돌 횟수가 최소화됩니다 (높은 확률로).O(n)실행 시간을 달성 할 수 있습니다. 어디 있는지 모르겠어요O(nlg⁡n)에서; 특별한 것을하지 않으면 (2-universal hashing 사용) 최악의 경우는O(n2)충돌로 인해
— DW

악마는 상세하게 여기에 "적절한 크기의 해시 테이블"입니다. 충돌을 원하지 않으면 상당히 클 수 있습니다. 전형적인 n-log-n은 해시 함수 충돌을 처리하기위한 것입니다 (정확히 기억한다면).
— Thorbjørn Ravn Andersen 1

1
@ ThorbjørnRavnAndersen 동일한 주소에 매핑되는 키의 예상 개수는 일정하므로 (오버로드되지 않은 테이블의 경우) 충돌 해결의 종류는 관련이 없습니다. 여기도 참조 하십시오 .O(nlog⁡n)목록 대신 (외부) 밸런스 BST를 사용하는 경우 최악의 경우에 적합합니다.
— Raphael

답변:


1

X 및 Y의 각 가능한 값에 대해 비트를 가질 수있는 충분한 메모리가있는 경우 선형 시간으로 문제점을 해결할 수 있습니다. 이는 X 및 Y 순서의 제한을 부과하지 않습니다.

  1. 처음에는 모든 비트가 설정 해제됩니다.
  2. 해당 비트를 설정하여 X를 반복합니다.
  3. 해당 비트가 위에 설정되어 있는지 확인하면서 Y를 반복합니다.

2
불행히도 모든 정수가 작다고 가정 할 수는 없습니다 (이 알고리즘이 작동하기에 충분히 작다고 가정 할 수는 없습니다). 일반적으로이 알고리즘의 실행 시간은 목록 요소의 비트 길이에 따라 지수 적입니다. 그래도 감사합니다!
— DW

그런 다음 "적절한 크기의 비트 배열"이라고하겠습니다. 또한 비트 길이의 선형은 log-n과 같습니다. 입력 데이터에 대한 제한이나 사전 조건없이 log-n 성능을 얻는 것에 대해 진지합니까?
— Thorbjørn Ravn Andersen 1

2
@ ThorbjørnRavnAndersen이 공간은 비트 길이에서 기하 급수적이며 (가능한 모든 값에서 매핑해야 함) 시간은 전체 목록 크기에서 선형입니다 (두 목록의 모든 값을 봐야 함). 비트 길이에 선형은 없습니다.
— wchargin

0

두 목록에 정수가 있다고 말하고 있기 때문에 두 목록에서 기수 정렬을 실행 한 다음 두 목록을 동등한 항목으로 비교하는 선형 검색을 수행 할 수 있습니다.


4
이것은 숫자의 크기에 한계가있는 경우에만 작동합니다.
— Luke Mathieson

하지만 높은 크기가 제가 여기에 누락 무엇인지 알려 주시기 바랍니다 ... 유일한 종류의 우리가 그 문제를 해결하기 위해 충분히 높은 기수를 선택할 수 있습니다 종류의 계산과 기수에 대한 문제가 될 것입니다 생각
— 사진 제공 : Anirudh

숫자 중 하나가 2 ^ (2 ^ 128)이면 어떻게됩니까?
— miniBill

@anirudh 그러나 입력 크기에 따라 다른 알고리즘을 사용합니다. 기수를 늘릴 때마다 더 큰 알파벳이 필요합니다. 알파벳 크기를 늘리기 위해 크기를 늘리는 복잡성을 내보내는 것입니다. 물론 이것은 이론상에서만 가능합니다. 많은 하드웨어로 인해 숫자를 나타내는 기준을 변경할 수 있다고 생각하지 않습니다 (입력 및 출력 끝에서 척 할 수는 있지만 (주로) 이진으로 귀결됩니다) ).
— Luke Mathieson

0

왜 각 목록의 정수를 간단한 비트 단위로 삽입하지 않습니까? 이것이 최적이라는 의미에서 그렇지 않습니까?O(n⋅m¯), 어디 m¯정수의 평균 비트 크기이며; 구체적으로 말하면 , 두 목록이 단순히 * 읽는 * 데 시간이 걸리기 때문에 어떻게 더 잘할 수 있을지 모르겠습니다 .


참고해 주셔서 감사합니다. 이 점을 다루는 질문의 마지막 단락을 참조하십시오. RAM 모델에서는 두 목록을 읽을 수 있습니다 .O(n) 시간-걸리지 않습니다 O(n⋅\overbarm)시각. 그래서 계산 모델이 등장합니다.이 답변은 결정 론적 선형 시간이 불가능하다는 것을 실제로 증명하지는 않습니다.
— DW

@DW RAM 모델에는 단어 크기가 있습니다 w 그것은 상수이며 한계가 있습니다. m 따라서 m¯의 런타임 결과 O(n)또는 내가 착각하고 있습니까?
— Realz Slaw

흠 아마도 w상수는 실수입니다.
— Realz Slaw

(승 일정한 것으로 간주되지 않지만 n: 당신은 상수 배수를 가질 수 있습니다 m 나타내는 데 필요한 것 n (대표하기에 충분히 넓은 nm), 임의로 크지는 않습니다 .)
— greybeard

-1

이는 n 개의 숫자 집합이 있고 모든 요소가 고유한지 확인하려는 Elemet 고유성 문제와 유사합니다. 이 문제에는 대수 계산 트리의 하한이 있습니다.O(nlog⁡n).


1
문제는 로그 선형이 아니라 선형 결정 시간에 대해 매우 분명합니다. 또한 (어떤 값이 아닌) 집합에 고유 한 요소 만 있는지 확인하려면 로그 선보다 빠르게 수행 할 수 있습니다.
— Evil

1
당신은 의미합니까 Ω(nlog⁡n)? 그렇다면 문제의 문제를 선형 시간으로 해결할 수 없다는 것을 암시 할 수 있습니다. 그러나 로그 선형 시간으로 관련 문제를 해결할 수 있다고 말하는 것이 실제로 질문에 대답하지는 않습니다. (cc @EvilJS)
— David Richerby

1
참고해 주셔서 감사합니다. 질문의 마지막 문장을 놓쳤는 지 궁금합니다. 여기에서 반복하겠습니다 : "알고 있습니다Ω(nlog⁡n) 요소 고유성에 대한 의사 결정 트리 알고리즘의 하한 이지만, 때때로 우리는 선형 시간 알고리즘을 찾을 수 있기 때문에 결정적이지는 않습니다.Ω(nlog⁡n)다시 말해,이 답변은 질문에 대한 답변이 아니라 이미 알고있는 질문에서 이미 말한 내용을 반복하지만 질문을 해결하지 못하는 것입니다.
— DW

그것은 할 수 있습니다 O(nlog⁡log⁡n) 주어진 것보다 나은 시간 O(nlog⁡n)그래서 나는 이것이 아니라고 확신합니다. Ω(nlog⁡n)그러나 DW 질문은 해결되지 않습니다. 따라서 여기에 의견을 말하십시오.
— Evil
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.