При розробці комп'ютерних шахових програм, програміст мусить вибрати тип структури даних для представлення шахові позиції. Існує декілька методів для цього, які відомі як представлення шахівниці (англ. board representations). Для ефективності шахові рушії часто використовують більше одного методу представлення шахівниці.
Вимоги
Повний опис шахової позиції, тобто її «стан», повинен містити наступні елементи:
- Розташування кожної фігури на шахівниці
- Чия черга ходити
- Статус 50-ти ходового правила нічиєї. Наприклад, якщо перед цим 40 ходів пройшло без взяття або ходу пішака, це правило почне діяти після інших десяти ходів.
- Чи хтось із гравців зробив рокіровку.
- Чи можливе взяття на проході.
Представлення шахівниці зазвичай не включає статус правила , бо щоб його визначити, потрібна майже повна історія партії.
Типи
Список фігур
Деякі з найраніших шахових програм працювали з такими обмеженими кількостями пам'яті, що не було навіть пам'яті, щоб запам'ятати 64 позиції. Замість цього ці ранні програми підтримували списки 16 чорних та білих фігур. Зараз такий метод усе ще використовується в багатьох сучасних програмах разом з окремою структурою представлення шахівниці, щоб збільшити швидкість доступу до фігур. Замість виконання циклу через усі 64 (або більше) клітинок, щоб знайти всі: фігури, списки фігур дають прямий доступ до них.
Методи, базовані на масиві
Один із найпростіших способів представлення шахівниці — це створити двовимірний масив 8x8 (або, еквівалентно, 64 елементний одномірний масив). Кожен елемент цього масиву показує чи є на ньому фігура або навпаки, якщо квадрат порожній. Загальноприйняте кодування — розглядати 0 як порожнє поле, позитивне число як поле з білою фігурою, а негативне як поле із чорною фігурою. Наприклад, білий пішак +1, чорний пішак −1, білий кінь +2, чорний кінь −2, білий слон +3 і так далі.
Проблема із цим підходом з'являється протягом генерації ходів. Треба перевірити кожен хід, щоб упевнитися, що він на шахівниці. Програма буде робити цикли приблизно 20-30 разів за хід і це значно уповільнює процес.
Одне рішення — використовувати масив 12x12, із зовнішніми краями, заповненими, скажімо, значенням 99. Протягом генерації ходів, операція перевірки фігури на клітинці також укаже чи клітинка на шахівниці або ні.
Кращого використання пам'яті можна досягти з масивом 10x12, який забезпечує ті ж функціональні можливості, що й 12x12. Деякі шахові рушії використовують масиви 16x16, щоб поліпшити швидкість рядового перетворення чисел і дозволяють використовувати деякі спеціальні прийоми для збільшення агресивності програми.
Програмісти машинного коду мають іншу альтернативу. Використовуючи 4 біти на квадрат, повний ряд можна зобразити в 32 байтах, а дошка в 8 регістрах (із додатковою інформацією про позицію).
Метод 0x88
У цьому методі використовується масив розміром 16x8 = 128, пронумерований від 0 до 127. Це по суті дві шахівниці одна поряд з іншою, де справжня шахівниця розташована з лівого боку. Двійкова схема розміщення горизонталі та вертикалі справжньої шахівниці —- [0 r r r 0 f f f]. Генеруючи переміщення на основній дошці можна легко перевірити чи якийсь квадрат розташований на основній дошці просто накладаючи маску на номер клітинки із шістнадцятковим 0x88 (двійкове [1 0 0 0 1 0 0 0]). Ненульовий результат указує, що квадрат поза межами основної дошки. Крім того, різниця між двома координатами квадратів унікально визначає чи розташовані ті два квадрата вздовж тої самої горизонталі, вертикалі або діагоналі.
Бітборди
Ще один популярний спосіб представлення дошки — використання (англ. bitboard). Бітборд —- 64-розрядна послідовність бітів (нулів чи одиниць), яка вказує відсутність або присутність (хибність або істина) деякого стану на кожному місці шахівниці. Позицію на шахівниці потім зображують, використовуючи цикл бітбордів. Наприклад, цикл бітбордів для кожної фігури або пішака.
Перевага цього методу —- здатність використовувати операції на 64-бітних об'єктах замість ітерації, щоб отримувати інформацію про стан шахівниці. Використовуючи цей метод можна досягти значного збільшення швидкості програми, особливо на 64-бітних системах. До недоліків можна віднести відносну складність програмування порівняно з іншими способами.
Примітки
- Роберт Хайатт. Представлення шахівниці шахових програм. Повна стаття [ 10 лютого 2012 у Wayback Machine.] (англ.)
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Pri rozrobci komp yuternih shahovih program programist musit vibrati tip strukturi danih dlya predstavlennya shahovi poziciyi Isnuye dekilka metodiv dlya cogo yaki vidomi yak predstavlennya shahivnici angl board representations Dlya efektivnosti shahovi rushiyi chasto vikoristovuyut bilshe odnogo metodu predstavlennya shahivnici VimogiPovnij opis shahovoyi poziciyi tobto yiyi stan povinen mistiti nastupni elementi Roztashuvannya kozhnoyi figuri na shahivnici Chiya cherga hoditi Status 50 ti hodovogo pravila nichiyeyi Napriklad yaksho pered cim 40 hodiv projshlo bez vzyattya abo hodu pishaka ce pravilo pochne diyati pislya inshih desyati hodiv Chi htos iz gravciv zrobiv rokirovku Chi mozhlive vzyattya na prohodi Predstavlennya shahivnici zazvichaj ne vklyuchaye status pravila bo shob jogo viznachiti potribna majzhe povna istoriya partiyi TipiSpisok figur Deyaki z najranishih shahovih program pracyuvali z takimi obmezhenimi kilkostyami pam yati sho ne bulo navit pam yati shob zapam yatati 64 poziciyi Zamist cogo ci ranni programi pidtrimuvali spiski 16 chornih ta bilih figur Zaraz takij metod use she vikoristovuyetsya v bagatoh suchasnih programah razom z okremoyu strukturoyu predstavlennya shahivnici shob zbilshiti shvidkist dostupu do figur Zamist vikonannya ciklu cherez usi 64 abo bilshe klitinok shob znajti vsi figuri spiski figur dayut pryamij dostup do nih Metodi bazovani na masivi Odin iz najprostishih sposobiv predstavlennya shahivnici ce stvoriti dvovimirnij masiv 8x8 abo ekvivalentno 64 elementnij odnomirnij masiv Kozhen element cogo masivu pokazuye chi ye na nomu figura abo navpaki yaksho kvadrat porozhnij Zagalnoprijnyate koduvannya rozglyadati 0 yak porozhnye pole pozitivne chislo yak pole z biloyu figuroyu a negativne yak pole iz chornoyu figuroyu Napriklad bilij pishak 1 chornij pishak 1 bilij kin 2 chornij kin 2 bilij slon 3 i tak dali Problema iz cim pidhodom z yavlyayetsya protyagom generaciyi hodiv Treba pereviriti kozhen hid shob upevnitisya sho vin na shahivnici Programa bude robiti cikli priblizno 20 30 raziv za hid i ce znachno upovilnyuye proces Odne rishennya vikoristovuvati masiv 12x12 iz zovnishnimi krayami zapovnenimi skazhimo znachennyam 99 Protyagom generaciyi hodiv operaciya perevirki figuri na klitinci takozh ukazhe chi klitinka na shahivnici abo ni Krashogo vikoristannya pam yati mozhna dosyagti z masivom 10x12 yakij zabezpechuye ti zh funkcionalni mozhlivosti sho j 12x12 Deyaki shahovi rushiyi vikoristovuyut masivi 16x16 shob polipshiti shvidkist ryadovogo peretvorennya chisel i dozvolyayut vikoristovuvati deyaki specialni prijomi dlya zbilshennya agresivnosti programi Programisti mashinnogo kodu mayut inshu alternativu Vikoristovuyuchi 4 biti na kvadrat povnij ryad mozhna zobraziti v 32 bajtah a doshka v 8 registrah iz dodatkovoyu informaciyeyu pro poziciyu Metod 0x88 U comu metodi vikoristovuyetsya masiv rozmirom 16x8 128 pronumerovanij vid 0 do 127 Ce po suti dvi shahivnici odna poryad z inshoyu de spravzhnya shahivnicya roztashovana z livogo boku Dvijkova shema rozmishennya gorizontali ta vertikali spravzhnoyi shahivnici 0 r r r 0 f f f Generuyuchi peremishennya na osnovnij doshci mozhna legko pereviriti chi yakijs kvadrat roztashovanij na osnovnij doshci prosto nakladayuchi masku na nomer klitinki iz shistnadcyatkovim 0x88 dvijkove 1 0 0 0 1 0 0 0 Nenulovij rezultat ukazuye sho kvadrat poza mezhami osnovnoyi doshki Krim togo riznicya mizh dvoma koordinatami kvadrativ unikalno viznachaye chi roztashovani ti dva kvadrata vzdovzh toyi samoyi gorizontali vertikali abo diagonali Bitbordi She odin populyarnij sposib predstavlennya doshki vikoristannya angl bitboard Bitbord 64 rozryadna poslidovnist bitiv nuliv chi odinic yaka vkazuye vidsutnist abo prisutnist hibnist abo istina deyakogo stanu na kozhnomu misci shahivnici Poziciyu na shahivnici potim zobrazhuyut vikoristovuyuchi cikl bitbordiv Napriklad cikl bitbordiv dlya kozhnoyi figuri abo pishaka Perevaga cogo metodu zdatnist vikoristovuvati operaciyi na 64 bitnih ob yektah zamist iteraciyi shob otrimuvati informaciyu pro stan shahivnici Vikoristovuyuchi cej metod mozhna dosyagti znachnogo zbilshennya shvidkosti programi osoblivo na 64 bitnih sistemah Do nedolikiv mozhna vidnesti vidnosnu skladnist programuvannya porivnyano z inshimi sposobami PrimitkiRobert Hajatt Predstavlennya shahivnici shahovih program Povna stattya 10 lyutogo 2012 u Wayback Machine angl Cya stattya ye zagotovkoyu Vi mozhete dopomogti proyektu dorobivshi yiyi Ce povidomlennya varto zaminiti tochnishim