Risolviamo la Dama Italiana
Un progetto ambizioso per risolvere completamente la Dama Italiana 8×8 e dimostrare matematicamente il suo risultato teorico, come è stato fatto per la Dama Americana nel 2007.
🧠 Arsenale Algoritmico
Un sistema completo già operativo, pronto per essere potenziato
Motore Minimax Alpha-Beta (Rust, regole FID) con 19 tecniche attive: PVS, LMR, Null Move, History, Aspiration Windows, Futility, Razoring, IID, Delta Pruning, Lazy SMP e altro.
Valutazione ricca
Alle foglie e in quiescence: parametri ottimizzati da 1000+ generazioni di self-play (materiale, centro, avanzamento, mobilità, pedine connesse, centralizzazione re).
Quiescence Search
A profondità 0: esplora fino a +20 livelli solo catture e promozioni. Elimina l'effetto orizzonte.
Move ordering
Ordine mosse: catture (più pezzi prima), promozioni, Killer moves (2 per profondità), bonus centro. Più cutoff, ricerca più veloce.
Transposition Table
Zobrist hash: posizioni già valutate in cache. Probe all'ingresso, store in uscita con bound (Exact/Upper/Lower). Zero ricalcoli per trasposizioni.
Profondità effettiva
Profondità selettiva: catture → profondità piena; posizione che peggiora molto → -2; altrimenti -1. Approfondisci le tattiche, pota i rami deboli.
Late move reductions (LMR)
Dalla 5ª mossa (non cattura), depth≥3: prima ricerca a profondità ridotta; se serve, ricerca piena. Meno nodi senza perdere correttezza.
Database Finali Ed Gilbert
15.6 milioni di posizioni con ≤10 pezzi completamente risolte. AI PERFETTA nei finali. Indicizzazione combinatoriale per lookup O(1).
Opening Book
6,521 posizioni di apertura analizzate. Tecnica Dropout Expansion in esecuzione continua su server dedicato per espandere la conoscenza.
Algoritmo Genetico
Self-play optimization: 30 agenti competono tra loro per 1000 generazioni. I parametri euristici evolvono automaticamente verso l'ottimo.
Regole FID Complete
Implementazione certificata delle regole ufficiali della Federazione Italiana Dama: cattura obbligatoria, cattura massima, pedina non cattura dama.
Solver Rust
Calcolo posizioni con Rust: 50x più veloce di Python, parallelizzazione nativa su tutti i core, zero overhead, memory-safe.
Infrastruttura Cloud
Server Hetzner dedicato + Mac locale 64GB RAM per calcoli massivi. API FastAPI. Frontend Vercel global edge.
Null Move Pruning
Quando il giocatore è in vantaggio, prova a "passare il turno": se resta in vantaggio, taglia l'intero sottoalbero. Riduzione adattiva R=2/3. Riduce l'albero del 30-50%.
History Heuristic
Tabella history[from][to] che conta i cutoff di ogni mossa. Bonus depth², decay automatico. Porta alpha-beta da O(b^d) verso O(b^(d/2)).
Aspiration Windows
Finestra stretta [score±50] centrata sul risultato precedente. Re-search su fail-low/fail-high, max 3 tentativi. Ricerca 2-3x più veloce.
Lazy SMP (Multi-Thread)
N thread cercano la stessa posizione con profondità staggered, condividendo TT, Killers e History. Configurabile via SMP_THREADS. +100-200 Elo.
PVS (Principal Variation)
Prima mossa cercata con finestra piena; le successive con zero-window (α, α+1). Se falliscono alto, ri-cerca con finestra piena. Combinato con LMR per massima efficienza.
Futility Pruning
A depth 1-2, salta mosse quiet se eval + margine < alpha. Le mosse tranquille non possono recuperare il gap. Taglia migliaia di nodi inutili alle foglie.
Reverse Futility Pruning
A depth 1-3, se eval - margine ≥ beta, la posizione è così buona che nessuna mossa dell'avversario può peggiorarla abbastanza. Pruna l'intero nodo.
IID (Internal Iterative Deep.)
Se la TT non ha una mossa migliore e depth ≥ 4, fa una mini-ricerca a depth-2 per trovare un buon ordine mosse. Popola la TT per il move ordering. +15-25 Elo.
Razoring
A depth 1-3, se eval è molto sotto alpha, scende direttamente in quiescence. Se neanche le catture salvano la posizione, pruna. Margine adattivo per profondità.
Late Move Pruning
A depth 1-2, le mosse quiet oltre la 5ª-7ª posizione vengono saltate: se il move ordering è buono, le mosse tardive non sono mai la migliore. Soglia adattiva.
Delta Pruning
In quiescence, salta catture il cui guadagno stimato non può alzare alpha. Se eval + valore_cattura + margine < alpha, la cattura è inutile. Velocizza la quiescence search.
Opening Book 2.3M
Libro aperture espanso a 2.312.677 posizioni via Dropout Expansion automatica. Supera Kingsrow (1.7M). In produzione: 5.446; deploy del libro completo imminente.
🎯 La Sfida
Nel 2007, Jonathan Schaeffer e il suo team hanno dimostrato che la Dama Americana (8×8) è una patta con gioco perfetto da entrambe le parti.
La Dama Italiana è ancora IRRISOLTA. Con regole più complesse (pedina non cattura dama, cattura massima obbligatoria), rappresenta una sfida computazionale ancora più grande.
🏆 Chi la risolverà entrerà nella storia della matematica e dell'informatica
🤝 Come Contribuire
Ogni contributo, grande o piccolo, ti garantisce un posto nella storia
Finanzia
Anche €5 aiutano a pagare CPU e storage per i calcoli
- • €5 = 1 ora di calcolo
- • €50 = 1 giorno di calcolo
- • €500 = 1 mese di calcolo
Dona CPU
Hai un server o PC potente? Esegui i nostri calcoli distribuiti
- • Client leggero
- • Calcolo in background
- • Statistiche personali
Testa
Gioca contro l'AI e segnala bug o comportamenti strani
- • Trova bug
- • Segnala mosse sospette
- • Migliora l'euristica
Sviluppa
Sei un programmatore? Il codice è open source
- • Ottimizza algoritmi
- • Migliora l'euristica
- • Parallelizza i calcoli
🏛️ Hall of Fame
Chi contribuisce sarà ricordato per sempre
Fondatori
Contributi > €1000
Sostenitori
Contributi €100-€999
Contributori
Qualsiasi contributo
🙏 Ringraziamenti Speciali
🚀 Fai Parte della Storia
La Dama Italiana aspetta di essere risolta. Sarà merito anche tuo.