ترميز مجموعة من قيود في أكثر من واحد كمشكلة كحد أقصى
-
28-09-2020 - |
سؤال
تفترض مجموعة من المتغير $ v $ = $ \ {v_1، ...، v_m \} $ < / span>.
إعطاء مجموع $ n $ قيود على الأكثر (أعلى عنصر واحد في مجموعة معينة هو صحيح ) تعيين [من النموذج أدناه]، عبر مجموعة متغير $ v $ ،
$$ AMO \، (v_1، v4، \ neg v_6، v_ {10}) \\ ... \\ amo \، (v_2، \ neg v3، v_7 ) $
giveacodicetagpre.أنا غير قادر على تمثيلها كمشكلة ماكس السبت.
حاول حتى الآن (محاولة 1): استخدام القيد الثابت لكل من عائق واحد في أكثر واحد. لن يعمل هذا كما ترميز $ AMO (v_i، ...، v_w) $ سيكون لديه بنود متعددة لكل $ AMO $ وكلها قد عين نفس الوزن (أعلى الوزن). قد لا يكون الحل لهذا المجموعة هو الحد الأقصى.
محاولة (2): لإصلاح المشكلة أعلاه، حاولت وزن الفقرة النسبية؛ أي، بالنسبة لكل بند تعيين الوزن يتناسب مع حجم البند. هذا سيعطي تفضيلا في تعيين بند أقصر مرضي. ولكن هذا لا يعمل في حالات متطرفة مثل إذا كان كل البند له نفس الطول.
لدي خبرة مع SAT Solvers، لكن هذه هي أول محاولة لمشكلة ماكس ماكس.
المحلول
الطريقة القياسية لإنشاء قيود لينة في Maxsat هي استخدام متغيرات التسمية:
مقابل كل $ AMO_J $ قيد القيد، إنشاء متغير جديد $ l_j $ .ثم قم بإنشاء جملة وحدة $ (\ lnot l_j) $ مع الوزن $ 1 $ وإضافة
الآن متغير التسمية $ l_j $ يعمل بمثابة رمز التبديل: إعداد $ l_j= true $ الإرادة"إيقاف" $ AMO_J $ قيد الصعب، ولكنه لا يرضي جملة الوحدة $ (\ lnot l_j) $ .