มาตรฐาน


16

คำถามนี้อาจเป็นเรื่องเส้นขอบระหว่างหัวข้อและนอกหัวข้อ แต่ฉันเห็นคำถามที่คล้ายกันที่นี่ดังนั้นฉันจะถาม


ฉันกำลังใช้ตัวแก้ปัญหาk -SAT ที่ไม่ซ้ำกันซึ่งอินพุตเป็นสูตร -CNF ที่มีการมอบหมายงานที่น่าพอใจสูงสุดรายการ เพื่อทดสอบพฤติกรรมการใช้งานจริงฉันต้องการชุดของสูตรดังกล่าว ฉันค้นหาพวกเขาบนเว็บและไม่พบสิ่งใด (ในขณะที่มันเป็นเรื่องง่ายมากที่จะหาชุดของสูตร -CNF ธรรมดา)k1k

ฉันจะหาอินสแตนซ์ -SAT ที่ไม่ซ้ำได้จากที่ใดk

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

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

เราจะสร้างสูตรที่ไม่เหมือนใครด้วยข้อที่เหมาะสมได้อย่างไร? โดยที่เหมาะสมผมหมายถึงไกลจากสูงสุด2k(nk)k}


รับสูตร SATพร้อมตัวแปรและคำสั่งหากจำนวนส่วนคำสั่งอยู่ระหว่างและดังนั้นสูตรนั้นน่าพอใจไม่ซ้ำกันหรือไม่น่าพอใจ .. ฉันได้ผลสมการสำหรับ k-SAT เช่นกัน จะแจ้งให้คุณทราบหากฉันพบมัน Fnm3n2n3n2n2n1F
Tayfun จ่าย

หากคุณมีเวลาเพียงพอในมือของคุณ (และอินสแตนซ์นั้นมีขนาดเล็กพอ) คุณสามารถสร้างอินสแตนซ์เมื่อถึงช่วงการเปลี่ยนเฟสและทดสอบด้วยตัวแก้ SAT หากสูตรไม่มีวิธีแก้ไขให้ทิ้งไป หากมีโซลูชัน X ให้เพิ่มส่วนคำสั่งยืนยันว่าโซลูชันไม่ใช่ X และเรียกใช้ตัวแก้ปัญหาอีกครั้ง นี่เป็นพื้นฐาน แต่ช้า
Andrew D. King

คำตอบ:


7

นี่เป็นวิธีหนึ่งในการสร้างอินสแตนซ์ -SAT ที่ไม่ซ้ำกันโดยกำหนด SAT instanceที่คุณรู้ว่าเป็นที่น่าพอใจ พิจารณาสูตรกำหนดโดยไวψ ( x )kφψ(x)

φ(x)ชั่วโมง(x)=Y,

โดยที่คือฟังก์ชันแฮชที่แมปการมอบหมายกับค่า -bit (สำหรับค่าเล็ก ๆ ของ ) และคือค่า -bit แบบสุ่ม ถ้ามีประมาณx k k y k φชั่วโมงxkkYkφมอบหมายงานที่น่าพอใจ 2 kดังนั้น (heuristically) เราคิดว่า ψจะมีการมอบหมายที่น่าพอใจอย่างแน่นอนหนึ่งครั้ง (ด้วยความน่าจะเป็นคงที่) เราสามารถทดสอบได้ว่านี่เป็นกรณีที่ใช้ตัวแก้ SAT หรือไม่ (คือทดสอบว่า ψพอใจหรือไม่ถ้าใช่และ x 0เป็นการมอบหมายที่น่าพอใจหรือไม่ให้ทดสอบ ψ ( x ) x2kψψx0เป็นที่น่าพอใจ) ถ้า kไม่เป็นที่รู้จักคุณสามารถหา kใช้ค้นหา binary หรือเพียงแค่การทำซ้ำที่สูงกว่ามูลค่าของผู้สมัครแต่ละ k = 1 , 2 , ... , n (โดยที่ nคือจำนวนของตัวแปรบูลีนใน x )ψ(x)xx0kkk=1,2,,nnx

คุณสามารถเลือกฟังก์ชันแฮชได้อย่างอิสระ คุณอาจต้องการทำให้มันง่ายที่สุดเท่าที่จะทำได้ หนึ่งการก่อสร้างที่ง่ายมากที่จะมีเลือกออกเป็นกลุ่มย่อยสุ่มของkบิตจากx สิ่งก่อสร้างที่ซับซ้อนกว่าเล็กน้อยคือการให้บิตที่iของh ( x )เป็น xor ของบิตที่เลือกสุ่มสองบิตจากx (เลือกตำแหน่งบิตคู่แยกต่างหากสำหรับแต่ละiอิสระ) การรักษาh ให้ง่ายจะทำให้ψค่อนข้างง่ายhkxผมชั่วโมง(x)xผมชั่วโมงψ

การแปลงรูปแบบนี้บางครั้งใช้ / แนะนำซึ่งเป็นส่วนหนึ่งของรูปแบบการประมาณจำนวนการมอบหมายที่พอใจให้กับสูตร ; ฉันได้ปรับมันสำหรับความต้องการเฉพาะของคุณφ

คุณสามารถค้นหาอินสแตนซ์ SAT จำนวนมากบนอินเทอร์เน็ตและคุณสามารถใช้การแปลงนี้กับพวกมันทั้งหมดเพื่อรับชุดอินสแตนซ์Unique -SATk


ความเป็นไปได้อีกอย่างก็คือการสร้างอินสแตนซ์ -SAT ที่ไม่ซ้ำจากการเข้ารหัส ตัวอย่างเช่นสมมติว่าf : { 0 , 1 } n{ 0 , 1 } nคือการเปลี่ยนรูปแบบทางเดียวแบบเข้ารหัส ให้xเป็นองค์ประกอบของการสุ่มเลือก{ 0 , 1 } nและให้Y = F ( x ) จากนั้นสูตรφ ( x ) ที่กำหนดโดยf ( x ) =k:{0,1}n{0,1}nx{0,1}nY=(x)φ(x)เป็นอินสแตนซ์ k -SAT ที่ไม่ซ้ำกัน เป็นอีกหนึ่งตัวอย่างเลือกสองตัวเลขที่สำคัญขนาดใหญ่ P , Qสุ่มและให้ n = P Q จากนั้นสูตร φ ( x , y ) ที่ได้รับจาก x y = n x > 1 y > 1 x y (มีการติดต่อที่ชัดเจนระหว่างบิตสตริงและจำนวนเต็ม) เป็นเอกลักษณ์ k(x)=Ykพี,Qn=พีQφ(x,Y)xy=nx>1y>1xyk-SAT อินสแตนซ์ อย่างไรก็ตามสิ่งปลูกสร้างเหล่านี้ดูเหมือนจะไม่เป็นวิธีที่มีประโยชน์ในการเปรียบเทียบหรือเพิ่มประสิทธิภาพตัวแก้ปัญหาของคุณ พวกเขาทั้งหมดมีโครงสร้างพิเศษและไม่มีเหตุผลที่จะเชื่อว่าโครงสร้างนี้เป็นตัวแทนของปัญหาในโลกแห่งความจริง โดยเฉพาะอย่างยิ่งอินสแตนซ์ SAT ที่ดึงมาจากปัญหาการเข้ารหัสลับนั้นเป็นที่ทราบกันดีว่าหนักมากยิ่งกว่าอินสแตนซ์ SAT ที่ดึงมาจากแอปพลิเคชันอื่น ๆ ในโลกแห่งความจริงในการแก้ปัญหา SAT ดังนั้นจึงไม่ใช่พื้นฐานที่ดี


โดยทั่วไปเทคนิคทั้งหมดที่กล่าวถึงในคำตอบนี้มีข้อเสียเปรียบที่พวกเขาสร้างอินสแตนซ์ -SAT ที่ไม่ซ้ำกับโครงสร้างเฉพาะดังนั้นพวกเขาอาจไม่ได้เป็นสิ่งที่คุณกำลังมองหา - หรืออย่างน้อยคุณอาจไม่ต้องการพึ่งพา แต่เพียงผู้เดียวกับสูตรที่สร้างด้วยวิธีนี้ แนวทางที่ดีกว่าคือการระบุแอปพลิเคชันของ Unique k -SAT (คุณคิดว่าใครจะใช้ตัวแก้ปัญหาของคุณและเพื่อจุดประสงค์อะไร) จากนั้นลองรับตัวอย่างจริงจากโดเมนแอปพลิเคชันเหล่านั้นkk

สำหรับหัวข้อที่เกี่ยวข้องดูที่การสร้างปัญหาการปรับให้เหมาะสมแบบ Combinatorial ที่น่าสนใจ


ส่วนแรกของย่อหน้า crypto ของคุณผิดเนื่องจาก (หากมีฟังก์ชั่นทางเดียวอยู่) มีฟังก์ชันทางเดียวที่ไม่มีการฉีด

ขอบคุณ @RickyDemer! ฉันหมายถึงการเปลี่ยนแปลงแบบทางเดียว แต่นั่นไม่ใช่สิ่งที่ฉันเขียน แก้ไขแล้ว.
DW

6

คุณอาจพิจารณาอัลกอริธึมที่ใช้ในการสร้างตัวต่อซูโดกุซึ่งสันนิษฐานว่าเป็น - เนื่องจาก (โดยปกติ) ตัวต่อของซูโดกุนั้นควรจะมีวิธีแก้ปัญหาที่ไม่เหมือนใคร ในทางกลับกันปริศนาของ Sudoku มักจะรับประกันว่าจะมีวิธีแก้ปัญหาอย่างน้อยหนึ่งอย่าง ... แต่การหาวิธีแก้ปัญหานั้นอาจเป็นเกณฑ์มาตรฐานที่ดีสำหรับนักแก้ปัญหาของคุณn×n

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

การอ้างอิงที่หนึ่งที่ผมรู้ว่านี่คือปริศนาซูโดกุผลิต: จากง่ายไปชั่วร้าย


4

ฉันคิดว่ากรณีทดสอบที่ดีคือการสร้างอินสแตนซ์ 3XOR ที่น่าพอใจแบบไม่ซ้ำกัน (อินสแตนซ์ที่ปลูก) ด้วยข้อ จำกัดจากนั้นแปลงเป็นอินสแตนซ์ 3SATΘ(n)


2

imho วิธีที่ดีที่สุดวิธีหนึ่งในการสร้างอินสแตนซ์ SAT "ที่คาดเดายาก" ในขณะที่การควบคุมจำนวนโซลูชันนั้นมาจากอินสแตนซ์ / วงจรแฟคตอริ่งจำนวนเต็มที่เข้ารหัสในไบนารี รหัสไม่ซับซ้อนมากนักส่วนใหญ่ใช้วงจรเพิ่ม EE ส่วนใหญ่และไม่นำไปสู่อินสแตนซ์ "ใหญ่" SAT จำนวนการแก้ปัญหาเท่ากับจำนวนปัจจัย (รวมถึง "การเปลี่ยนแปลง" ของปัจจัย) ดังนั้นตัวเลขที่สำคัญสร้างตรงสองโซลูชั่น ) การแก้ปัญหาเดียวสามารถรับประกันกับอีก "เปรียบเทียบ" ข้อ จำกัด ที่ จำกัด ปัจจัยที่<(1,p),(p,1)a<ba1พีbp

ด้วยวิธีนี้มันค่อนข้างง่ายที่จะหาตัวเลขที่มีประมาณอย่างไรก็ตามปัจจัย / โซลูชั่นที่ต้องการ "นุ่มนวล"จำนวนที่ปัจจัยอื่น ๆ อีกมากมาย

นักวิจัยหลายคนในช่วงหลายปีที่ผ่านมาได้สร้างรหัส SAT สำหรับแฟคตอริ่งนี้ (เช่นสำหรับการแข่งขัน DIMACS / arcihve ซึ่งได้เก็บอินสแตนซ์ของแฟคตอริ่งในอดีต) แต่น่าเสียดายที่ดูเหมือนจะไม่มีรุ่นสาธารณะ ดูลิงค์ที่ 1 ด้านล่างสำหรับการอ้างอิงว่าโค้ดถูกเขียน / นำไปใช้อย่างไรในหลักสูตรบัณฑิตศึกษา

อีกเชิงประจักษ์ / วิธีการซ้ำที่อาจเป็นประโยชน์สำหรับบางคนที่จะสร้างเพิ่มเติม "ที่ไม่มีโครงสร้าง" อินสแตนซ์: สร้างอินสแตนซ์ SAT สุ่มที่อยู่ใกล้กับจุดการเปลี่ยนแปลง (ภูมิภาคที่สมมีความน่าจะเป็น 50% ระหว่าง "แก้ปัญหาและแก้ไม่ได้") และ จากนั้นจึงแก้สมการ หากไม่สามารถแก้ไขได้ให้ทิ้งและรีสตาร์ท หากสามารถแก้ไขได้ให้เพิ่มส่วนคำสั่งที่ จำกัด การแก้ปัญหา "ไม่" เป็นโซลูชันที่พบได้รับe n + 1และแก้ปัญหาอีกครั้ง ทำซ้ำหากจำเป็น เมื่อสมการE n + 1จะไม่แก้ปัญหาที่E nจะต้องมีการแก้ปัญหาเดียว / ไม่ซ้ำกันenen+1en+1en


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

ดังนั้นข้างต้นเป็น POV ที่แตกต่างกันว่าถ้าใครต้องการอินสแตนซ์ที่ยากมากเห็นได้ชัดว่าเป็นกรณีทดสอบตามธรรมชาติสำหรับนักแก้ปัญหาใด ๆ การเลือกแฟคตอริ่งเป็นวิธีที่ดี สงสัยอย่างจริงจังว่าคุณสามารถค้นหาความคิดเห็นที่เผยแพร่ใด ๆ ที่สะท้อนถึงคุณ ในการทำซ้ำอินสแตนซ์แฟคตอริ่งได้รับการจัดเก็บในเอกสารท้าทายของ DIMACS โดยนักวิจัยที่จริงจังเริ่มต้นเมื่อหลายปีก่อน อย่างไรก็ตามความเห็นที่ตรงกันข้ามของคุณยังไม่ได้แสดงออกอย่างสอดคล้องกัน การเข้ารหัสนั้นเป็นปัญหาที่สำคัญที่สุด / นำไปใช้ในโลกแห่งความเป็นจริงมากกว่าปัญหาที่เป็นนามธรรม / ลึกซึ้ง / ปัญหาทางวิชาการที่ใช้สำหรับกรณีของอินสแตนซ์ ...
vzn

2

คุณสามารถสร้างสูตร SAT ที่ไม่ซ้ำกันโดยตรงได้อย่างง่ายดายด้วยขนาดที่เหมาะสม(|F|<n+2k)

ให้เป็นรูปแบบที่ไม่เหมือนใคร - บอกว่าmมีเพียง "0" (เปลี่ยนชื่อตัวแปรในภายหลังถ้าจำเป็น) ให้F a k -สูตร SAT พอใจเพียงmเท่านั้น- ขนาดสูงสุดของFคือจำนวนประโยคทั้งหมดที่mพึงพอใจโดยmคือ( 2 k - 1 ) ( nม.ม.
Fkม.Fม. )(2k-1)(nk)

ใช้เวลาที่กำจัดโมเดลทั้งหมดที่กำหนด "1" หนึ่งตัวในหมู่x1,x2xk:(¬x1,x2xk)((k1)x1,x2...xk
(¬x1,x2...xk)(x1,¬x2...xk)...(x1,x2...¬xk)

ใช้เวลาที่กำจัดโมเดลทั้งหมดที่กำหนด "1" สองตัวในหมู่x1,x2xk:(¬x1,¬x2,x3xk)(¬x1,x2(k2)x1,x2...xk
(¬x1,¬x2,x3...xk)(¬x1,x2,¬x3...xk)...(x1,x2...¬xk-1¬xk)

ไปเรื่อย ๆ จนกว่าจะถ่ายอย่างเดียวข้อที่ช่วยขจัดทุกรูปแบบการกำหนด "1" ให้กับแต่ละตัวแปรในหมู่x1,x2...xk(kk)x1,x2...xk

รุ่นเดียวที่ยังไม่ได้ตัดกำหนดทั้งหมดเป็น "0" เนื่องจากmเป็นแบบจำลองจากนั้นนำชุดของประโยคn - kใด ๆที่กำจัดโมเดลทั้งหมดที่กำหนด "1" ให้กับx i ( k < i n )และ0ถึงตัวแปรk - 1ใด ๆระหว่างx 1 , x 2x kตัวอย่างเช่น: ( ¬ x k + 1x1,x2...xkม.n-kxผม(k<ผมn)0k-1x1,x2...xk
)(¬xk+1,x1...,xk-1)...(¬xn,x1...xk-1)

จากนั้น|F|=i=1k(ki)+nk=2k1+nk

ในการรับส่วนเพิ่มเติมให้เพิ่มส่วนคำสั่งที่มีตัวแปรที่คัดค้านอย่างน้อยหนึ่งตัว เพื่อให้ได้สูตร unsatisfiable เพียงเพิ่มประโยคหนึ่งกับตัวแปร unnegatedk


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