PGR21.com
- 자유 주제로 사용할 수 있는 게시판입니다.
- 토론 게시판의 용도를 겸합니다.
Date 2015/01/09 22:17:40
Name Neandertal
Subject [일반] 수포자가 이해하려고 해본 p vs. np 문제...과연 이번엔?...



저는 학교 다닐 때 자연계열이었음에도 수학을 엄청 못했습니다. 한번은 100점 만점에 25점도 받아봤고 지금도 가끔 씩 고등학교로 되돌아가서 수학시험을 보는 악몽(!)을 꾸곤 합니다. 꿈에서 보면 배경은 이곳저곳 바뀌어도 늘 시간은 고등학교 때이고 수학문제지를 받았는데 1번부터 모르는 문제가 나오고 1번을 못 풀어서 쩔쩔매다보면 어느새 감독 선생님이 시험지 걷어가겠다고 하면서 꿈이 끝나곤 합니다.

그런 제가 예전에 겁도 없이 피지알 자유게시판에 밀레니엄 수학문제 가운데 하나인 p vs. np 문제에 대한 글을 올렸다가 여러분의 날카로운 지적을 받고 개망신을 당했던 적도 있었습니다. 그냥 거기서 그만 두면 되는 데 어젯밤에 또 고등학교로 되돌아가서 수학문제를 푸는 꿈을 꾸다보니 오늘은 아침부터 갑자기 이 문제가 생각이 나서 또 인터넷을 돌아다니며 이 문제를 이해해 보려는 시도를 하게 되었습니다.

그래서 반나절을 이곳저곳 웹서핑 하면서 눈동냥을 해본 결과 제가 최대한 이 문제에 대해서 아래 정도만큼 이해를 하게 되었습니다. 과연 제가 문제의 일부분이나마 제대로 이해를 한 건지 아니면 또 이번에서 제대로 헛 다리를 짚은 건지 다시 한 번 피지알 회원님들의 준엄(!)한 심판을 받아볼까 싶어서 또 이렇게 자게에 글을 올립니다.


-----------------------------------------------------------------------------------------------------
그러니까 이 p vs. np 문제는 순수한 수학의 문제만은 아니라 컴퓨터 알고리즘과 관련이 있는 문제라는 겁니다. 저는 수알못 못지않은 컴알못이어서 이 문제도 만만치가 않은데 일단 그러니까 이 세상에는 컴퓨터로 해결하기 쉬운 문제가 있고 아무리 컴퓨터라고 하더라도 답을 내는 것이 매우 어려운 문제들이 있다는 것입니다.

예를 들어 2 + 3 의 답을 구하는 문제는 쉽게 컴퓨터 알고리즘으로 해결할 수 있다고 합니다. 더하는 숫자의 자리수가 커지더라도 컴퓨터로 쉽게 해결할 수 있는 문제라는 본질은 바뀌지 않는다고 합니다.

그리고 이런 문제는 거꾸로 답을 제시하고 이 답이 그 문제의 해답이 맞느냐고 역으로 검증하는 것 역시 쉽게 컴퓨터 알고리즘으로 해결이 가능하다고 하네요. 즉, 5는 2와 3의 합이 맞느냐?라고 하는 문제 역시 컴퓨터로 간단하게 해결이 되는 문제라는 거지요.

이렇듯 컴퓨터 알고리즘으로 주어진 문제의 답도 쉽게 구할 수 있고 역으로 어떤 주어진 답이 정말 맞는 지 검증하는 것 역시 쉬운 문제를 P문제라고 한다고 합니다.

그럼 이번에는 다른 문제를 한 번 생각해 봅시다.

예를 들어 [1.7950768632263237 x 10의 29승]은 과연 무슨 수와 무슨 수의 곱인가? 라는 문제를 컴퓨터를 사용해서 해결한다고 생각해 봅시다. 저 같은 컴알못은 이번에도 이런 문제 역시 컴퓨터 엔터키 누르기가 무섭게 답이 척 하고 나올 거라고 생각하지만 의외로 이런 문제는 컴퓨터로 해결하기가 어렵다고 합니다. 시간이 아무리 오래 결려도 해결하기가 쉽지가 않다고 하는군요.

그런데 만약 어떻게든 이 문제의 해를 우리가 알고 있고 이 해가 과연 정답인지 검증하는 문제는 의외로 간단합니다. 즉, 2569823451289563와 69852147326523의 곱이 1.7950768632263237x 10의 29승인가? 하는 문제는 간단하게 검증할 수 있다고 합니다. 제가 보기에도 그냥 두 수를 곱해서 실제로 답이 1.7950768632263237x 10의 29승인지만 확인하면 될 것 같습니다.

이렇듯 문제의 답을 구하기는 어렵지만 어떤 주어진 답이 그 문제에 맞는 답인지 검증하는 것은 쉬운 문제를 np 문제라고 한다고 합니다.

이제 사람들이 알고 싶은 것은 과연 p 문제와 np 문제의 본질이 같은 것인가 전혀 다른 것인가 하는 것이라고 하네요. 즉, 저 np 문제라고 하는 것을 우리가 컴퓨터 알고리즘으로 쉽게 해결하지 못하는 것은 단지 우리가 아직 저 문제를 쉽게 해결할 수 있는 방법을 찾지 못해서 그런 것일 뿐 그 문제를 해결할 수 있는 방법만 알게 되면 p문제처럼 쉽게 컴퓨터로 해결할 수 있을 것이다 라는 것은 p = np 의 입장이라는 겁니다.

반면에 np 문제는 본질적으로 p 문제와는 다르고 그렇기 때문에 np 문제를 컴퓨터 알고리즘으로 쉽게 해결할 수 있는 방법이라는 것 자체가 존재하지 않는다 라는 것이 p =(not) np 의 입장이 되겠습니다.

즉, p vs. np 문제는 “p = np” 냐 아니면 “p는 np가 아니냐” 라는 것을 수학적으로 증명하라는 문제가 되겠습니다. 만약 p = np 라는 게 사실이라면 이 세상은 어제와는 전혀 다른 신세경이 펼쳐질 거라고 합니다...
------------------------------------------------------------------------------------------------------


여기까지가 제가 이해한 p vs. np 문제의 전부입니다. 만약 p vs. np 문제가 이런 게 아니라면 저는 이제까지 늘 그랬듯이 앞으로 계속 수포자로 살면서 수학문제 못 푸는 악몽이나 계속 꾸겠습니다...어차피 수알못으로 산 인생이 어언 40년이 넘었는데 여기서 뭐가 더 두렵겠습니까?...--;;;

통합규정 1.3 이용안내 인용

"Pgr은 '명문화된 삭제규정'이 반드시 필요하지 않은 분을 환영합니다.
법 없이도 사는 사람, 남에게 상처를 주지 않으면서 같이 이야기 나눌 수 있는 분이면 좋겠습니다."
작은 아무무
15/01/09 22:30
수정 아이콘
P=NP
N=1

하하 너무 쉽다 하하...
절름발이이리
15/01/09 22:31
수정 아이콘
문제: 그러면 이제 p를 구하시오
코우사카 호노카
15/01/09 22:32
수정 아이콘
P=0

문과의 한계..
작은 아무무
15/01/09 22:37
수정 아이콘
P=0

고등학교 때는 나름 이과였습니다만?
15/01/09 22:46
수정 아이콘
P = 0


수리 주관식은 무조건 1,0 아닌가요?! (문과 + 상경계)
15/01/10 00:36
수정 아이콘
P=NP
P-NP=0
P x (1-N)=0

P = 0 or N = 1
F.Nietzsche
15/01/09 22:50
수정 아이콘
Computation theory를 깊이 공부하면서, '산은 산이요 물은 물이요' 철학을 배우고 있는 느낌을 받았었죠...크크
15/01/09 23:07
수정 아이콘
비전공자가 본문정도의 이해정도라면 큰 무리는없다고 생각됩니다. 저는 p=np일가능성도 꽤 있다고 생각하는편인데 그렇다 하더라도 신세경이 펼쳐지는것은 전혀아니라고 생각합니다. 사실 지금의 퓨터에서는 알고리듬 복잡도가 p에 있다 하더라도 얼마든지 비현실적으로 어려워질수있거든요. 양자컴퓨터라면 좀 상황은 달라지겠습니다만...
15/01/09 23:12
수정 아이콘
아이고 의미없다.
-지나가던 생물전공자.
15/01/09 23:17
수정 아이콘
쉬운 문제 p의 해결책을 비슷한 유형의 어려운 문제 np의 해결책으로 적용할 수 있냐 없냐가 np문제의 핵심 아니었나요?
제가 알던거랑 좀 다른 개념이라 당황스럽네요
Neandertal
15/01/09 23:20
수정 아이콘
티모님 생각이 맞을겁니다...--;;;
발롱도르
15/01/09 23:39
수정 아이콘
P-NP 문제

쉽게 말해서, 답을 알고 보면 쉬운 문제(NP 문제)가 답을 알기 전에도 쉬운 문제(P 문제)인가를 증명하는 것.

P문제는 결정론적 튜링 머신으로 다항식 시간 내에 해결이 가능한 문제로 요즘 쓰이는 컴퓨터 같은 계산장치를 이용해서 '합리적인 시간 내에' 풀 수 있는 형태의 문제를 말한다.

간단히 얘기하여 문제를 풀때 그 문제를 푸는 시간을 다항식으로 나타낼수 있는 문제를 말하는것으로
예를 들자면

1 5 9 7 3 2 라는 숫자를 가장 낮은 숫자로 시작해 1 2 3 5 7 9 로 나열한다고 할때
맨처음부터 2개씩 묶어 비교해서 낮은숫자를 앞으로 보내는 알고리즘을 만들면 되고

(1 5) 9 7 3 2
1 (5 9) 7 3 2
1 5 (7 9) 3 2
1 5 7 (3 9) 2
1 5 7 3 (2 9)

의 순서대로 계속 찾게 된다. 그 걸리는 시간은 n(n+1)/2 로 나타낼수있고 (n(n+1)/2 씩 비교를 반복하면 되므로....) 따라서 P 문제가 된다.


NP문제는 비결정론적 튜링 머신이라는 장치로 풀 수 있는 것. 이 기계는 문제에 대한 여러 종류의 답을 동시에 검사할 수 있는 계산 장치이다.

P문제가 어떤 알고리즘을 만들어 문제를 풀수있다면 NP문제는 그냥 모든 경우의 수를 따져볼수 밖에 없는 문제이다.
'거대한 자연수의 (1이나 그 자신이 아닌) 약수를 찾는 문제'가 그것으로 두 거대한 소수의 곱으로 되어있는 자연수는 소인수분해를 할 방법이 없다. 예를 들어 68718821377 의 약수가 뭐냐고 한다면 일일이 2,3,4로 나누어 볼수밖에 없다. 하지만 이 수의 두 약수인 두 소수 131071, 524287 을 알려준다면 쉽게 답을 구할수가 있다. 이것이 NP 문제다.


만약 P=NP 가 증명된다면 그동안 일일이 하나하나씩 모든 경우의 수를 따져서 풀어야 하는 문제를 특정한 알고리즘에 의해 쉽게 풀수 있게 된다.

그렇기에 만약 'P=NP가 맞다'는 것을 증명이라도 하는 날이면 증명한 사람은 수학책이 아니라 위인전에 이름이 실리게 될것이다.

이 문제가 더 중요시하게 여겨지는 부분이 암호로 모든암호는 전형적인 NP문제다. 암호를 풀기위해선 지금은 일일이 모든 경우의 수를 대입해야 하고 따로 알고리즘을 만들수가 없지만 답을 알면 쉽게 풀린다. 암호가 해독을 어렵게 하기위해 특수문자등을 넣어 경우의수를 엄청나게 확대시키는데는 다 이유가 있다. 그런데 NP문제가 P문제라는게 증명된다면? 거의 모든종류의 암호는 안전할수 없게 된다.
회색사과
15/01/09 23:39
수정 아이콘
지나가던 전산학과 대학원생입니다
제가 배운 바를 말씀드리자면...

p 는 np 문제인 것은 맞습니다. p 문제가 np 문제의 부분집합이기 때문이죠.
np 문제가 p 문제이냐. 가 사람들이 고민하는 부분이죠.
not p 는 np와는 또 다른 개념입니다.

일단 전산학과의 개념을 빌리자면....

p 문제는 polynomial time 안에 문제를 해결할 수 있는 문제를 의미하고..

np 문제의 정의는 어떠한 답이 주어 졌을 때 그 답이 정답인지 (옳은 답인지) 를 p 타임 안에 해결할 수 있는 방법이 있는 문제입니다.
(개념적인 정의는 non-deterministic automata로 문제를 해결했을 때 p time 안에 해결할 수 있는 문제 입니다)
위의 "답이 주어졌을 때 그 답이 정답인지를 확인하는 방법" 을 전산학과에서는 certifier 라고 합니다.
그리고 p 타임 안에 해결할 수 있는 certifier를 의미있는 cerftifier라고 합니다.

p = np 인가? 에 대한 답은
p가 np에 속함을 보이고 동시에 np가 p에 속함을 보이면 서로 상등임을 보일 수 있는데

p가 np에 속함은 p 문제를 해결하는 알고리즘 자체를 certifier로 이용하면 되므로 p 가 np 문제임은 쉽게 보일 수 있습니다.
np 문제가 p에 속함을 보일 수 있냐가 문제인거죠

not p 문제는.. p가 아님을 증명한 문제입니다. 아마 가장 유명한 예는 halting problem 이겠네요. 현재까지 not p 로 증명된 문제는
그리 많지 않은 것으로 알고 있습니다.
15/01/10 02:36
수정 아이콘
학부 알고리즘 강의때 traveling salesman 문제를 팀과제로 해본적이 있습니다.
평면에 주어진 N개의 도시들이 있고 그들 사이의 거리를 아는 상황에서, 세일즈맨이 각 도시를 한번씩 거쳐가는 방법중 거리가 제일 짧은 경로를 구하는 것이었습니다. 원래 정확한 값을 구하려면, 모든 경로에 대해서 거리를 구하고 그중 제일 작은 값을 택하는 것이죠. 경우의 수가 N^N (또는 2^N)이 될 텐데요, 이걸 아마도 N^k (k는 상수) 안에 구하는 방법이 있느냐는 질문이 아닌가라고 이해하고 있습니다. NP-hard라는 용어도 들어본것 같은데, 잘은 모르겠네요. 여튼 이문제나 이것과 동치인 다른 문제에 대해서 답을 구하면 필즈상을 받을수 있겠죠~
이와는 조금 다른 얘기인데, N-body 문제 (N개의 행성들이 만유인력에 의해 상호작용할때)는 하나의 행성이 나머지 N-1개의 행성과의 상호작용을 모두 고려해야 하기 때문에 약 N^2의 계산이 필요합니다. 이때 약 N번의 계산으로 근사하는 방법이 fast multipole 방법인데요, 20세기의 탑10알고리즘중 하나입니다. (https://www.siam.org/pdf/news/637.pdf) 저도 참 군침만 도는 알고리즘인데요...
SugarRay
15/01/10 03:26
수정 아이콘
저도 계산과학은 잘 모르는 수알못인데 대충 이해해보면 심플렉스 같은 p문제가 있고 비선형계획과 같은 NP-hardness 문제가 있는데 어떤 np-hard 도 언젠가는 p문제로 바꿔 지수적이 아닌 다항적으로 증가하는 알고리듬을 구할 수 있는가 아닌가요?
트오세
15/01/10 04:49
수정 아이콘
심플렉스가 linear programming에 나오는 것 말씀하시는 건가요? 그건 exponential로 알고 있습니다.
15/01/10 03:26
수정 아이콘
이해하신 부분이 대부분 맞네요!

P와 NP가 전혀 다른 문제는 아니고, 위에서 말씀해주셨듯이 P가 NP의 부분집합임은 이미 증명이 되어 있습니다. 어떤 문제를 쉽게 푸는 알고리즘이 존재한다면, 그 알고리즘을 그대로 사용해서 답을 검증할 수 있기 때문입니다. (쉽게 풀 수 있는 방법이 있는 문제를 냈는데, 채점을 못 한다면 말이 안 되겠죠?) P=NP 문제는 결국 NP이지만 P는 아닌 문제를 찾아내거나, 그것이 불가능하다는것을 보이는 것이 핵심이 됩니다.

NP 문제 중에서는 즉 "이 문제 하나만 풀면, 다른 NP 문제는 다 이 문제로 바꿔서 풀 수 있다!"고 증명된 문제들이 있습니다. 이것이 바로 NP-Complete (NP-완전) 문제인데요. 그러니까 모든 NP 문제를 다 검토할 필요도 없고, NP-완전 문제중에 하나라도 풀 수 있으면 자동으로 모든 NP문제는 쉽게(다항 시간 안에) 풀 수 있게 되고, P=NP가 되고, 신세계가 열립니다. (어렵다고 알려진 대부분의 문제를 갑자기 쉽게 풀 수 있으니까요.)

심지어 NP-완전 문제를 완벽하게 풀 필요도 없고, 적당히만 풀어도 신세경이 펼쳐지기도 합니다. 가장 어렵기로 유명한 문제 중 하나가 외판원 문제인데, 이 문제는 어떤 사람이 서울에서 출발해서 대전, 대구, 부산, 제주, ....... 등 목표 도시를 자유롭게 한 번씩 방문하고 다시 서울로 돌아올 때 총 이동 시간을 가장 짧게 만드는 문제인데요. 상당히 쉬울 것 같지만 놀랍게도 모든 NP 문제를 이 문제로 바꿀 수 있습니다. (이게 엄밀하게 NP문제는 아니기 때문에 NP-완전은 아닙니다) 그러니까 이 문제를 제대로 풀면 신세경이 열리겠지요. 그런데 놀라운 점은, 문제를 완벽히 풀지 않더라도, "난 정답은 모르겠지만 내가 푼 답은 정답의 100배보다 작다는 건 무조건 보장할 수 있어!"하는 프로그램을 누군가 만든다면 그 프로그램 또한 신세경을 펼칠 수 있다는 겁니다. 정답의 100배, 아니 1000배, 아니 10억배를 보장하는 프로그램만 있어도 모든 NP문제를 쉽게 풀 수 있거든요. 그리고 아직까지 아무도 못 만들고 있는 걸로 보아, 쉽지는 않아 보이죠?
트오세
15/01/10 04:56
수정 아이콘
외판원 문제는 NP-hard 아닌가요? 어떤 경로가 최단시간 경로라고 해도 정답인지 확인할 수 없잖아요. 이걸 NP로 (NP-complete) 바꾼 문제가 "어디어디를 5시간 안에 돌아올 수 있는 경로가 있다" 입니다.
15/01/10 12:48
수정 아이콘
아래 댓글로 답변을 대신합니다.
회색사과
15/01/10 11:46
수정 아이콘
tsp 문제는 np-hard 문제입니다. 유효한 certifier가 존재하지 않기 때문에 [그것이 최적 경로임을 증명하는 데 p타임안에 해결할 수가 없죠]
np 문제도 아닙니다용.
15/01/10 12:47
수정 아이콘
네, 맞습니다. 그래서 다시 읽어보시면 (이게 엄밀하게 NP문제는 아니기 때문에 NP-완전은 아닙니다) 이런 문구를 달아놓았죠. TSP의 결정 문제 버전을 이야기하는것이 정확하겠으나 그러면 설명이 좀 복잡해질 듯 하여 조금 짤랐습니다.
회색사과
15/01/10 12:01
수정 아이콘
np-c 와 np-hard 얘기가 나오니 조금 더 썰을 풀자면...

먼저 리덕션 개념을 이야기 해야 합니다.
알고리즘에서 리덕션이란..

한 문제를 다른 문제로 바꾸는 작업입니다. 그리고 A문제를 B문제의 형태로 바꾸어 해결할 수 있다면 B 문제는 적어도 A문제보다 같거나 어렵다 라고 합니다.
예를 들자면...
원하는 동작[동작1]이 인자 두 개[x,y]를 받아 둘을 합치는 동작이고 [x+y] 어떠한 계산기가 인자 네 개를 받아 [a,b,c,d] [ab+cd]의 동작을 하는 계산기가 있다면 동작1을 계산기에 [1,x,1,y] 라고 입력하여 해결할 수 있다. 라는 겁니다. 이 경우 계산기의 문제 난이도는 적어도 동작1 보다 같거나 어려운 문제이다 라고 하는거죠.

certifier와 마찬가지로 리덕션도 p time 안에 되어야 쓸모가 있다고 할 수 있습니다.

np 문제의 정의는 위에 말한대로
certifier가 존재할 것. 이구요.

np-complete 의 정의는
np 문제이며, 모든 np 문제로부터 리덕션이 가능할 것 입니다.

np 문제 중에서 가장 어려운 문제의 집합인 것입니다.

np-hard의 정의는
모든 np 문제로부터 리덕션이 가능할 것. 입니다. 적어도 np-complete 만큼의 난이도가 보장되고 그 이상 어려운 문제들인 것이죠.


np-complete나 np-hard 를 p time 안에 푸는 것의 의미가 여기에서 나옵니다.
np-c나 np-h의 어떤 문제라도 한 문제만 p 타임 안에 풀 수 있다면 그 이하 난이도를 갖는 모든 문제를 그 문제로 리덕션해서 풀면 되거든요
그게 가능하다면 세상에 존재하는 거의 모든 문제를 p 타임 안에 풀 수 있다는 얘기거든요.

np-c 에는 우리가 사용하는 대부분의 암호학 알고리즘들이 속하고.. [따라서 np-c 만 p타임에 풀어도 큰일이 납니다..]
np-h에는 최적값을 찾아내는 알고리즘들이 속합니다.
목록 삭게로! 맨위로
번호 제목 이름 날짜 조회 추천
57069 [일반] 홍준표는 도비로 이런 일들을 하고 있네요. [60] 마징가Z9744 15/03/20 9744 5
56957 [일반] 2014년도 한국인이 좋아하는 분야별 인물 [46] 10335 15/03/12 10335 0
56824 [일반] 갤럭시S6 과 갤럭시엣지, 갤럭시 이케아 콜라보, 카메라 품질 사진등... [118] 발롱도르19303 15/03/02 19303 0
56697 [일반] 한국인의 종교관 1984-2014 [72] Dj KOZE8202 15/02/23 8202 4
56676 [일반] [야만] 메이저리그 최고의 강타자, 랄프 카이너 [4] 화이트데이5506 15/02/22 5506 3
56554 [일반] 기록 파괴자 : MESSI [47] 빵종이7823 15/02/14 7823 1
56404 [일반] 스카이라인으로 보는 도시순위 [26] Dj KOZE9705 15/02/06 9705 1
56271 [일반] 과소평가된 한국 프로야구 선수 10인. [82] 화이트데이10378 15/01/30 10378 4
56171 [일반] 평균 나이 36.5세 아저씨들이 부르는 16년, 11년 전 노래 (덧붙임) [43] 저글링앞다리7321 15/01/25 7321 1
56147 [일반] 미밴드(MiBand), 저의 첫 웨어러블 디바이스. [16] 라면9538 15/01/24 9538 0
56144 [일반] 조정 OPS로 바라본 역대 한국 프로야구 타자 이모저모. [+수정] [67] 화이트데이10085 15/01/23 10085 3
56109 [일반] 문재인 세제개편안 관련 트윗... 과연 누가 이를 비난할수 있단말인가 [207] 발롱도르46083 15/01/22 46083 99
55942 [일반] 공무원 합격수기 [20] hulky8188 15/01/13 8188 5
55885 [일반] 수포자가 이해하려고 해본 p vs. np 문제...과연 이번엔?... [22] Neandertal11701 15/01/09 11701 0
55814 [일반] 2015년 20대들의 트렌드 읽기. [21] 탐이푸르다9941 15/01/06 9941 9
55731 [일반] 2014년 PGR21 댓글 통계 [93] 랜덤여신7963 14/12/31 7963 63
55644 [일반] 구로다 히로키. [37] 예니치카19234 14/12/27 19234 47
55638 [일반] 주말의 스마트 시장 이야기들 [18] Leeka6023 14/12/27 6023 0
55618 [일반] 말랑의 오브디이어 [10] 말랑9322 14/12/25 9322 3
55467 [일반] 2014 3Q, 삼성전자 판매량은 여전히 1위지만 하락세. [72] Leeka9283 14/12/16 9283 1
55443 [일반] 일본 대표팀 아시안컵 23인 엔트리 발표. [22] Special one.4485 14/12/15 4485 0
55429 [일반] 14 프로야구 개인적으로 기억남는 각팀별 끝내기.avi [19] SKY923902 14/12/14 3902 1
55350 [일반] 2014 프로야구 골든글러브 수상 결과(득표수).txt [50] 자전거도둑6235 14/12/09 6235 2
목록 이전 다음
댓글

+ : 최근 1시간내에 달린 댓글
+ : 최근 2시간내에 달린 댓글
맨 위로