Nauczanie kompletności NP - redukcje Turinga i karp

25

Interesuje mnie pytanie, jak najlepiej uczyć kompletności NP na kierunkach informatycznych. W szczególności, czy powinniśmy tego uczyć stosując redukcje Karp czy redukcje Turinga?

Uważam, że koncepcje kompletności i redukcji NP są czymś, czego powinien nauczyć się każdy kierunek informatyki. Jednak ucząc kompletności NP zauważyłem, że stosowanie redukcji Karp ma pewne wady.

Po pierwsze, obniżenie Karp wydaje się być niepotrzebnie mylące dla niektórych uczniów. Intuicyjnym pojęciem redukcji jest „jeśli mam algorytm do rozwiązania problemu X, to mogę go również użyć do rozwiązania problemu Y”. To bardzo intuicyjne - ale znacznie lepiej odwzorowuje redukcje Turinga niż redukcje Karp. W rezultacie widzę studentów, którzy próbują udowodnić kompletność NP, zostają wprowadzeni w błąd przez swoją intuicję i tworzą niepoprawny dowód. Próba nauczenia obu rodzajów redukcji i podkreślenie tego aspektu redukcji Karp czasami wydaje się trochę niepotrzebnym formalizmem i zajmuje niepotrzebny czas na zajęciach oraz uwagę uczniów na to, co wydaje się być nieistotnym szczegółem technicznym; nie jest oczywiste, dlaczego używamy tego bardziej ograniczonego pojęcia redukcji.

Rozumiem różnicę między redukcjami Karp a redukcjami Turinga (Cooka) i jak prowadzą one do różnych pojęć kompletności NP. Zdaję sobie sprawę, że redukcje Karp dają nam większą szczegółowość rozróżnienia między klasami złożoności. Tak więc, do poważnego badania teorii złożoności, redukcje Karp są oczywiście właściwym narzędziem. Ale dla studentów informatyki, którzy dopiero się tego uczą i nigdy nie zamierzają zagłębiać się w teorię złożoności, nie jestem pewien, czy to lepsze rozróżnienie jest krytyczne, ma dla nich kluczowe znaczenie.

Wreszcie, jako student, pamiętam, że czułem się zdziwiony, gdy natknąłem się na problem taki jak „tautologia” - np. Biorąc pod uwagę logiczną formułę, sprawdź, czy jest to tautologia. Mylące było to, że ten problem jest wyraźnie trudny: każdy algorytm wielomianowy sugerowałby, że P.=N.P.; a rozwiązanie tego problemu jest oczywiście tak samo trudne jak rozwiązanie problemu tautologii. Jednak choć intuicyjnie tautologia jest tak trudna, jak satysfakcja, tautologia nie jest trudna NP. Tak, rozumiem dzisiaj, dlaczego tak jest, ale w tym momencie pamiętam, że byłem tym zaskoczony. (Po tym, jak w końcu zrozumiałem, przeszło mi przez myśl: dlaczego w każdym razie rozróżniamy między NP-twardym a co-NP-twardym? To wydaje się sztuczne i niezbyt dobrze motywowane praktyką. Dlaczego skupiamy się na NP niż co-NP? Wydają się równie naturalne. Z praktycznego punktu widzenia twardość co-NP wydaje się mieć zasadniczo takie same praktyczne konsekwencje jak twardość NP, więc dlaczego wszyscy rozłączamy się z tym rozróżnieniem? Tak, wiem odpowiedzi, ale jako student pamiętam, że właśnie to sprawiło, że przedmiot był bardziej tajemniczy i słabo umotywowany).

Więc moje pytanie brzmi: Kiedy uczymy uczniów kompletności NP, czy lepiej uczyć stosując redukcje Karp lub redukcje Turinga? Czy ktoś próbował nauczać pojęcia kompletności NP za pomocą redukcji Turinga? Jeśli tak, jak poszło? Czy wystąpiłyby jakieś nieoczywiste pułapki lub wady, gdybyśmy uczyli pojęć stosując redukcje Turinga i pomijaliśmy kwestie koncepcyjne związane z redukcjami Karp?


Powiązane: patrz tutaj i tutaj , które wspominają, że powodem, dla którego stosujemy redukcje Karpa w literaturze, jest to, że pozwala nam odróżnić twardość NP od twardości co-NP. Wydaje się jednak, że nie daje żadnej odpowiedzi, która koncentrowałaby się na pedagogicznej perspektywie tego, czy ta umiejętność jest kluczowa dla celów uczenia się klasy algorytmów, które powinny być podejmowane przez każdego kierownika CS. Zobacz także tutaj na cstheory.SE , który ma podobną dyskusję.

DW
źródło
Obserwacja motywacyjna: Turing-redukuje do problemu w NP nie wiadomo, że implikuje . XNP
1
@RickyDemer, zrozumiałem - ale kiedy próbujemy wykazać, że problem jest trudny, tak naprawdę nie obchodzi nas, czy jest w NP, czy nie, więc nie motywuje mnie to bardzo skutecznie. I pokazanie, że problem jest trudny, jest głównym zastosowaniem NP, kompletności NP, twardości NP itp.X
DW
1
Nie widzę żadnej różnicy. Idea Cooka polegająca na „wzywaniu do rozwiązania innych problemów” jest naturalna w programowaniu , ale dla osób, które mają bardziej abstrakcyjne tło (niektóre dyskretne obliczenia matematyczne za paskiem), mapowanie między instancjami problemów jest również naturalne.
vonbrand,

Odpowiedzi:

10

Powiedziałbym, że zdecydowanie nauczam, używając redukcji Karp (wiele jeden). Niezależnie od korzyści wynikających z zastosowania wieloczasowych redukcji Turinga (Cook), redukcje Karp są standardowym modelem.

Wszyscy używają Karpa, a główną pułapką nauczania Cooka jest to, że skończysz z całą klasą uczniów, którzy będą patologicznie zdezorientowani za każdym razem, gdy czytają podręcznik lub próbują dyskutować na ten temat z każdym, kto nie był przez ciebie nauczany.

Zgadzam się, że redukcje Cooka są pod kilkoma względami bardziej sensowne i że nie ma rozróżnienia między twardością NP i twardością CoNP w sensie praktycznym, w tym sensie, że oba oznaczają „Ten problem jest dość trudny i nie dostaniesz ogólny, wydajny, dokładny algorytm, który poradzi sobie z dużymi instancjami. ” Z drugiej strony rozróżnienie między NP a coNP nie jest wyłącznie artefaktem teorii opartej na redukcjach Karp: często nie mówimy o wykresach, które nie są 3-kolorowe, lub w których każdy zestaw  wierzchołków zawiera przynajmniej jedna krawędź. Jakoś „naturalna” wersja problemu często wydaje się być w NP, a nie w CoNP.k

David Richerby
źródło
7

Lepiej uczyć obu ! Kierunek informatyki powinien wiedzieć o nich obu.

Nie znam nikogo, kto użyje obniżek Cooka do nauczania kompletności NP, teoretycy złożoności oczywiście nie, teoretycy nieskomplikowani zwykle podążają za standardową definicją od czasu pracy Karpa i są używane we wszystkich podręcznikach (o których wiem). Spowoduje to później wiele zamieszania, jeśli nie zastosujesz się do standardowej terminologii.

Redukcje gotowania zasadniczo rozwiązują problemy przy użyciu podprogramów czarnej skrzynki. Łatwo je wyjaśnić i zmotywować, jeśli Twoi uczniowie mają doświadczenie w programowaniu. Są one niezbędne, ponieważ bez redukcji Cooka nie można omawiać redukcji między problemami wyszukiwania, problemami optymalizacji itp.

N.P.N.P.P.N.P.N.P.

N.P.dooN.P.N.P.N.P.N.P.P.N.P.

xZAfa(x)b

Kaveh
źródło
2
NPNPNPNP
@DW miałeś na myśli „Cook” zamiast (drugiego i trzeciego) „Karp” w swoim komentarzu? Nadal możesz udowodnić, że problemy są trudne przy użyciu Cooka, to nie jest problem. Problem polega na tym, że NP nie jest pod nimi zamknięty, tzn. Redukcje Cooka nie zachowują skutecznie weryfikowalności problemów.
Kaveh
2
Ups, tak, miałem na myśli Cooka, a nie Karpa. (argh!) Rozumiem, że NP nie jest zamknięty w ramach redukcji Cooka, ale czy możesz wyjaśnić, dlaczego jest to problem, z punktu widzenia tego, jak uczymy algorytmów studentom? Jakie problemy pedagogiczne lub koncepcyjne to stwarza? Jakie byłyby negatywne konsekwencje, gdybyśmy nauczali takich algorytmów i po prostu przyznali / zaakceptowali, że NP nie jest zamknięte w ramach redukcji Cooka? Na przykład, czy spowodowałoby to pewne problematyczne nieporozumienie koncepcyjne wśród studentów?
DW
-3

Intuicyjnym pojęciem redukcji jest „jeśli mam algorytm do rozwiązania problemu X, to mogę go również użyć do rozwiązania problemu Y”.

interesującym sposobem podejścia do tego konkretnego problemu nauczania jest uświadomienie sobie, że kompletność NP ma podobieństwa i analogie do nierozstrzygalności, co również jest nieintuicyjne. uczniowie wchodzą na zajęcia tylko wtedy, gdy słyszą o algorytmach, które się zatrzymują. ale głównym twierdzeniem TCS jest to, że istnieją problemy, dla których nie ma gwarantowanego rozwiązania, tj. problem zatrzymania. w rzeczywistości nierozwiązywalne problemy mogą zacząć wyglądać na dalekie od wymyślonych i są najwyraźniej dość wszechobecne.

więc teoria mówi nam, w jaki sposób można zasadniczo spojrzeć na obliczenia jako proces, który może w pewnych okolicznościach zwrócić odpowiedź. w innych okolicznościach może nie. dla kompletności i rozstrzygalności NP podstawowe i najbardziej ogólne pytanie brzmi: „czy istnieje algorytm, który zwraca się Yw czasie P.” ale to nic nie mówi o algorytmie, który zwraca Nw czasie P. algorytm może zwrócić Yw czasie P dla jednej instancji, ale nie może zwrócić odpowiedzi w innych instancjach. teoria mówi nam, że naprawdę jest tutaj wyraźna różnica, na którą musimy zwrócić szczególną uwagę. jeśli jest to nieintuicyjne, oznacza to, że nasze podstawowe intuicje muszą zostać ponownie dostosowane (jak to często bywa w nauczaniu teoretycznym).

vzn
źródło
innymi słowy, najwyraźniej mogą istnieć algorytmy, które wracają Yw czasie P, ale także zwracają „dłużej” niż czas P, Na teoria jest oparta / zorientowana / skoncentrowana wokół czasu potrzebnego na odpowiedź Y.
dniu
1
Każdy uczeń, który napisał więcej niż pięć programów, zna pojęcie „algorytmu, który nie powstrzymuje” od bezpośredniego osobistego doświadczenia.
David Richerby
po prostu próbuję zdefiniować coNP w bardziej intuicyjny sposób, zgodnie z wymaganiami na podstawie codziennych doświadczeń / analogii. zawsze uważałem to również za nieintuicyjne. czy ktoś ma lepszy sposób?
vzn