이러한 분류와 그 존재 이유를 이해하려고합니다. 내 이해가 맞습니까? 그렇지 않다면 무엇입니까?
-
P는 다항식 복잡도이거나 음이 아닌 실수의 경우
O(nk)
k
(예 :O(1), O(n1/2), O(n2), O(n3)
등). 문제가 P에 속하면 다항식 시간에 처음부터 문제를 해결할 수있는 알고리즘이 하나 이상 있습니다. 예를 들어2 <= k <= sqrt(n)
를 반복하고 iv id = “인 경우 각 단계에서 확인하여 정수n
가 소수인지 항상 알아낼 수 있습니다. dfcc1ec3cb “>
는n
를 나눕니다.
NP는 비 결정적 다항식 복잡도입니다. 비 결정적이라는 것이 무엇을 의미하는지 잘 모르겠습니다. 다항식 시간에 검증하는 것이 쉽다는 것을 의미한다고 생각합니다. 그러나 우리가 아직 알지 못했다면 처음부터 풀어야 할 다항식 시간 일 수도 있고 아닐 수도 있습니다. 대답. 다항식 시간에 풀 수 있을 수 있으므로 모든 P 문제도 NP 문제입니다. 정수 분해는 NP의 예로 인용되지만 개인적으로 P가 아닌 이유를 이해하지 못합니다. 시도 분해에는 O(sqrt(n))
시간이 걸리기 때문입니다.
NP-Complete 전혀 이해가 안되지만 Traveling Salesman Problem이 이에 대한 예로 인용되었습니다.하지만 제 생각에 TSP 문제는 NP 일 수 있습니다. 경로가 미리 주어 졌는지 확인하려면 O(2n n2) time to solve, but O(n)
와 같은 것이 필요하기 때문입니다.
NP-Hard는 꽉 찼다 고 가정합니다. 확인하기 어렵고 해결하기 어렵습니다.
댓글
- CS에 대한 질문을 읽었습니까? SE P, NP, NP-complete 및 NP-hard의 정의는 무엇입니까? ?
- ‘ 아직 링크를 보지 못했습니다. 아니요. ‘ 다시 읽어 보겠습니다. 감사합니다.
- CS.SE 답변은 상당히 경외심을 불러 일으 킵니다. ,하지만 ‘이 용어가 무엇을 의미하는지에 대해 매우 간결하고 오해의 소지가없는 설명을 거의 자세히 설명하지 않아도 가능하다고 생각합니다. @Nakano는 더 짧은 , ” 지점까지 답변 또는 CS.SE 게시물이 문제를 해결합니까?
- @MichaelT 해당 링크를 읽은 결과 정말 장황하고 몇 가지 사항이 명확하지 않다는 것을 알았습니다. 답보다 더 많은 질문을받은 것 같습니다.
- ” 비 결정적 “은 다음과 같이 해석 될 수 있습니다. ” 컴퓨터가 매번 올바른 선택을 선택하면 “.
답변
기본적으로 P와 NP에 대해서는 정확하지만 NP-hard 및 NP-complete에 대해서는 맞지 않습니다.
우선, 다음은 문제의 4 가지 복잡성 클래스에 대한 매우 간결한 정의 :
-
P는 결정 론적 튜링 머신에 의해 다항식 시간에 해결 될 수있는 결정 문제의 클래스입니다.
-
NP는 비 결정적 튜링 머신에 의해 다항식 시간에 해결 될 수있는 결정 문제의 클래스입니다. 마찬가지로 확인 em이 가능한 문제의 클래스입니다. > 결정 론적 튜링 머신에 의해 다항식 시간에.
-
NP-hard는 NP의 모든 문제가 될 수있는 결정 문제의 클래스입니다. 결정 론적 튜링 머신에 의해 다항식 시간으로 단축됩니다.
-
NP-complete는 NP-hard와 NP의 교차점입니다. 마찬가지로 NP-complete는 NP의 다른 모든 문제를 결정 론적 튜링 머신에 의해 다항식 시간으로 줄일 수있는 NP의 결정 문제 클래스입니다.
그리고 여기에 “sa Euler 다이어그램 Wikipedia에서 이 네 가지 클래스 간의 관계를 보여줍니다 (P가 NP와 같지 않다고 가정) :
가장 낯설거나 헷갈리는 부분 문제 X에서 문제 Y 로의 “다항식 시간 감소”의 개념입니다. X에서 Y 로의 감소는 문제 Y를 해결하는 다른 알고리즘 B를 사용하여 X를 해결하는 알고리즘 A입니다.이 감소를 ” B 이외의 A의 모든 부분이 다항식 시간 복잡도를 갖는 경우 “다항식 시간 감소”. 간단한 예로, 배열에서 가장 작은 요소를 찾는 문제는 배열을 정렬 한 다음 정렬 된 배열의 첫 번째 요소를 반환 할 수 있기 때문에 정렬 문제로 일정 시간을 줄일 수 있습니다.
One NP-hard 정의에 대해 놓치기 쉬운 점은 감소가 NP 문제에서 NP-hard 문제로 이동한다는 것입니다. 반드시 그런 것은 아닙니다 . 이것은 NP-hard 문제가 될 수 있음을 의미합니다. NP, 또는 훨씬 더 복잡한 클래스 (오일러 다이어그램에서 볼 수 있듯이) 또는 결정 가능한 문제가 아닐 수도 있습니다.그래서 사람들은 이것을 비공식적으로 설명하려고 할 때 “NP-hard는 적어도 NP만큼 어렵습니다.”와 같은 말을 자주합니다.
중단 문제는 다음과 같은 NP-hard 문제의 좋은 예입니다. “ Wikipedia가 설명하는 바와 같이 는 분명히 NP에 없습니다.
쉽게 중지 문제가 NP- 하드이지만 NP- 완전이 아니라는 것을 증명하십시오. 예를 들어, 부울 만족도 문제는 모든 진리 값 할당을 시도하는 튜링 머신의 설명으로 변환하여 중지 문제로 축소 할 수 있으며 공식을 충족하는 것을 찾으면 중지되고 그렇지 않으면 무한 루프로 이동합니다. 또한 NP의 모든 문제는 유한 한 수의 작업으로 결정할 수있는 반면, 일반적으로 중지 문제는 결정할 수 없기 때문에 중지 문제가 NP에 없다는 것을 쉽게 알 수 있습니다.
댓글
- @Nakano 직관적으로, 그것은 ‘ sa ” 감소 ” 하나의 문제가 다른 문제의 하위 문제가되고 있다는 의미입니다. 이러한 감소 중 일부는 ” 하위 문제 “를 잘못 선택하여 복잡성을 줄이는 대신 복잡성을 증가 시킨다는 사실은 단순히 이러한 감소를 사용하지 않을 것임을 의미합니다. 모든 실제 코드에서. 솔직히 말해서 NP-hard는 저를 이상하고 끔찍하게 흥미로운 수업이 아니라고 생각합니다. 이를 무시하고 다른 모든 NP 문제를 줄이는 NP 문제 집합으로 NP-complete를 생각하는 것이 더 유익 할 수 있습니다.
- @Nakano stackoverflow.com/questions/12637582/… 짧은 대답은 사람들이 정수 분해가 NP라고 말할 때 ‘ 일반적으로 정말 거대한 정수에 대해 이야기합니다. 일반적으로 n을 사용하여 big-O 증명을 ” 정수가 메모리에서 차지하는 비트 수 iv id =로 시작합니다. ” 함수에 전달한 정수 수 대신 “376415b7d2”>
“
n
는 입력 크기 (요소 수, 바이트, 자릿수 등)에 대한 척도이며 입력. 답변
정수 분해는 NP의 예로 인용되지만, 개인적으로 이것이 P가 아닌 이유를 이해하지 못합니다. 시도 분해는 O (sqrt (n)) 시간이 걸리기 때문입니다.
복잡성 클래스를 위해 n
는 입력 길이입니다. 따라서 정수 k
를 인수하려는 경우 n
는 k
가 아니라
, 숫자를 기록하는 데 필요한 비트 수 (또는 기타). 따라서 정수 분해는 말한대로 O(sqrt(k))
이지만 이것은 O(2(n/2))
인 O(sqrt(2n))
입니다.
NP-Hard는 알 수없는 것으로 가득 차 있다고 생각합니다. 확인하기 어렵고 해결하기 어렵습니다.
아니요. NP-Hard는 문제를 해결하기가 얼마나 어려운지에 관한 것입니다.
NP-Hard 문제는 적어도 NP에서 가장 어려운 문제만큼 어렵습니다. NP-Hard 문제에 대한 다항식 시간 알고리즘이 있다면 해당 알고리즘을 NP의 모든 문제에 적용 할 수 있기 때문에 최소한 그렇게 어렵습니다.
NP-Complete 전혀 이해하지 못함
NP- 완료는 문제가 NP와 NP-Hard 모두임을 의미합니다. 즉, 솔루션을 신속하게 (NP) 확인할 수 있지만 적어도 NP (NP-Hard)에서 가장 어려운 문제만큼 어렵습니다.
비 결정적이라는 것이 무엇을 의미하는지 잘 모르겠습니다.
Non -결정론은 NP의 대체 정의입니다. 비 결정적 튜링 머신은 언제든지 자신을 효과적으로 복제 할 수 있으며 각 복제가 다른 실행 경로를 사용하도록합니다. 이 정의에서 NP는 컴퓨터가 자유롭게 복제 할 수있는 것보다 다항식 시간에 풀 수있는 문제의 집합입니다. 이것은 다항식 시간에서 확인할 수있는 문제와 똑같은 것으로 밝혀졌습니다.
코멘트
- 그래서 $ O ( n ^ k) $ 시간 알고리즘이 NP 문제가됩니까?
-
k
는 상수 실수입니까? 예. 모든 P 문제는 또한 NP 문제입니다. 당연히 다항식 시간에서 풀 수있는 것은 다항식 시간에서도 확인할 수 있습니다. - 여기서 실제로 길이 / 크기는 어떻게 정의됩니까? 예를 들어 $ n $를 큰베이스에 쓰고 쓸 때 길이를 줄일 수 있습니다. ‘ 정수를 명시 적으로 처리하지 않지만 $ V $ 꼭짓점 및 $ E $ 가장자리 등이있는 그래프를 말하면 문제는 어떻습니까?
- @Nakano, 실제로 큰 염기는 ‘ 변하지 않습니다. 이는 상수 요인 차이 일 뿐이 기 때문입니다. 따라서 ‘ 다항식 대 비 다항식에는 영향을 미치지 않습니다. 하지만 숫자를 단항으로 쓰면 숫자가 바뀝니다.
- @Nakano, 흠 … 저는 ‘ 감히 복잡성을 설명하려고하지 않습니다. 5 세까지 수업. : P
답변
가장 먼저 이해해야 할 것은 P 와 NP 는 문제 가 아닌 언어 를 분류합니다. 이것이 의미하는 바를 이해하려면 먼저 다른 정의가 필요합니다.
알파벳 는 비어 있지 않은 유한 기호 집합입니다.
{0
, 1
}는 ASCII 문자 세트와 마찬가지로 알파벳입니다. {}은 비어 있기 때문에 알파벳이 아닙니다. N (정수)은 유한하지 않기 때문에 알파벳이 아닙니다.
Σ 는 알파벳입니다. Σ 에서 한정된 수의 기호를 순서대로 연결하는 것을 단어 Σ .
문자열 101
는 알파벳 {0
, 1
} 위에있는 단어입니다. 빈 단어 (종종 ε 로 작성 됨)는 모든 알파벳 위에있는 단어입니다. 문자열 penguin
는 ASCII 문자를 포함하는 알파벳 위의 단어입니다. 숫자 π의 십진수 표기법이 알파벳 {.
, 0
, 1
, 2
, 3
, 4
, 5
, 6
, 7
, 8
, 9
}는 유한하지 않기 때문입니다.
iv id = ” 단어 w 의 916b322a57 “>
길이 는 | w |로 작성되며 기호 수입니다.
예 : | hello
| = 5 및 | ε | = 0. 모든 단어 w , | w | ∈ N 이므로 유한합니다.
Σ 는 알파벳이어야합니다. Σ * 집합에는 Σ ( ε 포함). Σ + 집합에는 Σ 이상의 모든 단어가 포함됩니다. i>, ε 제외. n ∈ N , Σ n 은 n 길이의 단어 집합입니다.
모든 알파벳 Σ , Σ * 및 Σ + 는 무한대입니다. 카운트 가능한 세트 .ASCII 문자 세트 Σ ASCII 의 경우 정규 표현식 .*
및 .+
는 Σ ASCII * 및 Σ ASCII +
{0
, 1
} 7 은 7 비트 ASCII 코드 {0000000
, 0000001
,…, 1111111
}. {0
, 1
} 32 는 32 비트 정수 값의 집합입니다.
Σ 는 알파벳이고 L 은 Σ * . L 은 Σ보다 언어 라고합니다. div> .
알파벳 Σ 의 경우 빈 집합 및 Σ * 는
. 전자는 종종 빈 언어 라고합니다. 빈 언어 {}와 빈 단어 { ε } 만 포함 된 언어가 다릅니다.
{
,1
} 32 는 유한 언어입니다.
언어는 무한한 수의 단어를 가질 수 있지만 모든 언어는 셀 수 있습니다. 10 진수 표기법의 정수를 나타내는 문자열 {1
, 2
,…}은 알파벳 {0
, 1
, 2
, 3
, 4
, 5
, 6
, 7
, 8
, 9
}. 무한 문자열 세트 {2
, 3
, 5
, 7
, 11
, 13
,…}는 소수 표기법으로 소수를 나타내는 적절한 하위 집합입니다. 정규식 [+-]?\d+\.\d*([eE][+-]?\d+)?
와 일치하는 모든 단어를 포함하는 언어는 ASCII 문자 집합에 대한 언어입니다 (C 프로그래밍 언어로 정의 된 유효한 부동 소수점 식의 하위 집합을 나타냄).
실수 집합은 셀 수 없기 때문에 모든 실수를 포함하는 언어는 없습니다 (어떤 표기법으로도).
Let Σ 는 알파벳이고 L ⊆ Σ * . 모든 입력에 대해 D 결정 L w ∈ Σ * 특성 함수 χ L ( w ). 특성 함수는 다음과 같이 정의됩니다.
χL: Σ* → {0, 1} w ↦ 1, w ∈ L 0, otherwise.이러한 기계를 결정자 iv id = “6ea6aaaecf라고합니다. L 의 경우 “> . “주어진 w , D 에 대해“ D ( w ) = x ”라고 씁니다. >은 x ”를 출력합니다.
많은 머신 모델이 있습니다. 오늘날 실제 사용되는 가장 일반적인 것은 튜링 머신 의 모델입니다. Turing 머신에는 셀에 클러스터 된 무제한 선형 저장소가 있습니다. 각 셀은 어느 시점에서든 정확히 하나의 알파벳 기호를 보유 할 수 있습니다. Turing 머신은 일련의 계산 단계로 계산을 수행합니다. 각 단계에서 하나의 셀을 읽고 해당 값을 덮어 쓸 수 있으며 읽기 / 쓰기 헤드를 왼쪽 또는 오른쪽 셀로 한 위치 이동합니다. 기계가 수행 할 작업은 유한 상태 자동 장치에 의해 제어됩니다.
유한 한 명령 세트와 무제한 저장 공간이있는 랜덤 액세스 기계는 Turing 기계 모델만큼 강력한 또 다른 기계 모델입니다.
p>
이 논의를 위해 우리는 우리가 사용하는 정확한 기계 모델에 신경 쓰지 않고 기계에 유한 결정 론적 제어 장치, 무제한 저장 공간이 있으며 일련의 단계로 계산을 수행한다고 말하기에 충분합니다. 계산할 수 있습니다.
귀하가 질문에 사용 했으므로 “이미 “big-O “표기법 여기에 간단한 복습 만 있습니다.
Let f : N →는 함수입니다.집합 O ( f )에는 모든 함수 g 가 포함됩니다. N → 상수 n 0 ∈ N b이있는 div> N > 및 c ∈ N 모든 n ∈ N ( n > n 0 포함) g ( n ) ≤ c f ( n ).
이제 실제 질문에 접근 할 준비가되었습니다.
클래스 P 에는 L을 결정하는 튜링 머신 D 가있는 모든 언어 L 이 포함됩니다. 및 상수 k ∈ N (모든 입력 w , D 는 함수 T iv id = “ea6d47993e”에 대해 최대 T (| w |) 단계 후에 중지됩니다. > O ( n ↦ n k ).
O ( n ↦ n k ) 수학적으로 정확하지만 쓰기와 읽기가 불편합니다. 대부분의 사람들은 솔직히 말해서 저를 제외한 모든 사람 은 보통 간단하게 글을 씁니다. O ( n k ).
경계는 w . 따라서 소수의 언어에 대한 인수는 unaray 인코딩 의 숫자에 대해서만 정확합니다. 여기서 인코딩은 w 입니다. 숫자 n , 인코딩 길이 | w | n 에 비례합니다. 아무도 실제로 그러한 인코딩을 사용하지 않습니다. 가능한 모든 요소를 시도하는 것보다 더 고급 알고리즘을 사용하면 입력이 이진법 (또는 다른 염기)으로 인코딩 된 경우 소수의 언어가 P 에 남아 있음을 보여줄 수 있습니다. (많은 관심에도 불구하고 2004 년 수상 경력에 빛나는 논문에서 Manindra Agrawal, Neeraj Kayal 및 Nitin Saxena 에 의해서만 입증 될 수 있으므로 알고리즘은 그리 간단하지 않습니다.)
사소한 언어 {} 및 Σ * 및 중요하지 않은 언어 { ε }는 분명히 P (모든 알파벳 Σ ). 문자열을 입력으로 사용하고 문자열이 각 언어의 단어인지 여부를 알려주는 부울을 반환하는 함수를 선호하는 프로그래밍 언어로 작성하고 함수에 다항식 런타임 복잡성이 있음을 증명할 수 있습니까?
모든 일반 언어 (정규 표현식으로 설명되는 언어)는 P 입니다.
Σ 는 알파벳이고 L ⊆ Σ * . 두 단어 w , c ∈ 의 인코딩 된 튜플을 취하는 기계 V Σ * 및 유한 단계 수가 verifier for L 에 다음 속성이있는 경우
- 제공됨 ( w , c ), V 는 w ∈ L .
- w ∈ L 마다 c ∈ Σ * V ( w , c ) = 1
위 정의에서 c 를 증인 (또는 인증서 )이라고합니다. .
검증자는 w 가 실제로 L 에 있더라도 잘못된 증인에 대해 거짓 부정을 줄 수 있습니다. 그러나 오 탐지를 제공하는 것은 허용되지 않습니다. 또한 언어의 각 단어에 대해 최소한 한 명의 증인이 있어야합니다.
COMPOSITE 언어의 경우 소수가 아닌 모든 정수의 10 진수 인코딩을 포함합니다. , 증인은 인수 분해가 될 수 있습니다. 예를 들어 (659, 709)
는 467231
∈ COMPOSITE의 증인입니다. 증인이없는 상태에서 종이에 467231이 소수가 아님을 증명하는 것은 컴퓨터를 사용하지 않고는 어려울 것임을 쉽게 확인할 수 있습니다.
적절한 증인이 될 수있는 방법에 대해서는 아무 말도하지 않았습니다. 이것은 비 결정적 부분입니다.
NP 클래스에는 Turing 머신 이있는 모든 언어 L 이 포함됩니다. L 및 상수 k ∈ N 을 확인하는 V 입력 ( w , c ), V 는 최대 T (| w |) 함수의 단계 T ∈ O ( n ↦ n k ).
위의 정의는 각 w ∈ L 에 대해 증인 c 가 있음을 의미합니다. | c | ≤ T (| w |). (튜링 머신은 증인의 더 많은 기호를 볼 수 없습니다.)
NP 는 P 의 상위 집합입니다 (왜?). NP 에는 있지만 P 에는없는 언어가 있는지 여부는 알려져 있지 않습니다.
정수 분해는 그 자체로 언어가 아닙니다. 그러나 이와 관련된 결정 문제 를 나타내는 언어를 구성 할 수 있습니다. 즉, 모든 튜플 ( n , m )을 포함하는 언어는 n 이 인수 d 를 갖습니다. d ≤ m . 이 언어를 FACTOR라고합시다. FACTOR를 결정하는 알고리즘이있는 경우 각 소인수에 대해 재귀 이진 검색을 수행하여 다항식 오버 헤드만으로 전체 분해를 계산하는 데 사용할 수 있습니다.
FACTOR가 NP . 적절한 증인은 그 자체로 d 요소이며 검증자는 d ≤ m 및 n mod d = 0.이 모든 작업은 다항식 시간으로 수행 될 수 있습니다. (다시 말하지만, 인코딩 길이 가 중요하며 n 에서 로그 임을 기억하십시오.)
FACTOR도 P 에 있음을 보여줄 수 있다면 많은 멋진 상을받을 수 있습니다. (오늘날 암호화의 상당 부분을 깨뜨 렸습니다.)
NP 의 모든 언어에 대해 결정 em을 결정하는 무차별 대입 알고리즘이 있습니다. > 결정 론적으로. 모든 증인에 대해 철저한 검색을 수행합니다. (증인의 최대 길이는 다항식에 의해 제한됩니다.) 따라서 PRIMES를 결정하는 알고리즘은 실제로 COMPOSITE를 결정하는 무차별 대입 알고리즘이었습니다.
최종 질문을 해결하려면 축소 를 소개해야합니다. 축소는 이론적 컴퓨터 과학의 매우 강력한 개념입니다. 한 문제를 다른 문제로 줄이는 것은 기본적으로 다른 문제를 해결하여 한 문제를 해결하는 것을 의미합니다. 문제입니다.
Σ 는 알파벳이고 A 및 B 는 Σ 이상의 언어입니다. A 는 iv id = “916b322a57입니다. f 함수가있는 경우 “> 다항식 시간 다원 축소 가능 에서 B 로 : Σ * → Σ * .
- w ∈ A ⇔ f ( w ) ∈ B 모든 w ∈ Σ * .
- f 함수는 모든 입력 에 대해 Turing 머신에서 계산할 수 있습니다. w | w |에서 다항식으로 묶인 여러 단계에서.
이 경우에는 A ≤ p B .
예를 들어, A 는 삼각형을 포함하는 모든 그래프 (인접 행렬로 인코딩 됨)를 포함하는 언어라고합시다. (삼각형은 길이 3의주기입니다.) 더 나아가 B 는 0이 아닌 트레이스를 가진 모든 행렬을 포함하는 언어라고합시다. (행렬의 궤적은 주요 대각선 요소의 합입니다.) 그러면 A 는 B 로 줄일 수있는 다항식 다항식입니다. 이를 증명하려면 적절한 변환 함수 f 를 찾아야합니다. 이 경우 f 를 설정하여 인접 행렬의 3 rd 거듭 제곱을 계산할 수 있습니다. 이를 위해서는 각각 다항식 복잡성이있는 두 개의 행렬-행렬 곱이 필요합니다.
L ≤ p L . (공식적으로 증명할 수 있습니까?)
이제 NP 에 적용하겠습니다.
L 언어는 NP -hard 입니다. i> L “≤ p L 모든 언어 L “∈ NP .
NP 하드 언어 NP 자체 일 수도 있고 아닐 수도 있습니다.
언어 L 은 NP 입니다. -complete
- L ∈ NP 및
- L 은 NP -hard입니다.
가장 유명한 NP -완전한 언어는 SAT입니다. 만족할 수있는 모든 부울 공식을 포함합니다. 예 : ( a ∨ b ) ∧ (¬ a ∨ ¬ b ) ∈ SAT. 유효한 증인은 { a = 1, b = 0}입니다. 공식 ( a ∨ b ) ∧ (¬ a ∨ b ) ∧ ¬ b ∉ SAT. (어떻게 증명하겠습니까?)
SAT ∈ NP 를 보여주는 것은 어렵지 않습니다. SAT의 NP -경도를 보여주는 것은 약간의 작업이지만 1971 년 Stephen Cook 에 의해 수행되었습니다.
한 번 NP -완전한 언어가 알려졌을 때, 축소를 통해 다른 언어의 NP -완전성을 보여주는 것은 비교적 간단했습니다. 언어 A 가 NP -hard로 알려진 경우 A ≤ p B 는 B 도 NP -단단함을 보여줍니다 (“ p ”). 1972 년 Richard Karp 는 SAT의 (전 이적) 감소를 통해 NP -완전 함을 보여줄 수있는 21 개 언어 목록을 발표했습니다. (이 답변에서 실제로 읽어야 할 유일한 논문입니다. 다른 논문과 달리 이해하기 어렵지 않으며 축소를 통한 NP -완전성을 증명하는 방법에 대한 아주 좋은 아이디어를 제공합니다. )
마지막으로 짧은 요약입니다. NPH 및 NPC 기호를 사용하여 NP -hard 및 NP -완전 언어의 클래스를 나타냅니다.
- P ⊆ NP
- NPC ⊂ NP 및 NPC ⊂ NPH , 실제로 NPC = NP ∩ NPH 정의
- ( A ∈ NP ) ∧ ( B ∈ NPH ) ⇒ A ≤ p B
NPC ⊂ NP 포함은 P = NP .이를 확인하려면 사소한 언어가 사소한 언어로 축소 될 수 없으며 P 에도 사소한 언어가 있음을 분명히하십시오. NP 의 중요하지 않은 언어로. s는 (그다지 흥미롭지 않은) 코너 케이스입니다.
부록
혼란의 주된 원인은“ n “의” O ( n ↦ f ( n )) 는 실제로 입력의 길이 를 참조 할 때 알고리즘 입력의 해석 입니다. 이것은 알고리즘의 점근 적 복잡성이 입력에 사용 된 인코딩 에 의존한다는 것을 의미하기 때문에 중요한 차이점입니다.
이번 주, 알려진 가장 큰
메르 센 프라임 을 달성했습니다. 현재 알려진 가장 큰 소수는 2 74 207 281 − 1입니다.이 숫자는 너무 큽니다. 두통이 생기기 때문에 “다음 예에서 더 작은 것을 사용하겠습니다. 2 31 – 1 = 2 147 483 647. 다른 방법으로 인코딩 할 수 있습니다.
- Mersenne 지수 (십진수)로 :
31
(2 바이트) - 10 진수 :
2147483647
(10 바이트) - 단항 number :
11111…11
여기서…
는 2 147483 640 개 이상
1
s (거의 2GiB)
이 모든 문자열은 동일한 숫자를 인코딩하며이 중 하나가 주어지면 동일한 숫자의 다른 인코딩을 쉽게 구성 할 수 있습니다. (10 진수 인코딩을 2 진수, 8 진수 또는 16 진수로 대체 할 수 있습니다. 당신이 원한다면 말. 상수 인자에 의해서만 길이를 변경합니다.)
소수성을 테스트하는 순진한 알고리즘은 단항 인코딩을위한 다항식 일뿐입니다. AKS 소수성 검정 은 십진수 (또는 기타 모든 기수 b ≥ 2 ). Lucas-Lehmer 소수성 테스트 는 Mersenne 소수 M p 에 p 가 홀수 소수이지만 Mersenne 지수 p 의 이진 인코딩 길이에서는 여전히 지수입니다 ( p 의 다항식). ).
알고리즘의 복잡성에 대해 이야기하고 싶다면 우리가 어떤 표현을 사용하는지 매우 명확하게하는 것이 매우 중요합니다. 일반적으로 가장 효율적인 인코딩이 사용된다고 가정 할 수 있습니다. 즉, 정수의 바이너리입니다. (모든 소수가 메르 센 소수가 아니므로 메르 센 지수를 사용하는 것은 일반적인 인코딩 체계가 아닙니다.)
이론적 암호화에서 많은 알고리즘은 완전히 쓸모없는 k 1
를 첫 번째 매개 변수로 사용합니다. 알고리즘은이 매개 변수를 보지 않지만 공식적으로 k 에서 다항식이 될 수 있습니다. 이는 보안 매개 변수 는 절차의 보안을 조정하는 데 사용됩니다.
바이너리 인코딩의 의사 결정 언어가 NP -완전한 일부 문제의 경우 의사 결정 언어가 더 이상 NP -포함 된 숫자의 인코딩이 단항으로 전환 된 경우 완료됩니다. 다른 문제에 대한 결정 언어는 NP -완전한 상태로 남아 있습니다. 후자는 강력하게 NP -완전 이라고합니다. 가장 잘 알려진 예는 빈 패킹 입니다.
방법을 보는 것도 흥미 롭습니다. 입력이 압축 되면 알고리즘의 복잡성이 변경됩니다. Mersenne 소수의 예에서 세 가지 인코딩을 보았습니다. 각 인코딩은 이전보다 대수적으로 더 압축되었습니다.
1983 년, Hana Galperin 및 Avi Wigderson 은 그래프의 입력 인코딩이 대수적으로 압축 될 때 일반적인 그래프 알고리즘의 복잡성에 대한 흥미로운 논문을 작성했습니다. 이러한 입력에 대해 위에서 삼각형을 포함하는 그래프의 언어 ( P 에서 명확하게 표시됨)는 갑자기 NP -완전이됩니다.
그리고 “는 P 및 NP 와 같은 언어 클래스가 문제 가 아닌 언어 에 대해 정의되기 때문입니다.
댓글
- 이 답변은 질문자를 이해하는 데 유용하지 않을 수 있습니다. 다른 답변을 읽고 Nanako가 어려움을 겪고있는 문제를 확인하세요. 답변이 도움이 될까요?
- 이 답변은 OP에는 도움이되지 않지만 다른 독자에게는 확실히 도움이됩니다 (자신 포함).
- 매우 유용한 답변! 수학 기호를 제대로 수정하지 않는 것이 좋습니다.
답변
동일한 것에 대해 덜 비공식적 인 정의를 내 리도록 노력하겠습니다.
P 문제 : 다항식 시간에 풀 수있는 문제. 효율적으로 풀 수있는 문제를 포함합니다.
NP 문제 : polyno에서 확인할 수있는 문제 밀 시간. 예 : 여행 세일즈맨, 회로 설계. NP 문제는 일종의 퍼즐과 같습니다 (스도쿠와 같은). 문제에 대한 올바른 해결책이 주어지면 우리는 우리의 해결책을 매우 빠르게 확인할 수 있지만 실제로 해결하려고하면 영원히 걸릴 수 있습니다.
이제 P vs NP는 실제로 해결책이 신속 할 수있는 문제가 있는지 묻습니다. 올바른지 확인하면 항상 빠르게 해결할 수있는 방법이 있습니다. 따라서 수학적으로 쓰면 : NP가 P의 부분 집합인가 아닌가?
이제 NP로 돌아 오면 완전하다 : 이것들은 NP 문제의 정말 어려운 문제들이다. 따라서 NP 완료를 더 빨리 풀 수있는 방법이 있다면 NP 완료는 P가되고 NP 문제는 P로 붕괴됩니다.
NP 어려움 : 다항식 시간에서도 확인할 수없는 문제는 np 어려움입니다. 예를 들어 체스에서 최고의 수를 선택하는 것도 그중 하나입니다.
불명확 한 것이 있으면 다음 동영상을 시청 해보세요. https://www.youtube.com/watch?v=YX40hbAHx3s
이렇게하면 윤곽이 흐릿 해지기를 바랍니다.