다항식 시간을 왜“효율적”이라고합니까?


50

컴퓨터 과학에서 가장 다항식 인 복잡성이 효율적인 것으로 간주되는 이유는 무엇입니까?

실용적인 응용 프로그램 (a)의 경우 복잡도가 알고리즘은 과 같이 시간에 실행되는 알고리즘보다 훨씬 빠르지 만 첫 번째 알고리즘 은 비효율적 인 것으로 간주되지만 후자는 효율적입니다. 논리는 어디에 있습니까?!nlognn80

(a) 예를 들어 우주의 원자 수는 약 합니다.1080


3
나는 당신의 전제에 동의하지 않습니다. 나는 대부분의 사람들이 을 꽤 비효율적 이라고 생각할 것 입니다 (물론 상수와 해결중인 문제에 달려 있습니다). n80
sepp2k 2016 년

16
나는 고려할 것 어떤을 위해 매우 비효율적. 당신은 비합리적인 극단에 이르는 점근 분석의 예를 가지고 있습니다. 런타임을 사용 하는 자연 알고리즘은 없습니다 . 그러나 일부 문제에 대해 런타임의 자연 알고리즘과 이러한 문제에 대한 다항식 알고리즘의 존재 여부에 대한 복잡성 이론의 근본적인 질문이 있습니다. ncc>3n802n
Joe

5
사람들이 전제에 동의하지 않기 때문에이 질문을 무시해서는 안된다고 생각합니다 (그 이유라고 가정). 업 보트 및 다운 보트는 주제가 아닌 한 내용이 아니라 질문의 품질을 나타내는 것으로 간주됩니다.
Alex ten Brink

8
@RanG. 전체 인용문은 다음과 같습니다. (강조 광산) : Cobham의 논문은 P가 "효율적으로 해결할 수 있거나"다루기 쉬운 계산 문제의 클래스라고 주장합니다. 실제로 P로 알려지지 않은 일부 문제에는 실질적인 해결책이 있으며, P로되어있는 일부 문제 는 그렇지 않지만 유용한 규칙입니다.
Joe

6
(이론적 CS의) 문헌에서, "효율적"이라는 단어는 "다항식"과 동의어이다. 어쩌면 이것은 다른 (보다 실용적인) 하위 필드와 다를 수도 있습니다.
Ran G.

답변:


32

"효율성"에 대한 또 다른 관점은 다항식 시간으로 기계 모델에 의존하지 않는 "효율성"개념을 정의 할 수 있다는 것입니다. 구체적으로, 일종의 기계 모델에서 다항식 시간으로 실행되는 모든 문제는 다른 동등하게 강력한 기계 모델에서 다항식 시간으로 실행된다고 말하는 "효과적인 교회-투어링 논문"이라는 교회-투어링 논문의 변형이 있습니다.

이것은 일반적인 CT 논문에 대한 약한 진술이며, 무작위 알고리즘과 양자 알고리즘 모두에 의해 '정렬'되지만, 변경함으로써 폴리-시간의 NP-hard 문제를 해결할 수 있다는 의미에서 위반되지는 않았습니다. 기계 모델.

이것이 다항식 시간이 이론에서 대중적인 개념 인 이유입니다. 그러나 대부분의 사람들은 이것이 "실제 효율성"을 반영하지 않는다는 것을 알고 있습니다. 이에 대한 자세한 내용은 ' 은하계 알고리즘 ' 에 관한 Dick Lipton의 게시물을 잘 읽어보십시오.


15
두 번째로, P를 선택하는 실용적인 이유는 P가 상수로 더하기, 곱하기 및 지수로 닫히기 때문입니다. 이것은 알고리즘 / 기계를 구성 할 때 편리합니다. 빌딩 블록이 효율적이라면 결과도 마찬가지입니다.
Raphael

궁금한 점이 있습니다. 누군가 "은하 알고리즘"이라는 용어가 실제로 사용되는지 알고 있습니까?
Juan Bermejo Vega

그렇게 오래된 용어는 아닙니다. 그러나 나는 그것을 사용하기 시작했다 :)
Suresh

24

이론적으로, 우리는 점근 적 행동을 돌보고, 점근 적 행동을 기반으로 문제와 알고리즘의 클래스를 설명합니다. 여기서 키워드는 asymptotic 입니다. 단위 상수 계수를 가정하고 단위 상수 계수를 가정 하고 (이것은 septillion이라고 함) 에서 시작하여 가 보다 빠릅니다. 주문 조건.O ( n log n ) n > 1208925819614629174706176O(n80)O(nlogn)n>1208925819614629174706176

그러나 실제로 지수와 상수 계수에주의를 기울입니다. 실제로 입력 크기는 9 억 개까지 증가 할 수 없으므로, 모든 목적을 위해 이 보다 우수한 선택이 될 것 입니다. 병렬 처리, 메모리 액세스 패턴 (예 : 지역)과 같은 다른 요소들도 실무에서 중요합니다. n 80nlognn80

예를 들어, 정수 곱셈을위한 대부분의 라이브러리, 예를 들어 GMP 는 알고리즘의 혼합을 구현 하고 입력 크기에 따라 열등한 알고리즘을 선택합니다. 입력 알고리즘에 따라 실질적으로 우수한 알고리즘을 선택합니다. 일부 무조건 "열등한"알고리즘은 특정 입력 크기에서 더 빠르며 최적의 알고리즘보다 선택됩니다.

알려진 가장 빠른 행렬 곱셈 알고리즘 은 에서 실행되는 Coppersmith-Winograd 알고리즘 입니다 (최근에 개선 된 사항이 있습니다 ). 그러나 (1) 어렵 기 때문에 (2) 상수 계수가 거대하기 때문에 구현되지 않았습니다. 모든 선형 대수 패키지는 최적의 Strassen을 사용하지 않습니다 .O(n2.3737)

TL; DR 이론은 입력 크기의 제한이 임의로 많은 수로 진행됨에 따라 알고리즘을 비교하기 위해 점근 적 행동을 고려합니다.


그들은 "열등한 알고리즘을 선택"합니까? "우수한 알고리즘 선택"을 의미하지 않습니까?
bitmask

또 다른 좋은 예는 삽입 정렬 대 빠른 정렬입니다. 삽입 정렬은 이고 빠른 정렬은 입니다. 그러나 10 개 항목과 같은 작은 입력에서는 삽입 정렬이 빠른 정렬보다 약 2 배 빠릅니다! 실제로 최적화 된 빠른 정렬은 작은 배열에 대해 삽입 정렬을 사용합니다. O ( N 개의 g의 N )Θ(N2)O(nlgn)
Robert S. Barnes

우리는 비정형 큐빅 알고리즘을 "나쁜"및 무정형 2 차 알고리즘을 "좋은"것으로 간주하지 않는 이유는 무엇입니까? 이 답변은 질문을 구걸합니다.
djechlin

2

이 답변은 질문의 "더 큰 그림"컨텍스트를 살펴 봅니다. 컴퓨터 과학은 실제로 비교적 젊고 다소 개방적인 과학이며 아직 기본 및 근본적인 질문에 대한 훌륭한 대답은 없습니다. "효율적으로 계산되는"기본 질문 은 CS에서 유명한 P vs NP 문제 (또는 밀접한 관련 P vs Exptime 문제)로 CS에서 정확 하거나 대략적으로 형식화되어 있으며 40 년이 지난 후에도 여전히 열려 있습니다. Cook / Levin ~ 1970에 의해 처음 소개되었고 세계 최고의 컴퓨터 과학자들에 의해 강렬한 작업을 수행했습니다.

다시 말해, P 시간으로 "효율적인"을 대략적으로 정의하고 10 년 이상 문제에 수여 된 최고 과학상 (1 백만 달러 상) 중 하나라도 컴퓨터 과학은 일부 문제 ( 이 경계선)에는 효율적인 (Ptime) 알고리즘이 있거나 없어야합니다. 따라서 현재로서는 P 시간보다 더 정확한 "효율적인"의 정확한 정의가 필요하지 않거나 심지어 가능 하지도 않습니다 . P 대 NP 추측이 어떤 식 으로든 해결되는 경우 "효율적인"에 대한보다 엄격한 정의가 가능할 수도 있고 아마도 가능할 수도 있습니다.

더욱이, "효율적인"에 대한 Ptime의 정의는 다소 "조잡한"것으로 생각할 수 있으며, 대부분의 컴퓨터 과학자들은 아마도 동의 할 것입니다. 그들이이 주장이나 관찰을 사소한 것으로 간주 할 수 있다는 점. 다시 말해서, 그것은 그것의 진행중인 작업 / 우리는 그것을 연구하고있다 . (실제로 주류 컴퓨터 과학자들은 지금까지 반 농담으로, 진행 / 완전한 분리의 격차와 부족을 당혹스럽게 여깁니다 .)

실제로 P 대 NP, 즉 NP 대 P / poly보다 밀접한 관련이 있거나 상당히 강한 추측이 있는데,이 시점에서는 현재 컴퓨터 과학으로 해결할 수 없습니다. NP 시간 문제는 어떤 "P 크기"회로 로도 해결할 수 없으며 , 알고리즘 / 튜닝 머신으로 생성 할 수있는 회로로 제한되지도 않는다고 추측합니다.

P 대 NP가 얼마나 어려운지에 관해서는 , 수학에서 가장 오래된 리만 (Liemann) 추측 (현재 1.5 세기 이전) 만큼 어려울 것이라고 생각할만한 확실한 이유가있다 . 10 년이 지났으며 아직 해결되지 않은 첫 번째 사례입니다.

다시 말해, 어떤 알고리즘이 실제로 "효율적인"인지를 정확하게 정의하는 것은 실제로 이론 과학 및 수학에서 가장 중요하고 어려운 기존 문제 중 하나입니다 .

실제로 "효율적으로 계산되는 것"에 대한 문제는 P-time CT 논문이라는 Church-Turing 논문의 변형이 있기 때문에 실제로는 훨씬 더 미묘하며, 양자 컴퓨팅이 실제로 그것을 위반 하는지 여부는 알려져 있지 않습니다 . P- 시간 QM에 대한 Shor의 획기적인 결과를 고려할 때이 연구에서 팩토링은 극적인 비틀림으로 간주되었습니다. 다시 말해, 효율적으로 계산되는 것의 문제는 실제로 물리학 원리에 이르기까지 모든면에서 타당하게 내려 가며 양자 계산이 고전적인 계산보다 더 효율적으로 계산할 수 있는지 여부와 관련이 있으며, 이는 이론적 CS 및 고급 물리학에서도 일반적으로 열린 문제입니다.

따라서 P 대 NP와 효율적인 컴퓨팅 문제는 CS와 수학뿐만 아니라 물리학 에서도 중요하거나 근본적으로 중요 할 수 있습니다 .

[1] P 대 NP 문제, 위키 백과

[2] 밀레니엄 상 문제

[3] 위키 백과 P / Poly 클래스

[4] 쇼어 알고리즘


보정 : PSPACE VS P, ExpTime VS하지 P
vzn

-2

다항식 시간 알고리즘은 가장 어려운 비 다항식 시간, 특히 소위 NP-Complete와 비교할 때만 효율적인 것으로 간주됩니다. 이미지 : P, NP, NP-complete 및 NP-hard 문제 세트에 대한 오일러 다이어그램을 참조하십시오 .


1
"가장 어려운 비 다항식 시간과 비교하여, 특히 소위 NP- 완료"-NP- 완전 문제는 비 다항식으로 알려져 있지 않으며, 확실히 가장 어려운 것은 아닙니다.
Raphael
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.