:: 게시판
:: 이전 게시판
|
- 자유 주제로 사용할 수 있는 게시판입니다.
- 토론 게시판의 용도를 겸합니다.
통합규정 1.3 이용안내 인용"Pgr은 '명문화된 삭제규정'이 반드시 필요하지 않은 분을 환영합니다.법 없이도 사는 사람, 남에게 상처를 주지 않으면서 같이 이야기 나눌 수 있는 분이면 좋겠습니다."
15/01/09 22:50
Computation theory를 깊이 공부하면서, '산은 산이요 물은 물이요' 철학을 배우고 있는 느낌을 받았었죠...크크
15/01/09 23:07
비전공자가 본문정도의 이해정도라면 큰 무리는없다고 생각됩니다. 저는 p=np일가능성도 꽤 있다고 생각하는편인데 그렇다 하더라도 신세경이 펼쳐지는것은 전혀아니라고 생각합니다. 사실 지금의 퓨터에서는 알고리듬 복잡도가 p에 있다 하더라도 얼마든지 비현실적으로 어려워질수있거든요. 양자컴퓨터라면 좀 상황은 달라지겠습니다만...
15/01/09 23:17
쉬운 문제 p의 해결책을 비슷한 유형의 어려운 문제 np의 해결책으로 적용할 수 있냐 없냐가 np문제의 핵심 아니었나요?
제가 알던거랑 좀 다른 개념이라 당황스럽네요
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) 저도 참 군침만 도는 알고리즘인데요...
15/01/10 03:26
저도 계산과학은 잘 모르는 수알못인데 대충 이해해보면 심플렉스 같은 p문제가 있고 비선형계획과 같은 NP-hardness 문제가 있는데 어떤 np-hard 도 언젠가는 p문제로 바꿔 지수적이 아닌 다항적으로 증가하는 알고리듬을 구할 수 있는가 아닌가요?
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 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에는 최적값을 찾아내는 알고리즘들이 속합니다.
|