480 likes | 747 Views
Brid ge. Karty. 52 karet 13 karet každé barvy Piky Srdce Káry Trefy. Seřazení. A K Q J 10 9 8 7 .. 2 4 hráči – 2 týmy Jedna strana je určena jako sever Proti sobě hrají dvě line sever+jih proti východ+západ. Fáze hry. Licitace Sehrávka. Licitace.
E N D
Karty • 52 karet • 13 karet každé barvy • Piky • Srdce • Káry • Trefy
Seřazení • A K Q J 10 9 8 7 .. 2 • 4 hráči – 2 týmy • Jedna strana je určena jako sever • Proti sobě hrají dvě line • sever+jih proti východ+západ
Fáze hry • Licitace • Sehrávka
Licitace • Všichni si prohlédnou karty a rozdávající řekne první hlášku • XK, kde X je počet zdvihů a K je barva v pořadí trefy, káry, srdce, káry,piky, bez trumfů • Větší X znamená vyšší hlášku • PAS = hráč se vzdává licitace • KONTRA = hráč zdovjnásobuje body • Licitace končí poté, co 3 hráči po sobě pasují • První kdo navrhl vítěznou barvu se stává hlavním hráčem, jeho týmový kolega odevzdává karty stolu
Sehrávka • Hlavní hráč + stůl jsou útočníci, druzí dva jsou obránci • Začíná hlavní hráč • Vynese první kartu • Dále po směru hodinových ručiček • Za stůl hraje hlavní hráč • Zdvih = zdvih získá hráč, který vyložil nejvyšší kartu nebo trumf • Hráči musí ctít barvu
Licitační systémy • Problém nalezení závazku • Úkolem licitačního systému je vydražit takový závazek, který by vydražili hráči se znalostí i karet spoluhráče • Založeno na empirických poznatcích • ACOL, Standard American
ACOL • Systém „Honor points“ • Eso +4 • Král +3 • Dáma +2 • Kluk +1 • Ve hře dohormady 40 HP, tj. nadprůměrný list je už 11 HP • Založeno na pravidlech pro HP
Pravidla ACOLu „Vyvážený list (VL) jsou alespoň dvě karty v každé barvě“ „Drahý list (DL) jsou alespoň 4 karty v drahé barvě“ „Levný list (LL) je alespoň 6 karet v barvách kára, srdce, piky“ • 12-14 HP + VL = 1 BT • 11-20 + DL = 1 Srdce nebo 1 Pik • 11-20 a ne DL = 1 Káro nebo 1 Tref • >21 HP a ne VL = 2 trefy • 6-10 HP a LL = 2 (Kára, Srdce, Piky) • 22-24 HP + VL = 2 BT • Jinak pasuje
Hledání optimální strategie • single dummy problém - klasický bridge podle dříve popsaných pravidel • double dummy problém - v případě, že známe i karty jednoho z protihráčů, tj. jedná se o hru s úplnou informací – všichni znají všechny karty a jejich rozložení
Plánovací a expertní systémy • snaha převést metody a postupy, které používá člověk • plánovací (expertní) systém rozkládá úkoly na menší až na jednotlivé primitivní úkoly • metody obsahují omezující podmínky pro použití • pokud systém nemůže žádnou metodu použít, rozloží úkol na podúkoly • v případě konfliktu se vrací zpět v hierarchii úkolů
Praktická implementace – Tignum 2 • expertní systém • množina stavových informací pro reprezentaci karet, u nichž hráč znal polohu • belief function = přiřazení pravděpodobnosti k poloze ostatních karet • Metoda Impasu
Impas • Je-li jih na výnosu, záleží na tom, kde je pikový král • Drží-li pikového krále západ, vynese jih libovolnou kartu • Pokud západ vynese krále, přidá stůl (sever) eso. • Drží-li pikového krále východ, pak není možné získat dva zdvihy s P=1, ale pouze s P=1/2
Vlastnosti • ne všechny větve ve stromě odpovídají pravidlům • odpovídá různým taktickým schématům • nezkouší se všechny karty protivníka, ale jen ty, které reprezentují nějakou podmínku taktického plánu (např. 3 ve smyslu „malá piková karta“) • vede to k menšímu faktoru dělení
Proč to nefunguje ? • Prořezávání stavového stromu můžeme nazvat zobecněným expertním systémem, kde jsou obsaženy všechny metody
Prořezávání celého stavového herního stromu • vygenerujeme všechna možná rozložení karet u obránců • zvolíme kartu, která zajišťuje výhru v co největším počtu rozložení • chyba! vede k míchání strategií Karta, kterou vybereme nemusí být součástí optimální strategie pro single-dummy problém
Řešení ? • uzly nejsou ohodnoceny jen počtem uhratelných zdvihů, ale dvojicí (p,Z), kde p,Z je z S, kde S je množina všech možných konfigurací obránců. p jsou všechny konfigurace, proti kterým lze uhrát příslušný závazek v tomto stavu a Z jsou všechny konfigurace, jež jsou v souladu s pravidly a dosavadním průběhem hry
Kořen stromu (po, Zo), kde po je hledaná množina konfigurací, pro něž lze uhrát závazek, Zo = S • Větve do dalších stavů: • na tahu hlavní hráč, uzly jsou vytvořeny vygenerováním všech možných tahů, Z zůstává nezměněna • na tahu obránce, uzly jsou vygenerovány pro všechny karty c, jež jsou přípustné v alespoň jedné konfiguraci. Pro každý uzel je ze Zn zkonstruována množina Zn+1 (vyřadí se konfigurace, jež nejsou v souladu se zahranou kartou) • Koncové stavy, byly odehrány všechny karty (konkrétní situace v S). Poloha všech karet je známa. • Pokud hráč uhrál závazek, pak p = S • jinak p = S \ s • Pořád nestačí
pravidla pro hru obránců • Protože obě linie se snaží stát se hlavními hráči, většina karet s figurai je pravděpodobně na straně, jež navrhla příslušný herní závazek. Na obránce zbývá jen malý počet HP. • Obránci během sehrávky používají markování, tedy mohou si zvolit konvenci odhazování karet • Po dvou až třech zdvizích se hra obránců přibližuje hře otevřených karet
Stavový strom • Celý stavový strom pro Bridge je moc velký, odhadem 13!13!26! Listů stavového herního stromu • Program se snaží generovat jen situace, jež jsou v suladu s dosavadním průběhem hry, pravidly a licitací.
Teorie her • musíme přijmout některé předpoklady • míchání karet je náhodné • vždy je možné definovat zisk hráče • nepředpokládáme znalosti protihráčů • Bridge je vždy konečná hra pro 4 hráče • obecný problém
zero dummy problém – nikdo nezná jiné karty než své vlastní • single dummy problém – vidíme karty stolu a své vlastní (reálný bridge) • double dummy problém – vidíme karty ještě jednoho z protihráčů • half dummy problém je redukce hry na dva hráče, držící karty v každé ruce, každý hráč zná jen ty své (hra s neúplnou informací)
Zisk jednotlivých hráčů – reálný bridge • Po: Hráč se snaží prioritně maximalizovat počet bodů za zdvihy a prémie • P1: Hráč chce uhrát maximální počet zdvihů: max (Z * P(Z)), ziskem je tedy E(Z) • P2: Hráč se snaží uhrát závazek, nebo aby protihráč závazek neuhrál. Zisk hráče je P(výhry) • P2A: Hráč se snaží uhrát závazek, a pokud má více stejně dobrých možností, snaží se maximalizovat střední hodnotu počtu uhraných zdvihů
Half-dummy jako maticová hra • konečnou hru pro dva hráče můžeme reprezentovat kořenovým stromem • V každém vrcholu rozhoduje buďto hráč A nebo hráč B • Množinu vrcholů hráče X, ve kterých se hráč X rozhoduje a neví, ve kterém se nachází, označíme informační množina hráče X. Definice: čistá strategie hráče. Je to předpis, který danému hráči říká, jak jednat v libovolné jeho informační množině Definice: smíšená strategie hráče. Je to pravděpodobnostní rozdělení na všech čistých strategiích daného hráče
bij = -aij • Pokud si hráč A zvolí čistou strategii i a hráč B strategii j, pak zisk A závisí pouze na rozdání karet a jejich rozložení. • Pravděpodobnosti rozdání a rozložení hsou známy, tj. E(Zisk A) = aij a E(Zisk B) = bij • Celá hra je popsána maticí {aij }ij • Pokud A a B zvolí strategie {xi}i a {yj}j pak
Optimální strategie hráče A vůči strategii {yj}jhráče B je taková libovolná {xi}i , že ∑ij xiaijyj je maximální • Ekvilibriální optimální strategie (Nashovo ekvilibrium) je dvojice smíšených strategií {xi}i a{yj}jtakových, že {xi}i je optimální vůči {yj}ja naopak • platí (von Neumann)
Metoda lineárního programování • U maticových her {aij}ij pak je vždy možné najít ekvilibriální strategii pomocí metod lineárního programování, tj. Řešením tohoto problému jsou všechny ekvilibriální optimální strategie hráče A a hodnota hry. Problém je s dimenzí matice.
Algoritmus konstrukce homogenní optimální protistrategie • Předpokládejme, že soupeř hraje strategii SY • Všechny konfigurace jsou stejně pravděpodobné • Soupeř hraje první kartu, známe P(C,K), tj. pst, že zahraje kartu C pokud má konfiguraci K, tj. analogicky známe P(K,C), tj. pokud zahrál kartu C, pak má s určitou pravděpodobností konfiguraci K • Vždy, když soupeř vynese nějakou kartu, aktualizujee pravděpodobnosti jeho aktuální konfigurace • Ze znalostí konfigurace na začátku jsme schopni si dopočítat aktuální pravděpodobnosti v čase t • Pokud zbývá n tahů do konce, známe strategii maximalizující zisk. Jsme schopni to udělat i pro n+1 tahů do konce. Pokud zbýva n+1 tahů do konce a jsme na tahu, pak dokážeme pro každou kartu, kterou je možno zahrát dopočítat zisk hráče A z indukčního předpokladu. Tj. zvolíme kartu, která nám přinese největší zisk. Hraje-li hráč B, pak pro každou kartu C, kterou by mohl zahrát zvolíme PC, že by ji soupeř mohl zahrát. • Problém je, že nám algortitmus neříká jak hrát v libovolné situaci
Goren In a Box (GIB) • narozdíl od ostatních programů se GIB nesnaží implementovat strategie používané lidmi • brute-force k analýze situace • k vybrání karty použije Monte Carlo metody, na základě analýzy
GIB - Hra • pro případ double dummy problému je herní strom minimax • počet větvění je zhruba 4 • α-β a transpoziční tabulky jej redukují na 1.7 • pokročilejší heuristika redukuje až na 1.3 což reprezentuje přibližně 106 uzlů • Partition search redukuje stavový prostor až na 50 000 uzlů
Monte Carlo • Chceme rozložit zatím neodhalené karty náhodně, beroucí v úvahu rozložení tak, že je v souladu se závazkem a s doposud zahranými kartami • Zkonstruuj množinu rozložení D, konzistentní se závazkem a s doposud zahranými kartami • Pro každý tah a každé rozložení spočítej zisk zahráním tahu m. • Vrať takové m, pro které je největší
Slabiny GIBu • GIB je dobrý v nacházení možností, které vedou k uhrání zdvihu nebo k jeho ztrátě • Ale je špatný v kombinování těchto možností • GIB je na tahu a může si zvolit 1 ze 4 možných větví • první dvě závisí na libovolných (ale rozdílných) rozloženích protihráčů • třetí odsouvá rozhodnutí tím, že udělá něco (cokoliv) náhodného • čtvrtá uspěje nezávisle na rozložení karet u protihráčů • GIB si náhodně vybere mezi 3. a 4. s tím, že pokud to může odsunout rozhodnutí, příště to udělá správně
GIB - Licitace • má dva účely • domluvit se se spoluhráčem • narušit to samé protihráčům • jednoduché systémy (ACOL) jednoduše draží závazek odpovídající právě kartám, které má systém k dispozici • správnějším řešením je zkombinovat průběh licitace (Monte Carlo systém – Borel simulation)
Borel Simulation • Zkonstruuj množinu rozložení D s ohledem na dosavadní průběh licitace • Pro každou hlášku a pro každé rozložení použij databázi Z, ke zjištění jak bude licitace pokračovat, pokud dáme hlášku b. Spočítej zisk eventuálního závazku. 3. Vrať b takové, že je maximální Z = databáze hlášek
Partition search • motivace: počítač stráví při prohledávání stavového prostoru většinu času ve větvích, které by člověk okamžitě vyřadil příklad: šachová pozice, bílý na tahu. Zaútočí na černou královnu, pokud černý neodpoví na útok, pak bílý ztratí svou královnu. • analýza určí kam královna může jít a určí odpovídající odpovědi. • stroj musí projít každý možný tah černého
Hra je čtveřice (G,pI,s, ev), kde G je konečná množina pozic, pI je počáteční pozice. dává následníka pozice. A ev je funkce 1.Neexistuje posloupnost p0,...,pn, kde n > 0, 2.
Partition search – algoritmus [1] • Mějme hru (G,pI,s, ev) a množinu pozic Řekneme, že množina pozic, které můžou dosáhnout pozic S je množina všech p, pro která platí .Tuto množinu budeme značit R0(S) • Množina pozic, které jistě dosáhnou S je množina všech p takových, že a značíme ji C0(S)
Partition search – algoritmus [2] • Partition systém pro hru je trojice (P,R,C) funkcí: • P : G → P(G) • R : G x P(G) → P(G) jako argument má pozici p a množinu S. Pokud a • C : G x P(G) → P(G) jako argument má pozici p a množinu S. Pokud ,pak a
Partition search – algoritmus [3] • efektivita PS závisí na velikosti transpozičních tabulek • velké: hodně pozic je spočteno lookupem • malé: PS je degradován na alfa-betu
Partition search – implementace • pokud máme záznam v transpozičních tabulkách, pak vracíme rovnou výsledek • pokud je výsledkem ev(p) hodnota pak vracíme aktuální hodnotu hry v a fci P takovou, že mapuje pozice do množiny pozic tak, že pro každou pozici p je p v P(p)
ev(p) = max – na tahu je maximalizující hráč • Pro všechny následníky pozice p provedeme alfa-betu • Pokud je spočtená hodnota hry větší než ořezáníy pak přidáme nalezený výsledek do transpoziční tabulky a vracíme výsledek • Pokud je hodnota hry vnew větší než původní hodnota hry vans pak přidáme do množiny S aktuální množinu pozic. • vans = 0 pak maximalizující hráč prohrává a neexistuje žádná pozice, která může prohru odvrátit, jinak upravíme množinu S