Pular para o conteúdo principal

Regras Personalizadas e Variantes

Este artigo apresenta os diversos conjuntos de regras de Go suportados pelo KataGo, variantes de tamanho de tabuleiro e como personalizar configuracoes de regras.


Visao Geral dos Conjuntos de Regras

Comparacao das Principais Regras

Conjunto de RegrasMetodo de ContagemKomiSuicidioReversao de Ko
ChineseContagem de area7.5ProibidoProibido
JapaneseContagem de territorio6.5ProibidoProibido
KoreanContagem de territorio6.5ProibidoProibido
AGAMisto7.5ProibidoProibido
New ZealandContagem de area7PermitidoProibido
Tromp-TaylorContagem de area7.5PermitidoProibido

Configuracao do KataGo

# config.cfg
rules = chinese # Conjunto de regras
komi = 7.5 # Komi
boardXSize = 19 # Largura do tabuleiro
boardYSize = 19 # Altura do tabuleiro

Regras Chinesas (Chinese)

Caracteristicas

Metodo de contagem: Contagem de area (pedras + territorio)
Komi: 7.5 pontos
Suicidio: Proibido
Reversao de Ko: Proibido (regras simplificadas)

Explicacao da Contagem de Area

Pontuacao final = Pedras proprias + Pontos vazios proprios

Exemplo:
Preto 120 pedras + 65 pontos de territorio = 185 pontos
Branco 100 pedras + 75 pontos + komi 7.5 = 182.5 pontos
Preto vence por 2.5 pontos

Configuracao do KataGo

rules = chinese
komi = 7.5

Regras Japonesas (Japanese)

Caracteristicas

Metodo de contagem: Contagem de territorio (apenas pontos vazios)
Komi: 6.5 pontos
Suicidio: Proibido
Reversao de Ko: Proibido
Requer marcacao de pedras mortas

Explicacao da Contagem de Territorio

Pontuacao final = Pontos vazios proprios + Pedras capturadas do oponente

Exemplo:
Territorio preto 65 pontos + 10 capturas = 75 pontos
Territorio branco 75 pontos + 5 capturas + komi 6.5 = 86.5 pontos
Branco vence por 11.5 pontos

Determinacao de Pedras Mortas

Regras japonesas requerem acordo de ambos os jogadores sobre quais pedras estao mortas:

def is_dead_by_japanese_rules(group, game_state):
"""Determina pedras mortas sob regras japonesas"""
# Precisa provar que o grupo nao pode fazer dois olhos
# Esta e a complexidade das regras japonesas
pass

Configuracao do KataGo

rules = japanese
komi = 6.5

Regras AGA

Caracteristicas

As regras da American Go Association (AGA) combinam vantagens das regras chinesas e japonesas:

Metodo de contagem: Misto (area ou territorio, resultado igual)
Komi: 7.5 pontos
Suicidio: Proibido
Branco precisa preencher um ponto para passar

Regra de Pass

Preto passa: Nao precisa preencher
Branco passa: Precisa entregar uma pedra ao Preto

Isso faz com que contagem de area e territorio deem o mesmo resultado

Configuracao do KataGo

rules = aga
komi = 7.5

Regras Tromp-Taylor

Caracteristicas

As regras de Go mais concisas, adequadas para implementacao em programas:

Metodo de contagem: Contagem de area
Komi: 7.5 pontos
Suicidio: Permitido
Reversao de Ko: Super Ko (proibe qualquer posicao repetida)
Nao precisa determinar pedras mortas

Super Ko

def is_superko_violation(new_state, history):
"""Verifica se viola Super Ko"""
for past_state in history:
if new_state == past_state:
return True
return False

Determinacao de Fim de Jogo

Nao precisa de acordo sobre pedras mortas
O jogo continua ate:
1. Ambos passarem consecutivamente
2. Depois usa busca ou joga ate o fim para determinar territorio

Configuracao do KataGo

rules = tromp-taylor
komi = 7.5

Variantes de Tamanho de Tabuleiro

Tamanhos Suportados

KataGo suporta varios tamanhos de tabuleiro:

TamanhoCaracteristicasUso Recomendado
9x9~81 pontosIniciantes, partidas rapidas
13x13~169 pontosAprendizado avancado
19x19361 pontosCompeticoes padrao
PersonalizadoQualquerPesquisa, testes

Metodo de Configuracao

# Tabuleiro 9x9
boardXSize = 9
boardYSize = 9
komi = 5.5

# Tabuleiro 13x13
boardXSize = 13
boardYSize = 13
komi = 6.5

# Tabuleiro nao quadrado
boardXSize = 19
boardYSize = 9

Komi Recomendado

TamanhoRegras ChinesasRegras Japonesas
9x95.55.5
13x136.56.5
19x197.56.5

Configuracao de Handicap

Partidas com Handicap

Handicap e uma forma de ajustar a diferenca de forca:

# Handicap de 2 pedras
handicap = 2

# Handicap de 9 pedras
handicap = 9

Posicoes de Handicap

HANDICAP_POSITIONS = {
2: [(3, 15), (15, 3)],
3: [(3, 15), (15, 3), (15, 15)],
4: [(3, 15), (15, 3), (3, 3), (15, 15)],
# 5-9 pedras usam pontos estrela + tengen
}

Komi com Handicap

# Tradicional: Sem komi ou meio ponto com handicap
komi = 0.5

# Moderno: Ajustar conforme numero de pedras
# Cada pedra vale aproximadamente 10-15 pontos

Configuracao de Regras no Modo Analysis

Comandos GTP

# Definir regras
kata-set-rules chinese

# Definir komi
komi 7.5

# Definir tamanho do tabuleiro
boardsize 19

API de Analysis

{
"id": "query1",
"moves": [["B", "Q4"], ["W", "D4"]],
"rules": "chinese",
"komi": 7.5,
"boardXSize": 19,
"boardYSize": 19,
"overrideSettings": {
"maxVisits": 1000
}
}

Opcoes de Regras Avancadas

Configuracao de Suicidio

# Proibir suicidio (padrao)
allowSuicide = false

# Permitir suicidio (estilo Tromp-Taylor)
allowSuicide = true

Regras de Ko

# Simple Ko (proibe apenas reversao imediata)
koRule = SIMPLE

# Positional Super Ko (proibe repeticao de qualquer posicao, independente de quem joga)
koRule = POSITIONAL

# Situational Super Ko (proibe repeticao da posicao jogada pelo mesmo lado)
koRule = SITUATIONAL

Regras de Pontuacao

# Contagem de area (Chinesa, AGA)
scoringRule = AREA

# Contagem de territorio (Japonesa, Coreana)
scoringRule = TERRITORY

Regras de Imposto

Algumas regras tem pontuacao especial para areas de seki:

# Sem imposto
taxRule = NONE

# Seki sem pontos
taxRule = SEKI

# Todos os olhos sem pontos
taxRule = ALL

Treinamento Multi-Regras

Vantagem do KataGo

KataGo usa um unico modelo para suportar multiplas regras:

def encode_rules(rules):
"""Codifica regras como entrada da rede neural"""
features = np.zeros(RULE_FEATURE_SIZE)

# Metodo de pontuacao
features[0] = 1.0 if rules.scoring == 'area' else 0.0

# Suicidio
features[1] = 1.0 if rules.allow_suicide else 0.0

# Regra de Ko
features[2:5] = encode_ko_rule(rules.ko)

# Komi (normalizado)
features[5] = rules.komi / 15.0

return features

Entrada Consciente de Regras

Entrada da rede neural inclui:
- Estado do tabuleiro (19x19xN)
- Vetor de caracteristicas de regras (K dimensoes)

Isso permite que o mesmo modelo entenda diferentes regras

Exemplo de Troca de Regras

Codigo Python

from katago import KataGo

engine = KataGo(model_path="kata.bin.gz")

# Analise com regras chinesas
result_cn = engine.analyze(
moves=[("B", "Q4"), ("W", "D4")],
rules="chinese",
komi=7.5
)

# Analise com regras japonesas (mesma posicao)
result_jp = engine.analyze(
moves=[("B", "Q4"), ("W", "D4")],
rules="japanese",
komi=6.5
)

# Comparar diferencas
print(f"Taxa de vitoria do Preto (regras chinesas): {result_cn['winrate']:.1%}")
print(f"Taxa de vitoria do Preto (regras japonesas): {result_jp['winrate']:.1%}")

Analise de Impacto das Regras

def compare_rules_impact(position, rules_list):
"""Compara impacto de diferentes regras na avaliacao da posicao"""
results = {}

for rules in rules_list:
analysis = engine.analyze(
moves=position,
rules=rules,
komi=get_default_komi(rules)
)
results[rules] = {
'winrate': analysis['winrate'],
'score': analysis['scoreLead'],
'best_move': analysis['moveInfos'][0]['move']
}

return results

Perguntas Frequentes

Diferencas de Regras Causando Resultados Diferentes

O mesmo jogo pode ter resultados diferentes com regras diferentes:
- Diferencas de pontuacao entre contagem de area e territorio
- Tratamento de areas de seki
- Impacto de jogadas virtuais (pass)

Qual Regra Escolher?

CenarioRegra Recomendada
IniciantesChinese (intuitiva, sem controversias)
Competicoes onlinePadrao da plataforma (geralmente Chinese)
Associacao JaponesaJapanese
Implementacao em programasTromp-Taylor (mais concisa)
Competicoes profissionais chinesasChinese

O Modelo Precisa Ser Treinado para Regras Especificas?

O modelo multi-regras do KataGo ja e muito forte. Mas se usar apenas uma regra, pode considerar:

# Treinamento com regra fixa (pode melhorar levemente a forca sob essa regra especifica)
rules = chinese

Leitura Adicional