เป็นทางการให้s ( U , Q ) = { V | V ∈ UและV ⊆ Q } โดยที่U , Q , และVทั้งหมดเป็นตัวแทนของชุดและUโดยเฉพาะเจาะจงมากขึ้นแสดงชุดของชุด เพื่อเป็นตัวอย่างคุณอาจเป็นชุดของส่วนผสม (ชุด) ที่จำเป็นสำหรับสูตรอาหารต่าง ๆ ในตำราอาหารที่มีQแทนชุดส่วนผสมที่ฉันมีVแทนสูตรที่ฉันสามารถทำกับส่วนผสมเหล่านั้นได้ แบบสอบถามs ( U , Q) สอดคล้องกับคำถาม "ฉันสามารถทำอะไรกับส่วนผสมเหล่านี้ได้บ้าง?"
สิ่งที่ฉันกำลังมองหาคือการแสดงข้อมูลที่ดัชนีUในลักษณะที่สนับสนุนการสืบค้นที่มีประสิทธิภาพของs ( U , Q ) โดยที่Qและสมาชิกทั้งหมดของUจะมีขนาดเล็กเมื่อเทียบกับสหภาพของสมาชิกทั้งหมดของU . นอกจากนี้ฉันต้องการให้อัปเดตUอย่างมีประสิทธิภาพ(เช่นเพิ่มหรือลบสูตรอาหาร)
ฉันไม่สามารถช่วยได้ แต่คิดว่าปัญหานี้ต้องเข้าใจดี แต่ฉันไม่สามารถหาชื่อหรือข้อมูลอ้างอิงได้ ใครบ้างรู้กลยุทธ์ในการแก้ปัญหานี้อย่างมีประสิทธิภาพหรือสถานที่ที่ฉันสามารถอ่านเพิ่มเติมเกี่ยวกับเรื่องนี้?
เท่าที่ความคิดเกี่ยวกับการแก้ปัญหาหนึ่งคิดว่าผมคือการสร้างต้นไม้ตัดสินใจสำหรับชุดU ที่แต่ละโหนดในต้นไม้คำถาม "รายการส่วนผสมของคุณมีxหรือไม่" จะถูกถามด้วยx ที่เลือกเพื่อเพิ่มจำนวนสมาชิกของUที่ถูกกำจัดโดยคำตอบ เมื่อUได้รับการปรับปรุงทรีการตัดสินใจนี้จะต้องมีการปรับสมดุลใหม่เพื่อลดจำนวนคำถามที่จำเป็นในการค้นหาผลลัพธ์ที่ถูกต้อง อีกความคิดหนึ่งคือการเป็นตัวแทนของUด้วยสิ่งที่คล้ายกับบูลีนn -dimensional 'octree' (โดยที่nคือจำนวนของส่วนผสมเฉพาะ)
ฉันเชื่อว่า "สูตรใดบ้างที่สามารถทำด้วยส่วนผสมเหล่านี้ได้?" สามารถตอบได้โดยการใช้ผลิตภัณฑ์คาร์ทีเซียนของ (ชุดของส่วนผสมที่จำเป็นสำหรับ) สูตรในตำราอาหารที่มี powerset ของส่วนผสมที่มีและกรองคู่สั่งที่เกิดขึ้นสำหรับคู่ซึ่งองค์ประกอบทั้งสองเท่ากัน แต่นี่ไม่ใช่ โซลูชันที่มีประสิทธิภาพและสิ่งที่ฉันถามคือวิธีเพิ่มประสิทธิภาพการทำงานประเภทนี้ เราจะเขียนสิ่งนี้ใน SQL อย่างไรเพื่อให้มีประสิทธิภาพและ SQL ทำอะไรที่ทำให้สิ่งนี้มีประสิทธิภาพ
แม้ว่าฉันจะใช้ภาพประกอบตำราอาหารและชุดของส่วนผสมฉันคาดว่าจำนวนของ 'สูตร' และจำนวนของ 'ส่วนผสม' จะมีขนาดใหญ่มาก (มากถึงแสนชิ้น) แม้ว่าจำนวนของส่วนผสม ในสูตรที่กำหนดและจำนวนของส่วนผสมในชุดส่วนผสมที่กำหนดจะค่อนข้างเล็ก (อาจประมาณ 10-50 สำหรับ 'สูตร' ทั่วไปและประมาณ 100 สำหรับ 'ชุดส่วนผสม' ทั่วไป) นอกจากนี้การดำเนินงานที่พบมากที่สุดจะเป็นแบบสอบถามs ( U , Q ) ดังนั้นจึงควรจะเหมาะสมที่สุด ซึ่งหมายความว่าอัลกอริทึมแรงเดรัจฉานที่ต้องตรวจสอบทุกสูตรหรือใช้งานกับส่วนผสมทุกชนิดจะช้าลงอย่างเห็นได้ชัดในตัวของมันเอง ด้วยการแคชฉลาด