ให้ชุดของชุดค้นหาชุดที่เล็กที่สุดที่ประกอบด้วยองค์ประกอบอย่างน้อยหนึ่งจากแต่ละชุด


15

เมื่อได้รับเซตของชุดฉันต้องการหาชุดซึ่งทุกชุดในมีองค์ประกอบของอย่างน้อยหนึ่งรายการ ฉันต้องการให้มีองค์ประกอบให้น้อยที่สุดเท่าที่จะเป็นไปได้ในขณะที่ยังคงเป็นไปตามเกณฑ์นี้แม้ว่าอาจมีเล็กที่สุดมากกว่าหนึ่งตัวที่มีคุณสมบัตินี้ (โซลูชันไม่จำเป็นต้องมีเอกลักษณ์) M S S M M MSMSSMMM

เป็นตัวอย่างที่เป็นรูปธรรมสมมติว่า setเป็นชุดธงประจำชาติและสำหรับแต่ละธงในองค์ประกอบคือสีที่ใช้ในธงประจำชาตินั้น สหรัฐอเมริกาจะมีและโมร็อกโกจะมี\} แล้วจะเป็นชุดของสีที่มีคุณสมบัติที่ว่าทุกชาติใช้ธงอย่างน้อยหนึ่งของสีในM( สีโอลิมปิกสีฟ้าสีดำสีแดงสีเขียวสีเหลืองและสีขาวเป็นตัวอย่างของมหรืออย่างน้อยก็ในปี 2463) S S S = { r e d , w h ฉันt e , b l u e } S = { r e d , g r e e n } M M MSSSS={Rอีd,Wชั่วโมงผมเสื้ออี,ล.ยูอี}S={Rอีd,ก.Rอีอีn}MMM

มีชื่อทั่วไปสำหรับปัญหานี้หรือไม่? มีอัลกอริทึม "ดีที่สุด" ที่ยอมรับสำหรับการค้นหาชุดหรือไม่ (ฉันสนใจวิธีการแก้ปัญหามากกว่าการปรับกระบวนการให้เหมาะสมกับความซับซ้อนในการคำนวณ)M


2
คุณอาจกำลังมองหาปัญหาปกชุด ?
Juho

@Juho ไม่มาก ในตัวอย่างของฉันปัญหาชุดฝาครอบจะหาชุดของธงดังกล่าวว่าสหภาพธงผู้ที่มีทั้งหมดของสีที่ใช้ในธงทั้งหมด ในทางตรงกันข้ามฉันกำลังมองหาบางอย่างที่จะพ่นออกมาเป็นรายการสีไม่ใช่รายการธงและฉันไม่ต้องการให้ชุดมีสีทุกสีที่เป็นไปได้ ฉันจะแหย่บริเวณนี้บนวิกิพีเดีย แต่ฉันคิดว่าคุณมีทางที่ถูกต้อง ขอบคุณ! M
bdesham

คำตอบ:


13

ปัญหาคือที่รู้จักกันดี NP-สมบูรณ์ปัญหาชุดกดปุ่ม มันเป็นเรื่องที่เกี่ยวข้องอย่างใกล้ชิดกับการติดตั้งฝาครอบ หลักฐานเอ็นพีบริบูรณ์สามารถพบได้ในคลาสสิกหนังสือ Garey และจอห์นสัน

หากคุณต้องการประมาณมันคุณอาจต้องการแปลอินสแตนซ์ของคุณเป็น Set-Cover ก่อนจากนั้นใช้อัลกอริทึมการประมาณสำหรับ Set-Cover อย่างไรก็ตามชุดปกไม่สามารถทำได้ใกล้เคียงโดยปัจจัยคงที่ในเวลาพหุนามเว้นแต่ P = NP ที่แสดงโดยลุนด์และ Yannakakis

หากคุณมีความสนใจในการแก้ปัญหาที่แน่นอนและปัจจัยการผลิตของคุณประพฤติอย่างผมจะแนะนำให้ใช้เวไนยคงพารามิเตอร์ เวลาทำงานอยู่ที่นี่ไม่เพียงแสดงในรูปของความยาวอินพุตnเท่านั้น แต่ยังรวมถึงพารามิเตอร์เพิ่มเติมkด้วย หากเวลาทำงานคือO((k)nO(1))เราจะเรียกอัลกอริทึมว่า FPT-algorithm ที่นี่(k)เป็นฟังก์ชั่นที่เพิ่มขึ้น ดังนั้นถ้าkคงที่เราจะมีอัลกอริทึม polytime บทแรกของหนังสือโดย Flum and Groheอธิบายถึงอัลกอริธึม FPT สำหรับชุดการกดปุ่ม (แม่นยำยิ่งขึ้นสำหรับชุดพี -card-hitting) อัลกอริทึมนั้นใช้งานง่ายและใช้วิธีการของแผนผังการค้นหาที่มีขอบเขต ยังคงต้องการที่จะพื้นที่มากในการอธิบายที่นี่โดยทั่วไปคุณทำลายลงที่จำเป็นในการค้นหาแรงเดรัจฉาน (?) เป็นชิ้นเล็ก ๆ (เมื่อkมีขนาดเล็ก)


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

1
bdesham คิดว่าแต่ละองค์ประกอบเป็นเซตของเซต รัน set cover บนอิลิเมนต์ - as-set input และอ่านหน้า wiki ที่ลิงก์ด้วยที่นี่
Sasho Nikolov

คุณสนใจวิธีแก้ปัญหาโดยประมาณหรือคุณต้องการคำตอบที่ถูกต้องหรือไม่?
A.Schulz

ฉันต้องการทางออกที่แน่นอน ชุดข้อมูลที่ฉันทำงานด้วยมีขนาดเล็กพอที่ฉันไม่คิดว่าน่าจะเป็นปัญหา
bdesham

1
@Keyser: คุณพูดถูก อย่างไรก็ตามเป็นเรื่องธรรมดาที่จะเชื่อมโยงปัญหาการตัดสินใจกับปัญหาการปรับให้เหมาะสมที่เกี่ยวข้องเนื่องจากเป็นปัญหาที่เกี่ยวข้องกับปัญหา NP-complete อย่างใกล้ชิด
A.Schulz

2

ความคิดที่จะช่วยถ้าจุดตัดของชุดทั้งหมดในในไม่ว่างแล้วคุณสามารถเลือกใด ๆ องค์ประกอบsในสี่แยกและตั้งM = { s } หากแยกเป็นที่ว่างเปล่าหาองค์ประกอบ (สี) ซึ่งเกิดขึ้นในชุดสูงสุดและแทนที่ทุกชุดในการที่จะเกิดขึ้นโดยเดี่ยว{ C } ทำเช่นนี้ต่อไปเรื่อย ๆ จนกระทั่งทุกองค์ประกอบของการนับมีค่าเท่ากับ1แล้วตั้งค่าMเป็นสหภาพของชุดที่เหลือ ตัวอย่างเช่นถ้าSเป็นชุดพลังงานของชุดAแล้วM = ASsM={s}{}1MSAM=A. ฉันอาจจะผิด


2

มีลักษณะที่เรย์ไรเตอร์ของ"ทฤษฎีของการวินิจฉัยจากหลักการแรก"ที่เขาให้อัลกอริทึมสำหรับการคำนวณชุดตีและนี้ทราบเพิ่มเติม"แก้ไข ..."

อัลกอริทึมที่รู้จักกันทั่วไปว่าเป็นอัลกอริทึม "hitting set tree" มันไม่ควรจะยากเกินไปที่จะค้นหาการใช้งาน คุณพูดถึงว่าคุณไม่สนใจรันไทม์มากเกินไป แต่การปรับให้เหมาะสมเช่นการเลิกใช้สาขาเร็วเป็นต้นนั้นค่อนข้างสำคัญสำหรับการติดตั้งและน่าสนใจเช่นกัน :)


2
คุณสามารถสรุปอัลกอริทึมเพื่อทำให้คำตอบของคุณมีตัวเองมากขึ้นได้หรือไม่ ลิงค์สามารถและจะทำลาย
Juho

0

หนึ่งในวิธีที่ดีกว่า (แน่นอนว่าเป็นวิธีที่ง่ายที่สุด) ในการแก้ปัญหาของ Set Cover / Hitting Set คือการเขียนโปรแกรมจำนวนเต็มแบบผสม นี้เกี่ยวข้องกับการสื่อสารสูตรการเขียนโปรแกรมจำนวนเต็มเพื่อแก้ปัญหาที่คุณเลือก

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