พยายามอนุญาตการจัดเก็บรายการองค์ประกอบอย่างมีประสิทธิภาพ คำนำหน้าจะใช้ร่วมกันดังนั้นจึงเป็นพื้นที่ที่มีประสิทธิภาพ
ฉันกำลังมองหาวิธีที่คล้ายกันในการจัดเก็บต้นไม้อย่างมีประสิทธิภาพ ฉันต้องการที่จะตรวจสอบการเป็นสมาชิกและเพิ่มองค์ประกอบโดยรู้ว่าต้นไม้ที่กำหนดเป็นต้นไม้ย่อยของต้นไม้ที่เก็บไว้หรือถ้ามีต้นไม้ที่เก็บไว้เป็นต้นไม้ย่อยของต้นไม้ที่กำหนดก็เป็นที่ต้องการเช่นกัน
ฉันมักจะเก็บต้นไม้ไบนารีที่มีความสูงไม่สมดุลประมาณ 500 ต้นน้อยกว่า 50
แก้ไข
แอปพลิเคชันของฉันเป็นตัวตรวจสอบรุ่นบางประเภทโดยใช้การบันทึกความจำบางประเภท ลองนึกภาพผมมีรัฐและสูตรต่อไปนี้: F = φและกรัม= ( φ ∨ ψ )กับφเป็น subformula ซับซ้อนและจินตนาการแรกที่ผมต้องการทราบว่าฉถืออยู่ในs ฉันจะตรวจสอบว่าϕถือครองและหลังจากกระบวนการที่มีความยาวฉันได้รับมันเป็นกรณี ทีนี้ฉันอยากรู้ว่าgมีsหรือไม่ ฉันต้องการจดจำความจริงที่ว่าfเก็บไว้และสังเกตว่าg ⇒ fเพื่อที่ฉันจะได้ค่าในsเกือบจะในทันที
ในทางกลับกันถ้าฉันได้พิสูจน์แล้วว่าgไม่ถือในtฉันก็อยากจะบอกว่าfไม่ถือในtเกือบจะทันที
เราสามารถสร้างคำสั่งซื้อบางส่วนเกี่ยวกับสูตรและมี IFF กรัม⇒ฉ แต่ละรัฐsเราเก็บสองชุดของสูตร; L ( s ) จัดเก็บสูตรสูงสุดที่เก็บไว้และl ( s ) จะจัดเก็บสูตรขั้นต่ำที่ไม่ได้เก็บไว้ ตอนนี้ได้รับการรัฐsและสูตรกรัมผมสามารถดูได้ว่า∃ ฉ∈ L ( s ) , ฉ⇒ กรัมหรือถ้า∃ ฉ∈ ลิตร( s )ในกรณีนี้ฉันเสร็จแล้วและฉันรู้โดยตรงว่า gถือใน sหรือไม่
ขณะนี้มีการใช้และlเป็นรายการและเห็นได้ชัดว่าไม่ได้ดีที่สุดเพราะฉันต้องวนซ้ำสูตรที่เก็บไว้ทั้งหมดทีละรายการ ถ้าสูตรของฉันเป็นลำดับและถ้าคำสั่งบางส่วนเป็น "เป็นคำนำหน้า" แล้วทั้งคู่จะสามารถพิสูจน์ได้เร็วขึ้นมาก น่าเสียดายที่สูตรของฉันมีโครงสร้างคล้ายต้นไม้ที่ขึ้นอยู่กับ¬ , ∧ , ตัวดำเนินการเป็นกิริยาช่วยและข้อเสนออะตอม
@Raphael และ @Jack ชี้ให้เห็นว่าฉันสามารถเรียงลำดับต้นไม้ได้ แต่ฉันกลัวว่ามันจะไม่แก้ปัญหาเพราะลำดับที่ฉันสนใจบางส่วนจะไม่สอดคล้องกับ "เป็นคำนำหน้า"