Krzysztof Jakubczyk. Zadanie 2

Podobne dokumenty
Algorytmiczne aspekty teorii gier: Wykład 5

Sortowanie. Kolejki priorytetowe i algorytm Heapsort Dynamiczny problem sortowania:

Instrukcja warunkowa i złoŝona.

Zadanie 1 Przygotuj algorytm programu - sortowanie przez wstawianie.

Efektywna metoda sortowania sortowanie przez scalanie

Wyszukiwanie. Wyszukiwanie binarne

Poprawność semantyczna

Bisymulacja. Niezawodność systemów współbieżnych i obiektowych. Grzegorz Maj Grzegorz Maj Bisymulacja

Sortowanie topologiczne skierowanych grafów acyklicznych

Grafem nazywamy strukturę G = (V, E): V zbiór węzłów lub wierzchołków, Grafy dzielimy na grafy skierowane i nieskierowane:

ZŁOŻONOŚĆ OBLICZENIOWA ALGORYTMÓW

Podstawowe algorytmy i ich implementacje w C. Wykład 9

Indukcja. Materiały pomocnicze do wykładu. wykładowca: dr Magdalena Kacprzak

Wykład 8. Drzewo rozpinające (minimum spanning tree)

Systemy rozgrywek sportowych OGÓLNE ZASADY ORGANIZOWANIA ROZGRYWEK SPORTOWYCH

Wprowadzenie do Sztucznej Inteligencji

Wprowadzenie do Sztucznej Inteligencji

Przeszukiwanie z nawrotami. Wykład 8. Przeszukiwanie z nawrotami. J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 238 / 279

procesów Współbieżność i synchronizacja procesów Wykład prowadzą: Jerzy Brzeziński Dariusz Wawrzyniak

TOMASZ TRACZYK MATEMATYKA DYSKRETNA Wykłady 9-10 Grafy Hamiltona

Wstęp do Programowania potok funkcyjny

Definicja pochodnej cząstkowej

Rekurencje. Jeśli algorytm zawiera wywołanie samego siebie, jego czas działania moŝe być określony rekurencją. Przykład: sortowanie przez scalanie:

Algebra relacji - rozwiązania zadań. Zadania

Sztuczna Inteligencja i Systemy Doradcze

Wstęp do programowania

Porządek symetryczny: right(x)

Programowanie dynamiczne

Matematyka Dyskretna. Andrzej Szepietowski. 25 czerwca 2002 roku

Przykłady grafów. Graf prosty, to graf bez pętli i bez krawędzi wielokrotnych.

Algorytmy i struktury danych

Budowa i generowanie planszy

PoniŜej znajdują się pytania z egzaminów zawodowych teoretycznych. Jest to materiał poglądowy.

Instrukcja zarządzania kontami i prawami

02DRAP - Aksjomatyczna definicja prawdopodobieństwa, zasada w-w

Algorytm Dijkstry znajdowania najkrótszej ścieżki w grafie

Gramatyka operatorowa

Język JAVA podstawy. Wykład 3, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Wstęp do programowania. Listy. Piotr Chrząstowski-Wachtel

Informatyka I. Wykład 3. Sterowanie wykonaniem programu. Instrukcje warunkowe Instrukcje pętli. Dr inż. Andrzej Czerepicki

Przeciąganie po profilach, Dodanie/baza przez wyciągnięcie po ścieŝce

Gramatyki, wyprowadzenia, hierarchia Chomsky ego. Gramatyka

Czym jest wykrywanie kolizji. Elementarne metody detekcji kolizji. Trochę praktyki: Jak przygotować Visual Studio 2010 do pracy z XNA pod Windows

Wstęp do programowania. Drzewa. Piotr Chrząstowski-Wachtel

Wstęp do programowania

KaŜdemu atrybutowi A przyporządkowana jest dziedzina Dom(A), czyli zbiór dopuszczalnych wartości.

ZALICZENIE WYKŁADU: 30.I.2019

Marek Miszczyński KBO UŁ. Wybrane elementy teorii grafów 1

Algorytmy i struktury danych

Problemy Decyzyjne dla Systemów Nieskończonych

Algorytmy i struktury danych Matematyka III sem.

Analiza algorytmów zadania podstawowe

Siedem cudów informatyki czyli o algorytmach zdumiewajacych

Wstęp do sieci neuronowych, wykład 11 Łańcuchy Markova

Metody Rozmyte i Algorytmy Ewolucyjne

Detekcja zakleszczenia (1)

Algorytmy i Struktury Danych

Wstęp do programowania

Podstawowe własności grafów. Wykład 3. Własności grafów

Algorytmy i struktury danych

Wstęp do Programowania potok funkcyjny

Błędy, testowanie i weryfikacja programów

Struktury danych i złożoność obliczeniowa Wykład 2. Prof. dr hab. inż. Jan Magott

LOGIKA I TEORIA ZBIORÓW

Problem straŝaka w drzewach. Agnieszka Skorupka Matematyka Stosowana FTiMS

Rekurencja, schemat rekursji i funkcje pierwotnie rekurencyjne

Gramatyki grafowe. Dla v V, ϕ(v) etykieta v. Klasa grafów nad Σ - G Σ.

Wskazówki dotyczące zmiennych, tablic i procedur 1

Strategia "dziel i zwyciężaj"

Lista 4. Kamil Matuszewski 22 marca 2016

Wydział Zarządzania AGH. Katedra Informatyki Stosowanej. Pętle. Programowanie komputerowe

2.8. Algorytmy, schematy, programy

Tworzenie stron internetowych w kodzie HTML Cz 7

Wstęp do programowania

Podstawy programowania. Wykład 3 Konstrukcje sterujące. Krzysztof Banaś Podstawy programowania 1

Grafika 2D. Animacja Zmiany Kształtu. Wykład przedstawia podstawy animacji zmiany kształtu - morfingu. opracowanie: Jacek Kęsik

Wstęp do sieci neuronowych, wykład 12 Łańcuchy Markowa

Algorytmy i struktury danych. Drzewa: BST, kopce. Letnie Warsztaty Matematyczno-Informatyczne

Laboratorium Programowanie Obrabiarek CNC. Nr H04

Internetowe Ko³o M a t e m a t yc z n e

ZASADY PROGRAMOWANIA KOMPUTERÓW ZAP zima 2014/2015. Drzewa BST c.d., równoważenie drzew, kopce.

Algorytmy z powrotami. Algorytm minimax

Teoria automatów i języków formalnych. Określenie relacji

Gramatyki rekursywne

Zestaw 12- Macierz odwrotna, układy równań liniowych

Algorytmy i struktury danych. Co dziś? Tytułem przypomnienia metoda dziel i zwyciężaj. Wykład VIII Elementarne techniki algorytmiczne

Jak zawsze wyjdziemy od terminologii. While oznacza dopóki, podczas gdy. Pętla while jest

Systemy liczenia. 333= 3*100+3*10+3*1

Przeszukiwanie przestrzeni rozwiązań, szukanie na ślepo, wszerz, wgłąb

Liczby losowe i pętla while w języku Python

domykanie relacji, relacja równoważności, rozkłady zbiorów

Ćwiczenia z przetwarzania tablic 2D

Minimalizacja automatów niedeterministycznych na słowach skończonych i nieskończonych

Algorytmy Równoległe i Rozproszone Część III - Układy kombinacyjne i P-zupełność

Instrukcja wykonywania rozliczeń

Algorytmy i złożoności. Wykład 3. Listy jednokierunkowe

MATEMATYKA DLA CIEKAWSKICH. Dowodzenie twierdzeń przy pomocy kartki. Część I

Algorytmy grafowe. Wykład 2 Przeszukiwanie grafów. Tomasz Tyksiński CDV

. : a 1,..., a n F. . a n Wówczas (F n, F, +, ) jest przestrzenią liniową, gdzie + oraz są działaniami zdefiniowanymi wzorami:

Informatyka 1. Wyrażenia i instrukcje, złożoność obliczeniowa

Transkrypt:

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).