การตรวจจับวงจรที่คล้ายกันในฟังก์ชั่นและการใช้งาน


11

ให้เป็นเวกเตอร์ของตัวแปรบูลีน Let C , Dเป็นสองวงจรบูลในx พูดว่าCคล้ายกับDถ้า:x=(x1,,xn)C,DxCD

  1. นั้นเล็กมากเมื่อ xถูกสุ่มอย่างสม่ำเสมอจาก { 0 , 1 } n (กล่าวอีกนัยหนึ่งพวกมันมีฟังก์ชั่นเกือบเหมือนกัน); และ,Pr[C(x)D(x)]x{0,1}n

  2. แตกต่างกันในระยะแก้ไขกราฟโดยจำนวนเล็กน้อย (ระยะแก้ไขของพวกเขามีขนาดเล็กกว่าขนาดของวงจร, พูด, O ( 1 )หรือค่าคงตัวเล็ก ๆ ), หมายความว่าเกือบทั้งหมดของประตูและสายของ Cตรงกัน gate และ wire ที่สอดคล้องกันใน Dโดยเพิ่ม / ลบ / เปลี่ยนแปลงเพียงไม่กี่ประตูC,DO(1)CD


ปัญหาของฉัน: ฉันได้รับวงจรและฉันต้องการที่จะทราบว่ามีอยู่วงจรDที่คล้ายกับCแต่ไม่เหมือนกันกับC (เช่นที่มีอยู่xดังกล่าวว่าC ( x ) D ( x ) ) .CDCCxC(x)D(x)

ใครช่วยแนะนำอัลกอริทึมในการแก้ปัญหานี้ได้บ้าง

ถ้ามันจะช่วยให้เราสามารถ จำกัด การให้ความสนใจกับวงจรที่มีขนาดเล็กกว่าวงจรC (กล่าวคือเราต้องการที่จะทราบว่ามีอยู่วงจรDดังกล่าวว่าDมีขนาดเล็กกว่าC , Dจะคล้ายกับCและมีอยู่xเช่นนั้นC ( x ) D ( x ) )DCDDCDCxC(x)D(x)

ถ้ามันจะช่วยให้คุณยังสามารถสันนิษฐานได้ว่าเราจะได้รับกรณีทดสอบที่รู้จักกันดีดังกล่าวว่าC ( x ฉัน ) = Y ฉันทั้งหมดของฉันและเราสามารถเพิ่มข้อ จำกัด ให้ความสนใจกับวงจรเพียงDเช่นที่D ( x ฉัน ) = Y ฉันทั้งหมดของฉันx1,,xm,y1,,ymC(xi)=yiiDD(xi)=yii


สิ่งนี้เกิดขึ้นจากแอปพลิเคชันที่ใช้งานได้จริงดังนั้นหากคุณไม่สามารถแก้ปัญหานี้ได้โปรดอย่าลังเลที่จะแก้ไขตัวแปรหรือกรณีพิเศษที่น่าสนใจ ตัวอย่างเช่นอย่าลังเลที่จะยกตัวอย่างพารามิเตอร์หรือขีด จำกัด ใด ๆ ในวิธีที่สะดวกสำหรับคุณ คุณสามารถสันนิษฐานได้ว่าวงจรนั้นไม่ใหญ่เกินไป (พหุนามขนาดหรือบางอย่าง) อย่าลังเลที่จะแทนที่ระยะทางแก้ไขกราฟโดยการวัดอื่นที่ใกล้เคียงกับการใช้งาน นอกจากนี้ในทางปฏิบัตินักแก้ปัญหา SAT มักจะมีประสิทธิภาพอย่างน่าประหลาดใจในวงจรโครงสร้างที่เกิดขึ้นในทางปฏิบัติดังนั้นจึงเป็นเรื่องดีที่จะเรียกใช้ตัวแก้ SAT ในฐานะ subroutine / oracle (อย่างน้อยถ้าคุณเรียกใช้งานบางอย่างเช่น จากวงจรเช่น )C

อีกวิธีหนึ่งคือขาดขั้นตอนวิธีการใด ๆ ผมก็จะมีความสนใจในการดำรงอยู่คำถาม: สำหรับ "ค่าเฉลี่ย" วงจรสิ่งที่น่าจะเป็นที่มีอยู่บางส่วนDที่ตรงตามเกณฑ์ทั้งหมดหรือไม่ (ฉันหวังว่าความน่าจะเป็นนี้ต่ำมาก แต่ฉันก็ไม่รู้เลยว่าเป็นอย่างนั้น)CD


แอปพลิเคชันที่ใช้งานได้จริงคือการทดสอบว่าวงจรอาจมีไข่อีสเตอร์ลับๆ / ซ่อนอยู่ที่เป็นอันตรายหรือไม่ สมมติฐานของสิ่งที่แทรกเข้าไปอาจเป็นเช่นนี้ เราเริ่มต้นด้วยวงจร "สีทอง" Dซึ่งคำนวณการทำงานที่ต้องการและไม่มีแบ็คดอร์ที่ซ่อนอยู่ จากนั้นฝ่ายตรงข้ามทำให้มีการเปลี่ยนแปลงขนาดเล็กเพื่อการพัฒนาที่จะแนะนำลับๆที่ซ่อนอยู่ที่ได้รับการปรับเปลี่ยนวงจรC วัตถุประสงค์ของลับๆเพื่อเปลี่ยนฟังก์ชั่นที่คำนวณโดยDในบางวิธี ถ้าPr [ C ( x ) D ( x ) ]CDDCDPr[C(x)D(x)]ไม่เล็กเกินไปการเปลี่ยนแปลงสามารถตรวจพบได้โดยการทดสอบแบบสุ่มดังนั้นฝ่ายตรงข้ามอาจพยายามทำให้มีขนาดเล็กมาก ในทำนองเดียวกันถ้าCแตกต่างจากDในสถานที่มากเกินไปอาจสังเกตได้จากการตรวจสอบวงจรแบบสุ่มดังนั้นฝ่ายตรงข้ามอาจพยายามลดจำนวนการเปลี่ยนแปลง (และอาจมีชุดทดสอบของx i , y iคู่ที่แสดงอินสแตนซ์ของฟังก์ชันการทำงานที่ต้องการดังนั้นเรารู้ว่าไม่ว่าวงจร "ทอง" ใด ๆDจะเป็นไปตามD (Pr[C(x)D(x)]CDxi,yiDสำหรับ all i .) ในที่สุดเราจะได้รับวงจร C (แต่ไม่ใช่วงจร "ทอง" D ) และเราต้องการทราบว่า Cอาจเป็นรุ่นดัดแปลงของ Dบางตัวหรือไม่ ทำเพื่อแนะนำลับๆที่ซ่อนอยู่ของประเภทนี้D(xi)=yiiCDCD


มีบิตรวมเข้ากับวงจรกี่บิต? หากสิ่งนี้มีขนาดเล็กเพียงพอก็อาจทำให้รู้สึกถึงการทดสอบแบบละเอียดถี่ถ้วน
András Salamon

n2n

ใช้อัลกอริธึมทางพันธุกรรมในการโจมตีบางอย่างเช่นปัญหานี้ประจักษ์ ในกรณีนี้จะปรากฏอัลกอริทึมที่คุณระบุการทดสอบแบบสุ่มเป็นสิ่งที่ควรลอง ดูเหมือนว่าคุณไม่ได้อธิบายอะไรเลยว่า "แบ็คดอร์" ในวงจรคืออะไร (ดูเหมือนว่าจะมีการเชื่อมต่อแบบไม่มีการเข้ารหัส) แต่ขอบคุณที่ให้ความพยายามในการสร้างแรงจูงใจคำถามที่ดูเหมือนจะเป็นปฏิปักษ์ได้อย่างไร แทรกแบ็คดอร์บางขณะหลบเลี่ยงการตรวจจับโดยการทดสอบแบบสุ่ม? แต่สถานการณ์โดยรวมดูเหมือนจะไม่ได้กำหนดไว้อย่างสมบูรณ์
vzn

3
D(x)nCCCD1/2100
DW

f(x)g(x)

คำตอบ:


4

นี่เป็นเพียงความคิดเห็นเพิ่มเติมที่มาถึงใจของฉันทันทีหลังจากอ่านคำถาม:

  • ϕnx1,...,xnC

  • Cm=nky1,y2,...,ynkmCC=ϕy1...ym

  • DCD=C¬C

ϕDCxiyi=1myi=1

ดังนั้นหากคุณมีอัลกอริทึมที่มีประสิทธิภาพสำหรับปัญหาของคุณคุณสามารถแก้ปัญหาอินสแตนซ์ 3SAT ได้อย่างพอเพียง

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