ฉันไม่ได้คิดเรื่องนี้มากนักดังนั้นโปรดแก้ไขให้ฉันถ้าฉันผิด
บอกว่าคือความกว้างของโพสต์w
สำหรับ poset ซึ่งเป็นสหภาพของ disjoint chains คุณต้องมีการประเมินอย่างน้อยw log nของPเพียงแค่ใช้ขอบเขตล่างมาตรฐานบนความซับซ้อนของแบบสอบถามของการค้นหาแบบไบนารีกับแต่ละ chainwwlognP
เมื่อคุณทำการเปรียบเทียบฟรีคุณสามารถคำนวณการสลายตัวของลูกโซ่ของ poset ให้เป็นโซ่ได้ฟรี จะค้นหาไบนารีในแต่ละห่วงโซ่การระบุองค์ประกอบแรกที่ตอบสนองP จากนั้นไปที่องค์ประกอบที่ระบุและลบองค์ประกอบที่ครอบงำ จำนวนการประเมินผลของPคือO ( W บันทึกn ) สิ่งนี้จะระบุองค์ประกอบสูงสุดทั้งหมดเนื่องจากอาจมีองค์ประกอบสูงสุดได้สูงสุดหนึ่งรายการต่อห่วงโซ่wPPO(wlogn)
เพิ่ม:จริง ๆ แล้วฉันเห็นอัลกอริทึมแบบเรียกซ้ำง่าย ๆ เพื่อทำดีกว่า ( ) สำหรับโครงข่ายย่อย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[n−1]n
b.ii) ถ้า 1 แล้วมีอยู่เป็นสมาชิกของชุดที่ต่ำกว่าใน sublattice } โครงสร้างย่อยนี้ isomorphic ถึง2 [ n - 1 ]ดังนั้นเราสามารถเรียกคืนได้อีกครั้ง แม่นยำยิ่งขึ้นเราสามารถเรียกใช้อัลกอริทึมสำหรับ2 [ n{ X: n ∈ X}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เท่าที่โยชิโอชี้ให้เห็นเนื่องจากคุณเพียงแค่ตรวจสอบ∅ครั้ง)P2 nn + 1∅