Niedawno, rozmawiając z fizykiem, twierdziłem, że z mojego doświadczenia, kiedy problem, który naiwnie wydaje się, że powinien on zająć wykładniczy czas, okazuje się niekoniecznie w P lub BPP, „nadrzędny powód”, dla którego redukcja może być zazwyczaj zidentyfikowany --- i prawie zawsze powód ten należy do listy kilkunastu „zwykłych podejrzanych” (na przykład: programowanie dynamiczne, algebra liniowa ...). To jednak skłoniło mnie do myślenia: czy rzeczywiście możemy spisać porządną listę takich powodów? Oto pierwsza, niepełna próba jednego:
(0) Charakterystyka matematyczna. Problem ma nieoczywistą „czysto matematyczną” charakterystykę, która, gdy jest znana, natychmiast sprawia, że można po prostu dokonać wyczerpującego przeszukania listy możliwości poli (n). Przykład: planarność wykresu, dla której algorytm O (n 6 ) wynika z twierdzenia Kuratowskiego.
(Jak wskazuje „planar” poniżej, był to zły przykład: nawet jeśli znasz kombinatoryczną charakterystykę płaskości, podanie algorytmu wielomianowego czasu jest wciąż dość nietrywialne. Pozwólcie, że podam tutaj lepszy przykład: co powiesz na powiedzmy: „biorąc pod uwagę dane wejściowe zapisane binarnie, obliczyć, ile kolorów jest potrzebnych do pokolorowania dowolnej mapy osadzonej na powierzchni za pomocą otworów n.” Z góry nie jest oczywiste, że można to w ogóle obliczyć (lub nawet skończone!). Ale istnieje znana formuła, która daje odpowiedź, a gdy ją znacie, obliczenie jej w czasie wielomianowym jest banalne. Tymczasem „sprowadza się do wykluczonych nieletnich / teorii Robertsona-Seymoura” należy prawdopodobnie dodać jako osobny nadrzędny powód, dla którego coś może być w p.)
W każdym razie nie jest to sytuacja, która najbardziej mnie interesuje.
(1) Programowanie dynamiczne. Problem można rozwiązać w sposób umożliwiający rekurencyjne rozwiązanie bez wykładniczego wybuchu - często dlatego, że ograniczenia, które należy spełnić, są ułożone liniowo lub w innej prostej kolejności. „Czysto kombinatoryczny”; nie jest wymagana struktura algebraiczna. Zapewne osiągalność wykresu (a zatem 2SAT) to przypadki szczególne.
(2) Matroidy. Problem ma strukturę matroidu, co umożliwia działanie chciwego algorytmu. Przykłady: dopasowanie, minimalne drzewo opinające.
(3) Algebra liniowa. Problem można sprowadzić do rozwiązania układu liniowego, obliczenia wyznacznika, obliczenia wartości własnych itp. Prawdopodobnie większość problemów związanych z „cudownymi anulowaniami”, w tym rozwiązanych przez formalizm zapałki Valianta, również mieści się w zakresie liniowo-algebraicznej parasolki.
(4) Wypukłość. Problem można wyrazić jako pewną wypukłą optymalizację. Programowanie półfinałowe, programowanie liniowe i gry o sumie zerowej są powszechnymi (coraz bardziej) szczególnymi przypadkami.
(5) Testowanie tożsamości wielomianowej. Problem można sprowadzić do sprawdzenia tożsamości wielomianowej, tak aby Podstawowe Twierdzenie Algebry prowadziło do wydajnego algorytmu randomizowanego - aw niektórych przypadkach, jak pierwotność, nawet algorytmu możliwego do udowodnienia.
(6) Markov Chain Monte Carlo. Problem można sprowadzić do pobierania próbek z wyniku szybko mieszającego się marszu. (Przykład: w przybliżeniu liczy się idealne dopasowanie.)
(7) Algorytm euklidesowy. GCD, ciągłe ułamki ...
Różne / Nie do końca oczywiste, jak sklasyfikować: stabilne małżeństwo, faktoring wielomianowy, problem członkostwa w grupach permutacyjnych, różne inne problemy w teorii liczb i teorii grup, problemy z siecią niskiego wymiaru ...
Moje pytanie brzmi: jakie są najważniejsze rzeczy, które pominąłem?
Wyjaśnić:
Zdaję sobie sprawę, że żadna lista nie może być kompletna: niezależnie od skończonej liczby powodów, które podasz, ktoś będzie w stanie znaleźć egzotyczny problem w P, ale nie z żadnego z tych powodów. Częściowo z tego powodu bardziej interesują mnie pomysły, które stawiają wiele różnych, pozornie niezwiązanych problemów w P lub BPP, niż pomysły, które działają tylko na jeden problem.
Zdaję sobie również sprawę, że subiektywne jest dzielenie rzeczy. Na przykład, czy matroidy powinny być szczególnym przypadkiem programowania dynamicznego? Czy rozwiązywanie problemu przez wyszukiwanie w pierwszej kolejności jest wystarczająco ważne, aby być jego własnym powodem, odrębnym od programowania dynamicznego? Często ten sam problem może występować w P z wielu powodów, w zależności od tego, jak na to patrzysz: na przykład znalezienie głównej wartości własnej jest w P z powodu algebry liniowej, ale także dlatego, że jest to problem optymalizacji wypukłej.
Krótko mówiąc, nie mam nadziei na „twierdzenie o klasyfikacji” - tylko na listę, która użytecznie odzwierciedla to, co obecnie wiemy o wydajnych algorytmach. I właśnie dlatego najbardziej interesują mnie techniki umieszczania rzeczy w P lub BPP, które mają szerokie zastosowanie, ale nie pasują do powyższej listy - lub inne pomysły na ulepszenie mojej prymitywnej pierwszej próby zaradzenia mojej chwale fizyk.