Zadanie 2 Krzysztof Jakubczyk Moje rozwiązanie nie znajduje strategii pozycyjnej w znaczeniu zdefiniowanym na wykładzie (niezaleŝnie od pozycji startowej), gdyŝ takowa nie istnieje. Przykład: 1 1 0 Środkowa pozycja jest pozycją Ewy, pozostałe Adama. Z pozycji środkowej istnieje strategia dla Ewy, natomiast pozycyjna w takim znaczeniu jak na wykładzie nie istnieje. Z tego powodu przyjmuję Ŝe strategia pozycyjna jest zaleŝna od pozycji startowej (wtedy da się skonstruować algorytm). Algorytm znajdowania strategii pozycyjnej: Wejściem algorytmu jest arena oraz punkt startowy. //PART1:znalezienie skończenie wygrywających pozycji dla Ewy good[v] skończenie wygrywająca v for v Pos do good[v] := false; pred[v] := ; /pred[v] - rodzice wezla v zgodni z L nb[v] := 0; /nb[v] - liczba dzieci v pozostałych do przetworzenia zgodnych z L forall (v, w) Mov do pred[w] := pred[w] {v}; nb[v] := nb[v]+1; Q = empty(); forall v Adam do if next[v]= then while (not Q.empty()) do v = Q.pop(); propagategood(v); done; procedure propagategood(v) good[v] = true; forall u pred[v] do if (u Adam) then nb[u]:-nb[u]-1; if (nb[u]=0) then if ((u Ewa)and nb[u]>0) then //PART2: znalezienie strategii dla Ewy for v Pos do bad[v] := false; pred[v] := ; /pred[v] - rodzice wezla v zgodni z L next[v] := ; /next[v] - synowie wezla v zgodni z L nb[v] := 0; /nb[v] - liczba dzieci v pozostałych do przetworzenia zgodnych z L forall (v, w) Mov do if (Label(v)!=label(w)) then pred[w] := pred[w] {v};
nb[v] := nb[v]+1; next[v] := next[v] {w}; Q = empty(); /zaznaczenie moŝliwych złych pozycji Adama (psującymi warunek L) forall v Adam do forall w next[v] do if (Label(v) = Label(w)) then /zaznaczenie kończących pozycji Ewy if next[v]= then /zaznaczenie pozycji Ewy, z których nie ma przejść zgodnych z L if (every w next[v]: Label(v) = Label(w)) then while (not Q.empty()) do v = Q.pop(); propagatebad(v); done; procedure propagatebad(v) if (good[v]) return; bad[v] = true; forall u pred[v] do if (u Ewa) then nb[u]:-nb[u]-1; if (nb[u]=0) then if ((u Adam) and bad(u)) then if ( bad[v]) then forall w next[v] do if ( bad(w)) then strategia[v] := w; break; else strategia[v] := Krótki opis działania: Algorytm wstępnie znajduje pozycje wygrywające dla Ewy w skończonych rozgrywkach (czyli terminujące w wierzchołkach Adama). Następnie zaznacza pewne wierzchołki jako złe te, do których Ewa nie chce dojść, następnie propaguje posiadane informację do rodziców. Ostatecznie następuje ustalenie strategii. ZłoŜoność czasowa: PART1: - wstępne wstawienie pozycji do kolejki Q zajmuje O( V + Mov ) - kaŝda pozycja moŝe być dodana do kolejki co najwyŝej raz
- dla kaŝdej pozycji wyjętej z kolejki sprawdzane są krawędzie z rodzicami, kaŝda krawędź sprawdzana co najwyŝej raz - złoŝoność części pierwszej: O( V + Mov ). PART2: - wstępne wstawienie pozycji do kolejki Q zajmuje O( V + Mov ) - kaŝda pozycja moŝe być dodana do kolejki co najwyŝej raz - dla kaŝdej pozycji wyjętej z kolejki sprawdzane są krawędzie z rodzicami, kaŝda krawędź sprawdzana co najwyŝej raz - złoŝoność części drugiej: O( V + Mov ). Ostatecznie złoŝoność: O( Mov + V ). Dowód poprawności: Najpierw udowodnię kilka faktów Fakt1: Jeśli good[v] to istnieje strategia skończenie wygrywająca dla Ewy. Oczywista konstrukcja na podstawie algorytmu. Indukcja po krokach wypełniania good: - warunek początkowy: v Adam oraz v jest terminujący oczywista strategia Ewy. - załóŝmy Ŝe dla k warunki spełnione a) jeśli v Adam to kaŝdy ruch (v,w) Mov prowadzi do wierzchołka good[w], z którego istnieje strategia dla Ewy, zatem Adam nie ma wyboru i musi wejść w taki wierzchołek, zatem istnieje strategia wygrywająca Ewy. b) jeśli v Ewa to istnieje ruch (v,w) Mov prowadzący do good[w], zatem Ewa moŝe wybrać ten ruch czyli strategia wygrywająca dla Ewy. Fakt2: Jeśli good[v] to niezaleŝnie od ruchów Ewy Adam moŝe prowadzić rozgrywkę tak, aby dla kaŝdego wierzchołka było spełnione good[v]. a)v Ewa i v jest terminujący, wtedy oczywiście jest spełniony warunek good[v]. b)v Ewa i v nie jest terminujący, ale nie istnieje przejście do wierzchołka w, takiego Ŝe good[w] wtedy Ewa musi iść do jakiegoś wierzchołka gdzie good[w]. b)v Adam, wtedy istnieje taki wierzchołek w, Ŝe (v,w) Mov oraz good[w], Adam wykonuje ruch do tego wierzchołka. Fakt3: good[v] istnieje skończenie wygrywająca strategia z v dla Ewy Konsekwencja faktów 1 i 2. Z faktu 1 otrzymujemy implikację w prawą stronę. Z faktu 2 wynika, Ŝe jeśli good[v] to Adam moŝe poprowadzić rozgrywkę tak, aby przegrała Ewa, bądź prowadzić rozgrywkę nieskończoną. Zatem jeśli istnieje skończenie wygrywająca strategia dla Ewy to musi zachodzić good[v]. Fakt4: Jeśli bad[v] to z v nie ma strategii wygrywającej dla Ewy. Zastosujmy indukcję po krokach wypełniania bad: - warunek początkowy:
a) jeśli v Adam to kaŝdy ruch (v,w) Mov jest niezgodny z warunkiem L (0->0 lub 1->1). Wiemy takŝe Ŝe nie istnieje strategia skończenie wygrywająca dla Ewy z v (bo good[v]). Czyli nie ma strategii wygrywającej dla Ewy. b) jeśli v Ewa to albo z v nie ma moŝliwych ruchów albo wszystkie moŝliwe ruchy są niezgodne z L. Wiemy takŝe Ŝe nie istnieje strategia skończenie wygrywająca dla Ewy z v. Zatem takŝe nie ma strategii wygrywającej dla Ewy. - załóŝmy Ŝe dla kroku k spełniony jest nasz warunek. Dal kroku k+1: a) jeśli v Adam to istnieje ruch do pewnego w zgodny z L, Ŝe bad[w] mamy z poprzedniego kroku, zatem wtedy Adam moŝe się ruszyć w ten sposób, czyli nie ma strategii wygrywającej dla Ewy. b) jeśli v Ewa to wszystkie ruchy (v,w) Mov zgodne z L na mocy załoŝenia prowadzą do pozycji, z których nie istnieją strategie dla Ewy. Z punktu v nie istnieje takŝe strategia skończenie wygrywająca, zatem z tego punktu takŝe nie istnieje strategia wygrywająca dla Ewy. Fak5: Jeśli v Ewa i bad[v] to istnieje (v,w) Mov zgodne z L, Ŝe bad(w). Ten fakt wynika z konstrukcji algorytmu. Aby zaszło bad[v], dla wszystkich sąsiadów w, zgodnych przejściem z L, wierzchołka v musiałoby zachodzić bad[w]. Fakt6: Jeśli v Adam i bad[v] to dla wszystkich (v,w) Mov bad(w), oraz wszystkie (v,w) Mov są zgodne z L. Wynika to z konstrukcji algorytmu. Aby zaszło bad[v], musiałby istnieć sąsiad w wierzchołka v, zgodny przejściem z L, dla którego bad[w] lub musiałoby istnieć przejście do sąsiada w niezgodne z L. Fakt7: Dla wierzchołka początkowego v mamy: bad[v] istnieje strategia pozycyjna dla Ewy rozpoczynająca się w v. Zgodnie z faktem 4 jeśli istnieje pozycyjna strategia wygrywająca dla Ewy rozpoczynająca się z v to bad[v]. Z faktów 5 i 6 moŝemy stworzyć konstrukcję pozycyjnej strategii wygrywającej dla Ewy rozpoczynającej się z v. Z faktu 6 wiemy, Ŝe Adam nie moŝe Ewie popsuć zgodności z L, a z faktu 5 wiemy, jak ma postępować Ewa. Istniejąca strategia jest to konstruowana w algorytmie strategia wynikowa (zgodnie z faktami 5 i 6). Dowód części teoretyczniej: Tutaj analogicznie biorę pod uwagę strategie pozycyjne z pozycją początkową. Dodatkowo załóŝmy, Ŝe Ewa wygrywa tylko rozgrywki nieskończone, które są zgodne z warunkiem L. Weźmy daną strategię wygrywającą dla Ewy σ. Niech V E oznacza wierzchołki Ewy występujące w tej strategii a V A wierzchołki Adama. Zdefiniujemy strategię pozycyjną σ (v) jako: - gdy v nie naleŝy do Ŝadnej ścieŝki strategii σ - w, gdzie w jest następnikiem v na pewnej ścieŝce ze strategii σ Udowodnię, Ŝe podana powyŝej strategia σ jest pozycyjną strategią wygrywającą dla Ewy.
Fakt1: Wszystkie ruchy w strategii σ Ewy są zgodne z L. ZałóŜmy przeciwnie, Ŝe dla pewnego v mamy σ (v)=w oraz Label(v) Label(w) to w oryginalnej strategii σ to przejście takŝe by było niezgodne, ale była to wygrywająca strategia dla Ewy, czyli musiała być zgodna z L. Fakt2: Dla dowolnego wierzchołka z V A strategii σ dowolny ruch Adama nie wyprowadzi poza zbiór V E. ZłóŜmy, Ŝe dla wierzchołka v V A istnieje (v,w) Mov oraz w V E V A. Oczywiście nie jest to moŝliwe, go w musiałoby naleŝeć do pewnej ścieŝki w strategii σ, zatem w V A V E. Fakt3: KaŜdy moŝliwy ruch dla strategii σ Adama jest zgodny z L. Weźmy dowolny wierzchołek v V A i krawędź (v, w) Mov. Na podstawie faktu w wiemy, Ŝe w V A V E. PoniewaŜ ruch ten jest fragmentem pewnej ścieŝki wygrywającej Ewy oryginalnego zadania więc musi więc być zgodny z L. Z faktów 1-3 widać, Ŝe zawsze Ewa będzie mogła wykonać ruch zgodny z L oraz Ŝe kaŝdy ruch Adama będzie zgodny z L. PoniewaŜ kaŝda ścieŝka w wyjściowej strategii była nieskończona (czyli nie było terminujących pozycji) tutaj takŝe nie będzie terminujących pozycji, gdyŝ Ewa nie wyprowadzi gry poza zbiór starych pozycji, a Adam (z faktu 2) takŝe nie moŝe tego zrobić. Zatem strategia σ jest pozycyjną strategią wygrywającą dla Ewy (rozpoczynając z danej pozycji).