Zasada 0-1 mówi, że jeśli sieć sortująca działa dla wszystkich sekwencji 0-1, to działa dla dowolnego zestawu liczb. Czy istnieje taki, że jeśli sieć sortuje każdą sekwencję 0-1 od S, to sortuje każdą sekwencję 0-1, a wielkość S jest wielomianowa w n ?
Na przykład, jeśli składa się ze wszystkich sekwencji, w których występują co najwyżej przebiegi (przedziały) 1, to czy istnieje sieć sortująca N i sekwencja, która nie jest uporządkowana przez N, jeśli wszyscy członkowie S są uporządkowani przez N?
Odpowiedź: Jak widać z odpowiedzi i komentarzy do niej, odpowiedź jest taka, że dla każdego nieposortowanego ciągu istnieje sieć sortująca, która sortuje każdy inny ciąg. Prosty dowód na to jest następujący. Niech ciąg będzie taki, że s i = 0 na zawsze i < k i s k = 1 . Ponieważ s jest nieposortowane, po sortowaniu s k powinno wynosić 0 . Porównaj k z każdym i dla którego s i = . Następnie porównaj każdą parę ( i , j tak, że i ≠ k i j ≠ k wiele razy. Pozostawia to cały ciąg posortowane, z wyjątkiem być może dla s k , która jest dla nieposortowanego s , a dla niektórych innych ciągów, które mają więcej 1 „s niż s . Teraz porównaj s k dla i = n downto 1, z wyjątkiem miejsca, w którym s k powinno iść w s . To posortuje wszystko oprócz s .
Aktualizacja: Zastanawiam się, co się stanie, jeśli ograniczymy głębokość sieci do .
źródło
Odpowiedzi:
Wydaje się, że nie. Ian Parberry odnosi się do pracy przez Chung Ravikumar, gdzie podobno daje rekurencyjnego budowę sieci sortowania sortuje każdy łańcuch bitów, lecz jeden, i dalej wywnioskować, że problem sprawdzania sortowania sieci jest - N P zakończona. Nie mogę od razu znaleźć oryginalnego papieru, ale z pewnością pasuje on do (mojej) intuicji.co NP
Edytuj, aby dodać: W rzeczywistości bardzo łatwo jest znaleźć taką sieć, w której brakuje dokładnie jednego ciągu. Ciąg do pominięcia to . Teraz potrzebujesz obwodu, który sortuje ostatnie n - 1 bity, a następnie sortuje pierwsze n - 1 bity. Ten obwód posortuje wszystko z co najmniej dwoma 1 s, oczywiście posortuje ciąg zerowy i posortuje dowolny ciąg zaczynający się od 0 .(1,0,…,0) n−1 n−1 1 0
źródło