Cookies help us deliver our services. By using our services, you agree to our use of cookies.

Predstavitev pozicij: Razlika med redakcijama


 
(14 vmesnih redakcij 2 uporabnikov ni prikazanih)
Vrstica 1: Vrstica 1:
Predstavitev šahovske igre vključuje predstavitev pozicij in potez. Pozicije predstavljajo stanja igre, poteze pa operatorje, ki spreminjajo eno pozicijo v drugo pozicijo. Obe predstavitvi morajo biti sposobne izvajati naslednje operacije:
+
==Bitna predstavitev pozicij==
 
+
Najbolj učinkovito predstavitev pozicij predstavlja '''Bitboard'''. Njena učinkovitost izvira iz učinkovitosti bitnih operacij. Ta predstavitev vsebuje množico 64 bitnih celih števil. Oba igralca imata 6 števil za vsak tip figure. Npr. spodnja pozicija ima naslednjo bitno predstavitev kmetov:
* naredi potezo
 
* vrni potezo
 
* ustvarei seznam vseh možnih potez
 
* ustvari seznam potez jemanja
 
* ovrednoti pozicijo
 
* shrani poteze
 
* primerjava pozivcij
 
* nastavi pozicijo
 
* preverjanje ali se je pozicija ponovila tri krat
 
* preverjanje pravila 50 potez
 
* preverjanje ali je kralj v šahu
 
 
 
Vse naštete operacije morajo biti časovno zelo učinkovite, kajti uporabljamo jih znotraj iskalnega algoritma.
 
Tako se učinkovitost predstavitve šahovske igre prenese tudi na učinkovitost šahovskega programa.
 
 
Najbolj učinkovito predstavitev predstavlja ''''Bitboard'''. Ta predstavitev vsebuje množico 64 bitnih celih števil. Oba igralca imata 6 števil za vsak tip figure. Npr. spodnja pozicija ima naslednjo bitno predstavitev kmetov:
 
  
 
<center>
 
<center>
Vrstica 50: Vrstica 34:
 
</tr></table>
 
</tr></table>
 
</center>
 
</center>
The 64-bit presentation allows the move generator to be made very fast and a fast evaluation function. For example, the expression (WhitePawns << 8) & ~AllSquares is used to represent all possible destination squares of white pawns for one square up. Let us see this expression in grater detail. Firstly, the
+
64-bitna predstavitev omogoča zelo hiter generator potez in ocenitveno funkcijo. Npr. izraz '''(BeliKmeti << 8) & ~VsaFigure''' se uporablja za izračun vseh ciljnih polj belih kmetov, katere lahko premaknemo za eno polje naprej. Poglejmo ta izraz podrobneje. Najprej predstavitev belih kmetov premaknemo za 8 bitov oz. premaknemo kmete za eno polje naprej. Nato z negacijo predstavitve vseh figur dobimo predstavitev praznih polj. Na koncu z bitno operacijo IN med dobljenima predstavitvama dobimo predstavitev polj na katera lahko postavimo bele kmete, če jih premikamo za eno polje naprej. Podobno lahko izračunamo vse možne poteze za kmete, skakače, in kralja. Za drseče figure, pa moramo uporabiti še dodatno tehniko, ki je predstavljena v naslednjem poglavju.
presentation of white pieces was shifted by 8 bits or moved for one square up. Then with negation of presentation of all pieces we get presentation of empty squares. Finally, with bitwise operation AND between both presentations we get
 
presentation of destination squares. This presentation and presentation of white pawns enables generating all possible moves for white pawns for one square up. Similarly, we can calculate all possible moves for pawns, knights, and the king. For generating moves for sliding pieces we use addition information which is
 
described below.
 
  
== Rotated bitboard ==
+
== Rotacija bitne predstavitve ==
The standard bitboard presentation described above is very useful in generating moves for all pieces except sliding ones (bishop, rock, queen). Rotated bitboard provides additional information for certain types of pieces, namely the sliding ones. Bitboard is rotated by 45, 90, and 135 degreees. The 45 and 135 degrees
+
Predstavljena bitna predstavitev je nekoliko počasnejša v primeru drsečih figur (lovec, trdnjava in dama).
rotations are used for calculating diagonal and the 90 degrees for calculating vertical moves. The speedup of rotated bitboard relies on quick discovery of attacks on certain squares without the need to use program loops which is the case for all other representations.
+
Pohitritev bitne predstavitve v primeru drsečih figur, omogoča rotiranj bitne predstavitve. Bitno predstavitev rotiramo za 45, 90 in 135 stopinj. Rotacija za 45 in 135 stopinj se uporablja za izračun diagonalnih potez in rotacija za 90 stopinj za izračun vertikalnih potez. Pohitritev bitne predstavitve glede na druge predstavitve je v ustvarjanju potez in odkrivanju napadenih polj brez uporabe programskih zank.
  
== Links ==
+
== Povezave ==
  
 
* [http://en.wikipedia.org/wiki/Bitboard Wiki:Bitboard]
 
* [http://en.wikipedia.org/wiki/Bitboard Wiki:Bitboard]
Vrstica 68: Vrstica 49:
 
* [http://www.frayn.net/beowulf/theory.html#bitboards Bitboards]
 
* [http://www.frayn.net/beowulf/theory.html#bitboards Bitboards]
  
[[Category:Chess program BBChess]]
 
 
[[Category:Borko Bošković]]
 
[[Category:Borko Bošković]]
[[en:Bitboard]]
+
[[Category:Raziskovalna dejavnost]]
 +
[[Category:Šahovski program BBChess]]
 +
[[Category:Predstavitev šahovske igre]]
 +
 
 +
[[en:Position Representation]]

Trenutna redakcija s časom 11:52, 20. oktober 2006

Bitna predstavitev pozicij

Najbolj učinkovito predstavitev pozicij predstavlja Bitboard. Njena učinkovitost izvira iz učinkovitosti bitnih operacij. Ta predstavitev vsebuje množico 64 bitnih celih števil. Oba igralca imata 6 števil za vsak tip figure. Npr. spodnja pozicija ima naslednjo bitno predstavitev kmetov:

Chess zhor 26.png
Chess zver 26.png
a8 b8 c8 d8 e8 f8 g8 h8
a7 b7 c7 d7 e7 f7 g7 h7
a6 b6 c6 d6 e6 f6 g6 h6
a5 b5 c5 d5 e5 f5 g5 h5
a4 b4 c4 d4 e4 f4 g4 h4
a3 b3 c3 d3 e3 f3 g3 h3
a2 b2 c2 d2 e2 f2 g2 h2
a1 b1 c1 d1 e1 f1 g1 h1
Chess zver 26.png
Chess zhor 26.png

0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0

0 0 0 0 1 0 0 0

0 0 0 0 0 0 1 0

1 1 0 0 0 1 0 1

0 0 0 0 0 0 0 0

64-bitna predstavitev omogoča zelo hiter generator potez in ocenitveno funkcijo. Npr. izraz (BeliKmeti << 8) & ~VsaFigure se uporablja za izračun vseh ciljnih polj belih kmetov, katere lahko premaknemo za eno polje naprej. Poglejmo ta izraz podrobneje. Najprej predstavitev belih kmetov premaknemo za 8 bitov oz. premaknemo kmete za eno polje naprej. Nato z negacijo predstavitve vseh figur dobimo predstavitev praznih polj. Na koncu z bitno operacijo IN med dobljenima predstavitvama dobimo predstavitev polj na katera lahko postavimo bele kmete, če jih premikamo za eno polje naprej. Podobno lahko izračunamo vse možne poteze za kmete, skakače, in kralja. Za drseče figure, pa moramo uporabiti še dodatno tehniko, ki je predstavljena v naslednjem poglavju.

Rotacija bitne predstavitve

Predstavljena bitna predstavitev je nekoliko počasnejša v primeru drsečih figur (lovec, trdnjava in dama). Pohitritev bitne predstavitve v primeru drsečih figur, omogoča rotiranj bitne predstavitve. Bitno predstavitev rotiramo za 45, 90 in 135 stopinj. Rotacija za 45 in 135 stopinj se uporablja za izračun diagonalnih potez in rotacija za 90 stopinj za izračun vertikalnih potez. Pohitritev bitne predstavitve glede na druge predstavitve je v ustvarjanju potez in odkrivanju napadenih polj brez uporabe programskih zank.

Povezave