Orlp daje rozwiązanie używając słów spacji, które są bitami przestrzeni (zakładając dla uproszczenia, że ). I odwrotnie, łatwo jest wykazać, że bitów przestrzeni jest potrzebne, zmniejszając rozłączenie zestawu dla twojego problemu.O(n)O(nlogn)n=mΩ(n)
Załóżmy, że Alicja ma wektor binarny a Bob ma wektor binarny i chcą wiedzieć, czy istnieje indeks taki, że . Prowadzą algorytmu dla matrycę, której rzędy są i . Po odczytaniu pierwszego wiersza Alicja wysyła Bob oraz zawartość pamięci, aby Bob mógł ukończyć algorytm i porównać z liczbą połączonych komponentów. Jeśli dwie liczby pasują do siebie, dwa wektory są rozłączne (nie ma indeksux1,…,xny1,…,ynixi=yi=12×(2n−1)x1,0,x2,0,…,0,xny1,0,y2,0,…,0,yn∑ixi∑i(xi+yi)i), i wzajemnie. Ponieważ jakikolwiek protokół dla rozłączenia wymaga bitów (nawet jeśli może on błądzić z małym stałym prawdopodobieństwem), dedukujemy dolną granicę , która obowiązuje nawet dla losowych protokołów, które mogą błądzić z niektórymi małe stałe prawdopodobieństwo.Ω(n)Ω(n)
Możemy ulepszyć rozwiązanie Orlp, używając partycji nieprzekraczających . Matryca czytamy wiersz po rzędzie. Dla każdego wiersza pamiętamy, które 1s są połączone ścieżkami przechodzącymi przez poprzednie rzędy. Odpowiednia partycja nie jest krzyżująca, a zatem może być kodowana przy użyciu bitów (ponieważ partycje nie krzyżujące są liczone przez liczby katalońskie, których tempo wzrostu jest bardziej wykładnicze niż silni). Podczas czytania następującego wiersza utrzymujemy to reprezentowanie i zwiększamy licznik, ilekroć wszystkie końce części nie są podłączone do bieżącego wiersza (licznik przyjmuje dodatkowe bity ). Podobnie jak w rozwiązaniu Orlp, dodajemy ostatni zerowy rząd zer, aby zakończyć przetwarzanie matrycy. To rozwiązanie wykorzystujeO(n)O(logn)O(n) bitów, co jest asymptotycznie optymalne, biorąc pod uwagę naszą dolną granicę.