From 7e24240ec90ac44a3ba658a338547324a32cd3d4 Mon Sep 17 00:00:00 2001
From: carrote <carrote@etu.univ-grenoble-alpes.fr>
Date: Thu, 14 Apr 2022 22:38:07 +0200
Subject: [PATCH] Ajout sat solveur + modif legeres

---
 README.md        |  2 +-
 sat_3sat.py      |  3 +-
 satsolveur.py    | 86 ++++++++++++++++++++++++++++++++++++++++++++++++
 test_sat_3sat.py |  6 ++--
 4 files changed, 91 insertions(+), 6 deletions(-)
 create mode 100644 satsolveur.py

diff --git a/README.md b/README.md
index a961c8e..f3f9b81 100644
--- a/README.md
+++ b/README.md
@@ -35,7 +35,7 @@ suivit de nz+nu coordonnées de la forme i,j
 
 Pour éxécuter il faut ensuite entrer :
 ```
-python3 main.py fihcier.tkz [-s]
+python3 main.py [fichier.tkz] [-s]
 ```
 
 L'option `-s` permet d'écrire les resultat de chaque operation dans des fichiers.
diff --git a/sat_3sat.py b/sat_3sat.py
index 3aefca9..eaa58d9 100644
--- a/sat_3sat.py
+++ b/sat_3sat.py
@@ -106,5 +106,4 @@ class Sat3SAT:
             self.clauses_simplifiees,
             nom_fichier
         )
-        
-
+    
diff --git a/satsolveur.py b/satsolveur.py
new file mode 100644
index 0000000..eff8bae
--- /dev/null
+++ b/satsolveur.py
@@ -0,0 +1,86 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+"""
+Created on Thu Apr 14 22:15:49 2022
+
+@authors: E. Carrot, L. De Mathan, A. Koshba
+"""
+
+import es_dimacs
+import random
+import math
+
+
+MAX_ITERATION = 1000
+P = 0.5
+
+class SatSolveur:
+    "Programme naif de Sat Solveur"
+    
+    
+    """
+        Constructeur naïf
+    """
+    def __init__(self, clauses = [], nb_variables = 0):
+        self.nb_variables = nb_variables
+        self.clauses = clauses
+        self.assignation = {}
+    
+    """
+        Affecte à l'objet courant l'ensemble de clauses non simplifiée
+            qui se trouvent dans un fichier dimacs
+    """
+    def lireClausesFichier(self, nom_fichier):
+        # On utilise le module es_dimacs
+        u = es_dimacs.lireCNFDimacs(nom_fichier)
+        self.nb_variables = u[0]
+        self.clauses = u[1]
+        
+        
+    """
+        Fonction principale trouve (ou essaie) un modele à un ensemble de
+            clauses
+    """
+    def lancerSolveur(self):
+        v = self.assignationAleatoire()
+        i = 0
+        
+        while not self.estModele() and i < MAX_ITERATION:
+            c = self.choixClauseAleatoire()
+            x = random.random()
+            if x <= P:
+                y = self.choixVariableAleatoire(c)
+            else:
+                y = self.choixVariableDeterministe(c)
+            self.assignation[y] = 1 - self.assignation[y]
+            i++
+        
+        if self.estModele():
+            return True
+        else:
+            return False
+            
+    
+    
+    def assignationAleatoire(self):
+        return # TO DO
+    
+    def choixClauseAleatoire(self):
+        return # TO DO
+    
+    def choixVariableDeterministe(self, clause):
+        return # TO DO
+    
+    def choixVariableAleatoire(self, clause): 
+        return # TO DO
+
+    def estModele(self):
+        return # TO DO
+    
+    
+    """
+        Ecrit la dans un fichier en utilisant le format dimacs
+    """
+    def sortieDimacs(self, nom_fichier):
+        # On appelle le module es_dimacs simplement
+        return # TO DO
\ No newline at end of file
diff --git a/test_sat_3sat.py b/test_sat_3sat.py
index 885568b..830b36c 100644
--- a/test_sat_3sat.py
+++ b/test_sat_3sat.py
@@ -10,9 +10,9 @@ from sat_3sat import *
 
 sat3 = Sat3SAT([
         [1],
-        [-2, 3],
-        [-4,5,-6],
-        [7,8,9,10,-11,-12,13,14,15]
+        [-3, 2],
+        [-4,6,-5],
+        [7,8,9,15,-11,-12,13,14,10]
     ], 15)
 
 sat3.conversion()
-- 
GitLab