Przeskocz do treści

Delta mi!

Podróże w  d |N

Wojciech Czerwiński

o artykule ...

  • Publikacja w Delcie: listopad 2020
  • Publikacja elektroniczna: 1 listopada 2020
  • Autor: Wojciech Czerwiński
    Afiliacja: adiunkt, Instytut Informatyki, Uniwersytet Warszawski
  • Wersja do druku [application/pdf]: (464 KB)

Jakiś czas temu koleżanki i koledzy z redakcji Delty poprosili mnie, żebym opisał, czym zajmuję się naukowo, i przedstawił pewien ciekawy wynik, który udało mi się wraz ze współpracownikami niedawno uzyskać. Pisząc ten tekst, postaram się przybliżyć tę właśnie dziedzinę, która mi osobiście wydaje się interesująca chyba dlatego, że rozważa problemy o bardzo prostym sformułowaniu geometrycznym, a mimo to jest w niej więcej znaków zapytania niż odpowiedzi. Badania często okazują się ciekawą kombinatoryką, popartą jednak zwykle geometrycznymi intuicjami. Wiele fundamentalnych pytań otwartych można sformułować bardzo szybko, jedno z nich przybliżę na końcu tego tekstu.

Niedawno w Delcie 7/2020 pisałem o podróżach w  d |R . Można też równoważnie powiedzieć, że były to podróże w Zd. Jedną z konsekwencji omawianego tam lematu Steinitza był fakt mówiący, że jeśli układ | n równań liniowych o | d zmiennych i wartościach bezwzględnych wszystkich współczynników występujących w równaniach ograniczonych przez |M ma rozwiązanie, to ma rozwiązanie niewielkie. Konkretnie rzecz biorąc, ma takie rozwiązanie u ∈Rd, że jego norma (tzn. maksimum z wartości bezwzględnych współrzędnych) jest ograniczona przez d | +1), (5dM nie zależy w ogóle od liczby równań n. Ten fakt z kolei implikuje, że pytania o podróże w  d Z stają się stosunkowo łatwe. Rozważmy następujący problem osiągalności w Zd. Dany jest zbiór wektorów |U oraz wektory początkowy | d s∈ Z i końcowy | d t ∈Z takie, że normy wszystkich | s,t oraz |ui są ograniczone przez . M Pytamy, czy istnieje taka podróż składająca się z przystanków w punktach v0,v1,...,vk∈ Zd, że zaczyna się ona w s (czyli |v0 = s), kończy w t (czyli vk = t), a każdy krok jest przesunięciem o któryś wektor | uj (czyli dla każdego | i ∈{0,...,k − 1} istnieje | u j∈ U taki, że |vi+1− vi = u j ). Jak łatwo zauważyć, jest to równoważne pytaniu, czy istnieją współczynniki a1,...,an ∈N (określające, ile razy użyjemy w trakcie podróży każdego z wektorów), takie że |Pn aiui = t− s. i 1 Z faktu powyżej wynika, że jeśli istnieje podróż z | s do | t, to istnieje taka podróż długości co najwyżej d +1). (5dM To w szczególności powoduje, że problem osiągalności w Zd należy do klasy NP, możemy zgadnąć współczynniki |ai, które są reprezentowane przez liczby o wielomianowo wielu bitach, i sprawdzić, że rzeczywiście spełniają równość | n P i 1aiui = t− s.

Dziś rozważymy problem osiągalności w Nd, bardzo podobny do problemu osiągalności w | d Z , a jednak, jak się okaże, o zupełnie innych własnościach. Podobnie jak poprzednio w problemie osiągalności w  d N dany jest zbiór wektorów U wektor początkowy s ∈Nd i końcowy |t∈ Nd, każdy z nich o normie ograniczonej przez . M Również pytamy o istnienie takiej podróży | v0,...,vk, że | v0 = s,vk = t oraz każdy krok |vi+1− vi jest równy pewnemu wektorowi |u j. Wymagamy jednak, żeby każdy punkt podróży vi miał wszystkie współrzędne nieujemne, czyli |vi∈Nd. Innymi słowy, cała nasza podróż ma się zmieścić w dodatniej ćwiartce układu współrzędnych (dla d = 2 ), a ogólnie w dodatnim ortancie |Nd. Okazuje się, że problem osiągalności w Nd jest dużo trudniejszy od swojego odpowiednika w Zd i wciąż daleki od matematycznego zrozumienia.

Bardzo często rozważa się pewne eleganckie uogólnienie problemu osiągalności w Nd. Dodajemy do naszych rozważań stany, intuicyjnie rzecz biorąc, oznacza to, że w każdym punkcie naszej podróży jesteśmy w jednym ze skończenie wielu trybów, zwanych stanami. Opis problemu składa się wtedy również z podania skończonego zbioru stanów |Q, a każdy krok podróży określany jest nie tylko wektorem z Nd, a raczej trójką |(p,u,q) ∈U Taka trójka (p,u,q) ∈ U oznacza, że jeśli jestem w stanie p, to mogę przesunąć się o wektor u i zmienić stan na |q. Wprowadzenie stanów tylko pozornie komplikuje sprawę. System z wektorami w Nd i −1 N stanami można stosunkowo łatwo zasymulować systemem o wektorach z  d+3 N i bez stanów. Dodajemy do systemu trzy współrzędne i wtedy konfigurację: stan i-ty, wektor |u∈ Nd, reprezentujemy jako wektor (N−i),0)∈Nd+3 |(u,i,N , który na pierwszych d współrzędnych ma wektor u. Przy odrobinie sprytu jesteśmy w stanie zakodować również ruchy w systemie ze stanami w tych |d + 3 współrzędnych (przy czym jednemu ruchowi w oryginalnym systemie odpowiadać będzie pewien ciąg ruchów w jego reprezentacji). Ostatnia współrzędna nie jest używana przy kodowaniu stanów, ale przydaje się przy implementacji ruchów. Dociekliwy Czytelnik może spróbować dopowiedzieć sobie szczegóły.

obrazek

Rys. 1

Rys. 1

Żeby poczuć nieco, jak ciekawe własności mogą mieć takie systemy, rozważmy przykład pokazany na rysunku 1 System ten ma dwa stany: |p i q oraz cztery możliwe ruchy oznaczone strzałkami i ich etykietami. Przyjrzyjmy się, jaką podróż możemy wykonać, startując ze stanu p i punktu |(1,0,n) ; będziemy oznaczali taką konfigurację p(1,0,n).

Na początek możemy wykonać następującą trasę:

p(1,0,n) p(0,1,n) q(0, 1,n) q(2,0,n) p(2,0,n − 1),

i jesteśmy z powrotem w stanie p z trzecim licznikiem o jeden mniejszym, ale za to pierwszym dwa razy większym. Możemy wykonać analogiczną trasę ponownie

pict

gdzie przez | oznaczamy kilka ruchów pod rząd. Powtarzając tę procedurę, możemy dotrzeć do konfiguracji | n p(2 ,0,0), a stąd bardzo prosto do dowolnej konfiguracji postaci p(x, y,0), gdzie  n x + y = 2 . Nietrudno zauważyć, że konfiguracji, do których można dojść z |p(1,0,n), jest skończenie wiele, a konkretnie rzecz biorąc, wykładniczo wiele względem | n. Ciekawym pytaniem (choć nie otwartym) jest, jak duży może być zbiór konfiguracji osiągalnych z jednej ustalonej konfiguracji w przypadku, gdy jest on skończony. Zachęcam Czytelników do konstrukcji systemu, w którym taki zbiór jest podwójnie wykładniczy względem wielkości początkowej konfiguracji oraz wielkości systemu (w szczególności liczb na strzałkach). Przy pewnym wysiłku można skonstruować system, który ma ten zbiór konfiguracji wielkości rzędu wieży dwójek wysokości |n, czyli  ..2n |2. , a nawet dużo większy (rzędu Fd(n), funkcje Fd omówię poniżej).

Problem osiągalności w Nd jest badany w informatyce teoretycznej od lat 70. XX wieku. Znany jest w delikatnie się różniących, ale równoważnych wersjach, pod nazwą problemu osiągalności w sieciach Petriego bądź problemu osiągalności w systemach zwanych Vector Addition Systems (brak tu powszechnie używanej polskiej nazwy). Warto podkreślić, dlaczego ten problem jest w ogóle rozważany w informatyce teoretycznej. Mianowicie sieci Petriego są jednym z podstawowych modeli programów współbieżnych, a zostały wprowadzone w latach 30. przez Carla Petriego w kontekście modelowania reakcji chemicznych. Gdy mamy w pewnym systemie d różnych substancji chemicznych, to określając liczbę ich cząsteczek liczbami naturalnymi, możemy opisać sytuację wektorem w Nd. W takiej sytuacji reakcja chemiczna, która rozkłada 3 cząsteczki pierwszej substancji na 2 cząsteczki drugiej substancji i 4 cząsteczki trzeciej substancji, a czwartej substancji w ogóle nie dotyczy, może być przedstawiona jako zmiana o wektor |(−3,2,4,0). Podobnie możemy modelować inne systemy, w których równocześnie istnieje wiele zasobów. Mogą to być towary dostępne na giełdzie lub liczby procesów odpowiedniego typu w danym programie. Problem osiągalności odpowiada więc na pytanie, czy zaczynając z danego układu, można po pewnej liczbie modyfikacji dojść do pewnego innego układu. To pytanie jest przydatne przy automatycznej weryfikacji programów komputerowych: możemy zapytać, czy zaczynając z konfiguracji początkowej, można po pewnej liczbie kroków otrzymać określoną konfigurację błędną. Ta obserwacja jest jednym w ważnych powodów zainteresowania informatyki teoretycznej sieciami Petriego i ich problemem osiągalności. Ma jednak duże znaczenie również fakt, że problem osiągalności w Nd jest też po prostu bardzo naturalnym zagadnieniem geometrycznym.

Co zaskakujące, przez dłuższy czas nie było wiadomo, czy w ogóle istnieje jakikolwiek algorytm rozwiązujący problem osiągalności w Nd, innymi słowy, czy problem ten jest rozstrzygalny. Pierwszy algorytm został zaproponowany przez Ernsta Mayra w roku 1978, po około dziesięciu latach badań. Nie było jednak znane żadne ograniczenie na złożoność obliczeniową tego problemu. Inaczej mówiąc, wiadomo było, że algorytm działa bardzo wolno, ale nawet trudno powiedzieć, jak wolno. Pomimo wielu lat badań nad podobnymi problemami najlepszy aktualnie znany algorytm, opublikowany w 2019 roku przez Leroux i Schmitza, działa w czasie rzędu |F (n), d+4 gdzie n to rozmiar danych wejściowych, a d to wymiar przestrzeni  d |N . Funkcje Fk to przykład bardzo szybko rosnących funkcji, zdefiniowanych (w jednej z wersji definicji) następująco: F0(n) = n + 1,Fk(n) = Fnk−1(n), czyli |Fk(n) to |n-krotne złożenie funkcji Fk−1 na argumencie n. Mamy wówczas

pict

gdzie w F3(n) wieża dwójek jest wysokości n, a liczba F4(n) i następne są już dość trudne do wyobrażenia. Widać więc, że faktycznie najlepszy znany dziś algorytm dla problemu osiągalności jest bardzo wolny.

To nie znaczy jednak, że każdy algorytm musi być tak wolny. Znane są pewne dolne ograniczenia na złożoność problemu, ale jest tu wiele znaków zapytania. Już w roku 1976 Richard Lipton udowodnił, że problem osiągalności w Nd jest |ExpSpace -trudny, czyli z grubsza rzecz biorąc, że żaden algorytm nie może działać szybciej niż w pamięci wykładniczej. W szczególności nie może działać w czasie szybszym niż podwójnie wykładniczy. Jednak przez wiele lat dość powszechną hipotezą było, że taki algorytm działający w czasie podwójnie wykładniczym powinien istnieć. Wielu osobom wydawało się prawdopodobne, że jeśli istnieje podróż od konfiguracji startowej s do końcowej t, to istnieje również taka podróż o długości co najwyżej podwójnie wykładniczej. Osobiście, z tego, co pamiętam, też wierzyłem w tę hipotezę. Konkretnie rzecz biorąc, wspomniana konstrukcja Liptona pokazuje, że podróże w  d N nie mogą być krótsze niż rzędu d 2, M co dla stałego d oraz M reprezentowanego binarnie jest ograniczeniem wykładniczym. Dopiero w 2018 roku udało się nam z kolegami udowodnić, że problem osiągalności w Nd nie może dać się rozwiązać szybciej niż w czasie  .2n F3(n) ≈ 2.. , co w szczególności implikuje, że istnieją systemy, w których najkrótsza ścieżka jest bardzo długa, np. długości ośmiokrotnie wykładniczej. Temu dowodowi można przyjrzeć się w artykule na serwisie arXiv: arxiv.org/abs/1809.07115. Przedstawię tu jednak pewien przykład, który pokazuje, że oszacowanie Liptona nie jest optymalne. Ten przykład był jednym z początkowych na naszej drodze do ostatecznego rozwiązania i naprowadził nas na właściwą konstrukcję. Sam w sobie zaś stanowi ciekawe zrozumienie tego, co może stać się w wymiarze |d = 4.

Tak jak wspomniałem powyżej, konstrukcja Liptona pokazywała, że w stałym wymiarze d najkrótsze podróże mogą być długości rzędu d 2, |M czyli wykładnicze, ale nieznane były przykłady, w których są one istotnie dłuższe. Przykład, który udało nam się znaleźć, pokazuje, że już w stosunkowo niewielkim wymiarze najkrótsze podróże mogą być długości podwójnie wykładniczej. Konstrukcja opiera się na następującym lemacie, dotyczącym ułamków, co dość zaskakująco okazuje się związane z podróżami w Nd.

Lemat. Dla każdego k ∈N istnieje k ułamków a a -1b1 ,...,bkk , takich że

1 < a1 < ... < ak-= 1+-1-, b1 bk 4k a 21 a 22 a 2k a (-1) ⋅(--2) ⋅...⋅(-k) = -, b1 b2 bk b
oraz wszystkie liczby całkowite a,b,ai oraz bi są ograniczone przez  2 16k+k.

Zauważmy, że istnienie ułamków postulowanych w lemacie wcale nie jest oczywiste. Żeby |ai bi był nie większy niż |1+ -1, 4k to jego mianownik musi być równy co najmniej  k 4 . Taki ułamek podniesiony do potęgi  i 2 , dla |i rzędu k, ma licznik oraz mianownik podwójnie wykładniczy względem |k. Trudność w dowodzie powyższego lematu polega na tym, że liczniki i mianowniki wielu ułamków podwójnie wykładniczej wielkości muszą się poskracać przy mnożeniu w taki sposób, by w rezultacie otrzymany został ułamek ab dla a i b wielkości wykładniczej względem k. Dowodu lematu nie przedstawimy, choć dałoby się go udowodnić mniej więcej na jednej stronie.

obrazek

Rys. 2

Rys. 2

Teraz pokażemy bardzo szkicowo, w jaki sposób lemat może posłużyć do konstrukcji zbioru ruchów dla |d = 4, U oraz konfiguracji

takich |s(0,0,0,0),t(0,0,0,0) ∈Q że podróż z |s(0,0,0,0) do |t(0,0,0,0) przy użyciu |U jest podwójnie wykładnicza względem wielkości tych wektorów. System jest zilustrowany na rysunku 2 (niepodpisane ruchy oznaczają brak przesunięcia). Tak dobraliśmy zbiór U, | żeby każda podróż musiała wyglądać w bardzo konkretny sposób. Na początku generujemy wektor postaci ,N,0,0) (N | przy użyciu pętli w stanie o efekcie |(1,1,0,0) w stanie  ′ s. Potem mnożymy drugą współrzędną przez  k (ak/bk)2 w stanach p1 i q1. Robimy to podobnie, jak w systemie na rysunku 1, używając dwóch stanów. Tam mnożyliśmy liczbę 1 przez ułamek 2 |1 co najwyżej n razy, ale każde mnożenie mogło mieć pewne straty. W efekcie po n pętlach między stanami p i q z liczby 1 uzyskaliśmy najwyżej liczbę 2n. W analogiczny sposób możemy pomnożyć liczbę N przez co najwyżej  2k (ak/bk) . Następnie mamy |k− 1 podobnych faz, w których mnożymy drugą współrzędną przez co najwyżej  2k 1 22 (ak−1/bk−1) ,...,(a2/b2) i na końcu przez co najwyżej  1 |(a1/b1)2 . Po tych wszystkich operacjach nasza druga współrzędna ma wartość co najwyżej a | ⋅b, N co wynika z równania w lemacie. A więc cała konfiguracja ma postać ′ ,N,0,0), t(N gdzie ′a ⩽N⋅b. N Na koniec w stanie |t w pętli odejmujemy wektor |(b,a,0,0) i chcemy dojść do konfiguracji |t(0, 0,0,0). Okazuje się, że jedyny sposób dojścia do t(0,0,0,0) jest taki, żeby ′ | N było równe dokładnie  | ⋅(a/b), N a to z kolei jest możliwe tylko, jeśli wszystkie mnożenia na trasie były dokładne. Pierwsze mnożenie, to w stanach |p1 i q1, było mnożeniem przez  4k+1 2k |( 4k ) . Aby było zrealizowane dokładnie, to liczba N musiała być podzielna przez (4k)2k, co jest liczbą podwójnie wykładniczą, a więc oznacza, że |N musiało być podwójnie wykładnicze. Zatem oczywiście długość trasy też musiała być podwójnie wykładnicza, co kończy szkic konstrukcji. Szczegóły można znaleźć w artykule w serwisie arXiv: arxiv.org/abs/2001.04327.

Przedstawiona konstrukcja dowodzi, że istnieją systemy w wymiarze |d = 4, które mają najkrótszą ścieżkę pomiędzy dwoma niewielkimi konfiguracjami długości podwójnie wykładniczej względem opisu systemu. Czy możemy skonstruować takie systemy z najkrótszą ścieżką potrójnie wykładniczą? Tego nie wiadomo. Najlepsze górne oszacowanie to |F7(n), czyli olbrzymie. Co ciekawe, podobnie jest również dla innych wymiarów. Dla d = 2 wiadomo, że w każdym systemie o ile dany punkt jest osiągalny w N2, to jest osiągalny trasą co najwyżej wykładniczej długości. Wiadomo też, że są systemy, w których taka trasa wykładniczej długości jest faktycznie najkrótszą trasą. Jak jednak wygląda sytuacja dla wymiaru d = 3? Tego również nie wiadomo. Najlepsze znane górne oszacowanie to funkcja F (n), 6 czyli dużo większa niż wieża dwójek wysokości n. Możliwe jest też, że zawsze taka najkrótsza trasa jest wykładniczej długości. Osobiście obstawiam, że druga możliwość jest prawdziwa, ale to tylko dywagacje. Być może odpowiedzi udzieli ktoś z Czytelników, tworząc konstrukcję podobną do powyższej. Rozwiązania problemów otwartych od dziesięcioleci wcale nie muszą być bardzo trudne.