โครงสร้างข้อมูลถาวรใดสำหรับชุดองค์ประกอบที่เรียงลำดับบางส่วน


15

ฉันต้องการจัดเก็บชุดองค์ประกอบของประเภท a ประเภทสั่งบางส่วนเพื่อเปรียบเทียบ1และ2สามารถกลับมามีขนาดเล็กมากขึ้นเท่ากันหรือหาที่เปรียบมิได้a1a2

ปัญหาอย่างหนึ่งของแฮชเทเบิลคือองค์ประกอบที่เท่ากันสองค่าสามารถนำเสนอได้แตกต่างกันและฉันไม่สามารถเข้าถึงฟังก์ชันการแฮชที่สอดคล้องกับความเท่าเทียมกันได้

การเปรียบเทียบองค์ประกอบสองรายการอาจเป็นกระบวนการที่มีความยาวดังนั้นจึงน่าสนใจที่จะลดการเปรียบเทียบให้น้อยที่สุด หากจำเป็นสามารถบันทึกการโทรไปยังผู้ดำเนินการเปรียบเทียบได้ ตอนนี้ฉันรู้แล้วว่าฉันจะต้องเก็บ antichains เท่านั้น (หรือสมมติว่าเป็นอย่างนั้น) แม่นยำมากขึ้นการดำเนินการที่ฉันจะต้องดำเนินการมีดังนี้:

  • ลบองค์ประกอบออกจาก antichain;
  • ลองเพิ่มองค์ประกอบ หากองค์ประกอบมีขนาดเล็กกว่าสมาชิกอย่าเพิ่มองค์ประกอบมิฉะนั้นให้เพิ่มและลบทุกองค์ประกอบที่เล็กกว่านั้น

i1<a<i2i3<b<i4i2<i3a<bi2i3ab


1
ฉันคิดว่าเราจำเป็นต้องรู้มากขึ้นเพื่อตอบคำถามของคุณอย่างฉลาด คุณกำลังจัดเก็บองค์ประกอบและคำนวณคำสั่งบางส่วนได้อย่างง่ายดายหรือไม่? หรือคุณกำลังจัดเก็บคำสั่งบางส่วนในตารางการค้นหาบางประเภท คุณตั้งใจจะใช้คำสั่งบางส่วนอย่างไร คุณหวังว่าจะใช้มันในลักษณะเดียวกับที่ใช้เพื่อจัดลำดับเชิงเส้นในการจัดเก็บชุด (ตัวอย่างเช่นในแผนผังการค้นหา)?
Andrej Bauer

ตอนนี้ฉันรู้แล้วว่าฉันจะมีแอนติบอดีเท่านั้นฉันไม่แน่ใจว่าจะมีอะไรดีไปกว่าการแก้ปัญหาไร้เดียงสาของการจัดเก็บผลลัพธ์ในรายการ ถ้าเป็นเช่นนั้นขอโทษสำหรับปัญหา!
Abdallah

หากคุณคิดว่าคำถามของคุณกำลังถูในตอนนี้บางทีคุณควรตั้งค่าสถานะเป็นลบ / ปิด?
Suresh Venkat

1
องค์ประกอบสองอย่างในชุดจะเปรียบเทียบกันไม่ได้ แต่นี่ไม่ได้หมายความว่าการเป็นตัวแทนที่ไร้เดียงสานั้นดีที่สุดที่คุณสามารถทำได้ ตัวอย่างเช่นให้พิจารณาชุดที่ จำกัด ที่สั่งโดยการรวม (= จำนวนเต็มที่เรียงลำดับด้วยการหาร): มีความเป็นไปได้มากมายสำหรับการปรับให้เหมาะสมขึ้นอยู่กับการแสดงข้อมูลของคุณ (ใช้ cardinality โดยใช้ชุดการสนับสนุน การปรับให้เหมาะสมเหล่านี้จะขึ้นอยู่กับลักษณะของความสัมพันธ์ในการสั่งซื้อ จากนั้นก็มีปัญหาแยกต่างหากในการตัดสินใจว่าควรเก็บข้อมูลเกี่ยวกับองค์ประกอบที่ถูกลบแล้วหรือไม่: คุณจะเปรียบเทียบกับองค์ประกอบใหม่บ่อยครั้งหรือไม่?
Gilles 'หยุดชั่วร้าย'

โอเคขอบคุณ. ดังนั้นฉันจึงเพิ่มข้อมูล (ความเป็นไปได้ของการ จำกัด จำนวนเต็ม) ที่อาจนำไปสู่การปรับให้เหมาะสม
Abdallah

คำตอบ:


8

กระดาษ"การเรียงลำดับและการเลือกใน PoSets" โดย Daskalakis, Karp, Mossel, Risensefield, Verbin, 2008ซึ่งอธิบายการแสดงแบบไดนามิกของ PoSets ตาม antichains

คุณอาจสนใจในกระดาษ"Succinct Posets" โดย Munro, Nicholson, 2012 ที่เพิ่งเปิดตัวใน Arxiv และบรรณานุกรมในนั้น โครงสร้างข้อมูลของพวกเขาคงที่ แต่ฉันคิดว่าขั้นตอนต่อไปคือการมีโครงสร้างข้อมูลแบบไดนามิก


การเรียงลำดับและการเลือกใน Posets เป็นสิ่งที่ดีมากที่จะได้ความคิดว่าอะไรคือสิ่งที่จำเป็นสำหรับโครงสร้างข้อมูล แต่อัลกอริธึมกำลังสมมติแท็กองค์ประกอบใน poset (เช่นปัญหาที่เราต้องการแก้ไขตั้งแต่แรก!) ถึง คำนวณความสัมพันธ์ระหว่างสององค์ประกอบใน O ( 1 )หลังจากสร้างโครงสร้างข้อมูลในแบบสอบถาม O ( q n ) ดังนั้นกระดาษถือว่าการสอบถามความสัมพันธ์ระหว่างสององค์ประกอบจะมีราคาแพงและองค์ประกอบการทำแผนที่ของ posets จะไม่สำคัญในขณะที่โครงสร้างข้อมูลแผนที่มักจะถือว่าการสนทนาของอดีตเพื่อแก้ปัญหาหลัง O(1)O(1)O(qn)
เซบาสเตียนกราฟ

การมีแผนที่แสดงให้เห็นว่าการสลายตัวของโซ่ (น้อยที่สุด) เป็นความเข้าใจที่ดี แม้ว่าการรักษาค่าคงที่ผ่านการลบนั้นเป็นสิ่งที่ยุ่งยาก
Sebastian Graf

4

คุณเคยดูคำสั่งซื้อบางส่วนของต้นไม้เช่น Like แบบไดนามิกของ Heeringa et alหรือไม่? พวกเขาให้โครงสร้างข้อมูลแบบไดนามิกสำหรับปัญหาบรรพบุรุษใน posets มันถูกออกแบบมาสำหรับ RAM แต่คุณสามารถแสดงอาร์เรย์เป็นต้นไม้ไบนารีที่สมดุลและมีค่าใช้จ่าย multiplicative เท่านั้นในขณะที่โครงสร้างทำงานได้อย่างหมดจดO(lgn)


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