입력이 단항 인코딩 될 때 강력한 NP-hard 또는 -complete 문제의 복잡성이 변경됩니까?


12

입력이 이진 인코딩 대신 단 항일 때 강력한 NP-hard 또는 NP-complete 문제 (예 : 여기에 정의 된대로 ) 의 난이도가 변경됩니까?

강력한 NP-hard 문제의 입력이 단항 인코딩되면 어떤 차이가 있습니까? 예를 들어 약한 NP-complete Knapsack 문제를 예로 든다면 바이너리 인코딩시 NP- 완료이지만 단항 인코딩시 동적 프로그래밍으로 다항식 시간으로 해결할 수 있습니다. 다항식 시간 계층의 높은 수준의 경도에 영향을 줄 수 있습니까?

강한 ...- 단단한 개념은 다른 복잡한 클래스, 예를 들어 다항식 시간 계층의 상위 클래스에도 적용됩니까?

이전 에 stackoverflow.com 에서이 질문을 했지만 여기에 더 적합하다는 것이 지적되었습니다.


cstheory.stackexchange.com 에서이 질문을 더 잘해야 합니까? 나는 그것이 존재한다는 것을 몰랐다. 여기에있는 사람들은 내가 바라던 방향으로 가지 않습니다.
user2145167

왜 안 그래? 그들은 (내가 말할 수있는 한) 정확하기 때문에 귀하의 질문이 당신이 묻고 싶은 것이 아닐까요? 게다가, 이론적 인 컴퓨터 과학연구 수준의 TCS 질문을 위한 것이며, 이것은 확실하지 않습니다.
Raphael

답변:


4

단항으로 인코딩 된 의 문제 크기는 이진 인 경우 크기 과 입니다. 걸린 시간이 이면 첫 번째 경우 이고 두 번째 경우 입니다. 따라서 첫 번째 경우에 다항식 인 알고리즘이 두 번째 경우에는 지수가 될 것입니다. 문제의 인코딩은 알고리즘의 복잡성을 근본적으로 바꿀 수 있습니다.N log N F ( N ) F ( 사이즈 ) F ( 2 사이즈 )NNlogNF(N)F(size)F(2size)


3

아니.

입력 인코딩을 변경하면 문제의 공식적인 정의가 변경되었으므로 다른 문제 입니다. 원래 문제의 복잡성은 변하지 않습니다. 같은 이유로 하늘의 다른 빛을 가리 키더라도 달의 질량은 변하지 않습니다.


2
문제는 NP 하드 문제 대해 단항 버전 이 NP 하드가 아닌지 여부입니다 . P 1PP1
Raphael

2

짧은 대답은 입력이 단항 인코딩되면 더 길다 는 것입니다 . 그것은이다 기하 급수적으로 더 이상. 이제 입력 크기 에서 다항식 시간 으로 작동하는 알고리즘 은 입력 자체가 원래 문제보다 기하 급수적으로 길기 때문에 문제를 해결하기 위해 "충분한 시간"을 갖습니다.


1

JeffE의 답변에서 지적 된 공식 문제를 살펴보면 그 대답은 그렇습니다.

배낭 문제를 고려하십시오 . 그것은 가지고 의사 다항식 입력에 인코딩 된 다수의 다항식에 의해 경계가 실행 한 알고리즘이다. 단항 인코딩 값은 길이에 해당하므로 단항 버전에 대한 다항식 시간 알고리즘입니다.

실제로, 약한 NP- 완전 문제는 모두이 범주에 속합니다.


부수적 인 질문이지만 이해가되지 않았습니다. 단항으로 무언가를 어떻게 "인코딩"합니까? 어떤 종류의 구분 기호가 필요하지 않습니까?
user541686

@Mehrdad 예, 아니오. 예; 분리 기호는 일반적으로 이런 의미에서 계산되지 않습니다. cf는 입력 대 테이프 알파벳입니다. 여기서는 입력 알파벳의 크기 만 고려합니다. 아니; 원칙적으로, 하나의 숫자는 터플과 셀 수있는 숫자 세트를 인코딩하기에 충분하므로 분리 기호가 필요하지 않습니다. 그것은 그러한 기계로 "작업"하는데 유용하지 않지만 분리 (및 기타 제어) 기호를 무시하는 것을 정당화합니다.
Raphael

흠 ... 나는 당신의 "아니오"부분을 이해하지 못합니다; 끝에 구분 기호가 없으면 숫자가 끝나는 위치를 어떻게 알 수 있습니까? 그것은 나에게 약간의 순환 논리처럼 보인다 : 만약 우리가 분리자를 무시한다면, 실제로 입력이 기하 급수적으로 더 많은 공간을 차지하도록한다면, 입력 크기에 비례하여 지수 알고리즘의 실행 시간을 바꾸는가하는 문제가 효과적으로된다 ? " 그 대답은 사소하게 그렇습니다 ... 정의상. 구분 기호를 고려하면 중복 비트를 인위적으로 추가하므로 인코딩을 많이 변경하지 않습니다.
user541686

@Mehrdad 좋아, 나는 여러 숫자를 서로 분리하는 것에 대해서만 생각하고있었습니다. 어쨌든 엔드 마커 resp 가 필요 합니다. 튜링 머신의 "빈"기호; 당신은 제거 할 수 없습니다. 나머지는 하나의 숫자로 인코딩 할 수 있습니다 (런타임 페널티에서).
Raphael
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.