Indietro

Home

Avanti


8      Satz

Discussione sull’euristica UP

Miglioramenti resovent-driven del Satz

Risultati comparativi sperimentali sui problemi 3­SAT difficili

Risultati comparativi sperimentali dei problemi SAT strutturati

Look-ahead contro look-back

Euristica contro backjumping

SAT random a confronto con SAT strutturato

 

Chu Min Li ed Anbulagan propongono una procedura DPL molto semplice chiamata Satz che assume solamente alcune tecniche look-ahead: un’euristica con ordinamento di variabili, un controllo di consistenza in avanti FCC (Unit propagation) e una risoluzione limitata prima della ricerca, dove l'euristica è se stessa basata su unit propagation. Satz è comparata sui problemi 3­SAT random con tre procedure di DPL fra le migliori nella letteratura per questi tipi di problemi. Inoltre, su un grande numero di problemi in 4 ben conosciuti benchmark SAT, Satz raggiunge o addirittura supera le performance delle altre tre procedure DPL per i problemi SAT strutturati. I risultati comparativi suggeriscono che un utilizzo appropriato della tecnica look-ahead può permettere di fare a meno nella procedura DPL delle sofisticate tecniche look-back.

Consideriamo un set di variabili booleane {x1,x2,…,xn}. Per le definizioni del letterale, clausole, formule proposizionali e soddisfacibilità vedi [1.5.1], [1.5.2], [1.5.3].

Distinguiamo due tipi di problemi SAT:

·      problemi che hanno strutture come regolarità, simmetrie;

·      problemi random senza alcuna struttura.

Mentre i problemi del mondo reale sono spesso strutturati, i problemi random rappresentano il core del SAT e sono indipendenti da qualsiasi dominio particolare.

I più efficaci algoritmi sistematici sono basati sulla procedura ben conosciuta di Davis-Putnam nella forma di Loveland - procedura DPL [19]. Procedure DPL come C­SAT [22], Tableau [16], e POSIT [26] di solito utilizzano un’euristica con ordinamento di variabili, e un FCC noto come tecnica look-ahead in termini di CSP. Questi algoritmi attualmente hanno in parte difficoltà nel risolvere problemi SAT strutturati. Recentemente molti autori hanno proposto di includere (e enfatizzare) tecnica look-back come backjumping (noto anche come backtracking intelligente o backtracking non cronologico) e apprendimento (noto anche come nogood) in una procedura DPL per affrontare i problemi SAT strutturati. GRASP [117] e relsat(4) [6] sono tali procedure DPL che utilizzano le tecniche look-ahead e look-back, che sono efficaci per i problemi SAT strutturati ma non sono efficaci per i problemi SAT random.

Chu Min Li and Anbulagan hanno proposto una procedura DPL molto semplice chiamata Satz che utilizza solamente la tecnica look-ahead e un semplice pre-processing della formula CNF per aggiungere delle soluzioni di lunghezza £ 3 nel database delle clausole. I risultati comparativi sperimentali di Satz con vari procedure DPL (C­SAT, Tableau, POSIT, GRASP, relsat(4)) suggeriscono che l'utilizzo appropriato dell’unit propagation e il pre-processing  possono essere efficaci sia per i problemi SAT random che per quelli molto strutturati.

Tutti gli esperimenti sono stati fatti su una workstation SUN Sparc-20 a 125 MHz.

8.1     Satz

La procedura DPL è schematizzata nella Figura 8.1.

Essenzialmente, la procedura DPL costruisce un albero di ricerca binaria attraverso lo spazio degli assegnamenti di verità possibile fin quando si trova un assegnamento di verità soddisfacente, oppure conclude che non esiste alcun assegnamento di questo tipo, ogni chiamata ricorsiva costituendo un nodo dell'albero.

Figura 8.1 : La procedura DPL

Attualmente, la più popolare euristica SAT è l’euristica di Mom che riguarda la ramificazione dopo la variabile avendo le massime occorrenze nelle clausole di dimensione minima [16], [22], [26], [65], [68], [98]. Intuitivamente, queste variabili permettono di utilizzare bene la potenza dell’unit propagation ed aumentare l'opportunità di raggiungere una clausola vuota.

Comunque l’euristica di Mom può anche non massimizzare l'efficacia dell’unit propagation, in quanto prende in considerazione solamente clausole di dimensione minima per pesare una variabile, anche se alcune estensioni provano a prendere in considerazione anche clausole più lunghe con pesi esponenzialmente piccoli (per esempio, cinque clausole ternarie sono contate come una clausola binaria).

Recentemente un’altra euristica basata sull’unit propagation (euristica UP), ha dimostrato utilità e permette di utilizzare ancora di più la potenza dell’unit propagation [16], [26], [87], [88].

Data un variabile x, l’euristica UP esamina x aggiungendo rispettivamente le clausole unità x e Øx a F, ed indipendentemente fa due unit propagation. L’euristica UP permette poi di prendere tutte le clausole che contengono una variabile, e le loro relazioni in accordo in un modo molto efficace per pesare la variabile. Come un effetto secondario, permette di scoprire i così chiamati failed literals in F, che quando soddisfatti rendono falso F in una singola unit propagation. Comunque, siccome l’esaminazione di una variabile da parte di due unit propagation rappresenta consumo di tempo, è naturale provare a limitare le variabili da esaminare.

Il successo dell’euristica di Mom suggerisce che più è grande il numero delle occorrenze binarie di una variabile, maggiore è la sua probabilità di essere una buona variabile di ramificazione, implicando che si dovrebbe limitare l'euristica UP a quelle variabili che hanno un numero sufficiente di occorrenze binarie.

In [88], Chu Min Li e Anbulagan hanno studiato i comportamenti di diverse restrizioni dell’euristica UP sui problemi 3SAT random difficili. Loro hanno trovato che l’euristica UP è sostanzialmente migliore di quella di Mom persino nella sua forma pura, dove tutte le variabili libere sono esaminate in tutti i nodi. Inoltre, più variabili sono esaminate, l'albero di ricerca è più piccolo, confermando i vantaggi dell’euristica UP, ma troppe unit propagation rallentano l'esecuzione.

Basandosi su valutazioni sperimentali di vari alternative, Chu Min Li e Anbulagan hanno avanzato una restrizione dinamica dell’euristica UP, assicurando che almeno T variabili selezionate dall’euristica di Mom sono esaminate dalle unit propagation. L’euristica UP risultante è realizzata dal predicato unario PROPz.

Definizione

Sia PROP un predicato binario tale che PROP(x,i) è True se x si presenta sia positivo che negativo nelle clausole binarie e avendo almeno i occorrenze binarie in F, T è un numero intero, allora PROPz(x) è definito ad essere il primo dei tre predicati PROP(x,4), PROP(x,3), True di cui la semantica denotazionale contiene più di T variabili.

PROPz è ottimale per i problemi 3­SAT random difficili. Come vedremo, è anche molto potente per quelli strutturati.

Satz è una procedura DPL con l’euristica UP PROPz con T che è empiricamente fissato a 10. Sia diff(F1,F2) una funzione che da il numero di clausole di dimensione minima in F1  ma non in F2, la regola di ramificazione di Satz è mostrata nella Figura 8.2, dove l'equazione H(x) è suggerita da Freeman [26 ] in POSIT.

 

Figura 8.2 : La regola di ramificazione di Satz

Satz permette una realizzazione molto semplice e naturale, che corrisponde esattamente alla descrizione di sopra dell’algoritmo, eccetto il fatto che il backtracking non è ricorsivo e la sua implementazione iterativa è inspirata originalmente all’U­Log [49 ], un interprete del linguaggio Prolog. Non c'è nessun'altra tecnica in Satz diversa dei due miglioramenti descritti nella sezione [8.3]. Per riprodurre le performance di Satz, nel programma si utilizzano solamente degli arrays invece di strutture complesse di dati. Satz utilizza liste collegate per alimentare le clausole, poi, prima della ricerca copia tutti i dati negli arrays.

8.2     Discussione sull’euristica UP

Hooker e Vinay [65 ] hanno studiato le ipotesi di soddisfazione e di semplificazione, che sono spesso utilizzate per motivare o spiegare la regola di ramificazione di una procedura DPL. A parità di condizioni, l’ipotesi di soddisfazione parte dal presupposto che una regola di ramificazione funziona meglio quando crea sottoproblemi che sono più probabili ad essere soddisfacibili, mentre l’ipotesi di semplificazione parte dal presupposto che una regola di ramificazione funziona meglio quando crea sottoproblemi con meno clausole e che sono più corte. Una delle loro conclusioni è che l'ipotesi di semplificazione è migliore dell’ipotesi di soddisfazione.

Satz utilizza un'altra ipotesi chiamata ipotesi dei vincoli constraint hypothesis che parte dal presupposto che una regola di ramificazione funziona meglio quando crea sottoproblemi con più vincoli e più forti, così una contraddizione può essere trovata prima. Da quando le clausole di dimensione minima sono i vincoli più forti in una formula di CNF, w(x) e w(Øx) nella Figura 8.2 rappresentano rispettivamente i nuovi vincoli dei due sottoproblemi generati se x è selezionato come la prossima variabile di ramificazione. Secondo constraint hypothesis, la procedura DPL dovrebbe ramificare dopo x tale che w(x) e w(Øx) sono i maggiori. L'equazione di definizione di H(x) e di collegamento w(x) e w(Øx) in Figura 8.2 per favorire x tale che w(x) e w(Øx) solo a grosso modo uguali e bilanciare i due sottoalberi è sperimentalmente meglio del seguente:

      w(x) + w(Øx)+ a*min(w(x), w(Øx))                     (*)

dove a è una costante.

Sembra che il C­SAT utilizzi l’ipotesi di semplificazione e l'equazione (*) per definire H(x), mentre POSIT prova combinare le ipotesi di semplificazione e dei vincoli, e Tableau utilizza le ipotesi dei vincoli e la stessa equazione come POSIT per definire H(x).

C­SAT [22 ] esamina una variabile vicina alle foglie di un albero di ricerca da due unit propagation (chiamato processing locale) per scoprire rapidamente letterali errati. Anche Pretolani ha utilizzato un approccio simile (chiamato metodo di potatura) basato su hypergraphs in H2R [105]. Ma il processing locale ed il metodo di potatura come sono presentati rispettivamente in [22] e [105] non contribuiscono all’euristica di ramificazione.

Troviamo il primo utilizzo valido dell’euristica UP in POSIT [26] e Tableau [16]. POSIT e Tableau hanno un’idea simile al C­SAT, per determinare le variabili da esaminare dall’unit propagation nei nodi dell’albero di ricerca: x sarà esaminato dall’unit propagation se x è fra le più pesanti k variabili.

La differenza principale tra Satz confrontato con Tableau e POSIT, è che Satz non specifica un limite superiore k del numero di variabili che saranno esaminate dall’unit propagation in un nodo. Invece, Satz specifica un confine più basso T. Infatti, Satz esamina molte più variabili in un nodo.

Data la profondità di un nodo, Tabella 8.1 illustra il numero medio delle variabili libere (#free_vars) ed il numero medio delle variabili esaminate dal Satz nel nodo (#examined_vars), con la profondità della radice che è 0. Per una comparazione con C­SAT, Tableau e POSIT sono dati anche i valori teoretici nel nodo di kC (per CSAT), kT (per Tableau) e kP (per POSIT), rispettivamente secondo le definizioni di k in [22], [16], [26].

Dalla Tabella 8.1, è chiaro che Satz esamina in ogni nodo molte più variabili del C­SAT, Tableau o POSIT. Vicino alla radice, Satz esamina tutte le variabili libere. Altrove Satz esamina un numero sufficiente di variabili.

8.3     Miglioramenti resovent-driven del Satz

Sempre sotto l’ipotesi dei vincoli, Li e Ambulagan hanno fatto dei miglioramenti resovent-driven in Satz. Il primo miglioramento è la pre-processing della formula di ingresso aggiungendo delle soluzioni di lunghezza £ 3, ispirato da [3].

Tabella 8.1: Il numero medio di variabili esaminate da Satz per problemi 3SAT random con 300 variabili e 1275 clausole (sono stati risolti 500 problemi)

Per esempio, se F contiene due clausole

x1Úx2Úx3; Øx1Úx2ÚØx4

allora aggiungiamo la clausola  x2Úx3ÚØx4 ad F. Le nuove clausole a turno possono essere utilizzate per produrre altre soluzioni di lunghezza £ 3. Il processo è compiuto fino alla saturazione. In pratica, imponiamo due vincoli:

·      una soluzione risultata da due clausole binarie dovrebbe essere unaria per essere aggiunta nel database della clausola,

·      una soluzione risultata da una clausola binaria e una clausola ternaria dovrebbe essere binaria per essere aggiunta nel database della clausola.

La pre-processing senza i due vincoli è stabilito come una opzione.

Chiaramente, le soluzioni aggiunte diventano vincoli espliciti in F come le altre clausole. Inoltre, una variabile vincolata da un letterale e della sua forma negata ha una occorrenza di più per essere vantaggiata dalla regola di ramificazione, nell'esempio di sopra questo è il caso per x2 che è vincolato da entrambi x1 e Ø x1.

Il pre-processing standard rende Satz approssimativamente 10% più veloce per i problemi 3SAT random difficili, e permette di risolvere istantaneamente la classe di problemi aim del benchmark DIMACS. Inoltre Satz risolve due volte più veloce i problemi della classe dubois. La pre-processing senza i due vincoli permette di risolvere istantaneamente tutti i problemi dubois.

Il secondo miglioramento consiste nel ponderare con più precisione le variabili nei nodi dove PROPz è True, per tutte le variabili, perché questi nodi sono spesso vicini alla radice dell'albero di ricerca e la loro variabile di ramificazione ha un effetto più importante per ridurre la dimensione dell’albero. Definiamo w(x) come il numero di soluzioni, le nuove clausole binarie prodotte dovrebbero risultare in F’ da un singolo passo di risoluzione. w(Øx) è definito in modo simile.

Riguardo alla Figura 8.2, dopo avere eseguito F’=UnitPropagation(F’È{x}), w(x) è definito:

            ,cond = lÚl’ è in F’ ma non in F

dove f( ) è il numero di occorrenze pesate di  in F, un'occorrenza  in una clausola binaria essendo contata come 5 in clausole di lunghezza 4,... Il fattore esponenziale 5 è fissato empiricamente ed è migliore, nella sperimentazione di Li e Ambulagan, di 2 - il fattore utilizzato nella regola Jeroslow-­Wang [68].

8.4     Risultati comparativi sperimentali sui problemi 3­SAT difficili

Li e Ambulagan hanno comparato Satz con C­SAT, Tableau, e POSIT, le altre tre procedure DPL fra le migliori nella letteratura per i problemi 3­SAT random difficili. I problemi 3­SAT sono generati utilizzando il metodo di Mitchel e al. [98 ] da 4 serie di  n variabili e  m clausole con il rapporto  m/n=4.25, n in passi da 50 tra 250 variabili e 400 variabili. I problemi 3­SAT random generati con il rapporto m/n=4.25 sono i più difficili da risolvere.

Li e Ambulagan hanno utilizzato un eseguibile del C­SAT del luglio 1996. La versione di Tableau utilizzata è chiamata 3tab ed è la stessa utilizzata per la sperimentazione presentata in [16].

POSIT è stato compilato utilizzando il make fornito, su una workstation Sun SPARC­20 dal source chiamato posit-1.0.tar.gz [1]. Le Tabelle 8.2 e 8.3 mostrano che le performance delle 4 procedure DPL sui problemi 3­SAT random difficili con 250, 300, 350 e 400 variabili, dove time - run-time medio reale si ottiene dal comando unix  /usr/bin/time e t_size - la dimensione dell’albero di ricerca è riportata o calcolata dal numero di rami riportati dalla procedura DPL. Notiamo che nessuna delle procedure C­SAT, POSIT, 3tab e Satz utilizza il backjumping.

Tabella 8.2: Run-time medio (in secondi) e la dimensione media dell’albero di ricerca del C-SAT, Tableau, POSIT e Satz per un rapporto m/n=4.25 per  problemi soddisfacibili

Tabella 8.3: Run-time medio (in secondi) e la dimensione media dell’albero di ricerca del C-SAT, Tableau, POSIT e Satz per un rapporto m/n=4.25 per  problemi non soddisfacibili

Le Tabelle 8.2 e 8.3 mostrano che sui problemi 3­SAT random difficili, Satz è più veloce delle sopra citate versioni di C­SAT, Tableau e POSIT, la dimensione dell’albero di ricerca per il Satz è la più piccola, e il run-time e la dimensione dell'albero di ricerca del Satz crescono più lentamente. Tabella 8.4 nostra che il vantaggio di Satz comparato con le versioni citate di C­SAT, Tableau e POSIT al rapporto m/n=4.25.

Ogni voce è calcolata dalle Tabelle 8.2 e 8.3 (media di tutti i problemi in un punto) utilizzando la seguente equazione:

        gain=(value(system)/value(Satz)-1)*100%

Tabella 8 .4: Il guadagno di Satz rispetto a C-SAT, Tableau, POSIT in termini di run-time medio (in secondi) e la dimensione media dell’albero di ricerca per un rapporto m/n=4.25 calcolato dalle Tabelle 8.2 e 8.3

dove value è la media reale del run-time o la media reale della dimensione del albero di ricerca e system è C­SAT, Tableau o POSIT. Dalla Tabella 8.4, risulta chiaro che il vantaggio del Satz cresce con la dimensione della formula in ingresso.

8.5     Risultati comparativi sperimentali dei problemi SAT strutturati

Compariamo Satz con le altre tre procedure DPL (POSIT, GRASP e relsat(4)) fra le migliore nella letteratura per i problemi SAT strutturati, dove GRASP e POSIT sono le due migliori in [17] comparate con C­SAT, Tableau, H2R , SATO, TEGUS sui benchmark DIMACS e UCSC e relsat(4) è la procedura migliore esaminata in [6]. Li e Ambulagan hanno utilizzato 4 ben conosciuti benchmark per i problemi SAT strutturati:

·      DIMACS [2];

·      UCSC [3];

·      i problemi Beijingchallenging [4];

·      i problemi di pianificazione proposti da Kautz e Selman [5].

La versione del POSIT è la stessa dell'ultima sezione. Li e Ambulagan hanno utilizzato un eseguibile del sistema GRASP (la versione del maggio 1996) disponibile da Joao M. Silva. Il relsat(4) system V1.00 sono stati ricevuti da Roberto J. Bayardo Jr.

Seguendo Hooker & Vinay [65] e Silva & Sakallah [117], Li e Ambulagan hanno utilizzato un tempo di cutoff (2 ore) come un sostituto per il run-time reale e suddiviso i benchmark DIMACS e UCSC in classi, per esempio la classe aim­100 include tutti i problemi con il nome aim­100­*. In ogni classe, #M denota il numero totale di membri della classe, mentre #S il numero di problemi risolti efficacemente dalla procedura DPL corrispondente in meno di due ore. Time rappresenta il tempo totale CPU in secondi impiegati per trattare tutti i membri di una classe - un problema che non può essere risolto in meno di 2 ore contribuisce con 7200 secondi al tempo totale. Li e Ambulagan non hanno incluso le classe F, G, PAR32 e Hanoi5 che nessuno degli algoritmi Satz, GRASP, POSIT e relsat(4) riesce a risolvere in meno di 2 ore. I problemi difficili di Beijing e i problemi di pianificazione sono elencati individualmente e un problema che non può essere risolto in meno di 2 ore è marcato da >7200. I risultati ottenuti sono mostrati nelle Tabelle 8.5, 8.6, 8.7 e  8.8.

Tabella 8.5: Run-time totale (in secondi) dei problemi DIMACS

Una prima osservazione è che Satz, GRASP, relsat(4) sono tutte significativamente migliori del POSIT su questi benchmark. In seguito Li e Anbulagan hanno analizzato soltanto le performance di Satz, GRASP e relsat(4).

Li e Ambulagan hanno trovato che Satz è comparabile con relsat(4) e GRASP su più problemi DIMACS e UCSC (un totale di 22 classi) eccetto la classe pret dove non c'è nessuna soluzione di lunghezza £ 3 e la maggior parte delle variabili sono simmetriche così che l’euristica UP fallisce nel distinguerli. Satz è significativamente migliore del GRASP e relsat(4) in 3 classi (hole, ii16, par16) e per 12 classi aim­50, aim­100, aim200, bf, dubois, ii8, jnh, par8, bf0432, ssa0432, ssa6288 e ssa7552, ha delle performance equivalenti. Satz è anche molto efficace su più problemi ssa e bf, eccetto un piccolo numero fra loro (8 ssa su 102 e 3 bf su 223) dove per Satz aumenta il tempo totale per risolvere le corrispondenti classi.

Per esempio, mentre la maggior parte dei problemi della classe bf1355 possono essere risolti entro 3 secondi, il problema bf1355­243 impiega 1395 secondi per essere risolto. Il problema più difficile per Satz nelle classi ssa e bf è bf2670-­244 su cui impiega 3 ore e 47 minuti per essere risolto.


Nel banchmark Beijing, Satz risolve lo stesso numero di problemi come relsat(4) e uno in più del GRASP. Sui problemi di pianificazione di Kautz e Selman, Satz è anche comparabile con GRASP e relsat(4) eccetto 4 problemi su 31. Notiamo che Satz contiene un pre-processing della formula CNF d’ingresso per cancellare le clausole duplicate, le tautologie, e i letterali duplicati nelle clausole, che rappresentano un consumo di tempo per i problemi grandi come i problemi di pianificazione di Kautz e Selman o alcuni problemi Beijing difficili che contengono più di 100.000 clausole e non sono trascurabili specialmente quando la stessa ricerca impiega poco tempo.

8.6     Look-ahead contro look-back

In termini di CSP, Satz adopera essenzialmente qualche semplice tecnica look-ahead per raggiungere al più presto possibile ad un dead end: un'euristica di ordinamento delle variabili (euristica UP), un controllo di consistenza in avanti (Unit propagation) e un pre-processing semplice, l’euristica essendo se stessa basata sul controllo della consistenza in avanti. Comunque, Satz non include tecniche look-back come backjumping ed apprendimento, un’altra classe di tecniche per i problemi CSP.

Tabella 8.6: l run-time totale(in secondi) dei problemi UCSC

Tabella 8 .7: I run-time (in secondi) dei problemi Beijing

L'euristica del GRASP si può spiegare dall'ipotesi di soddisfazione, che intende soddisfare direttamente il numero più grande di clausole, mentre per il relsat(4) dall’ipotesi di semplificazione, che intende valutare il maggior numero di variabili quando ramifica. La loro euristica con ordinamento è più semplice di quella del Satz. Comunque loro sfruttano un backjumping sofisticato ed apprendimento per affrontare i problemi SAT strutturati. I risultati sperimentali presentati nell'ultima sezione suggeriscono che le buone performance del GRASP e relsat(4) su molti problemi SAT strutturati possono essere raggiunte semplicemente da una risoluzione limitata in cima all'albero di ricerca ed un’ottima euristica UP. L'ultimo approccio ha i vantaggi di essere più semplice e molto più efficace per i problemi 3­SAT random.

8.6.1    Euristica contro backjumping

Un’euristica migliore per l’ordinamento delle variabili permette di evitare molte backtracking inutili. Siano xi1,xi2,…xib,…xid le traiettorie dall'origine al dead end in un albero di ricerca DPL, il backtracking cronologico standard retrocede verso xid-1, mentre il backjumping potrebbe saltare a xib nel caso quale le variabili xib+1,…xid-1 non contribuiscono al conflitto scoperto in xid, evitando in questo modo il tempo per esplorare una regione inutile dello spazio di ricerca. Comunque se guardiamo più attentamente al caso, troviamo che se il backjumping permette di evitare l'esplorazione inutile, è perché le variabili di ramificazione xib+1,…xid-1 non sono buone. Se l'euristica di ordinamento delle variabili sceglie xid come variabile di ramificazione immediatamente dopo xib il backjumping potrebbe essere semplicemente backtracking cronologico.

Tabella 8.8:  I run-time (in secondi) dei problemi di pianificazione di Kautz e Selman

Chiaramente l'euristica UP permette a Satz di fare a meno del backjumping in maggior parte dei casi.

8.6.2    Apprendimento

Satz non include alcuna delle tecniche di apprendimento classiche applicate durante la ricerca. Ma Satz include un apprendimento statico standard che consiste in una risoluzione limitata prima della ricerca per aggiungere alcune soluzioni di lunghezza £ 3 nel database della clausola. Una ricerca completa di tutte le soluzioni di lunghezza £ 3  prima della ricerca permettono di risolvere istantaneamente tutti i problemi della classe dubois, mentre l’apprendimento statico standard rende Satz due volte più veloce. D'altra parte, molti problemi come ssa* e ii* potrebbero esplodere la memoria del computer per una ricerca completa di tutte le soluzioni di lunghezza £ 3.

Sembra promettente un'integrazione accurata con un modesto overhead dell’euristica UP ed un apprendimento dinamico come quello proposto in relsat(4).

8.7     SAT random a confronto con SAT strutturato

Sembra che le tecniche look-back, come descritte in GRASP e relsat(4), non siano appropriate per i problemi 3­SAT random. Per esempio, la Tabella 8.9 mostra il comportamento del relsat(4) e del GRASP sui problemi 3­SAT random difficili confrontati con Satz.

 D'altra parte, le tecniche look-­ahead come quelle implementate in Satz possono essere utilizzate per affrontare i problemi 3­SAT random e molti problemi SAT strutturati. Se una tecnica è potente per i problemi SAT random, probabilmente è potente per problemi SAT strutturati.

Tabella 8.9: Run-time medio (in secondi) di Satz, relsat(4) e GRASP per il rapporto m/n=4.25

La strategia essenziale per scrivere una procedura DPL è di provare a raggiungere al più presto possibile ad un dead end e le euristiche sono probabilmente, i metodi più efficaci per realizzare la strategia. Comunque, se l’euristica fallisce nel lavorare bene, per esempio, per i problemi dove la maggior parte delle variabili sono simmetriche, si dovrebbero provare altri metodi, come l’apprendimento o simmetry detection. In questo senso, Satz può essere ancora migliorata nel futuro.


[1]  disponibile e via ftp a ftp.cis.upenn.edu in pub/freeman

[2] disponibile a ftp://dimacs.rutgers.edu/pub/challenge/satisfiability

[3] disponibile a ftp://dimacs.rutgers.edu/pub/challenge/sat/contributed/UCSC

[4] disponibile a http://www.cirl.uoregon.edu/crawford/beijing

[5] disponibile a ftp://ftp.ricerca.att.com/dist/ai/logistics.tar.Z


Indietro

Home

Avanti

Relsat

SAT solver

Novelty