시간 복잡성과 계산 복잡성의 차이


14

알고리즘의 복잡성을 측정하기 위해 시간 복잡성입니까 아니면 계산 복잡성입니까? 그들 사이의 차이점은 무엇입니까?

나는 알고리즘에서 기본 (가장 비싼) 작업의 최대 (가장 나쁜) 수를 계산하는 데 사용했습니다.


2
아니라 귀하의 질문에 대답하지만, 이런 종류의 일에 관심을 가져 주어는, 당신은 또한에 관심이있을 수 cs.stackexchange.com/q/13669/755
DW

1
점근 룬 문자를 언급 할 때 "알고리즘의 복잡성"은 (자주 사용되는) 잘못된 이름입니다. "Asymptotic runtime"을 말하고 싶습니다.
Raphael

답변:


9

시간이 우리가 고려해야 할 유일한 자원이 아니기 때문에 계산 복잡성 은 더 일반적인 용어입니다. 다음으로 가장 분명한 것은 알고리즘이 사용하는 공간이므로 계산 복잡성의 일부로 공간 복잡성 에 대해 이야기 할 수 있습니다 . 실제로 우리는 당신이 사용하는 모든 측정에 대해이 작업을 수행 할 수 있습니다. 물론 일부 측정은 다른 측정보다 유용합니다.

따라서 최악의 경우 알고리즘이 수행하는 단계 수를 계산하면 해결하는 문제에 대한 시간 복잡성이 생기고, 사용하는 메모리의 양 / 테이프 셀 수를 계산하면 공간 복잡성이 제한됩니다.

엄격하게하려면 복잡성이 알고리즘이 아닌 문제를 참조하므로 문제에 복잡도 한계가 있고 알고리즘에 리소스 한계 (실행 시간, 공간 사용 ...)가 있다는 점을 기억하십시오. 그것은 정의 형식의 문제 일뿐 복잡성 이론은 문제를 다룬다. 예, 알고리즘 분석 문제와 복잡성과 algorithmics가 서로 긴밀하게 연결되어위한 핵심 도구입니다 만, 공식적으로 우리가에 병합 - 정렬 (알고리즘)을 언급하지 않았다 , 그것은 문제의 S O R T I N gP . 병합 정렬은 특정 리소스를 사용합니다 ( O ( n log n )PSortingPO(nlogn)예를 들어 단계). 알고리즘의 리소스 바운드 및 정확성은 문제에 대한 복잡성 (상위)을 암시하지만 서로 다릅니다. A C 0- 감소 하에서 T C 0-완료 이며, 이러한 복잡성 한계는 실제로 문제에 대해서만 명시 될 수 있습니다 (그러나 알고리즘 적 의미는 있음).SortingTC0AC0


@shekharsuman 문제는 일반적인 의미가 아니라 계산 문제 (예 : k-Vertex Cover)의 형식적인 개념을 의미합니다. 계산 복잡도는 계산 문제의 분류이므로 공식적인 의미에서 복잡성은 문제에 대해 말할 수있는 것을 말합니다. 알고리즘에 대한 결과는 문제의 복잡성에 대해 알려주지 만 그 자체로는 복잡성 결과가 아닙니다 (그러나 비공식적으로 알고리즘의 복잡성에 대해 이야기합니다).
Luke Mathieson

1
@shekharsuman 위키 백과 페이지 의 첫 단락은 아주 좋은 요약입니다.
Luke Mathieson

@Luke 감사합니다, 이것들은 명확합니다. 그러나 관용구를 사용하면 "공식적으로 알고리즘을 평가하는 데 가장 많이 사용되는 복잡성 유형" (정확하지는 않지만). 시간 대 계산은 무엇입니까? 내가 생각하는 것은 일반적으로 가장 중요한 것은 자원이 어떤 의미에서 더 확장 가능하기 때문에 시간이라는 것입니다!
힐랄 중앙값

1
@MedianHilal 시간은 실제로 문제의 복잡성에 대해 가장 일반적으로 고려되는 측정입니다. 공간은 그다지 뒤쳐지지 않습니다 (적어도 복잡한 이론가들과 사람들은 매일 큰 데이터 세트를 다루지 않습니다).
Luke Mathieson

-2

순환 복잡도는 계산 복잡성의 척도로 종종 사용됩니다. /programming/9097987/calculation-of-cyclomatic-complexity에 유용한 예제가 제공됩니다.

사이클로 매틱 복잡도는 높지만 시간 복잡도는 낮지 만 루프를 사용하지 않는 알고리즘을 통해 서로 다른 여러 경로가있을 수 있습니다. 단일 루프를 가진 프로그램은 순환 복잡성이 낮지 만 시간 복잡성이 높을 수 있습니다.

순환 복잡도는 종종 코드에 필요한 유지 보수의 척도로 사용됩니다. 보다 자세한 내용은 http://docs.sonarqube.org/display/SONAR/Bad+Distribution+of+Complexity 에서 제공됩니다 . 이는 코드의 런타임 측정 인 시간 복잡성과 다르며 시스템의 효과에 대한 사용자 인식을 평가하는 데 사용될 수 있습니다.


문제는 순환 복잡성이 아니라 계산 복잡성에 관한 것입니다!
Am_I_Helpful

당신은 영업 이익을 읽을 수 있습니다 - 그가 알고리즘의 복잡성에 대해 묻는 데요 - 긍정적 인 피드백을 다음을 추가하려고 - 복잡성을은 계산 복잡도는 알고리즘의 정적 측정 제공
velvetytoast

2
순환 복잡도는 계산 복잡성을 측정하지 않습니다. 계산 복잡도는 소스 코드 구조가 얼마나 복잡한지가 아니라 실행 시간을 말합니다.
DW

@DW 더 정확하게 말하면 계산 복잡도는 문제를 해결하는 데 필요한 리소스 (시간, 공간, 교대, 오라클 호출 등을 포함 할 수 있음)를 나타냅니다.
David Richerby

@DavidRicherby 나는 이것에 대한 전문가가 아니므로 틀렸다면 정정하십시오. 프로그램 크기와 같은 정적 복잡성 측정은 일부 상황에서 중요한 역할을합니다. 나는 그것이 Kolmogorov의 복잡성과 더 관련이 있다고 생각합니까? 그것이 사이클로 매틱 복잡성에 대한 사례가 아닌가? 프로그램이나 문제를 작성하기위한 복잡한 문제와, 문제를 해결하거나 실행하기위한 복잡한 문제는 상황에 대한 간단한 근사치 일 수 있습니다. 나는 이것에 대해 합리적인 질문을 쓸 것이라고 확신하지 못한다.
babou
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.