Premessa: La sezione Scacchi è
stata completamente riscritta in quanto si è deciso di modificare
la codifica degli archivi dei finali. Inoltre viene gestita la possibilità
che 8 bit non siano sufficienti a
contenere i risultati di alcuni finali a 6 o più pezzi e la
soluzione è stata trovata aggiungendo alla
fine degli archivi interessati un blocco di dati contenenti i riporti.
Il programma gafs gestisce tutte le principali funzioni riguardanti
i finali di scacchi.
Poiché tali funzioni sono numerose e complesse, gafs
impone che nella linea di comando la prima
opzione che segue il nome del file eseguibile determini la tipologia
della funzione richiesta e stabilisca
il significato delle successive opzioni ed il formato degli altri parametri.
Le funzioni svolte dal programma sono le seguenti:
-b - generazione delle tabelle
a 2 bit (*)
-e - esecuzione manuale simulata di un
finale
-g - generazione delle tabelle dei finali
a 8 o piu' bit
-i - informazioni relative ad una data
disposizione dei pezzi
-l - lista delle posizioni di un assegnato
finale selezionate in base al
risultato
-m - valutazione memoria richiesta per
le tabelle dei finali
-t - lista delle posizioni di un assegnato
finale selezionate in base ai
risultati
ottenuti per mossa al Bianco e mossa al Nero
-v - verifica di congruenza delle tabelle
(*) Richiede la precedente generazione delle tabelle ad 8 o più bit.
I dettagli relativi a ciascuna funzione, insieme ad importanti avvertenze
sull'utilizzo del programma, si
trovano nell'archivio ASCII
gafs1.42.ita.
Leggere questo archivio prima di scaricare
ed eseguire il programma.
Il programma è disponibile in due versioni:
gafs1.42_32.tgz -
Vers.1.42 archiviata e compressa per Unix/Linux a 32 bit dell'archivio
eseguibile
gafs
gafs1.42_64.tgz -
Vers.1.42 archiviata e compressa per Unix/Linux a 64 bit dell'archivio
eseguibile
gafs
La versione a 32 bit è stata sviluppata su processore Pentium,
mentre quella a 64 bit su processore
Athlon64. Entrambe le versioni sono state compilate con il comando:
gcc -O3 -fomit-frame-pointer gafs.c -static -o gafs
Si è verificato che la versione a 32 bit può funzionare
anche su processori a 64 bit (ma non viceversa)
con tempi di calcolo tuttavia sensibilmente superiori.
La generazione delle tabelle (comando gafs -g) può avvenire
mediante uno qualsiasi dei tre seguenti
metodi del tutto equivalenti ai fini del risultato finale:
1 - A mossa diretta: metodo molto lento ma con occupazione
di memoria minore e grande affidabilità.
2 - A mossa mista diretta-retrograda: metodo notevolmente
più veloce, con uso maggiore di memoria
e buona affidabilità.
3 - A mossa retrograda: metodo più veloce di tutti,
con uso maggiore di memoria ma con presenza di
criticità nel calcolo di determinati
finali.
La scelta del metodo viene attuata mediante l'opzione -1, -2 o -3 fornita
dall'utente nel comando di gene-
razione. In caso di omissione il programma utilizza il secondo metodo
(opzione -2), che presenta un tem-
po di calcolo non eccessivo unito ad una buona affidabilità.
Tralasciando il primo metodo che risulta nella maggioranza dei casi
eccessivamente lento si suggerisce
di utilizzare:
- Il metodo 3 quando la memoria RAM disponibile è in grado
di contenere tutti gli archivi necessari al
calcolo (per ottenere questa informazione basta
dare il comando: gafs -m -3 <nome finale>).
- Il metodo 2 quando invece la RAM disponibile non è sufficiente
a contenere tutti gli archivi necessari
ed il programma deve ricorrere (automaticamente)
alla suddivisione in blocchi degli archivi.
Infatti in quest'ultimo caso il programma svolge le elaborazioni blocco
per blocco aggiornando gli archivi
direttamente sul disco, ma questo processo risulta molto più
impegnativo dal punto di vista dell' I/O nel
terzo metodo rispetto agli altri metodi, per cui in parecchi finali
il terzo metodo può risultare complessi-
vamente più lento del secondo. Infine in alcuni finali
(pochissimi in realtà) il terzo metodo ha generato
tabelle errate ed è quindi in generale meno affidabile.
La possibilità di utilizzare tre metodi diversi fornisce in
ogni caso un'elevata affidabilità ai risultati ottenuti.
Con il terzo metodo e con RAM sufficiente a contenere tutte le tabelle
necessarie al calcolo i tempi di
generazione sul processore Athlon64 Mod. 3800+ con 2Gb di RAM sono
indicativamente:
- 1 secondo per tutti i finali a 3 pezzi
- 12 minuti per tutti i finali a 4 pezzi
- 2,5 giorni per tutti i finali a 5 pezzi.
La generazione di finali a 6 pezzi è tutt'ora in corso con ottimi
risultati anche se i finali più impegnativi
per occupazione di memoria e tempo di elaborazione non sono ancora
stati affrontati.
IMPORTANTE: E' statisticamente certo che il programma contenga errori
e quindi, fatte salve conse-
guenze più gravi, potrà accadere che la generazione di
determinati finali vada in errore anche dopo gior-
ni, settimane o periodi ancora più lunghi di calcolo con la
conseguenza della perdita di tutto il lavoro
svolto fino a quel momento.
CHI UTILIZZA QUESTO PROGRAMMA, LO FA A PROPRIO RISCHIO E PERICOLO.
Se la generazione di un finale è stata iniziata con un dato metodo,
essa
dovrà essere terminata con lo
stesso metodo e con la stessa versione di programma.
NOTE al 12-12-2006 sugli errori riscontrati in gafs1.42:
1) Il metodo 3 dà errore se utilizzato con una memoria
non sufficiente a contenere in RAM tutti gli ar-
chivi necessari, che quindi necessita della
suddivisione in blocchi degli archivi, ma i finali contenenti
pedoni sembrano essere esenti da questo errore.
Esso si evidenzia solamente durante la fase di ve-
rifica.
2) Potrebbero esservi errori nella generazione di finali in cui
vi siano posizioni che per la vittoria o per
la sconfitta richiedano piu' di 126 mosse.
Questa situazione è stata controllata con esito positivo so-
lo per il finale rpprp, e quindi manca un'esperienza
sufficiente per escludere errori in altri finali con
tale caratteristica. Errori certamente
si manifesteranno in futuro per i finali in cui vi siano posizioni
che per la vittoria o per la sconfitta richiedano
piu' di 252 e 504 mosse.
Per ora non ho alcuna esperienza in proposito.
Non appena pronta intendo mettere a disposizione una nuova versione
di gafs che corregga il primo
punto anche se sembra di non facile soluzione.
Per utilizzare le tabelle generate da gafs è disponibile la libreria gafslib in formato oggetto:
gafslib1.11_32.tgz
- Archivio compresso contenente la libreria gafslib.o ottenuta
mediante il compi-
latore gcc sotto Unix/Linux a 32 bit.
gafslib1.11_64.tgz
- Archivio compresso contenente la libreria gafslib.o ottenuta
mediante il compi-
latore gcc sotto Unix/Linux a 64 bit.
gafslib1.11.zip
- Archivio compresso contenente la libreria gafslib.obj per
sistema operativo
Windows NT e successivi.
gafslib1.11.ita
- Archivio ASCII contenente le istruzioni di uso di gafslib.
Il programma testlib.c mostra un semplicissimo
esempio in linguaggio C di utilizzo della libreria gafslib.
A questo scopo basta compilare testlib.c e creare l'eseguibile
testlib,
collegando ad esso gafslib.o
oppure gafslib.obj sotto Windows.
L'archivio ASCII prova.dat
contiene alcuni semplici casi di prova e può essere usato come ingresso
dati sulla linea di comando (battere: testlib < prova.dat),
anche se la stampa di uscita risulterà in
questo modo alquanto confusa (archivio result.dat).
L'esempio mostra la possibilità della libreria gafslib
di
utilizzare in una stessa esecuzione sia le tabelle
ad 8 o più bit per posizione che quelle a 2 bit, semplicemente
ripetendo la chiamata della funzione di
inizializzazione.
Prima di eseguire la prova sostituire le righe di prova.dat
che contengono i percorsi+direttori in cui si
trovano le tabelle in base alle regole del sistema operativo usato.
I successivi programmi per motivi di maggiore compatibilità sono
stati generati solo su Pentium a 32
bit, non essendo particolarmente critici per tempo di calcolo richiesto.
Per ottenere informazioni sull'occupazione singola e complessiva delle
tabelle dei finali generabili dal
programma gafs è disponibile il seguente programma:
gafsoc1.1_32.tgz -
Versione 1.1 archiviata e compressa per Unix/Linux a 32 bit dell'archivio
ese-
guibile gafsoc.
Battendo semplicemente gafsoc seguito da <invio> si ottengono le istruzioni d'uso.
NOTA: il programma gafsoc ha un'occupazione di alcuni
Mb in quanto contiene un lungo vettore di
strutture in cui sono descritte tutte le tabelle dei finali fino a un massimo
di 9 pezzi.
E' stato sviluppato un secondo programma di nome gafsdim che
svolge un calcolo analogo a quello
eseguito da gafsoc, e permette di calcolare il numero delle
differenti disposizioni di tutti i finali che
possiedono un numero di pezzi <= N, dove N è assegnato dall'utente
ed è compreso tra 2 e 32.
In questo modo è possibile calcolare anche il numero delle disposizioni
totali nel gioco degli scacchi.
gafsdim.c
- Versione 1.0 compressa del programma sorgente gafsdim.c
(è richiesta la
libreria gmp per creare l'eseguibile).
gafsdim1.0_32.tgz
- Versione 1.0 archiviata e compressa per Unix/Linux a 32 bit dell'archivio
ese-
guibile gafsdim.
Battendo semplicemente gafsdim seguito da <invio> si
ottengono le istruzioni d'uso.
LIMITAZIONI DI RESPONSABILITA'
In nessun caso e per nessun motivo
Guido Antonelli potrà essere ritenuto responsabile
per qualsivoglia danno, diretto,
indiretto, particolare, accidentale o conseguenziale
derivante dall'utilizzo del software
in oggetto indipendentemente da ogni informazione
di cui Guido Antonelli sia venuto
in seguito a conoscenza concernente le conseguenze
del medesimo utilizzo.
L'impiego di questo software è
quindi a totale rischio e pericolo dell'utente e pertanto
ogni decisione in merito è
presa in piena autonomia da parte dell'utente con espresso
esonero di Guido Antonelli da qualsiasi
tipo di responsabilità.
COPYRIGHT
I programmi gafs, gafsoc
e gafsdim e la libreria
gafslib sono protetti dalle leggi
riguar-
danti il copyright.
I programmi e la libreria possono
essere liberamente usati solamente a scopo privato
con esclusione di qualsiasi finalità
di lucro o commerciale in genere.
Analogamente è vietata la
distribuzione delle tabelle dei finali di scacchi generate dal
programma gafs, indipendentemente
dal fatto che ciò avvenga gratuitamente od a pa-
gamento, senza il permesso scritto
dell'autore.
Program gafs (Guido Antonelli Finali di Scacchi)
Preliminary remarks: The chess section
has been completely rewritten because the coding of the ta-
blebases has been modified. Moreover in order to keep into account
the possibility that 8 bits per
position are no more sufficient to represent all the results for 6
or more men tablebases, the new
version solves the problem introducing a block of bits at the end of
each file to contain the carries.
The program gafs (Guido Antonelli Finali di Scacchi) runs all
the main functions concerning chess end-
ings. As these functions are numerous and complex, gafs requires
that the first option in the command
line, that follows the name of the program, determines the type of
the requested function, the meaning
of the subsequent options and the format of the other parameters.
The options following the first can be put in any order.
NOTE: Inside the program all information are available in English if
the user types -l en on the com-
mand line.
The functions performed by the program are:
-b - chess endings bitbases generation
(*)
-e - chess ending manual execution
-g - chess endings tablebases generation
-i - single position analysis
-l - listing of positions by single result
(white or black moves)
-m - memory needs evaluation for tablebases
generation
-t - listing of positions by combined
results (white and black moves)
-v - tablebases verifying
(*) Requests the preceding generation of the tablebases
Details of each option are obtained typing gafs followed
by the option itself.
Important remarks for utilizing the program are contained in the ASCII
files gafs1.42.eng.
Read this file before downloading and running
the program.
Two versions of the program are available:
gafs1.42_32.tgz -
Compressed executable binary file gafs Vers. 1.42 for 32 bits Unix/Linux
gafs1.42_64.tgz -
Compressed executable binary file gafs Vers. 1.42 for 64 bits Unix/Linux
The 32 bits version has been developed on a Pentium processor, while
the 64 bits version on a
Athlon64 processor. Both the versions have been compiled with the command:
gcc -O3 -fomit-frame-pointer gafs.c -static -o gafs
The 32 bits version should operate correctly also on 64 bits processor
(but not vice versa), even
if with but with notably longer CPU times
The tablebase generation (command: gafs -g) can be done
using one among the three following
methods or algorithms, without changements in the final result:
1 - Direct move: very slow method, but with less utilization
of memory and great reliability.
2 - Mixed (direct-retrograde) move: faster method, with
more memory and less reliability.
3 - Retrograde move: the fastest method, with very much
memory and some critical situations
in specific endings.
The method is chosen adding one of these options -1, -2 or -3 in the
generation command line.
The second method (option -2) is chosen as default, because it is a
good compromise between
speed and reliability.
Leaving out the first method, which is almost always exceedingly slow,
I suggest to use:
- The method 3 when the available RAM can store all the files
necessary to the computation
(type the command: gafs -m
-3 <endgame name> for this information).
- The method 2 when the available RAM is not sufficient to store all
the necessary files and the
program must resort (this is done automatically) to a
subdivision in blocks of the files.
In fact in this last case, the program does the computations block by
block, then updating the files
directly onto the disk, but this process is much more time consuming
in terms of I/O in the third
method in respect to the other two methods; for this reason in many
endgames the third method
can result on the whole slower than the second one. Finally in some
endgames (very few in reality)
the third method generated wrong tablebases and therefore it is in
general less reliable.
The possibility of using three different methods gives the results
a high level of reliability.
With the third method and sufficient RAM to load all the necessary
tablebases the generation times
on the Athlon 3800+ processor with 2Gb di RAM are indicatively:
- 1 second for all 3-men endings
- 12 minutes for all 4-men endings
- 2,5 days for all 5-men endings
The generation of 6-men tablebases is at the moment in course of realization
with very good results
even if the most complex endgames for dimensions and computing time
are not yet generated.
IMPORTANT NOTE: It is statistically certain that the program contains
errors and therefore, a part from
worse consequences, it can happen that the generation of particular
endings will be unseccessful also after
days, weeks or longer periods of computation time with the consequences
of the loss of all the work done
until that moment.
WHO USES THIS PROGRAM, DOES IT AT HIS SOLE RISK AND DANGER.
If a tablebase has been begun using a given method,
it must be terminated
with the same method and with
the same version of the program.
NOTES on December, 12nd 2006 about errors found in gafs1_42 :
1) The method 3 is broken if used with memory insufficient to
load in RAM all the necessary tablebases,
which therefore requests the division in blocks,
but endings containing pawns are exempt from this er-
ror. It appears only during the verification
phase.
2) It is probable that errors exist in the generation of tablebases
where there are positions with win or
loss in more than 126 moves. This situation
has been tested with success only for rpprp (kppkp) end-
ing, and therefore there is no sufficient
experience to exclude errors in other similar endings. There
will be surely errors for the endings where
there are positions with win or loss in more than 252 and
504 moves. At present I have no experience
on this.
A new version of gafs will be available in future
in order to correct point 1, even if seems of not easy
solution.
In order to use the tablebases generated by gafs the library gafslib is available in object code:
gafslib1.11_32.tgz
- Compressed library file gafslib.o Vers. 1.1 obtained by
the gcc compiler for 32
bits Unix/Linux.
gafslib1.11_64.tgz
- Compressed library file gafslib.o Vers. 1.1 obtained by
the gcc compiler for 64
bits Unix/Linux.
gafslib1.11.zip
- Compressed library file gafslib.obj for Windows NT and other
versions.
gafslib1.11.eng
- ASCII file with directions to use gafslib.
The program testlib.c shows an example
in C language of utilization of the library gafslib.
To this purpose it is sufficient to compile testlib.c and generate
the executable file testlib linking the
file gafslib.o or gafslib.obj under Windows.
The ASCII file prova.dat contains some
simple tests and can be used as input in the line command
(type: testlib < prova.dat), though the output is in
this way slightly confused (file result.dat).
The tests show also the possibility of the library gafslib
of using tablebases and bitbases in the same
run, simply repeating the call to the inizializing function.
Before running the test change the two lines of prova.dat with
the path+directory of the tablebases,
following the rules of the operating system.
For a better compatibility the next programs have been generated only
for 32 bits processors, as the-
se programs are not critical for CPU time consuming.
In order to obtain information about the single and total occupation
of tablebases generated by gafs,
the following program is available:
gafsoc1.1_32.tgz - Compressed executable binary file gafsoc Version 1.1 for 32 bits Unix/Linux.
Explanations in English are obtained by typing gafsoc -l en followed by <Enter>.
NOTE: the program gafsoc occupies some Mb for the
presence of a long vector of structures
containing information of all EGTBs for a maximum of 9 men.
A second program whose name is gafsdim has been developed
and makes a computation similar
to gafsoc because it evaluates the number of different dispositions
of all chess endings having an
assigned number of men <= N, where N is typed by the user and assumes
values between 2 and 32.
This program can therefore find the total number of chess dispositions.
gafsdim.c
- Compressed source file gafsdim.c Vers. 1.0 (library gmp
is requested to
create the executable).
gafsdim1.0_32.tgz
- Compressed executable binary file gafsdim Vers. 1.0 for
32 bits Unix/Linux.
Explanations (only in italian) are obtained by typing gafsdim
followed by <Enter>.
For astronomy amateurs
Read my paper marea-E.pdf
regarding "A Simplified Mathematical Model of Tidal
Effects in a Two-Body
System". Any comment will be appreciated.
LIABILITY
In any case and for any reason Guido
Antonelli shall not be liable for any damage,
direct, indirect, particular, accidental
or consequent, arising from the use of the
above mentioned software, independently
from any information that may become
in possession of Guido Antonelli
concerning the consequences of the use of the
aforesaid software.
Therefore the use of this software
is at the sole risk of the user, who, running the
programs, accepts inconditionately
these conditions and exempts expressly
Guido Antonelli from any responsibility.
COPYRIGHT
Gafs, gafsoc, gafsdim
and gafslib are protected by copyright laws.
The programs and the library can
be free used but only for private use.
Tablebases generated by gafs
cannot be distributed, gratis or on payment, without
the written authorization of the
author.
Il programma numeri è un solutore del gioco comunemente
chiamato sudoku.
Esso è in grado di trovare la soluzione di qualsiasi schema
proposto o di segnalarne l'eventuale insolubilità.
Possiede inoltre opzioni che permettono di calcolare il numero delle
possibili soluzioni ed eventualmente di
stamparle su file o presentarle su schermo.
Il programma è disponibile in due versioni:
numeriw.zip - Versione
compressa per Windows (finestra DOS) dell'archivio eseguibile
numeri.exe
numerix.zip - Versione
compressa per Unix/Linux a 32 bit dell'archivio eseguibile
numeri
La dimensione particolarmente elevata del programma sotto Unix/Linux
è dovuta all'uso dell'opzione -static
nel processo di generazione dell'eseguibile che ha lo scopo di evitare
problemi di incompatibilità causati dal-
la presenza di versioni differenti delle librerie dinamiche.
Per ottenere le informazioni utili ad eseguire il programma, è
sufficiente eseguirlo senza fornire parametri al-
la linea di comando.
Un esempio interessante di archivio di ingresso è contenuto in
celle18.zip.
Partendo da solo 18 numeri noti,
il programma è in grado di determinare tutti i rimanenti 63
numeri con un algoritmo puramente matematico,
senza cioè ricorrere al successivo processo iterativo con cui
vengono risolti i diagrammi nella maggioranza
dei casi..
L'articolo riporta una mia personale ricerca sull'Ultimo Teorema di
Fermat (UTF), che sperò possa tornare
utile a tutte quelle persone che si avvicinano o sono comunque interessate
a tale problema.
A differenza di tutti coloro che annunciano di aver risolto l'UTF,
nell'articolo non vi è alcuna soluzione a tale
problema, ma un insieme di risultati da me ottenuti seguendo il mio
personale ragionamento ed ispirazione.
Per la sua comprensione non sono richieste particolari conoscenze di
matematica, ma semplicemente una
mente logica e qualche base di teoria dei numeri.
fermat.pdf- Archivio in formato pdf.
Sono gradite osservazioni e segnalazioni di errori.
L'articolo riporta una mia personale rivisitazione del problema del
moto di due corpi celesti legati
da forza gravitazionale ed è indirizzato a tutti gli appassionati
di matematica, fisica ed astronomia.
In esso ho cercato di spiegare in modo semplice ma matematicamente rigoroso
tutti i diversi passaggi
che portano alla soluzione analitica del problema ed alla dimostrazione
delle leggi di Keplero.
Oltre alla determinazione delle traiettorie possibili, ho poi sviluppato
lo studio nel tempo del fenomeno,
arrestandomi al punto in cui, almeno per i limiti della mia preparazione,
sarebbe stato necessario ricorrere
all'analisi numerica.
Per la sua comprensione è richiesta una conoscenza di base della
meccanica classica e del calcolo
integro-differenziale.
duecorpi.pdf-
Archivio in formato pdf.
2. Considerazioni sul Big Bang
L'articolo riporta una mia rielaborazione del modello elementare dell'espansione
cosmica basato sulla
conservazione dell'energia totale (cinetica + gravitazionale), utilizzando
l'espressione relativistica
dell'energia cinetica.
L'equazione differenziale che ne deriva è particolarmente semplice
e risolubile in forma analitica, e mette
in evidenza l'esistenza di una lunghezza caratteristica dell'universo,
dipendente unicamente dalla sua massa
totale e da costanti universali della fisica.
Per la sua comprensione è richiesta una conoscenza di base di fisica e del calcolo integro-differenziale.
bigbang.pdf-
Archivio in formato pdf.
2. Effetto di Marea su un Sistema a Due Corpi
L'articolo riporta un modello semplificato dell'evoluzione di un sistema
formato da due corpi che
ruotano l'uno intorno all'altro sotto l'azione delle forze gravitazionali,
tenendo inoltre conto delle
azioni mareali reciproche che tendono a sincronizzare il moto di rivoluzione
dei due corpi con i moti
di rotazione propria di ciascun corpo intorno ad un asse polare.
La spinta a realizzare questo modello è stata la mia curiosità
di spiegare il sincronismo spin-orbita della
Luna e di prevedere l'evoluzione futura del sistema Terra-Luna.
Sotto un certo numero di ipotesi semplificative, il modello perviene
ad una semplicissima equazione
differenziale a variabili separabili che permette di concludere, come
peraltro si legge in svariati testi
di astronomia, che il sistema Terra_Luna tende ad una condizione stabile
di perfetto sincronismo a
causa del quale esso fra una diecina di miliardi di anni ruoterà
come un sistema rigido annullando così
qualsiasi ulteriore perdita di energia per effetto mareale.
La versione attuale contiene ancora imprecisioni ed errori, che penso
di correggere in un prossimo
futuro, integrando l'articolo con nuove aggiunte.
Per la sua comprensione è richiesta una conoscenza di base di fisica e del calcolo integro-differenziale.
marea-I.pdf
- Archivio in formato PDF (Versione italiana).
COPYRIGHT e RESPONSABILITA'
La proprietà intellettuale
degli articoli appartiene a Guido Antonelli.
E' permessa la riproduzione parziale
o totale del contenuto degli articoli a condizione
che non abbia scopo di lucro, che
non venga apportata alcuna modifica alle parti estratte
e che sia fatto riferimento all'articolo
ed al suo autore.
Guido Antonelli non assume alcuna
responsabilità per la correttezza del contenuto
degli articoli, né per qualsiasi
danno diretto, indiretto, materiale, immateriale e di
qualsivoglia natura che derivasse
dall'uso dei medesimi.
marea-E.pdf
- PDF format file (English version)
COPYRIGHT and LIABILITY
The intellectual property of the
papers belongs to Guido Antonelli.
It is permitted the partial or
total reproduction of the papers on condition that it is not
for the sake of gain, that no modification
is done to the quotation, and that the paper
and its author are indicated.
Guido Antonelli shall not be liable
for the correctness of the papers nor for any dam-
age, direct, indirect, particular,
accidental or consequent, arising from the use of the
content of these papers.
Ultimo aggiornamento:
18 aprile 2012
E-mail: rigel_g@alice.it