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


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(log2⁡nB)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(nlog⁡n+k)O((n+k)log⁡n)


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