E' una sorta di Backtracking (o come diavolo si dice in inglese) ? Ricordo che per risolvere il gioco degli scacchi si prova una mossa e poi si studiano le alternative nel caso la mossa si riveli fallimentare tornando a ritroso ogni volta di uno... ----- Original Message ----- From: "Paolo Ferraris" <pieffe8@xxxxxxxxx> To: <zxspectrum@xxxxxxxxxxxxx> Sent: Sunday, December 09, 2007 10:37 PM Subject: [zxspectrum] Re: [OT] Stable models > Enrico Maria Giordano wrote: > >> Cosa sono gli "stable models"? > > Domanda non facile da rispondere. > > La risposta piu` semplice e`: l'argomento della mia tesi di dottorato. > > > La risposta vera e propria e` molto piu` accademica e complicata. > Non e` neanche fondamentarlo saperlo :-) ma cerco di essere conciso ed > esaustivo allo stesso tempo. Se volete saperne di piu` chiedete pure. > > La "stable model semantics" e` un modo di intendere i programmi logici > tipo Prolog in un modo diverso dal Prolog. > > Tutti sappiamo quando un assegnamento vero/falso delle variabili in una > formula proposizionale rende vera (in logica Booleana) questa formula. > Per esempio la formula a & b e` vera solo quando sia a che b sono veri. > Uno "stable model" praticamente non e` altro che un assegnamento che > rende "vero" --- secondo delle condizioni dettate dalla "stable model > semantics" --- un programma logico. > > L'applicazione primaria degli stable models e` in un linguaggio di > programmazione dichiarativo chiamato Answer Set Programming, che > permette di rappresentare e risolvere problemi combinatoriali anche > molto complicati. > > Un esempio semplice di questi problemi sono i vari puzzle che sono di > moda adesso, come il sudoku. Questo e` un programma che risolve i puzzle > del Sudoku: > > > %% define the domain of variables > coord(0..8). % coordinates are 0--8 > dgt(1..9). % coordinates are 1--9 > sCoord(0..2). % small coordinates (used to denote 3x3 sectors) are 0--2 > > %% one digit per cell > > %% "for each pair of coordinate X,Y, the number of digits D such that > %% c(X,Y,D) holds is no less than 1 and no more than 1" > 1{c(X,Y,D): dgt(D)}1 :- coord(X), coord(Y). > > %% each digit exactly once per row, column, sector > > %% "for each coordinate Y and digit D, the number of X coordinates > %% such that c(X,Y,D) holds is no less than 1 and no more than 1" > 1{c(X,Y,D): coord(X)}1 :- coord(Y), dgt(D). > > %% "for each coordinate X and digit D, the number of Y coordinates > %% such that c(X,Y,D) holds is no less than 1 and no more than 1" > 1{c(X,Y,D): coord(Y)}1 :- coord(X), dgt(D). > > %% "for each sector denoted by small coordinate SX,SY and any digit D, > %% the number of cells in that sector that contain digit D is no more > %% than 1 and no less than 1" > 1{c(X,Y,D): coord(X): coord(Y): X/3==SX: Y/3==SY}1 :- sCoord(SX), > sCoord(SY), dgt(D). > > > Una applicazione reale di questo linguaggio e` nella gestione dei guasti > dello space shuttle, un problema molto piu` complesso del sudoku :-) > > > -p >