12. Complexity Classes (복잡도 종류)

2024. 3. 20. 22:13CS - Roadmap.sh/12. Complexity Classes

Complexity Classes

In computer science, there exist some problems whose solutions are not yet found, the problems are divided into classes known as Complexity Classes. In complexity theory, a Complexity Class is a set of problems with related complexity. These classes help scientists to groups problems based on how much time and space they require to solve problems and verify the solutions. It is the branch of the theory of computation that deals with the resources required to solve a problem.

 

컴퓨터 과학에는 아직 해결책을 찾지 못한 문제들이 존재하며, 이러한 문제들은 복잡도 클래스라는 클래스로 나뉩니다. 복잡성 이론에서 복잡성 클래스는 관련 복잡성을 가진 문제들의 집합입니다. 이러한 클래스는 과학자들이 문제를 해결하는 데 필요한 시간과 공간의 양에 따라 문제를 그룹화하고 해결책을 검증하는 데 도움이 됩니다. 복잡도 이론은 문제를 해결하는 데 필요한 자원을 다루는 계산 이론의 한 분야입니다.

 

 

 

 

complexity classes는 알고리즘의 연산 복잡도를 분류하는 방법으로 사용됩니다. 이는 특정 종류의 문제를 해결하기 위해 필요한 계산 자원(시간, 공간 등)의 양을 기준으로 분류합니다. 

 

여기서 말하는 '문제'란 주어진 입력에 대해 특정 출력을 생성하는 작업을 의미합니다. 

Complexity classes는 컴퓨터 공학에서 중요한 이유 중 하나는 이를 통해 어떤 문제가 실제로 효율적으로 해결 가능한지, 또는 이론적으로 해결이 불가능한지 등을 이해할 수 있기 때문입니다.

 

주요 Complexity Classes


P (Polynomial Time)

 다항 시간 내에 해결할 수 있는 결정 문제들의 집합입니다. 여기서 다항 시간이란 입력 크기에 대한 다항식 함수로 표현될 수 있는 시간 내에 문제를 해결할 수 있음을 의미합니다. 예를 들어, 정렬이나 이진 검색 등이 P에 속합니다.


NP (Nondeterministic Polynomial Time)

 다항 시간 내에 그 해답을 검증할 수 있는 결정 문제들의 집합입니다. 다시 말해, 해답을 찾는 것은 어려울 수 있지만, 주어진 해답이 정답인지를 다항 시간 내에 확인할 수 있는 문제들입니다. 대표적으로 여행하는 판매원 문제(TSP)가 있습니다.


NP-Hard (Non-deterministic Polynomial-time Hard)

 NP 내의 모든 문제가 다항 시간 내에 이 문제로 환원될 수 있다면, 그 문제는 NP-Hard에 속합니다. 즉, NP의 모든 문제보다 어렵거나 같은 문제들의 집합입니다. NP-Hard 문제는 꼭 결정 문제가 아니어도 됩니다.


NP-Complete

 NP에도 속하고 NP-Hard에도 속하는 문제들의 집합입니다. 이 문제들은 NP 내에서 가장 어려운 문제들로, 하나의 NP-Complete 문제를 다항 시간 내에 해결하는 알고리즘이 발견된다면, 모든 NP 문제들도 다항 시간 내에 해결할 수 있게 됩니다.

 

 

Complexity Classes의 중요성


Complexity classes의 이해는 컴퓨터 과학에서 중요한 이유 중 하나는 알고리즘의 효율성을 분석하고, 여러 문제들 사이의 관계를 파악하는 데 도움을 줍니다. 예를 들어, 어떤 알고리즘이 P에 속하는 문제를 해결한다면, 그 알고리즘은 실용적으로 사용 가능하다고 볼 수 있습니다. 반면, NP-Hard 문제는 현재로서는 다항 시간 내에 해결할 수 없기 때문에, 이러한 문제들을 해결하기 위한 다른 접근 방식을 모색해야 합니다.

또한, complexity classes는 컴퓨터 과학의 기초이론을 이해하는 데 중요한 역할을 합니다. 특히, P와 NP의 관계는 컴퓨터 과학의 중요한 미해결 문제 중 하나이며, 이 분야의 연구는 새로운 알고리즘의 발견, 계산 이론의 발전, 그리고 암호학과 같은 응용 분야에도 중대한 영향을 주었습니다.

 

 

 

 

 

참고

https://ko.wikipedia.org/wiki/%EB%B3%B5%EC%9E%A1%EB%8F%84_%EC%A2%85%EB%A5%98

 

복잡도 종류 - 위키백과, 우리 모두의 백과사전

 

ko.wikipedia.org

 

728x90