Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Sviare le tabelle di verità
Forum - C/C++ - Sviare le tabelle di verità

Pagine: [ 1 2 3 ] Precedente | Prossimo
Avatar
Dice (Normal User)
Expert


Messaggi: 238
Iscritto: 26/11/2011

Segnala al moderatore
Postato alle 21:53
Lunedì, 02/01/2012
Ok, ho capito che tabelle di verità non  me le volete spiegare in dettaglio e non sono in grado di crearle.
Dato che non ho ben capito come si creano, mi chiedevo ...
...
esiste un metodo che permetta di verificare se esiste un assegnamento di verità che soddisfa una formula logica proposizionale, ma ...
...
senza e dico SENZA utilizzare le tabelle di verità ???

Grazie in anticipo dell'aiuto.

PM Quote
Avatar
pierotofy (Admin)
Guru^2


Messaggi: 6230
Iscritto: 04/12/2003

Segnala al moderatore
Postato alle 0:47
Martedì, 03/01/2012
Non ho capito... puoi essere più specifico? Cosa intendi per "metodo che permetta di verificare ... logica proposizionale..."?


Il mio blog: https://piero.dev
PM Quote
Avatar
HeDo (Founder Member)
Guru^2


Messaggi: 2765
Iscritto: 21/09/2007

Segnala al moderatore
Postato alle 8:55
Martedì, 03/01/2012
uno dei post più surreali che io abbia mai letto...

PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 10:40
Martedì, 03/01/2012
Come ti ho già detto, il problema dell'esistenza è in genere di difficile risoluzione.

Tuttavia, se la formula è in forma normale disgiuntiva, basta che una qualsiasi n-pla di letterali sia vera per rendere la formula vera.

PM Quote
Avatar
Dice (Normal User)
Expert


Messaggi: 238
Iscritto: 26/11/2011

Segnala al moderatore
Postato alle 13:23
Martedì, 03/01/2012
ahahahahahahah

cercherò di essere un  po' meno surreale, allora...
vi faccio un esempio per farvi capire cosa vuol dire verificare se esiste un assegnamento di verità che soddisfa una formula logica proposizionale:

a OR b AND c             (questa è la formula logica proposizionale)

Bisogna creare la tabella di verità:
(senza usare la parentesi tonde bisogna   usare la precedenza degli operatori logici)

a | b | c | b AND c | a OR b AND c |
0 | 0 | 0 |     0      |           0         |
0 | 0 | 1 |     0      |           0         |
0 | 1 | 0 |     0      |           0         |
0 | 1 | 1 |     1      |           1         |
1 | 0 | 0 |     0      |           1         |
1 | 0 | 1 |     0      |           1         |
1 | 1 | 0 |     0      |           1         |
1 | 1 | 1 |     1      |           1         |

Per vedere quali sono gli assegnamenti di verità che soddisfano la formula bisogna guardare l'ultima colonna, e prendere solo quando vale 1.
In questo esempio gli assegnamenti di verità che soddisfano la formula sono :
a = 0; b = 1; c = 1;
a = 1; b = 0; c = 0;
a = 1; b = 0; c = 1;
a = 1; b = 1; c = 0;
a = 1; b = 1; c = 1;

A me basta stamparne solo una di queste righe ( per esempio la prima: a = 0; b = 1; c = 1).
In parole povere: io devo riuscire a stampare i valori delle proposizioni atomiche (a , b, c) che portano tutta la formula a valere uno.

Io sto tutt'ora provando a riuscirci con le tabelle di verità, anche se non so se riuscirò, perhcè poi è una cosa abbastanza lunga.
Io volevo chiedervi se per caso esiste un metodo più facile e corto di riuscire a fare questo lavoro, possibilmente senza usare le tabelle di verità.
Se per caso non esiste, mi potreste rispiegare molto dettagliamente come riuscirci utilizzando le tabelle di verità ?


PS: spero di essere stato chiaro, ed aver eliminato la surrealità ihihihi

PM Quote
Avatar
anthony015 (Member)
Pro


Messaggi: 116
Iscritto: 20/05/2011

Segnala al moderatore
Postato alle 14:09
Martedì, 03/01/2012
se non ho capito male tu vuoi che il programma ti dia dei valori per i quali la proposizione logica sia vera, ad esempio nella proposizione logica a OR b AND c, ti ritorni dei valori di a, b, c per i quali a OR b AND c valga 1.
se è così potresti usare o un metodo brute-force, cioè tentare in sequenza con ogni valore assumibile da a,b,c finche a OR b AND c valga 1, oppure utilizzando algoritmi di backtracking
http://it.wikipedia.org/wiki/Backtracking

PM Quote
Avatar
Dice (Normal User)
Expert


Messaggi: 238
Iscritto: 26/11/2011

Segnala al moderatore
Postato alle 18:45
Martedì, 03/01/2012
Si, hai capito bene, voglio proprio quello.
Ho visto il link che mi hai messo, ed è stato un po' utile.
Ho visto che c'è l'esempio, l'unico problema è che è in Python, che io non conosco.
Non è che per caso me lo tradurreste in linguaggio C per favore ?


def prop(x,y):
    return (x and y)

vals = [False, True]
for x in vals:
    print("x=", x)
    for y in vals:
            print("y=", y)
            if prop(x,y):
                    print("\tSI")
            else:
                    print ("\tNO")

Produce come risultato
x= False
y= False        NO
y= True         NO

x= True
y= False        NO
y= True         SI

PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 12:05
Mercoledì, 04/01/2012
Se trovassi un metodo più "semplice", probabilmente vincerei la medaglia Fields, il premio Turing e qualche milioncino in contanti, e sicuramente non lo verrei a dire a te :rotfl:

PM Quote
Avatar
Dice (Normal User)
Expert


Messaggi: 238
Iscritto: 26/11/2011

Segnala al moderatore
Postato alle 14:52
Mercoledì, 04/01/2012
Ahahaha mi sembra giustso :rotfl:

Ma... riguardo alla traduzione di quell'esempio ?

PM Quote
Pagine: [ 1 2 3 ] Precedente | Prossimo