การเข้ารหัสข้อ จำกัด 1-out-of-n สำหรับนักแก้ปัญหา SAT


25

ฉันใช้ตัวแก้ SAT เพื่อเข้ารหัสปัญหาและเป็นส่วนหนึ่งของอินสแตนซ์ SAT ฉันมีตัวแปรบูลีนซึ่งมีจุดประสงค์ว่าหนึ่งในนั้นควรเป็นจริงและส่วนที่เหลือควรเป็นเท็จ . (บางครั้งฉันเคยเห็นสิ่งนี้อธิบายว่าเป็นการเข้ารหัส "one-hot")x1,x2,,xn

ฉันต้องการเข้ารหัสข้อ จำกัด "ตรงหนึ่งจากต้องเป็นจริง" ใน SAT วิธีที่ดีที่สุดในการเข้ารหัสข้อ จำกัด นี้เพื่อให้นักแก้ปัญหา SAT ทำงานได้อย่างมีประสิทธิภาพมากที่สุดเท่าที่จะเป็นไปได้x1,,xn

ฉันเห็นการเข้ารหัสข้อ จำกัด นี้ได้หลายวิธี:

  • ข้อ จำกัด แบบคู่ ฉันสามารถเพิ่มข้อ จำกัด แบบ pairwiseสำหรับทั้งหมดเพื่อให้แน่ใจว่าอย่างน้อยที่สุดหนึ่งนั้นเป็นจริงแล้วเพิ่มเพื่อให้แน่ใจว่าอย่างน้อยก็เป็นจริง .¬xi¬xji,jx 1x 2x nxix1x2xn

    สิ่งนี้เพิ่มส่วนคำสั่งและไม่มีตัวแปรบูลีนพิเศษΘ(n2)

  • การเข้ารหัสแบบไบนารี ฉันสามารถแนะนำตัวแปรบูลีนใหม่เพื่อเป็นตัวแทน (ในระบบเลขฐานสอง) จำนวนเต็มเช่นที่ (เพิ่มข้อ จำกัด บูลีนบางอย่างเพื่อให้แน่ใจว่าอยู่ในช่วงที่ต้องการ) จากนั้นฉันสามารถเพิ่มข้อ จำกัด บังคับให้เป็นต้นไม้และอื่น ๆ ทั้งหมดเป็นเท็จ ในคำอื่น ๆ สำหรับแต่ละเราเพิ่มคำสั่งการบังคับใช้ที่x_jฉัน1 , ฉัน2 , , ฉันlg nฉัน1 ฉันn ฉันx ฉันx j j ฉัน= j x jlgni1,i2,,ilgni1inixixjji=jxj

    นี่เป็นการเพิ่มส่วนคำสั่งและฉันไม่รู้ว่าตัวแปรบูลีนพิเศษมีเท่าใดΘ(nlgn)

  • นับจำนวนค่าที่แท้จริง ฉันสามารถใช้วงจรของวงจรบวกบูลีนและต้องการให้ , ปฏิบัติต่อแต่ละตัวเป็น 0 หรือ 1 แทนที่จะเป็นเท็จหรือจริงและใช้การแปลง Tseitin เพื่อแปลงวงจรให้เป็นส่วนคำสั่ง SAT ต้นไม้ครึ่งตัวเสริม: จำกัด เอาท์พุทของแต่ละตัวบวกครึ่งให้เป็น 0 และ จำกัด ผลลัพธ์สุดท้ายของตัวบวกครึ่งสุดท้ายในต้นไม้ให้เป็น 1 ต้นไม้สามารถเลือกให้มีรูปร่างใดก็ได้ ( ต้นไม้ไบนารีที่สมดุลหรือไม่สมดุลหรืออะไรก็ตาม)x ix1+x2++xn=1xi

    สิ่งนี้สามารถทำได้ในประตูจึงเพิ่มคำสั่งและตัวแปรบูลีนใหม่Θ ( n ) Θ ( n )Θ(n)Θ(n)Θ(n)

    เป็นกรณีพิเศษของวิธีนี้คือการแนะนำตัวแปรบูลกับความคิดที่ว่าควรมีค่าของx_i ความตั้งใจนี้สามารถบังคับใช้โดยการเพิ่มคำสั่ง , , และ\ neg y_i \ lor x_i \ lor y_ {i-1} (ที่เราปฏิบัติต่อy_0เป็น ไวพจน์เท็จ) สำหรับi = 1, \ dots, n ต่อไปเราจะสามารถเพิ่มข้อ จำกัด\ Neg y_i \ Lor \ Neg x_ {i + 1}สำหรับi = 1,2, \ dots, n-1 โดยทั่วไปจะเทียบเท่ากับการแปลง Tseitin ของต้นไม้ครึ่ง adder ที่ต้นไม้มีรูปร่างที่ไม่สมดุลมากที่สุดY ฉันx 1x 2x ฉันY ฉัน¬ x ฉันY ฉัน¬ Y ฉัน- 1 ¬ Y ฉันx ฉันY ฉัน- 1ปี0ฉัน= 1 , ... , n ¬ Y ฉัน¬ x ฉัน+y1,,ynyix1x2xiyi¬xiyi¬yi1¬yixiyi1y0i=1,,n¬yi¬xi+1i=1,2,,n1

  • เครือข่ายผีเสื้อ ฉันสามารถสร้างเครือข่ายบัตเตอร์ฟลายบนบิต , จำกัดอินพุต bit ให้เป็น , จำกัดเอาท์พุท bit ให้เป็น , และปฏิบัติต่อประตูผีเสื้อ 2 บิตแต่ละตัวเป็นประตูอิสระที่ สลับหรือไม่สลับอินพุตกับการตัดสินใจที่จะทำตามตัวแปรบูลีนใหม่ที่ไม่มีข้อ จำกัด จากนั้นฉันสามารถใช้การแปลง Tseitin เพื่อแปลงวงจรเป็นคำสั่ง SATnn00001nx1x2xn

    สิ่งนี้ต้องการประตูและเพิ่มส่วนคำสั่งและตัวแปรบูลีนใหม่Θ(nlgn)Θ(nlgn)Θ(nlgn)

มีวิธีอื่นที่ฉันมองข้ามไปหรือไม่? ฉันควรใช้อันไหนดี มีใครทดสอบหรือทดลองใช้หรือเคยมีประสบการณ์กับสิ่งเหล่านี้บ้างไหม? จำนวนคำสั่งและ / หรือจำนวนตัวแปรบูลีนใหม่เป็นตัวชี้วัดที่ดีสำหรับการประเมินผลกระทบของสิ่งนี้ต่อประสิทธิภาพการแก้ปัญหา SAT หรือไม่ถ้าไม่คุณจะใช้เมตริกใด


ฉันเพิ่งสังเกตเห็นว่าคำตอบนี้มีการอ้างอิงบางอย่างเกี่ยวกับการบังคับใช้ข้อ จำกัด ของ cardinality สำหรับ SAT นั่นคือการบังคับใช้ข้อ จำกัด ที่จากตัวแปรทั้งหมดนั้นเป็นจริง ดังนั้นคำถามของฉันลงมาให้เป็นกรณีพิเศษที่ 1 บางทีวรรณกรรมเกี่ยวกับข้อ จำกัด ด้าน cardinality อาจช่วยอธิบายคำถามของฉันknk=1


นักแก้ปัญหา SAT ที่ทันสมัยส่วนใหญ่สนับสนุนข้อ จำกัด ของ cardinality และข้อ จำกัด พิเศษอื่น ๆ (ที่ไม่ใช่ CNF)
DávidHorváth

คำตอบ:


12

สำหรับกรณีพิเศษของ k จากตัวแปร n จริงโดยที่ k = 1 มีการเข้ารหัสตัวแปรผู้บัญชาการตามที่อธิบายไว้ในการเข้ารหัส CNF ที่มีประสิทธิภาพสำหรับการเลือก 1 ถึง N วัตถุโดย Klieber และ Kwon แบบง่าย: แบ่งตัวแปรออกเป็นกลุ่มย่อยและเพิ่มส่วนคำสั่งที่ทำให้สถานะของตัวแปรผู้บังคับบัญชาบ่งบอกว่ากลุ่มของตัวแปรเป็นเท็จหรือเท็จทั้งหมด แต่ทั้งหมด จากนั้นใช้อัลกอริทึมเดียวกันซ้ำกับตัวแปรผู้บัญชาการ ในตอนท้ายของกระบวนการต้องการให้ตัวแปรหนึ่งในไม่กี่คนของผู้บัญชาการขั้นสุดท้ายเป็นจริง ผลลัพธ์คือ O (n) clauses ใหม่และ O (n) ตัวแปรใหม่

เมื่อพิจารณาความแพร่หลายของตัวอักษรสองตัวที่จับตาดูในตัวแก้ปัญหา DPLL ฉันคิดว่าการเติบโตของประโยค O (n) เป็นข้อได้เปรียบที่สำคัญยิ่งกว่าแผนการเข้ารหัสที่จะเพิ่มส่วนคำสั่งเพิ่มเติม


2
หาก "กลุ่มเล็ก" มีขนาดสองแล้วนี่เป็นเพียงการเพิ่มแบบไบนารีโดยที่ "ผู้บัญชาการ" เป็นบิตผลลัพธ์และการดำเนินการถูกยืนยันว่าเป็นเท็จ เสร็จสิ้นการเรียกซ้ำวิธีนี้เป็นแบบทั่วไป (ใช้ได้กับ 1 ของ N) และเป็นไปได้จริง
d8d0d65b3f7cf42

3

บทความโดย Magnus Björkอธิบายถึงเทคนิคสองอย่างที่ควรค่าแก่การลอง

สำหรับ 1-out-of- เราสามารถใช้การเข้ารหัสทั้งแบบร้อนและแบบไบนารีพร้อมกัน ดังนั้นเราจึงมีx 1 , ... , x nเป็นหนึ่งในการเข้ารหัสร้อนและy ที่1 , ... , Y เป็นเข้ารหัสไบนารีที่= LG n เราสามารถเข้ารหัส "ที่หนึ่งอย่างน้อย" จำกัด ได้อย่างง่ายดายในประโยคเดียว: ( x 1x n ) เรายังสามารถบังคับให้การเข้ารหัสทั้งสองให้สอดคล้องกับ2 lg nnx1,,xny1,,ybb=lgn(x1xn)2lgnclauses: เราเพิ่มหรือ x ixi¬yjตามที่ว่าบิตที่ jของการเข้ารหัสไบนารี่ของฉันคือ 0 หรือ 1 ในที่สุดข้อ จำกัด "ที่มากที่สุด" จะตามมาโดยอัตโนมัติ นอกจากนี้ยังอนุญาตให้ส่วนที่เหลือของอินสแตนซ์ SAT ใช้วิธีการเข้ารหัสใดก็ได้ที่สะดวกกว่าxiyjji

สำหรับ -out-of- nเราสามารถใช้เครือข่ายการเรียงลำดับกับอินพุตx 1 , , x nเพื่อรับเอาต์พุตที่เรียงลำดับy 1 , , y nและจากนั้นเพิ่มประโยคที่ต้องการให้y kเป็นจริงและy k + 1เป็นเท็จ มีเครือข่ายการเรียงลำดับจำนวนมากที่ต้องการหน่วยเปรียบเทียบO ( n lg 2 n )เท่านั้น ดังนั้นเราจึงได้รับการเข้ารหัสที่ใช้O ( n lg 2knx1,,xny1,,ynykyk+1O(nlg2n)คำสั่งและตัวแปรชั่วคราวO(nlg2n)

กระดาษเป็น

Magnus Björk ที่ประสบความสำเร็จเทคนิค SAT การเข้ารหัส 25 กรกฎาคม 2552

เอกสารต่อไปนี้มีรายการการเข้ารหัสโดยละเอียดสำหรับ 1-out-of- และk -out-of - nโดยมีการประเมินการทดลองบางอย่างของแต่ละรายการ ข้อสรุปไม่ชัดเจนทั้งหมด (การเข้ารหัสคำสั่งดูค่อนข้างดีในการทดลอง)nkn

Alan M. Frisch, Paul A. Giannaros SAT การเข้ารหัสของที่มากที่สุด-K จำกัด : บางเก่าบางใหม่บางด่วน, บางช้า ModRef 2010

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.