Jedna równość za milion dolarów
Wcześniejsze wprowadzenie było nam niezbędne do tego, abyśmy mogli w końcu zacząć mówić o pieniądzach. I to nie byle jakich, bo o równym milionie dolarów.
24 maja 2000 roku Instytut Matematyczny Claya ogłosił listę siedmiu zagadnień matematycznych, za których rozwiązanie wyznaczono nagrody gotówkowe o wartości miliona dolarów. Zagadnienia te nazywamy milenijnymi, choć najnowsze z nich powstało w 1971 roku. To właśnie ono jest przedmiotem naszych rozważań, a przyjmuje postać pytania: czy P=NP? Często jednak określa się go po prostu mianem problemu P=NP lub P vs. NP.
Pytanie to samo w sobie nie jest łatwe, wymaga więc pewnych wyjaśnień. Problemy decyzyjne możemy podzielić ze względu na ich własności związane ze złożonością obliczeniową:
- jeśli da się skonstruować algorytm wielomianowy, który rozwiązuje dany problem, to problem ten należy do zbioru (klasy) P problemów,jeśli da się skonstruować algorytm, który w wielomianowej liczbie operacji potrafi potwierdzić, że na postawione pytanie odpowiedź brzmi tak,
- jeśli otrzyma dodatkowo rozwiązanie, dla którego tak właśnie jest (świadka), to problem taki należy do zbioru (klasy) NP.
Przykład. Rozważmy problem plecakowy. Mamy plecak o pojemności B i zbiór N przedmiotów X={x1,x2,…,xN}, każdy z nich o określonej objętości (wj) oraz wartości (cj). Pytanie brzmi: czy istnieje taki podzbiór X′⊆X przedmiotów, że ich łączna objętość jest mniejsza niż B, a ich łączna wartość przekracza wskazaną wartość C? Inaczej możemy spytać, czy istnieje taki podzbiór X′⊆X, że ∑X′cj>Coraz∑X′wj<B.
Łatwo pokazać (no, może nie tak łatwo, ale jednak jest to możliwe), że każdy problem z klasy P należy też do klasy NP. To oznacza, że P⊆NP. Aby zdobyć milion dolarów, wystarczy pokazać, że jest lub nie jest odwrotnie, to znaczy, że NP⊆P lub nie.
Istnieje pewien specjalny podzbiór problemów z klasy NP. Problemy te nazywamy NP-zupełnymi (określenie zupełny zostało zaczerpnięte z logiki) i mają one pewną bardzo ciekawą własność: jeśli uda się stworzyć wielomianowy algorytm rozwiązujący którykolwiek z problemów NP-zupełnych, to będzie oznaczać, że każdy problem z klasy NP da się rozwiązać w wielomianowym czasie i w konsekwencji, że P=NP.
Na stronie internetowej http://www.win.tue.nl/~gwoegi/P-versus-NP.htm zebrane są artykuły naukowe, których autorzy utrzymywali, że udało im się rozwiązać problem P=NP. Wszystko wskazuje jednak na to, że żaden z dowodów nie był poprawny. Zaskakujące jest to, że liczba prac, które miałyby potwierdzać, że P=NP jest bardzo zbliżona do liczby tych, które miałyby pokazywać coś zupełnie odwrotnego.
Wiele osób zaangażowanych w badania związane ze złożonością obliczeniową zakłada, że mimo wszystko P≠NP i na tym założeniu opiera mniejszą lub większą część swoich wyników. Dopóki jednak nie dowiemy się, jak jest naprawdę, nie możemy być pewni niczego. Gdyby rzeczywistość była taka, że każdy problem z klasy NP da się rozwiązać w wielomianowym czasie, światowe bezpieczeństwo runęłoby bardzo szybko. Okazałoby się bowiem, że większość szyfrowanych danych przesyłanych w internecie da się bardzo szybko odszyfrować nawet bez znajomości jakiegokolwiek klucza. I, co gorsza, oznaczałoby to, że bohater powyższego komiksu musiałby zmienić swoje hobby.