سؤال

تفترض مجموعة من المتغير $ 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 $ إلى كل جملة من المعيار $ amo_j $ encoding يحتوي فقط على بنود صلبة فقط (الوزن غير المعتادة).

الآن متغير التسمية $ l_j $ يعمل بمثابة رمز التبديل: إعداد $ l_j= true $ الإرادة"إيقاف" $ AMO_J $ قيد الصعب، ولكنه لا يرضي جملة الوحدة $ (\ lnot l_j) $ .

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى cs.stackexchange
scroll top