나는 분모에 로그가있는 알고리즘을 본 적이 없으며이 양식에 실제로 유용한 알고리즘이 있는지 궁금합니다.
정렬 또는 트리 기반 알고리즘과 같이 런타임에 로그 팩터가 곱해질 수있는 많은 것들을 알고 있지만 로그 팩터로 나눌 수있는 것은 무엇입니까?
나는 분모에 로그가있는 알고리즘을 본 적이 없으며이 양식에 실제로 유용한 알고리즘이 있는지 궁금합니다.
정렬 또는 트리 기반 알고리즘과 같이 런타임에 로그 팩터가 곱해질 수있는 많은 것들을 알고 있지만 로그 팩터로 나눌 수있는 것은 무엇입니까?
답변:
"무엇을 로그로 나눌 수 있습니까?"에 대한 일반적인 대답은 무엇입니까? 두 가지의 조합입니다.
나는 많은 예가 있다고 생각하지만 고전적인 예는 가장 긴 공통 하위 시퀀스 등을위한 Four Russians Algorithm 입니다 . 비트 패킹 아이디어를 사용하지만 실제로는 1 초를 절약하기 때문에 실제로 가됩니다. 다른 아이디어를 사용하는 로그 팩터 : 단일 테이블 조회 로 O ( log 2 n ) 비트 연산 블록 교체 .
루빅스 큐브는 매우 자연스럽고 (나에게는 예기치 않은) 예입니다. 큐브가 필요 해결 단계를 반복합니다. (이것은 세타 표기법이므로 상한과 하한입니다.)
이것은 이 논문 에서 보여진다 [1].
그것은 가치 루빅 큐브의 특정 인스턴스를 해결 복잡도가 있음을 언급 할 수있다 (열린 설명하지만, NP-어려운 것으로 추측 여기에서 예) NP 하드 [2]. 알고리즘이 용액을 보장하고, 모든 솔루션이 점근 적 최적임을 보장하지만, 최적으로 특정 인스턴스를 해결할 수있다. Rubik의 큐브는 일반적으로이 알고리즘으로 해결되지 않으므로 유용한 정의는 여기에 적용되거나 적용되지 않을 수 있습니다 ( Kociemba의 알고리즘 은 일반적으로 빠르고 최적의 솔루션을 제공하므로 작은 큐브에 사용됩니다).
[1] Erik D. Demaine, Martin L. Demaine, Sarah Eisenstat, Anna Lubiw 및 Andrew Winslow. 루빅스 큐브를 해결하기위한 알고리즘. 2011 년 9 월 5 ~ 9 일, 알고리즘에 관한 제 19 차 유럽 심포지엄 (ESA 2011), 689 ~ 700 쪽
[2] Erik D. Demaine, Sarah Eisenstat 및 Mikhail Rudoy. Rubik의 큐브를 최적으로 해결하는 것은 NP- 완료입니다. 컴퓨터 과학의 이론적 측면에 관한 제 35 차 국제 심포지엄 (STACS 2018), 2018 년 2 월 28 일 – 3 월 3 일, 24 : 1-24 : 13의 절차.
비트 패킹 트릭없이 분모에 나타나는 의 예는 Agarwal, Ben Avraham, Kaplan 및 Sharir 의 최근 논문으로 시간 O 에서 두 개의 다각형 체인 사이의 불연속 Fréchet 거리 계산에 관한 논문 입니다 ( n 2 log log n / log n ) . 알고리즘의 세부 사항에 익숙하지는 않지만 일반적인 트릭은 입력을 상대적으로 작은 조각으로 분할 한 다음 정교하게 답변을 결합하는 것입니다 (물론 분할 및 정복과 같은 소리이지만 로그를 얻지 못합니다) 영리한 트릭으로 분모에)
정확히 요청한 것이 아니라 분모에 로그 요소가 나타나는 "야생"상황은 Stephen Cook, Pierre McKenzie, Dustin Wehr, Mark Braverman의 " 나무 평가를위한 자갈과 가지 프로그램 "과 라훌 산타 남.
트리 평가 문제 (TEP)는 다음 과 같습니다. 리프 에 { 1 , … , k } 값으로 주석이 달린 ary 트리가 있고 내부 노드에 { 1 , … , k } d → { 1 , … , k } 나무를 평가하십시오. 여기서 각 내부 노드는 자식 값에 대한 주석이 달린 함수의 값을 얻습니다. 이것은 쉬운 문제이며 요점은 로그 공간에서 해결할 수 없다는 것을 보여주는 것입니다 (나무의 높이가 입력의 일부인 경우). 이를 위해 TEP를 해결하는 분기 프로그램의 규모에 관심이 있습니다.
섹션 5에서, TEP 및 관련 문제 BEP 모두에 대해 높이 3의 트리에 대해 엄격한 경계가 표시되며, 여기서 출력은 임의의 방식으로 로 축소됩니다 . TEP를 들어 바운드는 Θ ( K 2 D - 1 ) BEP에 대한 바인딩 인 반면, Θ ( K 2 D - 1 / 로그 K에게 ) , 즉 당신의 구원 얻을 로그 케이 .
: 그것은 런타임에 대해 아니더라도, 나는 그것이 가치가 Hopcroft, 폴, 그리고 용감한의 고전적인 결과를 언급 할 생각 는 여전히 이후, [1] " 로그 요소 를 저장하게 하는 원인"의 정신 .
이것은 공간 복잡성에 대해 가장 잘 알려진 상한값이 분모에있는 문제의 많은 예를 제공합니다. (여러분의 관점에 따라이 예제를 매우 흥미롭게 만들거나 놀라운 이론으로 만들거나 매우 흥미롭지 않게 생각할 수 있습니다. 실제로는 실제로 유용하지 않을 것입니다.)
[1] Hopcroft, Paul 및 Valiant. 시간 대 공간 . J. ACM 24 (2) : 332-337, 1977.
엄격한 쿼리 복잡성 에는 두 가지 문제가 있습니다 .
길이 두 문자열 사이의 거리 (Levenshtein 일명) 수정을 계산하는 가장 잘 알려진 알고리즘 얻어 O를 ( ( N / 로그 N ) 2 ) 시간 :
William J. Masek, Mike Paterson : 더 빠른 알고리즘 컴퓨팅 문자열 편집 거리. J. 컴퓨팅 시스. 공상 과학 20 (1) : 18-31 (1980).
다음은 로그 팩터가있는 타이트 바운드의 또 다른 예입니다. (이것은 부울 함수 복잡성 : Stasys Jukna의 고급과 프론티어의 정리 6.17입니다.)
is the number of bits in the input.
Finding the prime factors of n by trial division when the list of primes is already given. There are primes less than n so if these primes are given to you, then trial division of n by each of them takes time (assuming division is a constant-time operation)
somewhat similar to JG's answer & "thinking outside the box", this seems like a related/relevant/apropos/fundamental negative result. based on diagonalization with a universal TM, there exists a DTIME language that cannot run in DTIME, due to the time hierarchy theorem. so this applies to a linear DTIME algorithm that exists, , that runs impossibly in DTIME.