Implementacja gry szachy tradycyjne

Wielkość: px
Rozpocząć pokaz od strony:

Download "Implementacja gry szachy tradycyjne"

Transkrypt

1 Uniwersytet Warszawski Wydział Matematyki, Informatyki i Mechaniki Michał Raczkowski Nr albumu: Implementacja gry szachy tradycyjne Praca magisterska na kierunku INFORMATYKA Praca wykonana pod kierunkiem dra hab. Damiana Niwińskiego Instytut Informatyki Czerwiec 2009

2 Oświadczenie kierującego pracą Potwierdzam, że niniejsza praca została przygotowana pod moim kierunkiem i kwalifikuje się do przedstawienia jej w postępowaniu o nadanie tytułu zawodowego. Data Podpis kierującego pracą Oświadczenie autora (autorów) pracy Świadom odpowiedzialności prawnej oświadczam, że niniejsza praca dyplomowa została napisana przeze mnie samodzielnie i nie zawiera treści uzyskanych w sposób niezgodny z obowiązującymi przepisami. Oświadczam również, że przedstawiona praca nie była wcześniej przedmiotem procedur związanych z uzyskaniem tytułu zawodowego w wyższej uczelni. Oświadczam ponadto, że niniejsza wersja pracy jest identyczna z załączoną wersją elektroniczną. Data Podpis autora (autorów) pracy

3 Streszczenie W pracy przedstawiono grę w szachy z omówieniem jej złożoności, algorytmicznych aspektów, opisano implementację z omówieniem użytych algorytmów i ich porównaniem. Słowa kluczowe szachy, sztuczna inteligencja, algorytmy szachowe, programowanie niskopoziomowe 11.3 Informatyka Dziedzina pracy (kody wg programu Socrates-Erasmus) Klasyfikacja tematyczna E.2 DATA STORAGE REPRESENTATIONS, E.1 DATA STRUCTURES, D.0 GENERAL, J.6 COMPUTER-AIDED ENGINEERING An implementation of game traditional chess Tytuł pracy w języku angielskim

4

5 Spis treści Wprowadzenie Główne motywacje Dlaczego szachy są bardziej odpowiednie od innych gier Wcześniejsze implementacje Ogólnie o implementacji Deterministyczne gry logiczne Ogólna anatomia gry Podstawowe narzędzia teorii gier Determinizm Strategia w grze Strategia optymalna Strategia wygrywająca? Twierdzenie Zermelo Ogólna klasyfikacja Szachy w informatyce Początki Minimax Schematy minimaxowe Shannona Pierwszy program szachowy Zakład Levy ego Dalszy rozwój Brute force Pierwsze pokonanie arcymistrza Upadek Levy ego i zastój Początek Deep Blue Pokonanie mistrza świata Nowa Era Rybka Algorytmy przeszukiwania i funkcje oceny pozycji Alpha-beta cięcia Funkcja oceniająca Funkcja oceny pozycji Efekt horyzontu Usprawnienia Alfabeta z aspiration search Tablice transpozycji

6 3.8. Selektywne pogłębianie Negascout, MTD-f, SSS Negascout ze schematem Shannona B Algorytm probabilistyczny Wariant losowy z filtrem Opis implementacji Cel i założenia Podstawowe statyczne struktury danych Tablicowanie Maski bitowe Struktura ruchu Generowanie ruchów oraz sortowanie Tablica Podsumowanie A. Kompilacja i obsługa źródeł projektu B. Definicje i wyjaśnienie pojęć Bibliografia

7 Wprowadzenie 0.1. Główne motywacje Szachami [1] zainteresowałem się wiele lat przed rozpoczęciem studiów i pierwszą stycznością z programowaniem. Korzystałem z bardzo wielu różnych programów szachowych na różnych maszynach. Pierwszym programem, którego używałem było chess [?]. na archaicznym komputerze Pentium 7 MHz. Fascynowało mnie to, że maszyna licząca jest w stanie bez trudu pokonać mnie oraz była bardzo dobrym nauczycielem samej gry - wypracowywała dokładność. Zawsze chciałem być autorem swojej własnej implementacji, rozumiejąc tylko intuicyjnie wtedy na czym to rzeczywiście może polegać Dlaczego szachy są bardziej odpowiednie od innych gier Uważam, że program szachowy to bardzo ciekawy problem teoretyczno-implementacyjny ze względu na swój odpowiedni stopień złożoności. Mam tu na myśli względną równowagę pomiędzy możliwościami ludzkiego umysłu a siłą gry amatorskich programów na współczesnych maszynach. Szachy nie są problemem czysto obliczeniowym, wtedy nawet proste programy szachowe deklasowałyby ludzi ze względu na miażdżącą przewagę w prędkości dokonywanych obliczeń. Coś podobnego miało miejsce z grą Othello [2] (również Reversi), gdzie niezbyt złożony program Logistello Michaela Buro bez trudu pokonał w 1997 r. aktualnego mistrza świata Takeshi Murakami 6-0. Dzisiejsze programy są daleko poza zasięgiem ludzi, ponieważ niewielka złożoność tej gry pozwala na głębokie i bezbłędne obliczenia. Stopień rozgałęzienia drzewa w przypadku tej gry waha się od około 5 do 12. Z drugiej strony szachy nie są grą bazującą na intuicji na tyle, żeby algorytm obliczeniowy nie miał szans dorównać ludzkiej sieci neuronowej. Tak jest w przypadku starochińskiej gry Go [3], gdzie złożoność jest zbyt duża, aby program był w stanie wystarczająco zagłębić się w drzewo gry. Jest 19 linii poziomych oraz pionowych, czyli możliwości postawienia kamienia jest: = 361 czyli (pomijając nawet możliwości bicia) możliwych partii jest: 361! e w przypadku szachów mamy średnio 35 możliwych posunięć do wyboru. Zakładając, że partia ma około 80 ruchów ze średnią 35 na ruch mamy: (oczywiście czysto teoretycznie partie mogą być dłuższe, ale wtedy jest dużo mniejsze rozgałęzienie, wiec szacowanie dobrze obrazuje ilość): e

8 log(35 80 ) czyli możliwych partii szachów jest około , zatem partii Go jest / = razy więcej. Najlepsze programy Go grają na poziomie średniego amatora. Muszą one polegać na zupełnie innych algorytmach niż szachowe, zdecydowanie bardziej heurystycznych, bazujących w dużo większej mierze na ocenie jakości kształtów układanych pionów, niż na analizie drzewa gry. Szachy są zatem bardzo interesującą grą do implementacji i weryfikacji siły gry Wcześniejsze implementacje Oczywiście nie jestem w stanie sam napisać programu grającego na poziomie współczesnych najsilniejszych programów. Są one pisane przez sztab ludzi z pomocą ekspertów i jest to poza moim zasięgiem. Taki program chciałem napisać od początku studiów. Do tej pory wykonałem jedną implementację w języku funkcyjnym Haskell [4], jednak przy zachowaniu czystego paradygmatu programowania funkcyjnego (czyli pisząc komponenty idealnie funkcyjnie) samo generowanie ruchów było zbyt wolne, aby były szanse na istotną siłę programu. Generator ruchów zwracał listę pozycji, a sama pozycja nie była reprezentowana statycznie, co wpływało na wielokrotne spowolnienie kodu, czyniąc go przy tym jednak bardziej funkcyjnym, czytelnym i krótszym Ogólnie o implementacji Teraz mam zamiar wykorzystać szybkość i możliwość optymalizacji kodu w języku C++, używając dedykowanego kompilatora pod system Windows XP. Planuję zastosować kilka pomysłów na modyfikację funkcji oceniającej oraz wypróbować algorytm heurystyczny, polegający z grubsza na zbieraniu statystyk z losowo generowanych partii za pomocą szybkiej heurystycznej funkcji oceniającej. Mam zamiar porównać skuteczność tej metody, skonfrontować ją z powszechnie znanymi debiutami oraz podstawowymi metodami programowania szachów. Dopisać. 6

9 Rozdział 1 Deterministyczne gry logiczne 1.1. Ogólna anatomia gry Podstawowe cechy deterministycznych gier logicznych są bardzo intuicyjne. Rzutując gry tej kategorii na podstawową teorię gier możemy rozróżnić podstawowe elementy i schemat postępowania: 1. rozpoczęcie gry 2. kolejne posunięcia będące uporządkowanym ciągiem ruchów 3. osiągniecie stanu końcowego 4. wypłaty graczy 5. zakończenie gry W ogólniejszej wersji jest miejsce na posunięcia losowe lub czynniki losowe wpływające na podejmowanie decyzji o konkretnych ruchach przez graczy, np. tasowanie kart, rzut kostką - wszystko to traktowane jest jako ruchy losowe. Jednak tutaj skupię się na grach z pełną informacją Podstawowe narzędzia teorii gier Definicja Drzewem topologicznym lub dendrytem gry nazwiemy zbiór węzłów (wierzchołków), połączonych liniami (łukami) tak, że otrzymana figura jest spójna i nie zawiera łamanych zamkniętych. Czyli w drzewie topologicznym, jeżeli da się dojść od wierzchołka X do Y, to da się to zrobić w jeden sposób (bez wracania), połączone są dokładnie jednym konkretnym ciągiem łuków. 7

10 Definicja Niech (T, X) będzie ukorzenionym drzewem topologicznym, X jego korzeniem. Mówimy, że wierzchołek Z następuje po wierzchołku Y wzgelędem X, jeżeli ciąg łuków z X do Z przechodzi przez Y. Mówimy, że Z następuje bezpośrednio po Y, gdy Z następuje po Y i Y jest połączone łukiem z Z. Wierzchołek F dendrytu T jest końcowy, gdy zbiór wierzchołków następujących po F jest pusty. Definicja Gra n-osobowa postaci ekstensywnej jest to: 1. dendryt T z dokładnie jednym wyróżnionym wierzchołkiem A - jest to punkt początkowy 2. funkcja wypłaty, przyporządkowująca każdemu wierzchołkowi końcowemu wektor n wymiarowy zawierający informację o wypłatach graczy 3. rozbicie zbioru niekońcowych wierzchołków dendrytu na n + 1 zbiorów S 0, S 1,... S n - zbiory pozycji graczy 4. rodzina rozkładów prawdopodobieństwa, dla każdego wierzchołka z S 0, na zbiorze wierzchołków następujących bezpośrednio po nim. 5. Podrozbicie każdego ze zbiorów S 0,..., S n, na zbiory informacyjne S j i i każde dwa wierzchołki z tego samego zbioru informacyjnego mają samą ilość wierzchołków następujących bezpośrednio po nich, żaden wierzchołek z tego zbioru informacyjnego nie następuje po żadnym innym ze zbioru. 6. Określony dla każdego zbioru informacyjnego S j i zbiór wskaźników I j i (posunięć) wraz z przyporządkowanym każdemu wierzchołkowi W S j i wzajemnie jednoznacznym odwzorowaniem zbioru I j i na zbiór wierzchołków następujących bezpośrednio po W. 1. Wierzchołek A z pierwszego punktu definicji jest punktem początkowym gry (w przypadku szachów jest to ustawienie pierwotne przed pierwszym ruchem gracza dysponującego białymi). 2. funkcja wypłaty określa dla każdej sytuacji końcowej wypłaty dla graczy, w przypadku szachów jest to umownie 1:0 w przypadku wygrania gracza białego 0.5:0.5 gdy nastąpił remis 0:1 w przypadku gdy wygra gracz czarny ale dla ułatwienia i nie zmieniając sytuacji można umownie odjąć stronami 0.5 i mamy: 8

11 0.5:-0.5 w przypadku wygrania gracza białego 0:0 gdy nastąpił remis -0.5:0.5 w przypadku gdy wygra gracz czarny W szachach n = 2, czyli wektory będą 2 wymiarowe. Zatem zbiór wartości funkcji wypłaty na zbiorze wierzchołków końcowych dla szachów wygląda tak: {[0.5, 0.5], [0, 0], [ 0.5, 0.5]} symetria oznacza dokładnie identyczny zysk gracza jednego i stratę gracza drugiego. Potem nawiążę do tej właściwości. 3. niekońcowe wierzchołki są podzielone na zbiory S 0, S 1,... S n, przy czym w przypadku szachów n = 2 oraz zbiór posunięć losowych, niezależnych od graczy S 0 = Podział jest zatem prosty i przejrzysty: S 0 = S 1 S 2 = S 1 S 2 = W (T ) gdzie W (T ) oznacza zbiór wszystkich niekońcowych wierzchołków dendrytu T, gdzie S 1 - zbiór posunięć gracza białego, S 2 czarnego. 4. w przypadku omawianej gry S 0 jest puste, więc nie określa się Podobnie zbiory informacyjne i wskaźników trywializują się, używa się ich w przypadku gier z niepełną informacją Determinizm Definicja Dany gracz w określonej grze posiada pełną informację, jeśli wszystkie jego zbiory informacyjne S j i są jednoelementowe. Jeśli jeden ze zbiorów informacyjnych dowolnego gracza nie jest singletonem, mówimy że gra posiada niepełną informację (jest grą z niepełną informacją). Grę określa się mianem gry z pełną informacją gdy każdy gracz posiada pełną informację. 9

12 Nawet czysto intuicyjnie podchodząc oczywistym wydaje się być, iż szachy są grą z pełną informacją. Nie ma absolutnie żadnych czynników losowych, nawet czas przeciwnika jest do wglądu. Oczywiście z praktycznego punktu widzenia szachisty, można mówić o podejmowaniu ryzyka grając agresywnie, na przykład poświęcając figurę - czynnik losowy polega tu na tym, że człowiek bądź maszyna grająca nie jest w stanie do końca przewidzieć konsekwencji tego ruchu, który mocno zaburza równowagę pozycyjną oraz materialną. Taka sytuacja na ogół powoduje zaostrzenie gry i wyklucza spokojny remis, jednak z punktu widzenia teorii jest to ciągle zupełnie jasna sytuacja, wejście w inna gałąź drzewa, które jest w całości znane, jednak zbyt duże, żeby dostatecznie przeanalizować i przewidzieć skutki danego ryzykownego ruchu Strategia w grze Intuicyjnie poprzez strategię rozumie się ogólny pomysł, plan gracza na rozgrywkę. Definicja Strategia to opis zachowania gracza w każdej możliwej sytuacji, dokładnie ruch w każdej możliwej sytuacji w rozgrywce. Bardziej formalnie niech G oznacza graf skierowany gry 2 graczy (X oraz Y) z pełną informacją, gdzie wierzchołki to pozycje, a krawędzie reprezentują ruchy. Wtedy strategia dla gracza X to dowolne drzewo ścieżek w G, w którym każda ścieżka zakończona w nie-terminalnej pozycji gracza X ma przedłużenie o 1, a ścieżka zakończona w pozycji gracza Y ma przedłużenia o wszystkie możliwe ruchy. Czyli gracz X ma plan biorąc pod uwagę wszystkie możliwe odpowiedzi przeciwnika. Oczywiście w omawianej klasie gier skończonych zbiór strategii obu graczy jest również skończony, co wynika z tego, że jest skończona ilość możliwych pozycji, a w każdej skończona ilość ruchów do wyboru. Nawet dla najprostszych gier mamy bardzo duża ilość możliwych strategii. Na przykład dla kółka i krzyżyka 3 3 mamy: strategii = Strategia optymalna Twierdzenie Skończona jest ilość strategii dla graczy X i Y, czyli skończony jest też iloczyn kartezjański zbiorów ich strategii, a to implikuje istnienie strategii optymalnej gracza X (symetrycznie Y), którą oznaczamy S X Stosując strategię optymalną gracz minimalizuje swoją przegraną w stosunku do gry przeciwnika lub maksymalizuje swój zysk Strategia wygrywająca? Twierdzenie Zermelo Nie wiadomo, czy w szachach istnieje strategia wygrywająca dla białego lub czarnego. Moim zdaniem najbardziej prawdopodobną odpowiedzią na to pytanie jest remis. Nie jestem w stanie jednak tego udowodnić, za to przytoczę twierdzenie niemieckiego matematyka Ernsta Zermelo ( ), który w roku 1912 udowodnił poniższe twierdzenie. Twierdzenie Twierdzenie szachowe Zermelo W grze w szachy są trzy możliwości: 10

13 1. istnieje strategia wygrywająca dla białych 2. obaj gracze mają strategie na remis 3. istnieje strategia wygrywająca dla czarnych Dowód korzysta z logicznego prawa wyłączonego środka: Twierdzenie Dla dowolnego zdania logicznego p w logice dwuwartościowej prawdziwe jest zdanie: p p Niech zdanie w oznacza, iż białe przynajmniej remisują: w w 1 b 1 w 2 b 2... w n b n (n oznacza ilość wszystkich ruchów w partii), że białe nie przegrywają (biorąc pod uwagę ruchy generujące legalne rozgrywki), gdzie w 1... w n oznaczają półruchy białego prowadzące do legalnej pozycji, natomiast b 1... b n półruchy czarnego, n ilość pełnych ruchów w partii. Zdanie w mówi, że biały od początku może wybierać takie ruchy, które dają mu co najmniej remis. Z prawa wyłączonego środka to zdanie jest prawdziwe lub fałszywe (w w). Zaprzeczeniem będzie : w w 1 b 1 w 2 b 2... w n b n, że wygrywają czarne, co jest wyrażoną obrazowo strategią czarnych prowadzących do ich zwycięstwa Ogólna klasyfikacja Szachy, podobnie jak inne przytoczone wcześniej gry, należą do gatunku gier dwuosobowych, deterministycznych, skończonych, z pełną informacją, o sumie zerowej, nazwijmy je dla uproszczenia GD. Co to oznacza? Gra: dwuosobowa - jest dokładnie 2 przeciwników deterministyczna - nie ma elementów losowości skończona - zgodnie z zasadami szachów [1] w przypadku wystąpienia 3 razy takiej samej pozycji następuje remis. Są 32 figury, zatem dowolnych ustawień ich na 64 polowej szachownicy jest: V V < 31 V = = = R czyli po 2 R + 1 ruchów któraś pozycja musi się powtórzyć 3 raz. 11

14 z pełną informacją - obie strony wiedzą wszystko o stanie rozgrywki o sumie zerowej - zwycięstwo jednego gracza oznacza porażkę drugiego, nie ma stanów pośrednich. Inne gry należące do tej rodziny to np. Warcaby, Reversi, Gomoku, Go, ConnectFour i wiele innych. Za pomocą analizy komputerowej udało się bardzo mocno poszerzyć wiedzę z zakresu gier z GD. Grę można rozwiązać w sposób: słaby (rozwiązanie słabe) - strategia wygrywająca podawana jest od stanu początkowego silny (rozwiązanie silne) - w każdej pozycji znane jest najlepsze posunięcie i możliwości gry od tego momentu - czy jest przegrana, strategia remisowa lub wygrywająca wygrana oraz najlepsza kontynuacja Banalnym przykładem gry, którą każdy może rozwiązać silnie na poczekaniu jest proste kółko i krzyżyk 3 x 3. W każdej pozycji można wskazać najlepszą kontynuację oraz orzec o wygranej jednej ze stron bądź remisie. Właściwie o tej grze wiadomo absolutnie wszystko. Inną grą rozwiązana silnie przez Holendrów jest Awari, gdzie liczba stanów to około Grami rozwiązanymi słabo są np. Gomoku - nowatorskie pomysły Victora Allisa wykazały, iż gracz rozpoczynający ma strategię wygrywającą. Bardzo ciekawym osiągnięciem zespołu pracującego nad programem Chinook [5], pogromcy warcabowego mistrza wszechczasów Mariona Tinsley [6], jest udowodnienie, że gracz rozpoczynający ma strategie remisującą. W praktyce oznacza to, iż współczesna implementacja Chinook-a zawsze wygrywa bądź remisuje. ConnectFour [7] zostało słabo rozwiązane w 1988 r. równolegle przez Jamesa D. Allen oraz wcześniej wspomnianego Victora Allis. Przy idealnej grze gracz zaczynający stawiając pierwszy kamień w środkowej kolumnie ma strategię wygrywającą, zaczynając w jednej z 2 przyśrodkowych kolumn daje graczowi drugiemu strategie remisującą, natomiast rozpoczynając poza nimi strategię wygrywającą. Szachy nie są i prawdopodobnie nie będą w najbliższej przyszłości rozwiązane w żaden ze sposobów (oczywiście rozwiązanie silne zawiera w sobie słabe). Sztuczna inteligencja w grach z GD generalnie opiera się o: przeszukiwanie i analizy drzewa gry, algorytmy z rodziny MINIMAX. baza końcówek (generowana poprzez analizę) baza debiutów (generowana poprzez analizę lub korzystające z wiedzy ekspertów) algorytmy heurystyczne i symulacje np. w przypadku Go 12

15 Rozdział 2 Szachy w informatyce 2.1. Początki Jak już wcześniej pisałem, szachy są bardzo wdzięcznym i ciekawym problemem programistycznym. Pierwszym człowiekiem, który w jakikolwiek sposób połączył starą, królewską grę z informatyką, był Leonardo Torres y Quevedo[8]. W 1890 roku stworzy mechanizm elektroniczny pokaźnych gabarytów, który rozgrywał końcówkę matującą król + wieża kontra król. Pierwszą poważną teoretyczną przymiarką do programowania szachów była praca Clauda Elwooda Shannona [9] pod tytułem Programming the computer for playing chess. Postawowe metody w niej przedstawione są aktualne po dziś dzień Minimax Ogólny schemat dobrze znanego algorytmu Minimaks w najprostszej wersji w pseudokodzie wygląda następująco: int minimax(p : pozycja, l : lista int) if jestkońcowa(p) return wynikgry(p) else l = pustalista dla każdego nastepnika p pn dodajdolisty(l, minimax(pn, l)) if posunieciegracza1(p) return maxymalnyelementlisty(l) else return minimalnyelementlisty(l) jest on metodą minimalizowania maksymalnych możliwych strat lub maksymalizację minimalnego zysku. W szachach pełne drzewo gry ma około 10 44, więc przejrzenie całego drzewa gry jest fizycznie niemożliwe, należało więc przejrzeć tylko część drzewa. 13

16 2.3. Schematy minimaxowe Shannona int funkcjashannonaa (p : pozycja, l : lista int, g : glebokosc) if jestkońcowa(p) lub g == 0 return ocenapozycji(p) else l = pustalista dla każdego nastepnika p pn dodajdolisty(l, minimax(pn, l, g - 1)) if posunieciegracza1(p) return maxymalnyelementlisty(l) else return minimalnyelementlisty(l) Funkcja ShannonaA wykonuje pełnego minimaxa na okrojonym drzewie do danej głębokości g i zamiast wyniku gry zwraca heurystyczną ocenę pozycji na danej głębokości, gdy gra się jeszcze nie skończyła. Był to bardzo dobry pomysł, który przetrwał, oczywiście w tej postaci niewystarczająco wydajny. Przeglądanie całego drzewa do danej głębokości pozwalało na osiągnięcie poziomu początkującego, jednak sensownie grającego zawodnika. int funkcjashannonab (p : pozycja, l : lista int, g : glebokosc) if jestkońcowa(p) lub g == 0 return ocenapozycji(p) else l = pustalista dla każdego nastepnika p pn, ktory jest "wystarczający" dodajdolisty(l, minimax(pn, l, g - 1)) if posunieciegracza1(p) return maxymalnyelementlisty(l) else return minimalnyelementlisty(l) Wystarczający oznacza tutaj, że bierzemy pod uwagę tylko następniki, które są uznana za sensowne. To imituje sposób myślenia zawodnika ludzkiego, jednak trudno jest go zasymulować sprzętowo. Sposób pozwala na szybszą i głębszą analizę rokujących posunięć, dopuszcza jednak ryzyko popełnienia błędu. Schemat B ma oczywiście zastosowania we współczesnych algorytmach Pierwszy program szachowy Alex Bernstein był autorem pierwszego kompletnego programu szachowego, ukończonego w 1957 roku. Wcześniej spotykane były programy rozwiązujące końcówki i inne podproblemy szachowe. Pierwszy oficjalny turniej programów szachowych odbył się w 1966 między programami z uniwersytetów MIT oraz Moskiewskiego zakończony zwycięstwem Rosjan 3:1, zwycięski 14

17 program nazywał się Kaissa. Był on inspiracją ludzi z MIT do kontynuacji i w 1967 ukazał się Mat Hack Six, który był pierwszym sensownym programem, będącym w stanie wygrywać z szachistami amatorami Zakład Levy ego David Levy - amerykański szachowy mistrz międzynarodowy założył się, że w ciągu najbliższej dekady nie przegra meczu z programem szachowym. Wygrał zakład pokonując program Chess 4.7 w 1978 roku, jednak zakład bardzo mobilizująco przyczynił się do postępu w dziedzinie programowania królewskiej gry Dalszy rozwój Pierwsze oficjalne mistrzostwa świata programów szachowych miały miejsce w Sztokholmie w roku 1974 zakończone zwycięstwem rozwijanej wciąż Kaissy, a najmocniejszym przeciwnikiem był amerykański Chess. Kaissę wycenianio wtedy na około 1700 punktów ELO. W 1977 Chess osiągnął 2000 punktów ELO i zdetronizował Kaissę. Miał innowacyjne rozwiązania, które potem wywarły wpływ na późniejsze dokonania, np. tablica transpozycyjna ruchów oraz podział drzewa gry na regiony Brute force W 1980 najlepszym światowym programem został Belle programistów Kena Thompsona i Joe Condona. Siła gry tego programu polegała na specjalnych szachowych sprzętowych układach elektronicznych, pozwalającej zejść na 5 pełnych ruchów przy analizie pozycji na sekundę, co wprowadziło pojęcie brute force (brutalna siła obliczeniowa). Przy takiej szybkości nawet prosty algorytm i funkcja oceniająca pozwalały zdeklasować konkurencję. Następcą Chess i mistrzem świata w 1983 oraz 1986 został Cray Blitz na najszybszej maszynie Cray X-MP. W dalszym ciągu program był za słaby na pokonanie mistrza Levy-ego, przegrał z nim 4-0 w 1984 roku. W dalszych latach zaczęto projektować szybkie mikrokomputery szachowe stawiające na technikę brute force. Ich siła w 1987 sięgała około 2200 punktów ELO. Stosowano głównie Schemat A Shannona na szybkich układach elektronicznych. Schemat B Shannona był rozwijany między innymi przez Szachowego Mistrza Świata M. Botvinnika, jednak bez zadowalających rezultatów. Pod koniec lat osiemdziesiątych programy znacznie przerosły ludzi w rozwiązywaniu końcówek szachowych - co łatwo wytłumaczyć dużo mniejszym stopniem rozgałęzienie drzewa Pierwsze pokonanie arcymistrza W 1988 Deep Thought pokonał arcymistrza Bent-a Larsen-a, a w 1989 został mistrzem świata programów z siłą około 2500 punktów ELO, a wśród mikrokomputerów Mephisto. W tym samym roku program Bebe został pierwszym samouczącym się programem szachowym. 15

18 2.9. Upadek Levy ego i zastój Rok 1989 okazał się przełomowy również w dziedzinie szachów. Deep Thought pokonał mistrza Levy ego 4 : 0, co było symbolicznym przełomem. Deep Tought był w pierwszej tce światowej na poziomie arcymistrza, co wbrew pozorom było daleką drogą do pokonania ludzkiego szachowego mistrza świata, wielkiego Garry-ego Kasparova. Od 1989 do 1993 nie udało się poprawić siły gdy Deep Thought, nawet w 1993 przegrał on kontrmecz z arcymistrzem Bentem Larsenem Początek Deep Blue Deep Blue był komputerem szachowym rozwijanym przez firmę IBM. W 1996 podjął pojedynek z mistrzem świata i mimo przegrania 4:2, stal się pierwszym programem, który wygrał partię z mistrzem świata. To nasunęło sugestię, że przewyższenie mistrza jest możliwe. Deep Blue bazował na połączeniu dotychczasowych osiągnięć informatyki w dziedzinie szachów, z brute force na czele. Miał 32-węzłowy klaster IBM RS/6000 SP, po 8 wyspecjalizowanych procesorów szachowych na każdym węźle, co daje 256 procesorów. Program był napisany oczywiście w C i był w stanie wyprowadzać pozycji na sekundę. Funkcja oceniająca używała zoptymalizowanych parametrów na podstawie statystyk z partii mistrzowskich oraz maszyna dysponowała duża biblioteką otwarć Pokonanie mistrza świata W 1997 Deep Blue pokonał Kasparova 3.5 : 2.5, było to wydarzenie przełomowe, choć nie pozbawione kontrowersji. Program był modyfikowany po każdej partii istnieją też podejrzenia o ingerencji ludzi w grę maszyny. Kasparov zażądał rewanżu, jednak IMB team odmówił i porzucił rozwój Deep Blue Nowa Era W dzisiejszej dekadzie nawet programy na zwykłe PC osiągają poziom mistrza świata. Mistrzowie świata rozgrywali pojedynki z PC-tami kilkakrotnie z różnym powodzeniem, w 2006 mistrz świata Vladimir Karmnik przegrał z programem Deep Fritz. Pojedynki ludzi z maszynami przestały powoli budzić takie emocje, z wiadomych przyczyn Rybka W tej chwili niepodważalnie najmocniejszym programem szachowym jest Rybka autorstwa mistrza międzynarodowego Vasika Rajlicha. Od 2006 wygrywa wszystkie mistrzostwa świata programów szachowych. Pod koniec 2008 roku Rybka 3 osiągnęła 3238 punkty ELO i z ludźmi grała tylko na fory (dając przewagę piona lub figury) z całkiem niezłym powodzeniem. 16

19 Rozdział 3 Algorytmy przeszukiwania i funkcje oceny pozycji 3.1. Alpha-beta cięcia Zarówno współczesne algorytmy szachowe jak i te dawniejsze opierają się na algorytmach minimaxopodobnych. Jednak przeglądanie całego drzewa gry do pewnej zadanej głębokości jest bardzo nieefektywne, gdyż skoro mamy średnio około 35 możliwości wykonania ruchu, to aby zanalizować grę na 2 półruchy do przody potrzeba 35 2 = 1225 ocen pozycji, natomiast odpowiednio dla 4, 5, 6, 7, 8: 35 4 = = = = = Czyli dla zejścia na 4 ruchy do przodu (co daje niedużą siłę gry) potrzeba by było > ocen pozycji. Przy idealnym procesorze o taktowaniu 3 GHz/sec, który ocenia jedną pozycję w 30 taktach zegara wychodzi: = s 5, 5h s Jest to oczywiście wielokrotnie więcej niż całkowity czas partii. Najbardziej podstawowym sposobem polepszenia tego wyniku jest zastosowanie cięć alphabeta do minimaxa. Polega on na pomijaniu gałęzi w drzewie gry, co do których jest pewność, że zostaną odrzucone bez wyliczania dla nich wartości. Oto prosty schemat: int mimimax (p : pozycja, g : glebokosc) return alphabeta(węzeł, głębokość, $-\infty$, $+\infty$) int alphabeta (p : pozycja, g : glebokosc, a, b) if jestkońcowa(p) lub g == 0 17

20 return ocenapozycji(p) if gra przeciwnik dla każdego nastepnika p pn\\ b := min(b, alfabeta(pn, g-1, a, b)) if a przekracza b return a return b else dla każdego nastepnika p pn a := max(a, alfabeta(pn, g-1, a, b)) if a przekracza b return b return a Przy algorytmie minimax bez apha-beta cięć mamy złożoność na głębokości g: O( ) = O(35 g ) tak samo jest dla alpha-beta przy pesymistycznym uporządkowaniu ruchów od najsłabszego do najmocniejszego (alpha-beta nie gubi ruchów, więc musi przejrzeć wtedy wszystkie). Natomiast przy optymalnym porządkowaniu ruchów mamy: O( ) = O(35 g 2 ) Zatem bardzo istotne jest porządkowanie ruchów. Można to uzyskać tak zwanym iteracyjnym pogłębianiem, czyli wykonywaniem analizy iteracyjnie dla coraz większych głębokości. Po każdej analizie można sortować ruchy dla zoptymalizowania cięć zgodnie z ich aktualnymi wartościami heurystycznymi. Zauważmy też, że dobrym wyznacznikiem efektywności cięć jest ilość przejrzanych liści analizowanego obciętego drzewa, gdyż jest ich więcej niż pozostałych węzłów. Np. dla głębokości 4 półruchów mamy średnio: = węzłów niekońcowych, natomiast liści (na których wywoływana ocena pozycji) jest: 3.2. Funkcja oceniająca 35 4 = Funkcja oceniająca (funkcja oceny pozycji) jest to funkcja uruchamiana w liściach analizowanego obciętego drzewa gry i zwracająca ocenę pozycji. Nie jest to rozwiązanie specyficzne dla szachów. Najprostsza funkcja oceniająca bierze pod uwagę materiał, czyli sumaryczną wartość punktową figur/bierek na planszy. W przypadku szachów akurat jest to rzeczywiście najważniejszy element, ale w niektórych grach np. Reversi mało ważny. W szachach zwyczajowe wartościowanie figur wygląda następująco: Hetman 900 pkt Wieża 500 pkt - niektóre źródła podają wartość

21 Goniec 300 pkt - niektóre źródła podają wartość 350 Skoczek 300 pkt Pion 100 pkt Król bez punktów - ponieważ nie może zostać zbity, a nieodwracalna groźba jego zbicia oznacza przegranie gry Oczywiście są to tylko ogólne szacowania, w konkretnej sytuacji w grze pion może być bardziej wartościowy od hetmana, gdyż na przykład umożliwia zwycięstwo w następnym ruchu. Podobnie wartość skoczka zależy od ilości figur na planszy, ponieważ jego ruchy są niezależne od pokonywanej drogi, więc im bardziej zastawiona plansza, tym więcej warty jest skoczek. Z gońcem jest sytuacja odwrotna Funkcja oceny pozycji Oprócz wartości materialnej figur trzeba brać pod uwagę pozycję. Jest to temat niewyczerpany, gdyż bardzo trudno jest obliczeniowo stwierdzić jakość danej pozycji. Trzeba brać pod uwagę takie elementy jak: bezpieczeństwo króla (jego pozycję i ochronę względem figur nieprzyjaciela) spójność łańcuchów pionów (czy piony mają silne broniące się łańcuchy) zajęcie kluczowych części szachownicy, czyli centrum, odległość figur atakujących od króla przeciwnika mobilność figur (czy figury nie blokują się wzajemnie) odpowiednia kolejność wyprowadzania - w początkowej fazie gry opłaca się wyprowadzać figury lekkie (skoczek, goniec) oraz piony, żeby nie narażać ciężkich (wieże, hetman) na konfrontację z mniej wartościowymi figurami przeciwnika agresywność króla - w początkowej fazie króla należy chronić, natomiast pod koniec gry, gdy prawie wszystkie figury się wymienią, staje się on bardzo silną figurą, która powinna być aktywna. odległość piona od pola przemiany 19

22 Są to elementy istotne, jednak w szczególnych sytuacjach zbyt ogólne, wyrafinowane funkcje oceniające biorą pod uwagę dużo więcej czynników. Dodatkowymi aspektami branymi pod uwagę przez funkcję oceniająca mogą być dane z analizy wielu partii arcymistrzów - np. w końcówkach położenie odpowiednich figur, newralgicznie linie i konfiguracja ustawień pionów względem innych figur Efekt horyzontu Jest to sytuacja w której nie można polegać na aktualnej lokalnej ocenie pozycji, gdyż przedstawia etap przejściowy w wymianie posunięć. Np. jeśli analizujemy do n-tego ruchu i w n-tym ruchu bijemy hetmanem hetmana przeciwnika, co w następnym ruchu skutkuje nieuniknionym odbiciu analiza zwróci bardzo wysoką ocenę tej pozycji, która po chwili się ustabilizuje. Metodą na to jest pogłębienie przeszukiwania, jeśli w danym momencie nagle pojawia się nieoczekiwana przewaga materialna jednej ze stron Usprawnienia Znakomita większość algorytmów przeszukujących jest oparta na analizie obciętego drzewa gry z cięciami mało rokujących gałęzi. W dzisiejszej technologii programów szachowych używa się kilku standardowych usprawnień i zmodyfikowanych algorytmów przeszukiwania poprawiających szybkość i głębokość przeszukiwania. W dzisiejszych czasach oprócz szybkich równoległych procesorów można też korzystać z wykładniczo większych rozmiarów pamięci niż u początków programowania szachów Alfabeta z aspiration search Jest to usprawnienie alfabety polegające na zawężeniu okna przeszukiwania. Podczas gdy w standardowej wersji mamy: w wersji aspiration search mamy: a = b = + a = expectedv alue window b = expectedv alue + window czyli okno zawężone jest do przedziału +- window od oczekiwanej wartości. Powoduje to bardziej skuteczniejsze cięcia i przeszukiwanie mniejszej ilości pozycji dla takiej samej głębokości. Jeśli wynik wyjdzie poza przedział przeszukiwanie należy powtórzyć. Istotne jest odpowiednie dobranie rozmiaru przedziału czyli parametru window Tablice transpozycji Jest to tablica hashująca do wykrywania pozycji w różnych gałęziach drzewa, które są identyczne. Jeśli znajdziemy taką pozycję, która była juz przeszukana nie trzeba ponawiać przeszukiwania. Poza tym można używać wpisów do lepszego sortowania analizowanych ruchów. 20

23 Problemem jest to, że ruchy identyczne względem tablicy transpozycji nie są identyczne pod względem gry - mają inna historię gry i np. 2 identyczne ruchy mogą skutkować innym wynikiem partii, gdy jeden powoduje remis przez 3-krotne powtórzenie pozycji Selektywne pogłębianie Polega na forsowaniu głębszej analizy (zejście na lokalnie głębszy poziom w dzrzewie gry) w miejscach, gdzie daje to rokowanie na korzystną kontynuację, np. w sytuacji gdy: odległość piona od pola przemiany jest niewielka i może bardzo korzystnie zmienić pozycję. analogicznie odległość piona przeciwnika stanowi duże zagrożenie, czego funkcja oceniająca nie jest w stanie stwierdzić. w ostatnim ruchu następuje szachowanie króla którejś ze stron jest do wykonania potencjalnie korzystne bicie, np. pionem figury Pogłębienie w pewien sposób obrazuje myślenie człowieka, który każdy wariant analizuje z inną głębokością w zależności od stopnia zagrożenia, potencjalnego zysku lub skomplikowania. Użycie tej metody może być bardzo korzystne, jednak jest dosyć niebezpieczne z powodu wykładniczej eksplozji rozmiaru drzewa przy nadmiernym pogłębianiu Negascout, MTD-f, SSS Jest algorytmem przeszukiwania drzewa, ma pewną przewagę nad alfabetą. Jego przewagą jest fakt, iż nigdy nie przeszukuje węzłów, które mogą być obcięte przez alfabetę. Algorytm polega na dobrym sortowaniu ruchów i zakłada, że pierwszy przeszukiwany węzeł jest najlepszy. Po sprawdzeniu pierwszego hipotetycznie najlepszego węzła algorytm kontynuuje przeszukiwanie pozostałych z bardzo wąskim oknem dla potwierdzenia hipotezy. Jeśli hipoteza okazuje się błędna, przeszukanie odbywa się za pomocą zwykłej alfabety. Przy złym porządkowaniu ruchów Negascout zajmie więcej czasu niż alfabeta, ale nie ze względu na przeszukiwanie większej ilości węzłów, lecz ze względu na ponawianie przeszukiwania. W silnikach szachowych stwierdza się około 10% lepszą wydajność od zwykłej alfabety. Pseudokod: int negascout(p : pozycja, g : glebokosc, a, b) if p jest końcowa OR g == 0 return ocenapozycji(p) b1 := a dla każdego nastepnika p pn a1 := -negascout (pn, g - 1, -b1, -a) if a1 > a a := a1 if a >= b 21

24 return a if a >= b1 a := -negascout(pn, g - 1, -b, -a) if a >= b return a b1 := a + 1 return a <--- tutaj pełne ponowne przeszukanie Również stosowanymi algorytmami są MTD-f oraz SSS* są bardziej efektywne, ale mniej stabilne inegascout jest najchętniej stosowanym algorytmem przeszukiwania we współczesnych silnikach szachowych Negascout ze schematem Shannona B W mojej pracy chciałbym doświadczalnie sprawdzić skuteczność alfabety w wersji negascout w połączeniu ze schematem Shannona B, czyli selektywnie wybierać ruchy do analizy, odrzucając cześć całkowicie. Tą metodą można uzyskać ciekawy rezultat w bardzo głębokiej, ale mniej dokładnej i mniej bezpiecznej analizie Algorytm probabilistyczny Chciałbym rozważyć skuteczność algorytmu probabilistycznego o zupełnie innej strukturze od wyżej wymienionych szachowych. Nie polega on na analizowaniu ruchów w drzewie, ale na wykonywaniu ruchów losowo lub losowo do pewnego stopnia i zbierającego statystyki z wykonywanych ruchów. Polega on na obserwacji, że skoro gracze wykonują losowo ruchy, to gracz po lepszym ruchu powinien mieć statystycznie częściej lepszą pozycję końcową i na podstawie tych statystyk algorytm wybiera ruch. Ma to zastosowanie szczególnie na początku gry, gdy pozycja jest zrównoważona, a alfabeta nie jest w stanie zejść na odpowiednią głębokość. Fakt, że pozycja jest zrównoważona jest też bardzo istotny, gdyż wtedy po wykonaniu dobrego ruchu statystyczna przewaga powinna pojawić się po stronie gracza wykonującego ten ruch Wariant losowy z filtrem Generując ruchy losowe algorytm generowałby bardzo dużo nieopłacalnych bić i dlatego chciałbym sprawdzić też wersję tego algorytmu z szybkim filtrem odrzucającym ruchy nieopłacalne w sposób oczywisty, jak np. w debiucie posunięcia figurami pod piony przeciwnika. Sensownym ograniczeniem byłoby ograniczenie losowania ruchów do ruchów nie powodujących dużych różnic materialnych, czyli bardziej przypominających prawdziwe sensowne posunięcia. 22

25 Rozdział 4 Opis implementacji 4.1. Cel i założenia Program został napisany metodą jak najbardziej niskopoziomową w celu uzyskania dużej wydajności i szybkości, aby mieć jak najlepszą możliwość sprawdzania algorytmów. Wybór języka C++ był tu raczej oczywisty, również kompilatora dedykowanego pod platformę Windows XP, potrafiącym dobrze optymalizować kod pod względem szybkości. Pamięć, rozmiar na dysku, oraz rozmiar wygenerowanego kodu są zupełnie nieistotne Podstawowe statyczne struktury danych Dla uzyskania najlepszej szybkości plansza jest trzymana jako spójny blok 64 zmiennych zmiennych typu char, początkowa jej zawartość #define pawna 0 #define bpawna 1 #define knight 2 #define bishop 3 #define rook 4 #define queen 5 #define king 6 #define pawn 7 #define bpawn 8 #define white 0 #define black 1 #define empty 17 char plansza[64] = {rook,knight,bishop,queen,king,bishop,knight,rook, bpawn,bpawn,bpawn,bpawn,bpawn,bpawn,bpawn,bpawn, empty,empty,empty,empty,empty,empty,empty,empty, empty,empty,empty,empty,empty,empty,empty,empty, empty,empty,empty,empty,empty,empty,empty,empty, empty,empty,empty,empty,empty,empty,empty,empty, 23

26 }; pawn,pawn,pawn,pawn,pawn,pawn,pawn,pawn, rook,knight,bishop,queen,king,bishop,knight,rook pawna oraz bpawna - oznaczają ataki pionów, jako oddzielne ruchy, gdyż nie pokrywają się z ruchem piona. Jest takze tablica kolor, mówiąca o kolorach poszczególnych figur trzymanych na planszy, zainicjowana tak: char kolor[64] = {black,black,black,black,black,black,black,black, black,black,black,black,black,black,black,black, empty,empty,empty,empty,empty,empty,empty,empty, empty,empty,empty,empty,empty,empty,empty,empty, empty,empty,empty,empty,empty,empty,empty,empty, empty,empty,empty,empty,empty,empty,empty,empty, white,white,white,white,white,white,white,white, white,white,white,white,white,white,white,white }; 4.3. Tablicowanie Istotną cecha mojej implementacji jest tablicowanie wielu potrzebnych silnikowi danych takich jak: możliwe ruchy każdej figury z każdego pola na szachownicy stablicowanie są w: char mozliwe_ruchy[10][64][64]; jest tablica o rozmiarze B w której trzymane są możliwe wszystkich figur z każdej pozycji początkowej dla pustej szachownicy po to, żeby nie trzeba było ich wyliczać podczas szybkiego generowania ruchów, czyli na przykład dla skoczka:.... n.... tablica będzie wyglądała tak: 24

27 n czyli w tablicy mozliwe ruchy będzie następująca zawartość: #define koniec_ruchow -1 mozliwe_ruchy[knight][27] = {10, 12, 21, 36, 44, 42, 33, 17, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1} 10, 12, 21, 36, 44, 42, 33, 17 są współrzędnymi w tablicy plansza, -1 oznacza koniec możliwych ruchów. Podobnie dla hetmana: tablica:. h h mozliwe_ruchy[queen][1] = {2, 3, 4, 5, 6, 7, 10, 19, 28, 37, 46, 55, 9, 17, 25, 33, 41, 49, 57, 8, 0, -1, -1, 25

28 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1} indeksy zmian kierunków figur dalekobieżnych czyli: hetman - 8 kierunków wieża - 4 kierunki goniec - 4 kierunki Przeznaczona jest na to dodatkowa tablica trzymająca indeksy zmian kierunków w tablicy mozliwe ruchy: char zmiany_kierunkow[10][64][11]; jest to potrzebne ponieważ w sytuacji, gdy figura dalekobieżna napotyka na przeszkodę analiza powinna zacząć się w następnym kierunku, na przykład w następującej sytuacji:. h. x... x. x w wersji ze współrzędnymi: 0 h 2 x x 19 x natomiast tablica indykująca zmiany kierunków: 26

29 zmiany_kierunkow[10][64] = {6, 3, 12, 19, 20, -1, -1, -1-1, -1, -1} są to indeksy w głównej tablicy początków nowego kierunku dla figur dalekobieżnych. Przy gęstym upakowaniu figur pozwala zaoszczędzić duża ilość operacji. Poza tym w momencie napotkania przeszkody korzysta się ze stablicowanych możliwych zmian ruchów i nie potrzeba kodu weryfikującego bycie za przeszkodą. możliwe bicia figur oraz oddzielnie bicia pionów dodatkowe punkty do funkcji oceniającej pozycję dla każdej figury w każdej części gry, czyli np: pozycje obydwu króli na planszy 4.4. Maski bitowe 4.5. Struktura ruchu 4.6. Generowanie ruchów oraz sortowanie 4.7. Tablica 27

30

31 Rozdział 5 Podsumowanie Podsumowanie, spostrzeżenia, z czym były największe problemy, wnioski. Różnica w podejściu do problemu sprzed pisania pracy oraz po jej napisaniu. 29

32

33 Dodatek A Kompilacja i obsługa źródeł projektu Jak w tytule. 31

34

35 Dodatek B Definicje i wyjaśnienie pojęć 1. szachy rodzina strategicznych gier planszowych rozgrywanych przez dwóch graczy na 64-polowej, dwukolorowej planszy za pomocą zestawu bierek (pionów i figur). Przeciwnicy dysponują zestawami bierek w odmiennych kolorach. W skład każdego z nich wchodzi osiem figur: król, hetman (czasami błędnie nazywany damą lub królową), dwa gońce (z niemieckiego nazywane czasami niezbyt poprawnie lauframi), dwa skoczki (zwane też popularnie, lecz błędnie końmi), dwie wieże oraz osiem pionów. Wartość figur szachowych może być absolutna lub względna. Przy założeniu, że wartość absolutna piona wynosi 1, wartości absolutne figur przedstawiają się następująco: hetman 9 punktów, wieża 5 punktów, skoczek lub goniec 3 punkty W konkretnej sytuacji na szachownicy wartość względna jest ważniejsza od wartości absolutnej. Wynika to z tego, iż w określonych przypadkach figury mogą posiadać różne wartości, np. w pozycjach o charakterze zamkniętym względna wartość skoczka przewyższa wartość gońca i odwrotnie - w pozycjach otwartych wartość gońca jest większa niż skoczka (a tym bardziej pary gońców nad parą skoczków). Podobnie dochodzący do pola przemiany pion może mieć wartość o wiele wyższą niż przypisana mu wartość 1 punktu i często może przewyższać wartość np. lekkiej figury. Król nie ma przypisanej wartości punktowej jest bezcenny. Jeśli jeden z graczy ma figury o sumarycznej wartości punktowej większej niż drugi, można by twierdzić, że ma przewagę materialną. Jednak nie zawsze musi ona przesądzać o wygranej czasami decyduje tzw. przewaga pozycyjna. Debata nad wartością skoczków i gońców (również dotycząca kolorów pól, po których poruszają się gońce) również jest natury pozycyjnej i nie ma sensu bez odniesienia do konkretnej sytuacji na szachownicy. Z kolei dwie wieże mają przewagę nad hetmanem, mimo, iż gra tym ostatnim jest z reguły łatwiejsza. Wartości punktowe poszczególnych figur mają charakter umowny i zależą od konkretnej pozycji na szachownicy. Są one jednak dobre dla początkujących szachistów, zwłaszcza przy podjęciu decyzji przy wymianie figur. Wówczas w oparciu o wartości punktowe poszczególnych figur mogą oni stosować następujące reguły: (a) Jeśli posiadamy przewagę materialną, to powinniśmy dążyć do uproszczenia pozycji (czyli wymiany figur), sprowadzając grę do końcówki. 33

36 (b) Wartość punktowa pionka rośnie wraz z tym, jak zbliża się on do pola przemiany (patrz rozdział Reguły ). (c) Wartość skoczka zależy od charakteru pozycji, w zamkniętych pozycjach skoczek ma przewagę nad gońcem, natomiast w otwartych pozycjach na odwrót. Oczywiście wszystko zależy od konkretnego ustawienia figur na szachownicy. (d) Wartość króla rośnie wraz z tym, im mniej figur pozostało na szachownicy, gdyż w przeciwnym razie byłby on znacznie narażony na bezpośredni atak matowy przeciwnika. Grę zawsze rozpoczynają białe, co daje im pewną inicjatywę w początkowej fazie partii. Gracze na zmianę wykonują posunięcia swoimi bierkami zgodnie z zasadami ruchu dla danej bierki i jeśli wejdzie ona na pole zajmowane przez przeciwnika, zbija jego bierkę. Szach jest groźbą zbicia króla, która musi być zażegnana przez przeciwnika w następnym posunięciu (króla nie można zbić). Mat, czyli postawienie króla przeciwnika w szachu, przed którym nie ma obrony, kończy partię i oznacza zwycięstwo gracza, którego bierka matuje króla przeciwnika. Remis występuje w przypadku, gdy: gracze uzgodnili taki wynik partii, na planszy wystąpił pat (jedna ze stron nie może wykonać prawidłowych posunięć, a jej król nie jest szachowany), żadna ze stron nie posiada środków niezbędnych do wygranej (choćby teoretycznej), powstała tzw. martwa pozycja, czyli żaden z graczy nie jest wstanie dać mata nawet przy najlepszej grze (wynika to z ogólnie znanych i udowodnionych faktów odnośnie pionów i końcówek figurowych), partia zwykle kończy się remisem, gdy: pozycja na planszy pojawiła się trzykrotnie, jedna ze stron daje wiecznego szacha, czyli doprowadza do sytuacji ciągłego szachowania króla przeciwnika, co w efekcie doprowadziłoby do trzykrotnego powtórzenia pozycji. wykonano pięćdziesiąt posunięć bez ruchu pionem i bicia dowolną bierką. 2. Othello gra planszowa dla dwóch osób, rozgrywana na planszy o wymiarach 8 na 8 pól przy pomocy 64 dwukolorowych pionów. Na początku gry gracze wybierają kolory, którymi będą reprezentowani na planszy i otrzymują po 32 piony. Rozpoczęcie gry polega na ułożeniu przez jednego z graczy dwóch swoich pionów na środku planszy, a jego przeciwnik dokłada również dwa swojego koloru. W następnych ruchach gracze dokładają na przemian po jednym pionie swojego starając się zamknąć pomiędzy pionami swojego koloru jak najwięcej pionów przeciwnika. Wszystkie piony przeciwnika zamknięte w liniach poziomych, pionowych lub po przekątnych zostają odwrócone i stają się pionami wykonującymi ruch. Ten sam pion może być odwrócony w trakcie gry wiele razy. Jeżeli jeden z graczy nie może wykonać ruchu (tzn. nie może zamknąć żadnego piona przeciwnika) to ruch wykonuje drugi gracz. Gra kończy się gdy żaden z graczy nie może wykonać poprawnego ruchu, czyli: 34

37 gracze zapełnią planszę, żaden z graczy nie może wykonać ruchu, jeden z graczy straci wszystkie swoje piony. Zwycięzcą zostaje gracz posiadający na planszy większość pionów swojego koloru. 3. Go starochińska gra planszowa popularna również w Korei i Japonii, a w ostatnich latach zdobywająca rosnącą popularność na całym świecie (w tym także w Polsce). Dla wielu ludzi, głównie ludzi Wschodu, go jest specyficznym połączeniem nauki, sztuki i sportu. Zasady go są niezwykle proste: Grę rozgrywa dwóch graczy na kwadratowej planszy przeciętej 19 liniami poziomymi i 19 liniami pionowymi tworzącymi 361 przecięć (skrzyżowań). Niekiedy - zwłaszcza w przypadku graczy początkujących - gra się także na planszach 13x13, a nawet 9x9. Gracze kładą na przemian czarne i białe kamienie na przecięciu linii. Grę rozpoczyna gracz grający kamieniami czarnymi. Celem gry jest otoczenie własnymi kamieniami jak największego terytorium na pustej początkowo planszy. Kamieni raz postawionych na planszy nie przesuwa się, mogą natomiast zostać zbite przez przeciwnika. Każdy kamień posiada oddechy - puste sąsiednie skrzyżowania połączone z kamieniem prostym odcinkiem. Kamień stojący w rogu ma dwa, na brzegu planszy - trzy, a w pozostałych miejscach cztery oddechy. Kamienie tego samego koloru stojące obok siebie i połączone liniami prostymi tworzą łańcuch, który ma wspólne oddechy - można je zbić albo wszystkie razem albo żadnego. Stojące obok siebie kamienie przeciwnego koloru zabierają sobie nawzajem po jednym oddechu. Kamień (lub łańcuch), któremu przeciwnik zabierze ostatni oddech zostaje zbity i zdjęty z planszy. W celu uniknięcia nieskończonych cykli taka sama pozycja na planszy nie może zostać powtórzona. (Tzw. Reguła Superko) Immanentną cechą go jest możliwość gry z wyrównaniem, umożliwiająca słabszym graczom rywalizację z silniejszymi: słabszy gracz (grający czarnymi) ustawia przed pierwszym ruchem przeciwnika pewną liczbę kamieni wynikającą z różnicy siły gry (handicap). Mimo prostoty reguł umożliwiającej naukę gry nawet małym dzieciom, go jest grą bardzo trudną, przynajmniej dla komputerów - najlepsze osiągają siłę średniej klasy amatora. Dlatego grając w go za pośrednictwem Internetu, prawdopodobieństwo że przeciwnik będzie sobie pomagał komputerem jest minimalne. Także pomiędzy graczami występują znaczne różnice siły. 4. Haskell - to funkcyjny język programowania nazwany na cześć Haskella Curry ego. Jego specyficzne cechy to m.in. leniwe wartościowanie, monady, statyczny polimorfizm, klasy typów, definiowalne operatory (również możliwość tworzenia nowych), strażnicy, wbudowana obsługa literate programming. 35

GRY I ZABAWY UMYSŁOWO- LOGICZNE JAKO FORMA UPOWSZECHNIANIA KULTURY. Donata Fraś

GRY I ZABAWY UMYSŁOWO- LOGICZNE JAKO FORMA UPOWSZECHNIANIA KULTURY. Donata Fraś GRY I ZABAWY UMYSŁOWO- LOGICZNE JAKO FORMA UPOWSZECHNIANIA KULTURY Donata Fraś Gry umysłowe To gry towarzyskie, których rezultat zależy wyłącznie od świadomych decyzji podejmowanych przez partnera Wymagają:

Bardziej szczegółowo

Szachy - Samouczek. Maciek Nowak

Szachy - Samouczek. Maciek Nowak Szachy - Samouczek Maciek Nowak Co to w ogóle są szachy? Szachy strategi czna gra pl anszowych rozgrywana przez dwóch graczy na 64- pol owej szachowni cy, za pomocą zestawu pi onów i f i gur. Mi ędzynarodowy

Bardziej szczegółowo

Szachy INSTRUKCJA. rekwizyty: 1) Bierki - 32 szt. 2) plansza - 1 szt.

Szachy INSTRUKCJA. rekwizyty: 1) Bierki - 32 szt. 2) plansza - 1 szt. INSTRUKCJA Szachy rekwizyty: 1) Bierki - 32 szt. 2) plansza - 1 szt. Partia szachowa jest rozgrywana między dwoma przeciwnikami, którzy wykonują posunięcia bierkami na kwadratowej tablicy, zwanej szachownicą.

Bardziej szczegółowo

SZACHY mini INSTRUKCJA. rekwizyty: 1) Bierki - 32 szt. 2) plansza - 1 szt.

SZACHY mini INSTRUKCJA. rekwizyty: 1) Bierki - 32 szt. 2) plansza - 1 szt. INSTRUKCJA SZACHY mini rekwizyty: 1) Bierki - 32 szt. 2) plansza - 1 szt. Partia szachowa jest rozgrywana między dwoma przeciwnikami, którzy wykonują posunięcia bierkami na kwadratowej tablicy, zwanej

Bardziej szczegółowo

Podstawowe zasady gry w szachy. Ustawienie bierek na szachownicy w pozycji wyjściowej.

Podstawowe zasady gry w szachy. Ustawienie bierek na szachownicy w pozycji wyjściowej. Podstawowe zasady gry w szachy Ustawienie bierek na szachownicy w pozycji wyjściowej. Bierki o d lewej: Wieża, Skoczek, Goniec, Hetman, Król, Goniec, Skoczek, Wieża oraz 8 pionków w na drugiej linii. Cel

Bardziej szczegółowo

Wyznaczanie strategii w grach

Wyznaczanie strategii w grach Wyznaczanie strategii w grach Dariusz Banasiak Katedra Informatyki Technicznej W4/K9 Politechnika Wrocławska Definicja gry Teoria gier i konstruowane na jej podstawie programy stanowią jeden z głównych

Bardziej szczegółowo

Szachowisko Żywe Szachy (zapraszamy do znajomych) www.szachowisko.wordpress.com Szachowisko co to takiego? Szachowisko żywe szachy w Lublinie to projekt realizowany przez młodzież przy wsparciu Fundacji

Bardziej szczegółowo

Tworzenie gier na urządzenia mobilne

Tworzenie gier na urządzenia mobilne Katedra Inżynierii Wiedzy Teoria podejmowania decyzji w grze Gry w postaci ekstensywnej Inaczej gry w postaci drzewiastej, gry w postaci rozwiniętej; formalny opis wszystkich możliwych przebiegów gry z

Bardziej szczegółowo

Algorytmy dla gier dwuosobowych

Algorytmy dla gier dwuosobowych Algorytmy dla gier dwuosobowych Wojciech Dudek Seminarium Nowości Komputerowe 5 czerwca 2008 Plan prezentacji Pojęcia wstępne (gry dwuosobowe, stan gry, drzewo gry) Algorytm MiniMax Funkcje oceniające

Bardziej szczegółowo

Karty pracy Matematyka

Karty pracy Matematyka Karty pracy Matematyka Imię i nazwisko ucznia... Klasa... Numer w dzienniku... GSP015 Instrukcja Uważnie czytaj teksty zadań i polecenia. rozwiązania wpisuj długopisem lub piórem. Nie używaj długopisu

Bardziej szczegółowo

Grupa nowicjuszy (A) - 1 godz. w tygodniu (zajęcia pozalekcyjne)

Grupa nowicjuszy (A) - 1 godz. w tygodniu (zajęcia pozalekcyjne) Gra w szachy droga do sukcesu. Zajęcia pozalekcyjne dla nowicjuszy i wprawnych graczy. Cel główny: Stymulowanie wszechstronnego rozwoju uczniów, a w szczególności ich funkcji poznawczych, poprzez naukę

Bardziej szczegółowo

Sztuczna Inteligencja i Systemy Doradcze

Sztuczna Inteligencja i Systemy Doradcze Sztuczna Inteligencja i Systemy Doradcze Przeszukiwanie przestrzeni stanów gry Przeszukiwanie przestrzeni stanów gry 1 Gry a problemy przeszukiwania Nieprzewidywalny przeciwnik rozwiązanie jest strategią

Bardziej szczegółowo

10. Wstęp do Teorii Gier

10. Wstęp do Teorii Gier 10. Wstęp do Teorii Gier Definicja Gry Matematycznej Gra matematyczna spełnia następujące warunki: a) Jest co najmniej dwóch racjonalnych graczy. b) Zbiór możliwych dezycji każdego gracza zawiera co najmniej

Bardziej szczegółowo

Partition Search i gry z niezupełną informacją

Partition Search i gry z niezupełną informacją MIMUW 21 stycznia 2010 1 Co to jest gra? Proste algorytmy 2 Pomysł Algorytm Przykład użycia 3 Monte Carlo Inne spojrzenie Definicja Co to jest gra? Proste algorytmy Grą o wartościach w przedziale [0, 1]

Bardziej szczegółowo

Propozycje tematów zadań

Propozycje tematów zadań Propozycje tematów zadań 1. WARCABY Opracować program do gry w warcaby dla dwu graczy. Program ma umożliwiać przesuwanie kursora na zmianę po polach białych lub czarnych, wskazywanie początku końca ruchu.

Bardziej szczegółowo

Teoria gier. Wykład7,31III2010,str.1. Gry dzielimy

Teoria gier. Wykład7,31III2010,str.1. Gry dzielimy Wykład7,31III2010,str.1 Gry dzielimy Wykład7,31III2010,str.1 Gry dzielimy ze względu na: liczbę graczy: 1-osobowe, bez przeciwników(np. pasjanse, 15-tka, gra w życie, itp.), Wykład7,31III2010,str.1 Gry

Bardziej szczegółowo

Teoria gier. Teoria gier. Odróżniać losowość od wiedzy graczy o stanie!

Teoria gier. Teoria gier. Odróżniać losowość od wiedzy graczy o stanie! Gry dzielimy ze względu na: liczbę graczy: 1-osobowe, bez przeciwników(np. pasjanse, 15-tka, gra w życie, itp.), 2-osobowe(np. szachy, warcaby, go, itp.), wieloosobowe(np. brydż, giełda, itp.); wygraną/przegraną:

Bardziej szczegółowo

3. MINIMAX. Rysunek 1: Drzewo obrazujące przebieg gry.

3. MINIMAX. Rysunek 1: Drzewo obrazujące przebieg gry. 3. MINIMAX. Bardzo wygodną strukturą danych pozwalającą reprezentować stan i przebieg gry (szczególnie gier dwuosobowych) jest drzewo. Węzły drzewa reprezentują stan gry po wykonaniu ruchu przez jednego

Bardziej szczegółowo

Kognitywne podejście do gry w szachy kontynuacja prac

Kognitywne podejście do gry w szachy kontynuacja prac Kognitywne podejście do gry w szachy kontynuacja prac Stanisław Kaźmierczak Opiekun naukowy: prof. dr hab. Jacek Mańdziuk 2 Agenda Motywacja Kilka badań Faza nauki Wzorce Generowanie ruchów Przykłady Pomysły

Bardziej szczegółowo

Przykłady szacha-mata

Przykłady szacha-mata Cel gry w szachy jest nim wygranie z przeciwnikiem. Można wyróżnić trzy sposoby na wygranie partii w szachach: Pierwszy szach-mat lub poddanie partii przez przeciwnika, Drugi wygrana poprzez trzy nieprawidłowe

Bardziej szczegółowo

Marcel Stankowski Wrocław, 23 czerwca 2009 INFORMATYKA SYSTEMÓW AUTONOMICZNYCH

Marcel Stankowski Wrocław, 23 czerwca 2009 INFORMATYKA SYSTEMÓW AUTONOMICZNYCH Marcel Stankowski Wrocław, 23 czerwca 2009 INFORMATYKA SYSTEMÓW AUTONOMICZNYCH Przeszukiwanie przestrzeni rozwiązań, szukanie na ślepo, wszerz, w głąb. Spis treści: 1. Wprowadzenie 3. str. 1.1 Krótki Wstęp

Bardziej szczegółowo

Wyciąg z przepisów obowiązujących na XII Ogólnopolski Turniej Szachowy o Puchar Związku Banków Polskich Warszawa, 20 listopada 2016r.

Wyciąg z przepisów obowiązujących na XII Ogólnopolski Turniej Szachowy o Puchar Związku Banków Polskich Warszawa, 20 listopada 2016r. Wyciąg z przepisów obowiązujących na XII Ogólnopolski Turniej Szachowy o Puchar Związku Banków Polskich Warszawa, 20 listopada 2016r. Szachy szybkie A.4. We wszystkich innych sytuacjach, należy stosować

Bardziej szczegółowo

gry na planszy do WARCABÓW WARCABY TRADYCYJNE WARCABY NAROŻNIKOWE gra dla 2 osób rekwizyty: - plansza - 12 pionków białych i 12 pionków czarnych

gry na planszy do WARCABÓW WARCABY TRADYCYJNE WARCABY NAROŻNIKOWE gra dla 2 osób rekwizyty: - plansza - 12 pionków białych i 12 pionków czarnych gry na planszy do WARCABÓW WARCABY TRADYCYJNE Celem gry jest zbicie lub zablokowanie pionków przeciwnika. Grę prowadzi się na ciemnych polach szachownicy. Plansza jest tak ułożona, aby obaj gracze mieli

Bardziej szczegółowo

Ocena pozycji szachowych w oparciu o wzorce

Ocena pozycji szachowych w oparciu o wzorce Ocena pozycji szachowych w oparciu o wzorce Stanisław Kaźmierczak s.kazmierczak@mini.pw.edu.pl 2 Agenda Motywacja Statystyki Metoda statyczna sortowania ruchów Metoda następstwa wzorców Metoda podobieństwa

Bardziej szczegółowo

ZASADY GRY: COERCEO. Language: English / Polski

ZASADY GRY: COERCEO. Language: English / Polski Rules of Coerceo by Coerceo Company Translation by Anna Skudlarska ZASADY GRY: COERCEO Language: English / Polski Prawa autorskie Żadna część niniejszego dokumentu nie może być powielana, kopiowana lub

Bardziej szczegółowo

WPROWADZENIE DO SZTUCZNEJ INTELIGENCJI

WPROWADZENIE DO SZTUCZNEJ INTELIGENCJI POLITECHNIKA WARSZAWSKA WYDZIAŁ MECHANICZNY ENERGETYKI I LOTNICTWA MEL WPROWADZENIE DO SZTUCZNEJ INTELIGENCJI NS 586 Dr inż. Franciszek Dul 6. GRY POSZUKIWANIA W OBECNOŚCI PRZECIWNIKA Gry Pokażemy, w jaki

Bardziej szczegółowo

SZACHY SOLO. Szachowa gra logiczna! Instrukcja, wskazówki i rozwiązania! 1 gracz

SZACHY SOLO. Szachowa gra logiczna! Instrukcja, wskazówki i rozwiązania! 1 gracz SZACHY SOLO Szachowa gra logiczna! Instrukcja, wskazówki i rozwiązania! 8-108 lat 1 gracz Trenuj swoje zwoje! SZACHY SOLO Szachy solo to łamigłówka dla jednego gracza. Zawiera zestaw zróżnicowanych zadań

Bardziej szczegółowo

Dla dzieci od 5 lat. Wymiary pudełka 20x20x5 cm. Backgammon

Dla dzieci od 5 lat. Wymiary pudełka 20x20x5 cm. Backgammon 11122629 Zestaw gier w metalowym pudełku "8 w 1" W podróż, na wycieczkę, na deszczowe dni. Zestaw zawiera wszystko (plansze, pionki, kości), co jest potrzebne, by rozegrać wiele emocjonujących partii następujących

Bardziej szczegółowo

Adam Meissner. SZTUCZNA INTELIGENCJA Gry dwuosobowe

Adam Meissner. SZTUCZNA INTELIGENCJA Gry dwuosobowe Instytut Automatyki i Inżynierii Informatycznej Politechniki Poznańskiej Adam Meissner Adam.Meissner@put.poznan.pl http://www.man.poznan.pl/~ameis SZTUCZNA INTELIGENCJA Gry dwuosobowe Literatura [1] Sterling

Bardziej szczegółowo

Krzywe na płaszczyźnie i w przestrzeni

Krzywe na płaszczyźnie i w przestrzeni Konferencja SEM Formalizmy tak czy nie? Krzywe na płaszczyźnie i w przestrzeni Joanna Jaszuńska Wydział Matematyki, Informatyki i Mechaniki UW oraz Instytut Matematyczny PAN Krzywe... 1 21 X 2017 Joanna

Bardziej szczegółowo

I. WPROWADZENIE I PODSTAWOWE ZASADY GRY W SZACHY

I. WPROWADZENIE I PODSTAWOWE ZASADY GRY W SZACHY I. WPROWADZENIE I PODSTAWOWE ZASADY GRY W SZACHY 1. Wprowadzenie do gry w szachy, uczeń: 1.1 Potrafi poprawnie przygotować szachownicę do gry, 1.2 Zna cel rozgrywania partii szachowej, 1.3 Wymienia wartość

Bardziej szczegółowo

MODELOWANIE RZECZYWISTOŚCI

MODELOWANIE RZECZYWISTOŚCI MODELOWANIE RZECZYWISTOŚCI Daniel Wójcik Instytut Biologii Doświadczalnej PAN Szkoła Wyższa Psychologii Społecznej d.wojcik@nencki.gov.pl dwojcik@swps.edu.pl tel. 022 5892 424 http://www.neuroinf.pl/members/danek/swps/

Bardziej szczegółowo

Szukając nazwy pola zaczynamy od litery strzałki pionowe potem dopisujemy cyfry strzałki poziome

Szukając nazwy pola zaczynamy od litery strzałki pionowe potem dopisujemy cyfry strzałki poziome Figura stojąca na szachownicy zajmuje pole a1 Każde pole na szachownicy posiada własną NAZWĘ pochodzącą od litery i cyfry Szukając nazwy pola zaczynamy od litery strzałki pionowe potem dopisujemy cyfry

Bardziej szczegółowo

Heurystyki. Strategie poszukiwań

Heurystyki. Strategie poszukiwań Sztuczna inteligencja Heurystyki. Strategie poszukiwań Jacek Bartman Zakład Elektrotechniki i Informatyki Instytut Techniki Uniwersytet Rzeszowski DLACZEGO METODY PRZESZUKIWANIA? Sztuczna Inteligencja

Bardziej szczegółowo

Algorytmy sztucznej inteligencji

Algorytmy sztucznej inteligencji www.math.uni.lodz.pl/ radmat Przeszukiwanie z ograniczeniami Zagadnienie przeszukiwania z ograniczeniami stanowi grupę problemów przeszukiwania w przestrzeni stanów, które składa się ze: 1 skończonego

Bardziej szczegółowo

AiSD zadanie trzecie

AiSD zadanie trzecie AiSD zadanie trzecie Gliwiński Jarosław Marek Kruczyński Konrad Marek Grupa dziekańska I5 5 czerwca 2008 1 Wstęp Celem postawionym przez zadanie trzecie było tzw. sortowanie topologiczne. Jest to typ sortowania

Bardziej szczegółowo

T Z A A R G I P F. Kris Burm. Deutsch... 3 English... 7 Français Italiano Nederlands Español Polski... 27

T Z A A R G I P F. Kris Burm. Deutsch... 3 English... 7 Français Italiano Nederlands Español Polski... 27 Kris Burm G I P F Deutsch... 3 English... 7 Français... 11 Italiano... 15 Nederlands... 19 Español... 23 Polski... 27 Polski 27 Tzaar, Tzarra i Tott chroń swoją trójcę! TZAAR to druga gra projektu GIPF.

Bardziej szczegółowo

ATOLL. Wykonali: Aleksandra Kuchta, Łukasz Wójcik, Sztuczna Inteligencja, Semestr trzeci, Kierunek Informatyka, Wydział Informatyki i Zarządzania,

ATOLL. Wykonali: Aleksandra Kuchta, Łukasz Wójcik, Sztuczna Inteligencja, Semestr trzeci, Kierunek Informatyka, Wydział Informatyki i Zarządzania, Sztuczna Inteligencja, Semestr trzeci, Kierunek Informatyka, Wydział Informatyki i Zarządzania, Politechnika Poznańska ATOLL Wykonali: Aleksandra Kuchta, WFT, PP, nr 76690, rok IV Łukasz Wójcik, WIiZ,

Bardziej szczegółowo

LEKCJA 1. Diagram 1. Diagram 3

LEKCJA 1. Diagram 1. Diagram 3 Diagram 1 LEKCJA 1 - zaawansowanie czarnych zdecydowanie lepsze, - szansa dojścia czarnych do damki, - przynajmniej jeden kamień białych ginie, ale od czego jest ostatnia deska ratunku - KOMBINACJA! Ale

Bardziej szczegółowo

WPROWADZENIE HISTORIA SZACHÓW. ABC szachów

WPROWADZENIE HISTORIA SZACHÓW. ABC szachów ABC szachów WPROWADZENIE Szachy to gra królewska, która od zawsze utożsamiana była z rozwojem intelektualnym. Ich rola w kształtowaniu umysłu jest niepodważalna. W życiu młodego człowieka szachy odgrywają

Bardziej szczegółowo

Automatyczne Diagnozy Partii Szachowych nowa funkcja Zestawienie Ruchów.

Automatyczne Diagnozy Partii Szachowych nowa funkcja Zestawienie Ruchów. Kalkulator Szachowy 2na2 - Nowości Wersji 1.1 Automatyczne Diagnozy Partii Szachowych nowa funkcja Zestawienie Ruchów. Program Kalkulator Szachowy 2na2 umożliwia: - rozwiązywanie logicznych zadań szachowych,

Bardziej szczegółowo

Szachy, backgammon (tryktrak) i warcaby

Szachy, backgammon (tryktrak) i warcaby Szachy, backgammon (tryktrak) i warcaby pl Zasady gry Tchibo GmbH D-22290 Hamburg 92630AB6X6VII 2017-07 Drodzy Klienci! Trzy klasyczne gry w praktycznym, ozdobnym pudełku z drewna. Już od wieków gry te

Bardziej szczegółowo

Autorzy: Heinrich Glumpler i Matthias Schmitt

Autorzy: Heinrich Glumpler i Matthias Schmitt Autorzy: Heinrich Glumpler i Matthias Schmitt ChessMe rozgrywa się jak szachy bez planszy. W stosunku do szachów ChessMe ma lekko zmienione zasady i pozwala dzięki temu na nowe strategie oraz taktyki bez

Bardziej szczegółowo

Teoria gier. wstęp. 2011-12-07 Teoria gier Zdzisław Dzedzej 1

Teoria gier. wstęp. 2011-12-07 Teoria gier Zdzisław Dzedzej 1 Teoria gier wstęp 2011-12-07 Teoria gier Zdzisław Dzedzej 1 Teoria gier zajmuje się logiczną analizą sytuacji, gdzie występują konflikty interesów, a także istnieje możliwość kooperacji. Zakładamy zwykle,

Bardziej szczegółowo

CHIŃCZYK. CHIŃCZYK z blokadą ruchomą INSTRUKCJA. gry na planszy do Chińczyka. gra dla 2-4 osób

CHIŃCZYK. CHIŃCZYK z blokadą ruchomą INSTRUKCJA. gry na planszy do Chińczyka. gra dla 2-4 osób INSTRUKCJA gry na planszy do Chińczyka CHIŃCZYK gra dla 2-4 osób - 4 jednokolorowe pionki x ilość graczy - kostka Gracze ustalają kolory swoich pionków, po czym ustawiają je na swoich polach wyjściowych

Bardziej szczegółowo

Maciej Piotr Jankowski

Maciej Piotr Jankowski Reduced Adder Graph Implementacja algorytmu RAG Maciej Piotr Jankowski 2005.12.22 Maciej Piotr Jankowski 1 Plan prezentacji 1. Wstęp 2. Implementacja 3. Usprawnienia optymalizacyjne 3.1. Tablica ekspansji

Bardziej szczegółowo

Rachunek prawdopodobieństwa w grach losowych.

Rachunek prawdopodobieństwa w grach losowych. Rachunek prawdopodobieństwa w grach losowych. Lista zawiera kilkadziesiąt zadań dotyczących różnych gier z użyciem kart i kości, w tym tych najbardziej popularnych jak brydż, tysiąc itp. Kolejne zadania

Bardziej szczegółowo

Algorytmiczne Aspekty Teorii Gier Rozwiązania zadań

Algorytmiczne Aspekty Teorii Gier Rozwiązania zadań Algorytmiczne Aspekty Teorii Gier Rozwiązania zadań Bartosz Gęza 19/06/2009 Zadanie 2. (gra symetryczna o sumie zerowej) Profil prawdopodobieństwa jednorodnego nie musi być punktem równowagi Nasha. Przykładem

Bardziej szczegółowo

Uniwersytet Warszawski Teoria gier dr Olga Kiuila LEKCJA 3

Uniwersytet Warszawski Teoria gier dr Olga Kiuila LEKCJA 3 LEKCJA 3 Wybór strategii mieszanej nie jest wyborem określonych decyzji, lecz pozornie sztuczną procedurą która wymaga losowych lub innych wyborów. Gracze mieszają nie dlatego że jest im obojętna strategia,

Bardziej szczegółowo

Metody teorii gier. ALP520 - Wykład z Algorytmów Probabilistycznych p.2

Metody teorii gier. ALP520 - Wykład z Algorytmów Probabilistycznych p.2 Metody teorii gier ALP520 - Wykład z Algorytmów Probabilistycznych p.2 Metody teorii gier Cel: Wyprowadzenie oszacowania dolnego na oczekiwany czas działania dowolnego algorytmu losowego dla danego problemu.

Bardziej szczegółowo

Gra planszowa stwarza jeszcze więcej możliwości!

Gra planszowa stwarza jeszcze więcej możliwości! Gra planszowa stwarza jeszcze więcej możliwości! Steffen Benndorf Reinhard Staupe Gracze: 2-4 osób Wiek: powyżej 8 lat Czas trwania: ok.20 minut Uwaga: W przypadku, gdy Państwo znają już wielokrotnie nagradzaną

Bardziej szczegółowo

Heurystyczne metody przeszukiwania

Heurystyczne metody przeszukiwania Heurystyczne metody przeszukiwania Dariusz Banasiak Katedra Informatyki Technicznej W4/K9 Politechnika Wrocławska Pojęcie heurystyki Metody heurystyczne są jednym z ważniejszych narzędzi sztucznej inteligencji.

Bardziej szczegółowo

SID Wykład 4 Gry Wydział Matematyki, Informatyki i Mechaniki UW

SID Wykład 4 Gry Wydział Matematyki, Informatyki i Mechaniki UW SID Wykład 4 Gry Wydział Matematyki, Informatyki i Mechaniki UW slezak@mimuw.edu.pl Gry a problemy przeszukiwania Nieprzewidywalny przeciwnik rozwiazanie jest strategia specyfikujac a posunięcie dla każdej

Bardziej szczegółowo

METODY SZTUCZNEJ INTELIGENCJI 2 Opis projektu

METODY SZTUCZNEJ INTELIGENCJI 2 Opis projektu Kamil Figura Krzysztof Kaliński Bartek Kutera METODY SZTUCZNEJ INTELIGENCJI 2 Opis projektu Porównanie metod uczenia z rodziny TD z algorytmem Layered Learning na przykładzie gry w warcaby i gry w anty-warcaby

Bardziej szczegółowo

Algorytmy z powrotami. Algorytm minimax

Algorytmy z powrotami. Algorytm minimax Algorytmy z powrotami. Algorytm minimax Algorytmy i struktury danych. Wykład 7. Rok akademicki: 2010/2011 Algorytm z powrotami rozwiązanie problemu budowane jest w kolejnych krokach, po stwierdzeniu (w

Bardziej szczegółowo

lekcja 8a Gry komputerowe MasterMind

lekcja 8a Gry komputerowe MasterMind lekcja 8a Gry komputerowe MasterMind Posiadamy już elementarną wiedzę w zakresie programowania. Pora więc zabrać się za rozwiązywanie problemów bardziej złożonych, które wymagają zastosowania typowych

Bardziej szczegółowo

Rachunek prawdopodobieństwa- wykład 2

Rachunek prawdopodobieństwa- wykład 2 Rachunek prawdopodobieństwa- wykład 2 Pojęcie dyskretnej przestrzeni probabilistycznej i określenie prawdopodobieństwa w tej przestrzeni dr Marcin Ziółkowski Instytut Matematyki i Informatyki Uniwersytet

Bardziej szczegółowo

Temat 1: Pojęcie gry, gry macierzowe: dominacje i punkty siodłowe

Temat 1: Pojęcie gry, gry macierzowe: dominacje i punkty siodłowe Temat 1: Pojęcie gry, gry macierzowe: dominacje i punkty siodłowe Teorię gier można określić jako teorię podejmowania decyzji w szczególnych warunkach. Zajmuje się ona logiczną analizą sytuacji konfliktu

Bardziej szczegółowo

Algorytmy równoległe: ocena efektywności prostych algorytmów dla systemów wielokomputerowych

Algorytmy równoległe: ocena efektywności prostych algorytmów dla systemów wielokomputerowych Algorytmy równoległe: ocena efektywności prostych algorytmów dla systemów wielokomputerowych Rafał Walkowiak Politechnika Poznańska Studia inżynierskie Informatyka 2013/14 Znajdowanie maksimum w zbiorze

Bardziej szczegółowo

użytkownika 1 Jak wybrać temat pracy 2 Spis treści 3 Część pierwsza problematyka 4 Część druga stosowane metody 5 Część trzecia propozycja rozwiązania

użytkownika 1 Jak wybrać temat pracy 2 Spis treści 3 Część pierwsza problematyka 4 Część druga stosowane metody 5 Część trzecia propozycja rozwiązania 1 Jak wybrać temat pracy 2 Spis treści 3 Część pierwsza problematyka 4 Część druga stosowane metody 5 Część trzecia propozycja rozwiązania 6 Część czwarta dokumentacja techniczna i dokumentacja użytkownika

Bardziej szczegółowo

Wstęp do Sztucznej Inteligencji

Wstęp do Sztucznej Inteligencji Wstęp do Sztucznej Inteligencji Rozwiązywanie problemów-i Joanna Kołodziej Politechnika Krakowska Wydział Fizyki, Matematyki i Informatyki Rozwiązywanie problemów Podstawowe fazy: Sformułowanie celu -

Bardziej szczegółowo

REGUŁY ATARI GO. Z przykładami, zadaniami i odpowiedziami.

REGUŁY ATARI GO. Z przykładami, zadaniami i odpowiedziami. REGUŁY ATARI GO Z przykładami, zadaniami i odpowiedziami. Opracowano na podstawie: Frank Janssen Learning go step by step. A begginers booklet. Wyd. The European Go Centre. Tłum. Emilia Grudzińska Reguła.

Bardziej szczegółowo

Ćwiczenia: Ukryte procesy Markowa lista 1 kierunek: matematyka, specjalność: analiza danych i modelowanie, studia II

Ćwiczenia: Ukryte procesy Markowa lista 1 kierunek: matematyka, specjalność: analiza danych i modelowanie, studia II Ćwiczenia: Ukryte procesy Markowa lista kierunek: matematyka, specjalność: analiza danych i modelowanie, studia II dr Jarosław Kotowicz Zadanie. Dany jest łańcuch Markowa, który może przyjmować wartości,,...,

Bardziej szczegółowo

Algorytm. Krótka historia algorytmów

Algorytm. Krótka historia algorytmów Algorytm znaczenie cybernetyczne Jest to dokładny przepis wykonania w określonym porządku skończonej liczby operacji, pozwalający na rozwiązanie zbliżonych do siebie klas problemów. znaczenie matematyczne

Bardziej szczegółowo

Algorytm. a programowanie -

Algorytm. a programowanie - Algorytm a programowanie - Program komputerowy: Program komputerowy można rozumieć jako: kod źródłowy - program komputerowy zapisany w pewnym języku programowania, zestaw poszczególnych instrukcji, plik

Bardziej szczegółowo

"Programowanie gry w szachy" Praca magisterska

Programowanie gry w szachy Praca magisterska "Programowanie gry w szachy" Praca magisterska wykonana pod kierunkiem prof. Stanisława Waligórskiego Uniwersytet Warszawski 1994 r. Adam Kujawski ul. Broniewskiego 6 m. 154 01-785 Warszawa tel. 663-35-17

Bardziej szczegółowo

Technologie cyfrowe. Artur Kalinowski. Zakład Cząstek i Oddziaływań Fundamentalnych Pasteura 5, pokój 4.15

Technologie cyfrowe. Artur Kalinowski. Zakład Cząstek i Oddziaływań Fundamentalnych Pasteura 5, pokój 4.15 Technologie cyfrowe Artur Kalinowski Zakład Cząstek i Oddziaływań Fundamentalnych Pasteura 5, pokój 4.15 Artur.Kalinowski@fuw.edu.pl Semestr letni 2014/2015 Zadanie algorytmiczne: wyszukiwanie dane wejściowe:

Bardziej szczegółowo

Teoria Gier - wojna, rybołówstwo i sprawiedliwość w polityce.

Teoria Gier - wojna, rybołówstwo i sprawiedliwość w polityce. Liceum Ogólnokształcące nr XIV we Wrocławiu 5 maja 2009 1 2 Podobieństwa i różnice do gier o sumie zerowej Równowaga Nasha I co teraz zrobimy? 3 Idee 1 Grać będą dwie osoby. U nas nazywają się: pan Wiersz

Bardziej szczegółowo

Uniwersytet Warszawski Wydział Matematyki, Informatyki i Mechaniki. Paweł Parys. Nr albumu: 209216. Aukcjomat

Uniwersytet Warszawski Wydział Matematyki, Informatyki i Mechaniki. Paweł Parys. Nr albumu: 209216. Aukcjomat Uniwersytet Warszawski Wydział Matematyki, Informatyki i Mechaniki Paweł Parys Nr albumu: 209216 Aukcjomat Praca licencjacka na kierunku INFORMATYKA w zakresie INFORMATYKA Praca wykonana pod kierunkiem

Bardziej szczegółowo

MODELOWANIE RZECZYWISTOŚCI

MODELOWANIE RZECZYWISTOŚCI MODELOWANIE RZECZYWISTOŚCI Daniel Wójcik Instytut Biologii Doświadczalnej PAN d.wojcik@nencki.gov.pl tel. 022 5892 424 http://www.neuroinf.pl/members/danek/swps/ Podręcznik Iwo Białynicki-Birula Iwona

Bardziej szczegółowo

HALMA HALMA SZYBKA HALMA KOLOROWA INSTRUKCJA

HALMA HALMA SZYBKA HALMA KOLOROWA INSTRUKCJA INSTRUKCJA HALMA gra strategiczna dla 2-4 osób plansza, 2 x po 19 pionków w 2 kolorach lub 4 x po 13 pionków w 4 kolorach Halmę można rozegrać w 2 lub 4 osoby. W wersji na 2 osoby wykorzystuje się po 19

Bardziej szczegółowo

TEORETYCZNE PODSTAWY INFORMATYKI

TEORETYCZNE PODSTAWY INFORMATYKI 1 TEORETYCZNE PODSTAWY INFORMATYKI 16/01/2017 WFAiS UJ, Informatyka Stosowana I rok studiów, I stopień Repetytorium złożoność obliczeniowa 2 Złożoność obliczeniowa Notacja wielkie 0 Notacja Ω i Θ Rozwiązywanie

Bardziej szczegółowo

Kompresja danych Streszczenie Studia Dzienne Wykład 10,

Kompresja danych Streszczenie Studia Dzienne Wykład 10, 1 Kwantyzacja wektorowa Kompresja danych Streszczenie Studia Dzienne Wykład 10, 28.04.2006 Kwantyzacja wektorowa: dane dzielone na bloki (wektory), każdy blok kwantyzowany jako jeden element danych. Ogólny

Bardziej szczegółowo

INSTRUKCJA. gry dla 2 osób rekomendowany wiek: od lat 5+ zawartość pudełka: 1) Plansza 2) Pionki - 20 szt. x 2 kolory 3) Instrukcja

INSTRUKCJA. gry dla 2 osób rekomendowany wiek: od lat 5+ zawartość pudełka: 1) Plansza 2) Pionki - 20 szt. x 2 kolory 3) Instrukcja INSTRUKCJA gry dla 2 osób rekomendowany wiek: od lat 5+ zawartość pudełka: 1) Plansza 2) Pionki - 20 szt. x 2 kolory 3) Instrukcja Po rozpakowaniu należy sprawdzić zawartość z listą zawartości pudełka

Bardziej szczegółowo

LOGIKA I TEORIA ZBIORÓW

LOGIKA I TEORIA ZBIORÓW LOGIKA I TEORIA ZBIORÓW Logika Logika jest nauką zajmującą się zdaniami Z punktu widzenia logiki istotne jest, czy dane zdanie jest prawdziwe, czy nie Nie jest natomiast istotne o czym to zdanie mówi Definicja

Bardziej szczegółowo

OSTASZEWSKI Paweł (55566) PAWLICKI Piotr (55567) Algorytmy i Struktury Danych PIŁA

OSTASZEWSKI Paweł (55566) PAWLICKI Piotr (55567) Algorytmy i Struktury Danych PIŁA OSTASZEWSKI Paweł (55566) PAWLICKI Piotr (55567) 16.01.2003 Algorytmy i Struktury Danych PIŁA ALGORYTMY ZACHŁANNE czas [ms] Porównanie Algorytmów Rozwiązyjących problem TSP 100 000 000 000,000 10 000 000

Bardziej szczegółowo

1 Wprowadzenie do algorytmiki

1 Wprowadzenie do algorytmiki Teoretyczne podstawy informatyki - ćwiczenia: Prowadzący: dr inż. Dariusz W Brzeziński 1 Wprowadzenie do algorytmiki 1.1 Algorytm 1. Skończony, uporządkowany ciąg precyzyjnie i zrozumiale opisanych czynności

Bardziej szczegółowo

Optymalizacja ciągła

Optymalizacja ciągła Optymalizacja ciągła 5. Metoda stochastycznego spadku wzdłuż gradientu Wojciech Kotłowski Instytut Informatyki PP http://www.cs.put.poznan.pl/wkotlowski/ 04.04.2019 1 / 20 Wprowadzenie Minimalizacja różniczkowalnej

Bardziej szczegółowo

O badaniach nad SZTUCZNĄ INTELIGENCJĄ

O badaniach nad SZTUCZNĄ INTELIGENCJĄ O badaniach nad SZTUCZNĄ INTELIGENCJĄ Wykład 7. O badaniach nad sztuczną inteligencją Co nazywamy SZTUCZNĄ INTELIGENCJĄ? szczególny rodzaj programów komputerowych, a niekiedy maszyn. SI szczególną własność

Bardziej szczegółowo

Algorytmy mrówkowe. H. Bednarz. Wydział Informatyki Zachodniopomorski Uniwersytet Technologiczny w Szczecinie Inteligentne systemy informatyczne

Algorytmy mrówkowe. H. Bednarz. Wydział Informatyki Zachodniopomorski Uniwersytet Technologiczny w Szczecinie Inteligentne systemy informatyczne Algorytmy mrówkowe H. Bednarz Wydział Informatyki Zachodniopomorski Uniwersytet Technologiczny w Szczecinie Inteligentne systemy informatyczne 13 kwietnia 2015 1 2 3 4 Przestrzeń poszukiwań Ograniczenia

Bardziej szczegółowo

Tablice mgr Tomasz Xięski, Instytut Informatyki, Uniwersytet Śląski Katowice, 2011

Tablice mgr Tomasz Xięski, Instytut Informatyki, Uniwersytet Śląski Katowice, 2011 Tablice mgr Tomasz Xięski, Instytut Informatyki, Uniwersytet Śląski Katowice, 2011 Załóżmy, że uprawiamy jogging i chcemy monitorować swoje postępy. W tym celu napiszemy program, który zlicza, ile czasu

Bardziej szczegółowo

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

Algorytmy i struktury danych. Drzewa: BST, kopce. Letnie Warsztaty Matematyczno-Informatyczne Algorytmy i struktury danych Drzewa: BST, kopce Letnie Warsztaty Matematyczno-Informatyczne Drzewa: BST, kopce Definicja drzewa Drzewo (ang. tree) to nieskierowany, acykliczny, spójny graf. Drzewo może

Bardziej szczegółowo

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

ZASADY PROGRAMOWANIA KOMPUTERÓW ZAP zima 2014/2015. Drzewa BST c.d., równoważenie drzew, kopce. POLITECHNIKA WARSZAWSKA Instytut Automatyki i Robotyki ZASADY PROGRAMOWANIA KOMPUTERÓW ZAP zima 204/205 Język programowania: Środowisko programistyczne: C/C++ Qt Wykład 2 : Drzewa BST c.d., równoważenie

Bardziej szczegółowo

Teoria gier matematyki). optymalności decyzji 2 lub więcej Decyzja wpływa na wynik innych graczy strategiami

Teoria gier matematyki). optymalności decyzji 2 lub więcej Decyzja wpływa na wynik innych graczy strategiami Teoria gier Teoria gier jest częścią teorii decyzji (czyli gałęzią matematyki). Teoria decyzji - decyzje mogą być podejmowane w warunkach niepewności, ale nie zależą od strategicznych działań innych Teoria

Bardziej szczegółowo

Szkolny Instruktor Warcabowy

Szkolny Instruktor Warcabowy Szkolny Instruktor Warcabowy Kandydatka/kandydat do tytułu Szkolny Instruktor Warcabowy Nazwisko Imię Data urodzenia Email Adres wraz z kodem pocztowym Szkoła: Przygotowanie pedagogiczne: Przyjmuję do

Bardziej szczegółowo

Regionalne Koło Matematyczne

Regionalne Koło Matematyczne Regionalne Koło Matematyczne Uniwersytet Mikołaja Kopernika w Toruniu Wydział Matematyki i Informatyki http://www.mat.umk.pl/rkm/ Lista rozwiązań zadań nr 5, grupa zaawansowana (7..009) Gry matematyczne.

Bardziej szczegółowo

Lista 1. Procesy o przyrostach niezależnych.

Lista 1. Procesy o przyrostach niezależnych. Lista. Procesy o przyrostach niezależnych.. Niech N t bedzie procesem Poissona o intensywnoci λ = 2. Obliczyć a) P (N 2 < 3, b) P (N =, N 3 = 6), c) P (N 2 = N 5 = 2), d) P (N =, N 2 = 3, N 4 < 5), e)

Bardziej szczegółowo

TEORIA GIER W EKONOMII WYKŁAD 5: GRY DWUOSOBOWE KOOPERACYJNE O SUMIE NIESTAŁEJ

TEORIA GIER W EKONOMII WYKŁAD 5: GRY DWUOSOBOWE KOOPERACYJNE O SUMIE NIESTAŁEJ TEORI GIER W EKONOMII WYKŁD 5: GRY DWUOSOOWE KOOPERCYJNE O SUMIE NIESTŁEJ dr Robert Kowalczyk Katedra nalizy Nieliniowej Wydział Matematyki i Informatyki UŁ Gry dwumacierzowe Skończoną grę dwuosobową o

Bardziej szczegółowo

Programowanie dynamiczne cz. 2

Programowanie dynamiczne cz. 2 Programowanie dynamiczne cz. 2 Wykład 7 16 kwietnia 2019 (Wykład 7) Programowanie dynamiczne cz. 2 16 kwietnia 2019 1 / 19 Outline 1 Mnożenie ciągu macierzy Konstruowanie optymalnego rozwiązania 2 Podstawy

Bardziej szczegółowo

Metody SI w grach komputerowych Gra Policjanci i złodziej (Algorytmy przeszukiwania grafów)

Metody SI w grach komputerowych Gra Policjanci i złodziej (Algorytmy przeszukiwania grafów) Metody SI w grach komputerowych Gra Policjanci i złodziej (Algorytmy przeszukiwania grafów) Przemysław Klęsk pklesk@wi.zut.edu.pl Katedra Metod Sztucznej Inteligencji i Matematyki Stosowanej Reguły gry

Bardziej szczegółowo

Luty 2001 Algorytmy (4) 2000/2001

Luty 2001 Algorytmy (4) 2000/2001 Mając dany zbiór elementów, chcemy znaleźć w nim element największy (maksimum), bądź najmniejszy (minimum). We wszystkich naturalnych metodach znajdywania najmniejszego i największego elementu obecne jest

Bardziej szczegółowo

operacje porównania, a jeśli jest to konieczne ze względu na złe uporządkowanie porównywanych liczb zmieniamy ich kolejność, czyli przestawiamy je.

operacje porównania, a jeśli jest to konieczne ze względu na złe uporządkowanie porównywanych liczb zmieniamy ich kolejność, czyli przestawiamy je. Problem porządkowania zwanego również sortowaniem jest jednym z najważniejszych i najpopularniejszych zagadnień informatycznych. Dane: Liczba naturalna n i ciąg n liczb x 1, x 2,, x n. Wynik: Uporządkowanie

Bardziej szczegółowo

Algorytmy równoległe: ocena efektywności prostych algorytmów dla systemów wielokomputerowych

Algorytmy równoległe: ocena efektywności prostych algorytmów dla systemów wielokomputerowych Algorytmy równoległe: ocena efektywności prostych algorytmów dla systemów wielokomputerowych Rafał Walkowiak Politechnika Poznańska Studia inżynierskie Informatyka 2014/15 Znajdowanie maksimum w zbiorze

Bardziej szczegółowo

Weronika Łabaj. Geometria Bolyaia-Łobaczewskiego

Weronika Łabaj. Geometria Bolyaia-Łobaczewskiego Weronika Łabaj Geometria Bolyaia-Łobaczewskiego Tematem mojej pracy jest geometria hiperboliczna, od nazwisk jej twórców nazywana też geometrią Bolyaia-Łobaczewskiego. Mimo, że odkryto ją dopiero w XIX

Bardziej szczegółowo

D O K U M E N T A C J A

D O K U M E N T A C J A Państwowa Wyższa Szkoła Zawodowa w Tarnowie Instytut Politechniczny Informatyka Stosowana III r. D O K U M E N T A C J A Snake 3D Piotr Gębiś Paweł Gładysz Dokumentacja do projektu Snake 3D. W dokumencie

Bardziej szczegółowo

PROGRAM PRACY KOŁA SZACHOWEGO

PROGRAM PRACY KOŁA SZACHOWEGO PROGRAM PRACY KOŁA SZACHOWEGO GIMNAZJUM NR 15 W WAŁBRZYCHU Nauczyciel: Krystian Machowczyk SPIS TREŚCI Wstęp...... 3 Charakterystyka programu.... 3 Założenia programowe i warunki realizacji... 3 Ogólne

Bardziej szczegółowo

Instrukcje dla zawodników

Instrukcje dla zawodników Instrukcje dla zawodników Nie otwieraj arkusza z zadaniami dopóki nie zostaniesz o to poproszony. Instrukcje poniżej zostaną ci odczytane i wyjaśnione. 1. Arkusz składa się z 3 zadań. 2. Każde zadanie

Bardziej szczegółowo

35 żetonów Leukocyt, 35 żetonów Lekarstwa, 84 żetony Globinka, 30 żetonów Hemo, 4 detektory odpowiedzi, 4 karty przelicznik, instrukcja gry.

35 żetonów Leukocyt, 35 żetonów Lekarstwa, 84 żetony Globinka, 30 żetonów Hemo, 4 detektory odpowiedzi, 4 karty przelicznik, instrukcja gry. Gra dla 2-4 graczy w wieku 7-107 lat. Zawartość pudełka plansza, 8 pionków do wyboru, kostka do gry, 53 karty Pytania łatwe, 53 karty Pytania trudne, 45 kart Szansa, 45 kart Pech, 35 żetonów Leukocyt,

Bardziej szczegółowo