구현하기에는 너무 복잡한 강력한 알고리즘


67

구현하기에는 너무 복잡한 합법적 인 유틸리티 알고리즘은 무엇입니까?

명확하게하자 : 나는 현재 asymptotic 최적 행렬 곱셈 알고리즘 (Coppersmith-Winograd)과 같은 알고리즘을 찾고 있지 않지만 구현하기에는 합리적이지만 실제로는 쓸모없는 상수를 가지고 있습니다. 실용적인 가치를 가질 수는 있지만 구현이 불가능하거나 매우 인공적인 환경에서만 구현되거나 현저히 특수한 용도로만 구현 될 수있는 코딩이 어려운 알고리즘을 찾고 있습니다.

또한 무증상은 좋지만 실제 성능은 좋지 않은 구현이 거의 불가능한 알고리즘도 환영합니다.


1
긴 목록이 될 수 있기 때문에 CW를 만드는 것입니다.
Suresh Venkat

4
'구현 불가능'에 대한 지표가 있습니까? 그것을 정의하는 이론이 있습니까?
Ritwik Bose

@Mechko, 아마도 가장 작은 튜링 머신의 크기에 대한 하한은 아마도 알고리즘의 구현 인 튜링 머신의 설명을 출력합니다. :)
Radu GRIGore

@Radu GRIGore 허용되는 측정 항목입니까, 아니면 개발해야합니까? 나는 (현재로서는) 'meh, 가치가없는'을 정의하는 단순하고 움직일 수없는 선이 있다고 가정한다. : : D
Ritwik Bose

4
Coppersmith-Winograd가 구현하기에 합리적이라는 제안에 관심이 있습니다. 누구나 높은 수준의 의사 코드로 작성된 구현을 보았으며 상수를 추정 한 사람이 있습니까?
Raphael

답변:


33

Chazelle은 간단한 다각형삼각 측량하기 위한 선형 시간 알고리즘을 제공했습니다 . Skiena는 "존재 증명으로 더 자격이 있다는 것을 구현하기에는 충분치 않다"고 썼다 (p.575, Algorithm Design Manual).


3
알고리즘에 합리적인 상수가 있습니까?
jbapple

이것이 문제에 대해 알려진 유일한 선형 시간 알고리즘입니까?
Thomas Ahle

2
@ThomasAhle 나는 그것이 유일한 결정 론적 선형 시간 알고리즘이라고 생각합니다. : 아마 토, 굿 리치, 그리고 라모스는 단순 무작위 하나가 cs.princeton.edu/courses/archive/fall05/cos528/handouts/...
Sasho 니콜 로프

내가 아는 바에 따르면 Chazelle의 선형 시간 간단한 다각형 삼각 측량 알고리즘은 구현되지 않았으며 복잡성 및 상수가 높기 때문에 실제로 대안과 경쟁 할 수 없기 때문에 발생하지 않을 것입니다. 그래도 중요한 이론적 성과. Ralph Boland
Ralph Boland

다시 묻겠습니다. 알고리즘에 합리적인 상수가 있습니까?
user1271772

29

릿슈 알고리즘 초등학교 부정적분을 계산. Wikipedia에 따르면 소프트웨어 패키지는 복잡성으로 인해 전체 알고리즘을 구현하는 것으로 알려져 있지 않습니다.


3
Wikipedia는 이것이 알고리즘이 아니라 반 알고리즘임을 지적하며, 지속적인 문제를 해결하기 위해 휴리스틱이 필요하기 때문입니다.
sclv

휴리스틱이란 무엇입니까? 그것에 대해 더 자세히 읽을 수있는 링크를 줄 수 있습니까?
zygimantus

22

Robertson-Seymour 결과를 사용하여 고정 된 마이너를 제외하는 그래프와 관련된 항목에 대해 "폴리 타임"알고리즘을 유추하는 알고리즘은 문제를 요구합니다. 결과에 숨겨진 상수는 "은하계"입니다.


3
이것은 또한 구현하기 어렵거나 거대한 상수를 가지고 있습니까?
Lev Reyzin

5
예, 이것은 좋은 예가 아닙니다. 내가 올바르게 이해한다면, 문제는 실용적 일 수 있지만 (따라서 '작은'상수 일 수는 있지만) 구현하기에는 너무 복잡한 알고리즘에 관한 것입니다. 물론, 모든 질문은 다른 해석에 열려 있습니다 :-)
Aryabhata

5
문제는 상수가 특정 속성에 대해 제외해야하는 미성년자 목록에서 비롯된 것입니다. 지정된 속성에 대해 제외 된 미성년자 목록을 생성 할 수있는 방법을 모르므로 규모 문제가 아닙니다.
Suresh Venkat

2
예를 들어, 우리는 원환 체에 임베드 가능한 그래프에 대해 제외 된 마이너 목록을 알지 못합니다.
데릭 스토리

17
여기서 문제는 더 깊어 보입니다. 미성년자 목록을 생성하는 효과적인 방법이 없으므로 실제로 알고리즘이 전혀 생성되지 않습니다. 대부분의 마이너 클로즈드 속성은 논리 표현식을 직접 변환하는 경우 제외 된 마이너의 무한 목록을 생성합니다. Robertson-Seymour Theorem (Wagner 's Conjecture)은 배제 된 미성년자의 유한 목록이 그 무한한 목록 안에 숨어 있다고 말하지만, 정리는 실제로 그것들을 찾는 데 전혀 도움이되지 않습니다. 따라서 Robertson-Seymour는 일반적으로 순수한 존재 증거로 이어집니다.
András Salamon

16

Dan Willard의 "최악의 최악의 시간에 순차적으로 정렬 된 파일에서 삽입 및 삭제를 수행하기위한 밀도 제어 알고리즘" 은 삽입 및 삭제와 함께 크기가 인 배열로 정렬 된 세트를 유지하는 알고리즘을 설명합니다. 최악의 시간입니다. 여기서 는 페이지 크기입니다.O(n)O(log2nB)B

이 논문의 길이는 55 페이지이며 결론은 저자가 공간상의 이유로 설명하지 않은 상수에 대한 몇 가지 개선점을 지적합니다. 이것은 아마도 상수가 그렇게 은하 적이 지 않다고 생각하며,이 데이터 구조는 "합법적 인 유틸리티"일 것입니다. 특히 여러 번 인용 되었기 때문입니다.


12

Qian의 선형 시간 고차 패턴 통합 알고리즘은 복잡한 AFAIK로 인해 구현 된 적이 없습니다.


운 좋게도 여전히 실용적인 알고리즘이 있습니다. 자동화 된 추론의 핸드북은 그것이 다가올 시간 (Qian의 알고리즘을 인용하는 곳 바로 옆)에서 수행 될 수 있다고 말하면서 매우 훌륭합니다.
Jake

11

그래프를 고정 된 표면에 삽입 할 수 있는지 확인하는 선형 시간 알고리즘

Ken-ichi Kawarabayashi, Bojan Mohar, Bruce A. Reed : 임의의 표면에 그래프를 포함하고 경계가있는 나무 너비 그래프의 속을위한 더 간단한 선형 시간 알고리즘. FOCS 2008 : 771-780.

Bojan Mohar : 임의의 표면에 그래프를 포함하기위한 선형 시간 알고리즘. SIAM J. 이산 수학. 12 (1) : 6-26 (1999)


1
이것은 속에 대한 지수 지수 (sic)의 의존성으로 인해 구현하더라도 실질적인 가치가 없을 것입니다.
Jeffε

8

나는 (내가 RNA 이차 구조 예측뿐만 아니라, 단백질 접힘과의 비교에 대해 생각하고 있지만)가 실제로 할 수있는 방법을 유용 모르겠지만, 볼프강 하켄 첫 번째 준 다항식 시간의 매듭이 인 여부를 결정하는 알고리즘을 단순 루프 ( Theorie der Normalflächen. Acta Math. 105, 1961, 245--375 쪽). 제가 기억 하듯이, 수십 년 후에 구현하기에는 여전히 너무 복잡합니다.

Wikipedia가 믿어지면 나중에 몇 가지 다른 알고리즘이 주어졌으며 "이 알고리즘의 복잡성을 이해하는 것이 활발한 연구 분야입니다."


4
Haken은 첫 번째 알고리즘을 제공했지만 다항식 시간에는 실행되지 않습니다. 실제로, 폴리-시간 알고리즘 (또는 NP- 경도 결과)은 알려져 있지 않다. 보다 최근의 연구는 Haken의 일반 표면 공식을 통해 매듭 사소한 것을 정수 프로그래밍으로 줄였으며, 이는 실제로 실제로 해결하기가 빠릅니다.
Jeffε

3

나무 분해 및 아마도 피보나치 더미 .


14
피보나치 힙은 구현하기에는 너무 복잡하지 않습니다. 그들은 구현되고 테스트되었습니다. 그들에 대한 문제는 실행 시간의 지속적인 요인으로 인해 실제 성능이 다른 힙보다 좋지 않다는 것입니다.
David Eppstein

1
나는 나무 분해를 찾기 위해 패키지를 쓰고, 나는 그것을 구현하기 어렵다 생각하지 않는다 yaroslavvb.blogspot.com/2011/01/building-junction-trees.html
야로 슬라브 Bulatov

2
내 코드는 휴리스틱 트리 분해이며 분기 및 바운드 및 동적 프로그래밍 방식과 같이 최적이 아닙니다 ... Bodlaender의 "A Linear Time Algorithm ..."을 의미한다고 생각하십니까? 나는 그 구현을 보지 못했다
Yaroslav Bulatov

4
Bodlaender의 선형 시간 알고리즘은 이전 논문의 동적 프로그래밍 알고리즘을 서브 루틴으로 사용합니다.이 알고리즘은 대략적인 트리 분해가 제공 될 때 시간 과 같은 최적의 트리 분해를 계산합니다. 입력으로 너비 k. Hans Bodlaender가 서브 루틴으로 사용되는이 동적 프로그래밍 알고리즘을 구현했다고 말했지만 k = 3에 대해서는 이미 너무 느 렸습니다. 동적 프로그래밍은 선형 시간 알고리즘의 주요 부분이므로 Bodlaender의 알고리즘은 구현하기 어렵지 않고 너무 느립니다. 2O(k3)O(n)
바트 얀센

3
:이 최선의 구현 노력을 생각 hein.roehrig.name/dipl
디에고 드 에스트라다

1

완벽한 해시 구성 ( https://en.wikipedia.org/wiki/Perfect_hash_function#Construction )은 정적이거나 자주 변경되지 않는 키 (예 : 라우터의 최상위 도메인 이름, 컴파일러의 키워드 또는 함수 이름)가있는 사용 사례에 적용됩니다. 표준 라이브러리에서)하지만 마지막으로 보았을 때 구현을 찾을 수 없었습니다.

파라 메트릭 검색은 다항식 시간에 NP가 어려워 보일 수있는 문제를 포함하여 많은 어려운 최적화 문제를 해결할 수 있습니다. 잘 알려진 종이 Parametric search는 실용적인 파라 메트릭 검색 방식을 구현했지만 실제 소프트웨어에서는 구현되지 않았다고 생각합니다.

Chazelle 및 Edelsbrunner 의해 선분 교차 최적 알고리즘은 모든 발견 교차 라인 세그먼트 시간이지만 복잡하다. CGAL은 정교한 형상 알고리즘 라이브러리이지만 보다 간단한 알고리즘구현합니다 .N O ( N 로그 N + K ) O ( ( N + K ) 로그 없음을 )knO(nlogn+k)O((n+k)logn)


1
FKS 건설이 구현하기에는 너무 복잡하다고 믿기를 거부합니다. 실제로는 매우 간단합니다. 아마도 실용적이지는 않지만 구현하기에는 너무 복잡하지는 않습니다.
Sasho Nikolov
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.