NP- 완전성 교육-Turing 감소와 Karp 감소


25

컴퓨터 과학 전공에게 NP- 완전성을 가르치는 가장 좋은 방법에 대한 질문에 관심이 있습니다. 특히 Karp 축소를 사용하거나 Turing 축소를 사용하여 가르쳐야합니까?

NP- 완전성 및 축소 개념은 모든 컴퓨터 과학 전공이 배워야 할 개념이라고 생각합니다. 그러나 NP- 완전성을 가르 칠 때 Karp 감소의 사용에는 몇 가지 단점이 있음을 알았습니다.

우선, 일부 학생에게는 Karp 감소가 불필요하게 혼동되는 것 같습니다. 축소에 대한 직관적 인 개념은 "문제 X를 해결하는 알고리즘이 있다면 그것을 사용하여 문제 Y도 해결할 수 있습니다"입니다. 매우 직관적이지만 Karp 감소보다 Turing 감소에 훨씬 더 좋습니다. 결과적으로, NP- 완전성을 증명하려는 학생들은 직관에 의해 길을 잃고 잘못된 증거를 형성합니다. 두 종류의 감축을 가르치고 Karp 감축의 이러한 측면을 강조하려고하면 때로는 불필요한 형식주의처럼 느껴지고 불필요한 수업 시간과 불필요한 기술적 시간에 대해 학생들의주의를 기울입니다. 우리가 왜이 더 제한적인 축소 개념을 사용하는지는 자명하지 않습니다.

나는 Karp 감소와 Turing (Cook) 감소의 차이점과 이들이 어떻게 NP- 완전성의 다른 개념을 이끌어 내는지 이해합니다. 나는 Karp 감소가 복잡성 클래스 사이의 구별을 더 세밀하게 제공한다는 것을 알고 있습니다. 따라서 복잡성 이론에 대한 진지한 연구를 위해 Karp 감소는 분명히 올바른 도구입니다. 그러나 이것을 배우고 복잡한 이론에 빠지지 않을 컴퓨터 과학 학생들에게는, 이러한 미세한 구별이 중요한지 확실하지 않다.

마지막으로, 학생으로서, 나는 "길이 학"과 같은 문제를 겪었을 때 당황한 느낌을 기억합니다. 혼란 스러웠던 것은이 문제가 분명히 어렵다는 것입니다. 다항식 시간 알고리즘은 P=NP; 이 문제를 해결하는 것은 팽팽한 문제를 해결하는 것만 큼 어렵습니다. 그러나, 직관적으로 타우 톨 로지가 만족 스럽기만큼 어렵지만, 타우 톨 로지가 NP-hard가 아닙니다. 그렇습니다. 나는 이것이 왜 그런지 오늘 이해합니다. 그러나 당시 나는 이것에 당황한 것을 기억합니다. (마지막으로 이해 한 후에 내 머릿속에 갔던 것은 : 어쨌든 우리는 왜 NP-hard와 co-NP-hard를 구별 할 수 있는가? 실제적인 관점에서, 공동 NP- 경도는 본질적으로 NP- 경도와 실질적으로 동일한 결과를 갖는 것으로 보인다. 그래서 우리는 왜이 차이에 매달리는가? 답이지만, 학생으로서, 이것은 단지 주제가 더 비전적이고 동기 부여가되게한다는 것을 기억합니다.)

제 질문은 이것입니다. 학생들에게 NP- 완전성을 가르 칠 때 Karp 축소 또는 Turing 축소를 사용하여 가르치는 것이 더 낫습니까? 튜링 감소를 사용하여 NP- 완전성 개념을 가르치려고 한 사람이 있습니까? 그렇다면 어떻게 되었습니까? Turing 축소를 사용하여 개념을 가르쳤고 Karp 축소와 관련된 개념적 문제를 건너 뛰면 명백한 함정이나 단점이 있습니까?


관련 : 참조 여기여기 가 NP-경도와 공동 NP-경도를 구분하는 우리를 수 있기 때문에 우리가 문헌에서 카프 절감을 사용하는 이유가 있음을 언급한다. 그러나이 능력이 모든 CS 전공에서 취해야하는 알고리즘 클래스의 학습 목표에 중요한지 여부에 대한 교육적 관점에 초점을 맞춘 대답은 보이지 않습니다. 비슷한 토론이있는 cstheory.SE 도 참조하십시오 .


XNP

1
X

1
그다지 큰 차이는 보이지 않습니다. "다른 문제에 대한 해결책을 찾는 것"에 대한 Cook의 아이디어는 프로그래밍에 있어 자연 스럽지만 문제 인스턴스 사이에 좀 더 추상적 인 배경 (일부 이산 수학)을 가진 사람들에게는 자연 스럽습니다.
vonbrand

답변:


10

나는 Karp (다 대일) 축소를 사용하여 매우 가르친다 고 말할 것입니다. 폴리 타임 튜링 감소 (쿡) 사용의 이점에 관계없이 Karp 감소가 표준 모델입니다.

모두가 Karp을 사용하고 Cook을 가르치는 주된 함정은 교과서를 읽거나 당신이 가르치지 않은 사람과 주제를 논의하려고 할 때마다 병적으로 혼란스러워하는 모든 종류의 학생들로 끝날 것입니다.

k


7

둘 다 가르치는 것이 좋습니다 ! 컴퓨터 과학 전공은 둘 다에 대해 알아야합니다.

나는 NP 완성을 가르치기 위해 Cook 축소를 사용하는 사람을 모른다. 복잡한 이론가들은 분명히 그렇지 않다. 비 복잡성 이론가들은 Karp의 논문 이후 표준 정의를 따르고 모든 교과서 (내가 아는)에서 사용된다. 표준 용어를 따르지 않으면 나중에 많은 혼란을 초래할 수 있습니다.

쿡 감소는 기본적으로 블랙 박스 서브 루틴을 사용하여 문제를 해결합니다. 학생들이 프로그래밍 경험이 있으면 설명하고 동기를 부여하기 쉽습니다. Cook 축소가 없으면 검색 문제, 최적화 문제 등의 축소에 대해 논의 할 수 없으므로 필수입니다.

NPNPPNPNP

NPcoNPNPNPNPPNP

xAf(x)B


2
NPNPNPNP

@DW 귀하의 의견에 "두 번째와 세 번째" "Karp"대신 "Cook"을 의미 했습니까? 여전히 Cook을 사용하여 문제가 발생했음을 증명할 수 있습니다. 이는 문제가 아닙니다. 문제는 NP가 그 아래에서 닫히지 않는다는 것입니다. 즉, Cook 감소는 문제의 효율적 검증 가능성을 유지하지 못합니다.
Kaveh

2
예, 저는 Karp가 아니라 Cook을 의미했습니다. 쿡 축소에서 NP가 닫히지 않았지만 알고리즘을 학부생에게 가르치는 방법의 관점에서 이것이 왜 문제인지 자세히 설명 할 수 있습니까? 어떤 교육적 또는 개념적 문제가 발생합니까? 우리가 그런 알고리즘을 가르치고 쿡 감소에서 NP가 닫히지 않았다는 것을 인정하거나 받아들이면 부정적인 결과는 무엇입니까? 예를 들어, 학생들 사이에 문제가있는 개념적 오해가 발생할 수 있습니까?
DW

-3

축소에 대한 직관적 인 개념은 "문제 X를 해결하는 알고리즘이 있다면 그것을 사용하여 문제 Y도 해결할 수 있습니다"입니다.

이 특정 교육 문제에 접근하는 흥미로운 방법은 NP 완성도가 결정 불가능 성과 유사성과 유사성을 가지고 있으며 이는 직관적이지 않음을 인식하는 것입니다. 학생들은 중단되는 알고리즘에 대해 들어 본 후에 만 ​​수업에 들어갑니다. 그러나 TCS의 기본 정리는 보장 된 해결책이없는 문제, 즉 정지 문제가 존재한다는 것입니다. 실제로 결정 불가능한 문제는 생각보다 멀어지기 시작하고 다소 모호합니다.

따라서 이론은 계산을 기본적으로 어떤 상황에서 답을 돌려 줄 있는 프로세스로 보는 방법을 알려줍니다 . 다른 상황에서는 그렇지 않을 수 있습니다. NP 완전성 및 결정 가능성에있어서 가장 근본적인 질문은 " YP 시간으로 리턴하는 알고리즘이 있습니까? "입니다. 그러나 이것은 NP 시간으로 반환되는 알고리즘에 대해서는 아무 것도 말하지 않습니다 . 알고리즘은 Y한 인스턴스에 대해 P 시간으로 리턴 할 수 있지만 다른 인스턴스에 대해서는 응답을 리턴하지 않습니다. 이론은 우리가 여기서주의를 기울여야 할 뚜렷한 차이점이 있다는 것을 알려줍니다. 직관적이지 않다면, 우리의 기본 직관을 다시 조정해야한다는 것을 의미합니다 (이론적 가르침에서 종종 그렇듯이).


다시 말해, YP 시간으로 리턴 하지만 P 시간보다 "시간이 더 오래 걸리는" 알고리즘이 존재할 수 N있으며, 이론은 대답하는 데 걸리는 시간을 중심으로 / 지향적 / 집중적 Y입니다.
vzn

1
5 개 이상의 프로그램을 작성한 모든 학생은 직접적인 개인적인 경험에서 "멈추지 않는 알고리즘"이라는 개념에 익숙합니다.
David Richerby

일상적인 경험 / 분석에 따라 요청 된대로보다 직관적 인 방식으로 coNP를 정의하려고 노력합니다. 항상 직관적이지 않은 것으로 나타났습니다. 더 나은 방법이 있습니까?
vzn
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.