Значения, установленные на 0, предполагают, что в шахматной игре достигается какая-то симметрия, смещение или баланс.

Один из подходов к игре в шахматы - это баланс или равновесие инь-янь.

Согласно Википедии инь и янь - это понятие дуализма. Он описывает, как кажущиеся противоположными или противоположные силы на самом деле могут быть взаимодополняющими, взаимосвязанными и взаимозависимыми, и как они могут порождать друг друга, когда они взаимосвязаны.

Однако принцип инь-ян кажется мне не слишком очевидным.

Вы когда-нибудь задумывались, что на самом деле может означать? В моем предыдущем посте Как делать нормализованные эвристические изображения я постарался объяснить идею нормализованной эвристической картины; Теперь позвольте мне сделать еще один шаг, чтобы исследовать шахматный баланс.

Напомним, вот состояние шахматной партии в самом начале, до того, как белые сделают первый ход.

/**
 * @test
 */
public function start_take_get_picture()
{
    $board = new Board();
    $pic = (new HeuristicPicture($board->getMovetext()))
        ->take()
        ->getPicture();
    $expected = [
        Symbol::WHITE => [
            [ 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5 ],
        ],
        Symbol::BLACK => [
            [ 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5 ],
        ],
    ];
    $this->assertEquals($expected, $pic);
}

Значение 0.5 для сил белых и черных означает, что они фактически уравновешены и, следовательно, уравновешены. Вот еще один пример сбалансированной шахматной доски.

/**
 * @test
 */
public function w_e4_b_e5_take_get_picture()
{
    $board = new Board();
    $board->play(Convert::toStdObj(Symbol::WHITE, 'e4'));
    $board->play(Convert::toStdObj(Symbol::BLACK, 'e5'));
    $pic = (new HeuristicPicture($board->getMovetext()))
        ->take()
        ->getPicture();
    $expected = [
        Symbol::WHITE => [
            [ 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5 ],
        ],
        Symbol::BLACK => [
            [ 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5 ],
        ],
    ];
    $this->assertEquals($expected, $pic);
}

Хм, интригующе.

Как вы, возможно, подозреваете, должны существовать миллионы и миллионы различных шахматных позиций, подобных этим двум, в полной гармонии со всем.

Дело в том, что php-chess позволяет вам также делать нормализованные эвристические картинки в виде баланса между белым и черным, как это описано ниже.

/**
 * @test
 */
public function w_e4_b_e5_take_get_balance()
{
    $board = new Board();
    $board->play(Convert::toStdObj(Symbol::WHITE, 'e4'));
    $board->play(Convert::toStdObj(Symbol::BLACK, 'e5'));
    $balance = (new HeuristicPicture($board->getMovetext()))
        ->take()
        ->getBalance();
    $expected = [
        [ 0, 0, 0, 0, 0, 0, 0, 0 ],
    ];
    $this->assertEquals($expected, $balance);
}

Таким образом, все значения, установленные на 0, предполагают, что в шахматной игре достигается какая-то симметрия, смещение, баланс или что-то еще, что вы можете назвать этой конкретной ситуацией.

$balance = (new HeuristicPicture($board->getMovetext()))
    ->take()
    ->getBalance();

В предыдущем посте мы узнали, что закрытый вариант французской защиты Тарраша можно рассматривать как эвристическую картину, которая сделана так, как показано ниже.

/**
 * @test
 */
public function e4_e6_d4_d5_Nd2_Nf6_take_get_picture()
{
    $board = new Board();
    $board->play(Convert::toStdObj(Symbol::WHITE, 'e4'));
    $board->play(Convert::toStdObj(Symbol::BLACK, 'e6'));
    $board->play(Convert::toStdObj(Symbol::WHITE, 'd4'));
    $board->play(Convert::toStdObj(Symbol::BLACK, 'd5'));
    $board->play(Convert::toStdObj(Symbol::WHITE, 'Nd2'));
    $board->play(Convert::toStdObj(Symbol::BLACK, 'Nf6'));
    $pic = (new HeuristicPicture($board->getMovetext()))
        ->take()
        ->getPicture();
    $expected = [
        Symbol::WHITE => [
            [ 0, 0.5, 0.38, 0.17, 0, 0.17, 0, 0 ],
            [ 0, 1, 0, 1, 0.5, 0.17, 0, 0 ],
            [ 1, 1, 0.5, 0.5, 0.5, 0.17, 0, 0 ],
        ],
        Symbol::BLACK => [
            [ 0, 0, 0.63, 0, 0, 0.17, 0, 0 ],
            [ 0, 0, 0.38, 0.17, 0.5, 0.17, 0.5, 0.5 ],
            [ 1, 0, 1, 0.17, 1, 0.17, 1, 1 ],
        ],
    ];
    $this->assertEquals($expected, $pic);
}

Или, если вы предпочитаете сейчас, это можно решить с помощью эвристического изображения, которое сначала делается, а затем сбалансировано, и в этом случае массив $expected дает вам обзор того, что происходит, используя только одно измерение, а не два.

/**
 * @test
 */
public function e4_e6_d4_d5_Nd2_Nf6_take_get_balance()
{
    $board = new Board();
    $board->play(Convert::toStdObj(Symbol::WHITE, 'e4'));
    $board->play(Convert::toStdObj(Symbol::BLACK, 'e6'));
    $board->play(Convert::toStdObj(Symbol::WHITE, 'd4'));
    $board->play(Convert::toStdObj(Symbol::BLACK, 'd5'));
    $board->play(Convert::toStdObj(Symbol::WHITE, 'Nd2'));
    $board->play(Convert::toStdObj(Symbol::BLACK, 'Nf6'));
    $balance = (new HeuristicPicture($board->getMovetext()))
        ->take()
        ->getBalance();
    $expected = [
        [ 0, 0.5, -0.25, 0.17, 0, 0, 0, 0 ],
        [ 0, 1, -0.38, 0.83, 0, 0, -0.5, -0.5 ],
        [ 0, 1, -0.5, 0.33, -0.5, 0, -1, -1 ],
    ];
    $this->assertEquals($expected, $balance);
}

Вспомните, как в Chess\HeuristicPicture организованы различные оценочные функции.

namespace Chess;

use Chess\Player;
use Chess\Evaluation\AttackEvaluation;
use Chess\Evaluation\CenterEvaluation;
use Chess\Evaluation\ConnectivityEvaluation;
use Chess\Evaluation\KingSafetyEvaluation;
use Chess\Evaluation\MaterialEvaluation;
use Chess\Evaluation\PressureEvaluation;
use Chess\Evaluation\SpaceEvaluation;
use Chess\Evaluation\SquareEvaluation;
use Chess\Evaluation\TacticsEvaluation;
use Chess\Evaluation\System;
use Chess\PGN\Convert;
use Chess\PGN\Symbol;

class HeuristicPicture extends Player
{
    protected $dimensions = [
        MaterialEvaluation::class => 20,
        CenterEvaluation::class => 20,
        ConnectivityEvaluation::class => 10,
        SpaceEvaluation::class => 10,
        PressureEvaluation::class => 10,
        KingSafetyEvaluation::class => 10,
        TacticsEvaluation::class => 10,
        AttackEvaluation::class => 10,
    ];

    protected $picture = [];    ...
}

И снова, согласно последнему элементу сбалансированного массива $expected ([ 0, 1, -0.5, 0.33, -0.5, 0, -1, -1 ]), белые и черные имеют равный материал. Контроль белых по центру определенно более выгоден, тогда как фигуры черных лучше связаны. Кроме того, у белых больше места, но на этой стадии дебюта черные давят и атакуют e4.



Вам также может быть интересно: