Frage

Angenommen, einen Satz von Variablen $ V $ = $ \ {v_1, ..., v_m \} $ < / span>.

Insgesamt Total $ N $ At-at-one (AMO) -Erigkeiten (höchstes Element in einem bestimmten Set ist true ) Setzen Sie [des untenstehenden Formulars], über die Variablen-Set $ V $ ,

$$ AMO \, (v_1, v4, \ neg v_6, v_ {10}) \\ ... \\ AMO \, (v_2, \ neg v3, v_7 ) $$

generasacodicetagpre.

Ich kann es nicht als MAX-SAT-Problem darstellen.

versuchte bisher (Versuch 1): Verwenden Sie eine harte Einschränkung für jede der stärksten Einschränkungen. Dies funktioniert nicht als Codierung von $ AMO (v_i, ..., v_w) $ werden mehrere Klauseln für jeden $ haben AMO $ und alle haben demselben Gewicht (oberes Gewicht) zugewiesen. Eine Lösung für dieses Set ist möglicherweise nicht der maximale.

Versuch (2): Um das obige Problem zu beheben, habe ich relatives Klauselgewicht versucht. d. H. Für jede Klausel das Gewicht proportional zur Größe der Klausel zuweisen. Dies ergibt die Zuweisung der zufriedenstellenden kürzeren Klausel. Dies funktioniert jedoch nicht in extremen Situationen, als ob alle Klausel gleiche Länge haben.

Ich habe Erfahrung mit Sat-Löser, aber dies ist mein erster MAX-SAT-Problemversuch.

War es hilfreich?

Lösung

Der Standard-Weg, um weiche Einschränkungen in MaxSat zu erstellen, besteht darin, Etikettenvariablen zu verwenden:

für jeden $ AMO_J $ Einschränkung, Erstellen Sie eine neue Variable $ l_j $ .Erstellen Sie dann eine Einheit-Klausel $ (\ lnot l_j) $ mit Gewicht $ 1 $ und fügen Sie das Literal $ l_j $ in jede Klausel des Standards $ AMO_J $ codieren, die nur harte (unendliche Gewichtsklauseln) enthält.

Jetzt ist die Label-Variable $ l_j $ als Switch: Einstellung $ l_j= True $ wird"Deaktivieren Sie den $ AMO_J $ Harte Einschränkung, erfüllt jedoch nicht die Einheit-Klausel $ (\ lnot l_j) $ .

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit cs.stackexchange
scroll top