{{위키데이터 속성 추적}}
{{밀레니엄 문제}}

'''P-NP 문제'''(-問題, {{llang|en|P versus NP problem}})는 [[복잡도 종류]] [[P (복잡도)|P]]와 [[NP (복잡도)|NP]]가 같은지에 대한 [[이론 컴퓨터 과학]]의 [[컴퓨터 과학의 미해결 문제 목록|미해결 문제]]로, 간략하게 말해 답을 빠르게 검산할 수 있는 문제는 빠르게 풀릴 수도 있는가를 묻고 있다. 여기서 ''빠르게''라는 말은 [[다항 시간]] 안에 작업을 수행하는 알고리즘이 존재한다는 의미로, 즉 걸리는 시간이 알고리즘에 입력하는 크기의 [[다항함수]](이를테면, [[지수 함수]]와 반대)가 된다는 뜻이다. 다항 시간 안에 답을 구하는 알고리즘이 존재하는 문제들을 "[[P (복잡도)|P]]"라고 하며, P는 [[결정론적 튜링 기계]]를 사용해 [[다항 시간]] 내에 답을 구할 수 있는 문제류이다. 어떤 문제들은 빠르게 답을 찾을 수 있는 방법이 알려져 있지는 않지만 답이 제공되었을 때 빠르게 검산하는 것은 가능한데, 다항 시간 안에 답을 검산할 수 있는 문제들을 "[[NP (복잡도)|NP]]"라고 한다. NP는 [[비결정론적 튜링 기계]]를 사용해 다항 시간 내에 답을 구할 수 있는 문제류이며 "nondeterministic polynomial time"의 약자이다. 여기에서 결정론적 튜링 기계에 사용한 프로그램을 비결정론적 튜링 기계에 적용할 수 있으므로, P는 NP의 부분류가 된다.

P-NP 문제가 해결되면 다항 시간 안에 답을 검산할 수 있는 문제들이 다항 시간 안에 답을 구할 수도 있는지를 알 수 있게 된다. 현재 대부분의 학자들은 P ≠ NP일 것으로 예상하는데, 만약 P ≠ NP인 것으로 드러난다면 NP인 문제들 중에는 풀이법을 확인하는 것보다 답을 구하는 게 더 어려운 경우가 있다는 것을 의미한다. 그러한 문제들은 다항시간 안에 풀 수 없지만 다항시간 안에 답을 검산하는 것은 가능하다.

P-NP 문제는 [[컴퓨터 과학]]에서 가장 중요한 미해결 난제이자, [[클레이 수학연구소]]에서 정한 7개의 [[밀레니엄 문제]] 중 하나로 100만 달러의 상금이 걸려있다.<ref>{{저널 인용|title=The status of the P versus NP problem|journal=Communications of the ACM|last1=Fortnow|first1=Lance|author-link=|url=http://www.cs.uchicago.edu/~fortnow/papers/pnp-cacm.pdf|year=2009|volume=52|issue=9|pages=78–86|doi=10.1145/1562164.1562186|archive-url=https://wayback.archive-it.org/all/20110224135332/http://www.cs.uchicago.edu/~fortnow/papers/pnp-cacm.pdf|archive-date=24 February 2011|access-date=4 December 2022|citeseerx=10.1.1.156.767|s2cid=5969255}}</ref> [[계산 이론]]에서의 중요성을 차치하고서도, 문제의 증명은 수학, [[암호학]], 알고리즘 연구, [[인공지능]], [[게임이론]], 멀티미디어 프로세싱, 철학, 경제학 등 다양한 분야에 깊은 영향을 끼칠 것으로 예상된다.<ref>{{서적 인용|title=The Golden Ticket: P, NP, and the Search for the Impossible|url=https://archive.org/details/goldenticketpnps0000fort|last=Fortnow|first=Lance|year=2013|publisher=Princeton University Press|location=Princeton, NJ|isbn=9780691156491}}</ref>

== 예시 ==
쉽게 풀이법이 확인될 수 있는 문제이지만 답을 구하기는 어려울 수 있는 문제의 예시로는 [[부분집합 합 문제]]가 있다. 이 문제는 어떤 정수들의 집합이 주어졌을 때 공집합이 아닌 부분집합 중 적어도 하나 이상의 부분집합의 합계가 0이 될 수 있는지 알아내는 문제이다. 예를 들어 {−2, −3, 15, 14, 7, −10}이라는 집합이 주어졌을 때 이 문제에 대한 답은 그렇다이다. 왜냐하면 부분집합 {-2, -3, -10, 15}의 합계가 0이기 때문이고, 이 부분집합이 문제의 답이 된다는 것을 확인하기 위해서는 3번의 덧셈만으로 충분하다. 반면 처음 주어진 집합에서 원소의 합이 0이 되도록 하는 부분집합을 찾으려면 일일이 부분집합을 만들고, 각 원소들끼리 더하여 0이 되는지 일일이 확인해야 하기 때문에 쉽지 않다. 이러한 조건을 만족하는 부분집합을 다항 시간 안에 찾아내는 알고리즘은 현재까지 알려져 있지 않다. 따라서 부분집합의 합 문제는 NP에 속한다. 만약 P ≠ NP라면 이 문제는 다항 시간 내에 답을 구할 수 없다는 뜻이 된다. 반면 P = NP라면 현재 [[시간 복잡도]](2<sup>''n''</sup>-n-1 회)안에 풀리는 이 문제를, 실제로는 다항시간 안에 풀 수 있는 알고리즘이 존재하며 아직 그러한 알고리즘을 찾지 못했을 뿐이라는 뜻이 된다.

== 역사 ==
P-NP 문제를 처음 자세히 서술한 것은 1971년 [[스티븐 쿡]]의 논문 〈The Complexity of Theorem Proving Procedures〉에서이다.<ref>{{서적 인용|title=Proceedings of the Third Annual ACM Symposium on Theory of Computing|last=Cook|first=Stephen|author-link=스티븐 쿡|year=1971|pages=151–158|chapter=The complexity of theorem proving procedures|doi=10.1145/800157.805047|isbn=9781450374644|chapter-url=http://portal.acm.org/citation.cfm?coll=GUIDE&dl=GUIDE&id=805047|s2cid=7573663}}</ref> 엄밀한 정의가 등장한 것은 1971년이지만 그 이전에도 어렴풋하게나마 문제와 그 증명의 어려움, 그리고 잠재적인 결과 등이 언급되었다. 1955년에 수학자 [[존 포브스 내시|존 내시]]는 [[미국 국가안보국]]에 보낸 편지에서, 충분히 복잡한 암호를 깨기 위해서는 키의 길이에 대해 지수적인 시간이 소요될 것으로 추측하였다.<ref>{{웹 인용|url=https://www.nsa.gov/Portals/70/documents/news-features/declassified-documents/nash-letters/nash_letters1.pdf|title=Letters from John Nash|author=NSA|year=2012|archive-url=https://web.archive.org/web/20181109234811/https://www.nsa.gov/Portals/70/documents/news-features/declassified-documents/nash-letters/nash_letters1.pdf|archive-date=2018-11-09|url-status=live}}</ref> 또한 1956년 [[쿠르트 괴델]]이 [[존 폰 노이만]]에게 썼던 편지에서, 괴델은 현재 [[Co-NP-완전]]에 해당하는 문제가 2차 혹은 선형 시간 안에 풀릴 수 있는지 아닌지를 물었다.<ref>{{저널 인용|title=Gödel, von Neumann, and the P = NP problem|journal=Bulletin of the European Association for Theoretical Computer Science|last1=Hartmanis|first1=Juris|url=http://ecommons.library.cornell.edu/bitstream/1813/6910/1/89-994.pdf|volume=38|pages=101–107}}</ref>

== 예상 ==
2002년부터 미국의 컴퓨터 과학자 William Gasarch는 P-NP 문제에 관한 설문을 진행하였다.<ref>{{저널 인용|title=The P=?NP poll.|journal=SIGACT News|author=William I. Gasarch|url=http://www.cs.umd.edu/~gasarch/papers/poll.pdf|date=June 2002|volume=33|issue=2|pages=34–47|doi=10.1145/564585.564599|archive-url=https://web.archive.org/web/20070615132837/http://www.cs.umd.edu/~gasarch/papers/poll.pdf|archive-date=2007-06-15|url-status=live|citeseerx=10.1.1.172.1005|s2cid=36828694}}</ref><ref>{{저널 인용|title=The Second P=?NP poll|journal=SIGACT News|author=William I. Gasarch|url=http://www.cs.umd.edu/~gasarch/papers/poll2012.pdf|volume=74|archive-url=https://web.archive.org/web/20140124031930/http://www.cs.umd.edu/~gasarch/papers/poll2012.pdf|archive-date=2014-01-24|url-status=live|}}</ref> P ≠ NP일 것으로 예측한 사람은 2002년에 61%, 2012년에 83%, 2019년에 88%로 증가하였다. 전문가로 대상을 한정했을 때에는 P ≠ NP일 것이라고 답한 비율이 99%에 달했다.<ref>{{웹 인용|url=https://www.cs.umd.edu/users/gasarch/BLOGPAPERS/pollpaper3.pdf|title=Guest Column: The Third P =? NP Poll1|archive-url=https://web.archive.org/web/20190331023850/https://www.cs.umd.edu/users/gasarch/BLOGPAPERS/pollpaper3.pdf|archive-date=2019-03-31|url-status=live|access-date=6 December 2022}}</ref>

== NP-완전 ==
[[파일:P np np-complete np-hard.svg|섬네일|300px|right|P ≠ NP 또는 P=NP일 때 [[P (복잡도)|P]], [[NP (복잡도)|NP]], [[NP-완전]], [[NP-난해]] 간의 관계를 보여주는 오일러 다이어그램.]]
{{본문|NP-완전|NP-난해}}
P-NP 문제에서 중요한 개념 중 하나로 [[NP-완전]]이 있는데, NP-완전 문제란 다른 임의의 NP 문제로부터 다항 시간 안에 환원될 수 있는 NP 문제를 말한다. 즉, 모든 NP 문제는 다항 시간 안에 NP-완전인 문제로 변환할 수 있다. 쉽게 표현하자면 NP-완전인 문제는 다른 어떤 NP들보다 해결하기 버거운 축에 속하는 NP 문제이다.

모든 NP 문제만큼은 어려운 문제, 즉 임의의 NP 문제로부터 다항 시간 안에 환원될 수 있는 문제를 [[NP-난해]]라고 한다. NP-난해인 문제는 NP에 속할 필요는 없다. 즉 바꾸어 말하면 NP-난해이면서 NP인 문제는 NP-완전 문제에 속한다.

== 같이 보기 ==
* [[수학의 미해결 문제 목록]]
* [[컴퓨터 과학의 미해결 문제 목록]]
* [[게임 복잡도]]

== 각주 ==
<references />

== 참고 문헌 ==
* {{서적 인용|title=Introduction to Algorithms|last=Cormen|first=Thomas|year=2001|publisher=MIT Press|location=Cambridge|isbn=978-0-262-03293-3|title-link=Introduction to Algorithms}}
* {{서적 인용|url=https://archive.org/details/computersintract0000gare|title=Computers and Intractability: A Guide to the Theory of NP-Completeness|last1=Garey|first1=Michael|last2=Johnson|first2=David|year=1979|publisher=W. H. Freeman and Company|location=San Francisco|isbn=978-0-7167-1045-5|url-access=registration}}
* {{서적 인용|title=P, NP, and NP-Completeness|last=Goldreich|first=Oded|year=2010|publisher=Cambridge University Press|location=Cambridge|isbn=978-0-521-12254-2}} [http://www.wisdom.weizmann.ac.il/~oded/bc-drafts.html Online drafts]
* {{저널 인용|title=Languages that Capture Complexity Classes|journal=SIAM Journal on Computing|last1=Immerman|first1=N.|year=1987|volume=16|issue=4|pages=760–778|doi=10.1137/0216051|citeseerx=10.1.1.75.3035}}
* {{서적 인용|title=Computational Complexity|url=https://archive.org/details/computationalcom0000papa|last=Papadimitriou|first=Christos|year=1994|publisher=Addison-Wesley|location=Boston|isbn=978-0-201-53082-7}}
{{계산 이론}}

[[분류:밀레니엄 문제]]
[[분류:복잡도 종류]]
[[분류:수학의 미해결 문제]]
[[분류:컴퓨터 과학의 미해결 문제]]
[[분류:추측]]
[[분류:1956년 컴퓨팅]]
[[분류:암호학]]