การค้นหาไบนารีทั่วไปสำหรับโพสต์?


28

สมมติว่าฉันมี poset "S" และ monotonic predicate "P" บน S ฉันต้องการค้นหาองค์ประกอบหนึ่งหรือทั้งหมดของ S ที่น่าพอใจ P

แก้ไข : ฉันสนใจในการลดจำนวนของการประเมินผลของ P

มีอัลกอริทึมใดที่มีอยู่สำหรับปัญหานี้และคุณสมบัติและการดำเนินการเพิ่มเติมใดบ้างที่พวกเขาต้องการใน S

สิ่งที่เกี่ยวกับกรณีพิเศษที่สำคัญเช่น:

  • S คือลำดับเชิงเส้น - จากนั้นการค้นหาแบบไบนารีปกติจะทำงานตราบใดที่คุณมีการดำเนินการ "find middle"
  • S คือขัดแตะ
  • S เป็นโครงร่างย่อย
  • S คือตาข่ายหลายชุด
  • ...

ทั้งสองกรณีหลังมีความสำคัญเป็นพิเศษเช่นสำหรับการออกแบบการทดสอบ - คุณมีชุดบูลีนหรือพารามิเตอร์จริงและคุณต้องการค้นหาชุดค่าผสมที่เล็กที่สุดเท่าที่จะเป็นไปได้ที่สร้างรูปแบบเฉพาะ (เช่นการทดสอบที่ล้มเหลว)


1
ตาข่าย 'มัลติเซ็ต' คืออะไร
Suresh Venkat

1
มันเป็นโครงตาข่ายที่มีองค์ประกอบคือการทำแผนที่ X -> N, พบคือนาทีทวนเข็มนาฬิกาและเข้าร่วมเป็นองค์ประกอบสูงสุด มันสามารถวางนัยให้กับโครงร่างใด ๆ แทน N เป็นโคโดเมน
jkff

คำตอบ:


15

ฉันไม่ได้คิดเรื่องนี้มากนักดังนั้นโปรดแก้ไขให้ฉันถ้าฉันผิด

บอกว่าคือความกว้างของโพสต์W

  1. สำหรับ poset ซึ่งเป็นสหภาพของ disjoint chains คุณต้องมีการประเมินอย่างน้อยw log nของPเพียงแค่ใช้ขอบเขตล่างมาตรฐานบนความซับซ้อนของแบบสอบถามของการค้นหาแบบไบนารีกับแต่ละ chainWWเข้าสู่ระบบnP

  2. เมื่อคุณทำการเปรียบเทียบฟรีคุณสามารถคำนวณการสลายตัวของลูกโซ่ของ poset ให้เป็นโซ่ได้ฟรี จะค้นหาไบนารีในแต่ละห่วงโซ่การระบุองค์ประกอบแรกที่ตอบสนองP จากนั้นไปที่องค์ประกอบที่ระบุและลบองค์ประกอบที่ครอบงำ จำนวนการประเมินผลของPคือO ( W บันทึกn ) สิ่งนี้จะระบุองค์ประกอบสูงสุดทั้งหมดเนื่องจากอาจมีองค์ประกอบสูงสุดได้สูงสุดหนึ่งรายการต่อห่วงโซ่WPPO(Wเข้าสู่ระบบn)


เพิ่ม:จริง ๆ แล้วฉันเห็นอัลกอริทึมแบบเรียกซ้ำง่าย ๆ เพื่อทำดีกว่า ( ) สำหรับโครงข่ายย่อย2 [ n ] ( แก้ไข : domotor อธิบายกลยุทธ์ทั่วไปในคำตอบของเขา) ที่นี่ฉันกำลังสมมติว่าPเป็นแบบโมโนโทน (เช่นเซตย่อย{ X : P ( X ) = 1 }เป็นชุดล่าง) ซึ่งฉันคิดว่าคุณหมายถึงอะไร ดังนั้นนี่คืออัลกอริทึมในการค้นหาสมาชิกชุดล่าง:O(n)2[n]P{X:P(X)=1}

ก) การทดสอบ ) ถ้าเป็น 0 ให้หยุดP()

ข) การทดสอบ ) P({n})

bi) ถ้าเป็น 0 ให้หักค่าเป็น (ตกลงเนื่องจากไม่มีชุดที่มีnอยู่ในชุดล่าง)2[n1]n

b.ii) ถ้า 1 แล้วมีอยู่เป็นสมาชิกของชุดที่ต่ำกว่าใน sublattice } โครงสร้างย่อยนี้ isomorphic ถึง2 [ n - 1 ]ดังนั้นเราสามารถเรียกคืนได้อีกครั้ง แม่นยำยิ่งขึ้นเราสามารถเรียกใช้อัลกอริทึมสำหรับ2 [ n{X:nX}2[n-1]แต่เมื่อขั้นตอนวิธีการถามเพื่อประเมินP(Y)เราประเมินP(X)ที่X=Y{n}2[n-1]P(Y)P(X)X=Y{n}

ดังนั้นในแต่ละขั้นตอนเราจึงเรียกเก็บเงินใหม่จาก sublattice ซึ่งมีขนาดครึ่งหนึ่งของขนาดดั้งเดิม โดยรวมแล้วเราจำเป็นต้องประเมินมากที่สุด2 nครั้ง (อันที่จริงคุณสามารถใช้อัลกอริทึมเพื่อประเมินเพรดิเคตn + 1เท่าที่โยชิโอชี้ให้เห็นเนื่องจากคุณเพียงแค่ตรวจสอบครั้ง)P2nn+1


ว้าวช่างเป็นไอเดียง่ายๆ! ขอบคุณ - ฉันจะให้ความคิดที่ว่านี้ดูเหมือนว่าดีที่สุดหรือไม่ :)
jkff

มันน้อยกว่า w log n เนื่องจากผลรวมของความยาวโซ่คือ n ฉันเดาได้มากที่สุดคือประมาณ w log (n / w)
jkff

ตกลงสำหรับคำสั่งซื้อแบบเชิงเส้นสิ่งนี้ให้การค้นหาแบบไบนารีสำหรับตาข่ายย่อยชุดนี้จะให้บันทึก C (n, n / 2) (2 ^ n / C (n, n / 2)) ~ exp (n) * n ไม่เร็วเกินไป แต่ก็ดูไม่ดีเกินไปเช่นกันเพราะอาจมีคำตอบมากมาย อย่างไรก็ตามในการค้นหาชุดย่อยสูงสุดหนึ่งชุดคุณจำเป็นต้องค้นหาแบบไบนารี่ผ่านเชนใดอันหนึ่ง - นี่ยอดเยี่ยมมากและตอนนี้ฉันเรียกตัวเองว่าโง่เพราะไม่ได้คิดถึงมัน ขอบคุณอีกครั้ง!
jkff

2
ผมคิดว่าโซ่เคล็ดให้คุณผูกพันลดลงอย่างน้อยW + บันทึกn (สำหรับขั้นตอนวิธีการที่กำหนด) คิดว่ามีศัตรูที่ "ซ่อน" ทางออกเดียวในห่วงโซ่สุดท้ายที่สอบถาม ขอบเขตล่างแบบสุ่มของΩ ( w )ควรเป็นไปตามหลักการขั้นต่ำของเหยา การค้นหาองค์ประกอบเดียวที่มีความซับซ้อนด้วยlog + nอาจน่าสนใจ WW+เข้าสู่ระบบnΩ(W)W+เข้าสู่ระบบn
Sasho Nikolov

1
@ YanKingYin ขัดแตะไม่สามารถรวมกันของโซ่ (มากกว่าหนึ่ง) โซ่เพราะแต่ละองค์ประกอบจะต้องมี supremum poset คือการรวมกลุ่มของ disjoint chains หากสามารถแบ่งพาร์ติชันเพื่อให้องค์ประกอบจากส่วนต่าง ๆ หาที่เปรียบมิได้และองค์ประกอบภายในส่วนเดียวกันยอมรับใบสั่งทั้งหมด
Sasho Nikolov

9

ถ้าเป็นต้นไม้ดังนั้นจะมีอัลกอริธึมเวลาพหุนามที่สร้างแผนภูมิการตัดสินใจที่ดีที่สุดP

ลักษณะทั่วไปของการค้นหาแบบไบนารี: ค้นหาในต้นไม้และคำสั่งซื้อบางส่วนเหมือนป่า


8

หนึ่งกระดาษที่ผ่านมาโดย Daskalakis et al, แสดงให้เห็นว่าสำหรับ poset ขนาดและความกว้างWองค์ประกอบน้อยที่สุดสามารถพบได้ในเวลาnw ) สิ่งที่น่าสนใจคือในนามธรรมพวกเขาพูดว่าO(wn)

นอกจากนี้ยังเป็นที่น่าสนใจในการค้นหาโครงสร้างข้อมูลแบบคงที่และแบบไดนามิกที่มีบทบาทเดียวกันสำหรับคำสั่งบางส่วนที่ฮีปและแผนภูมิการค้นหาแบบไบนารี่เล่นสำหรับคำสั่งซื้อทั้งหมด


เฮ้ฟังดูไม่แรงบันดาลใจเมื่อเทียบกับ log (n) :) แต่ขอบคุณมาก ๆ !
jkff

แต่นั่นคือประเด็น หากไม่มีโครงสร้างข้อมูลคุณจะไม่สามารถรับ log n ได้แม้จะเป็นชุดคำสั่งทั้งหมดเพราะคุณสามารถสแกนได้ จริงๆแล้วมันเป็นคำถามที่ดีมากที่จะลองและหา BST ที่เทียบเท่ากัน
Suresh Venkat

ดี - ฉันกำลังพูดถึงความซับซ้อนในแง่ของจำนวนการประเมินของเพรดิเคต P ไม่ใช่การเปรียบเทียบของเพรดิเคต
jkff

1
ในแง่ใช่ แต่ก็ยังห่างไกลจากการเป็นคำตอบที่สมบูรณ์ - เช่นมันไม่ได้ให้การแบ่งเป็นสองส่วนสำหรับกรณี 1d หรือ 2d :) คุณแนะนำให้ทำอย่างไรกับราก
jkff

1
ยังไม่แน่ใจ. คิดออกมาดัง ๆ แต่มันเป็นคำถามที่ยอดเยี่ยม
Suresh Venkat

4

ถ้า S เป็นส่วนหนึ่งของอินพุตดังนั้นปัญหาในการค้นหาองค์ประกอบสูงสุดแล้วจะกลายเป็น `` NP-hard '' (ถ้าเราคิดว่าโครงตาข่ายนั้นองค์ประกอบนั้นเป็นสตริงที่มีความยาว n บิต) เช่นคุณสามารถพูดว่าถ้า CNF (x) ไม่เป็นความจริงและ CNF (y) เป็นจริงสำหรับ CNF บางตัวx<y

นอกจากนี้อาจมีองค์ประกอบสูงสุดจำนวนมากที่ทำให้ P พอใจดังนั้นแม้ว่าการส่งออกทั้งหมดอาจใช้เวลานานดังนั้นฉันคิดว่ามีเพียงหวังว่าจะพบหนึ่งสูงสุด

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

เช่น. ถ้า S เป็นกริดมิติคงที่ก็มีอัลกอริทึมที่รวดเร็ว: ลดพิกัดหนึ่งตำแหน่งลงในขณะที่รักษาค่าอื่น ๆ ให้น้อยที่สุดดังนั้นถามเช่นในขั้นตอนแรก (n / 2,0, ... , 0)

ทฤษฎีบทที่เกี่ยวข้องที่สำคัญอย่างหนึ่งคือทฤษฎีบทจุดคงที่ของ Tarski แทนที่จะเป็น P คุณต้องใช้การทำแผนที่แบบโมโนโทนจากตาข่ายไปยังตัวมันเอง ทฤษฎีบทบอกว่าจุดคงที่เป็นรูปประกอบขัดแตะ เราพิสูจน์ด้วย Jaroslaw Byrka และ Paul Duetting ว่าในการตั้งค่านี้ถ้า lattice เป็น d-dimension grid คุณสามารถหาจุดคงที่ได้ในเวลาประมาณโดยอัลกอริธึมเป็นการค้นหาไบนารีแบบง่ายnd


ฉันเกรงว่าฉันไม่เข้าใจย่อหน้าแรก ในการลดลงของคุณคุณมีสตริง n-bit ทั้งหมดใน poset S และได้รับเป็นส่วนหนึ่งของอินพุตหรือไม่ ถ้าเป็นเช่นนั้นเราสามารถผ่านสายทั้งหมดในเวลาพหุนาม
โยชิโอะโอกาโมโตะ

1
@YoshioOkamoto: ฉันคิดว่าข้อสันนิษฐานในย่อหน้านั้นคือการเปรียบเทียบใน S นั้นได้รับเป็นวงจรบูลีน (แต่นั่นไม่เกี่ยวอะไรกับการค้นหาในกองทหารดังนั้นฉันจึงไม่น่าสนใจ)
Tsuyoshi Ito

@Tsuyoshi: ขอบคุณ นั่นทำให้รู้สึกมาก
โยชิโอะโอกาโมโตะ

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