มีความรู้อะไรเกี่ยวกับโครงสร้างข้อมูลที่สามารถรักษาลำดับของไอเท็มได้ภายใต้สองการดำเนินการต่อไปนี้?
- กด (x): เพิ่ม x ไปยังจุดสิ้นสุดของลำดับและส่งกลับตัวระบุสำหรับตำแหน่งในลำดับ
- แยก (S): กำหนดชุดตัวระบุที่ไม่เรียงลำดับเอารายการในตำแหน่งเหล่านั้นออกจากลำดับและส่งคืนรายการของรายการที่ถูกลบตามลำดับ
หากคุณชอบคุณสามารถคิดว่านี่เป็นสแต็กหรือคิวที่มีการดำเนินการแยกที่แยกออกเป็นสองสแต็ค: การดำเนินการแยกสามารถนำมาใช้ในการดำเนินการป๊อปหรือ dequeue และวางลำดับของรายการที่แยกได้ กลับมาอีกครั้งในสแต็กหรือคิวที่แตกต่างกัน
สิ่งที่ฉันรู้แล้ว: หนึ่งสามารถรักษาลำดับเป็นรายการเชื่อมโยงสองเท่าโดยที่แต่ละตัวระบุเป็นเพียงตัวชี้ไปยังรายการเชื่อมโยงโหนดและแต่ละโหนดยังเก็บหมายเลขตำแหน่งที่ช่วยให้การเปรียบเทียบอย่างรวดเร็วระหว่างตำแหน่งของสององค์ประกอบที่ไม่เกี่ยวข้อง ในลำดับ การอัปเดตหมายเลขตำแหน่งเป็นการยากที่โครงสร้างข้อมูลจะดำเนินการเพื่อให้เป็นจำนวนเต็มบวกทั้งหมดของค่าสูงสุดโดยที่nคือจำนวนรายการปัจจุบันในรายการ ด้วยโครงสร้างข้อมูลนี้ส่วนที่ยากเพียงอย่างเดียวของการแยกข้อมูลคือการเรียงลำดับรายการที่แยกตามหมายเลขตำแหน่ง การแยกรายการkใช้เวลาO ( k √เวลาแบบสุ่มที่คาดไว้โดยใช้อัลกอริทึมการเรียงลำดับจำนวนเต็มของ Han และ Thorup จาก FOCS 2002 และการดำเนินการ push ต้องใช้เวลาคงที่
สิ่งที่ฉันไม่รู้: เป็นไปได้ไหมที่จะจัดการกับสารสกัดในเวลาและผลักเวลาคงที่? มีวรรณกรรมเกี่ยวกับปัญหานี้หรือไม่? การเรียงลำดับจำนวนเต็มนั้นยากหรือไม่
แรงจูงใจ: นี่เป็นขั้นตอนพื้นฐานที่จำเป็นในการสั่งซื้อรายการในอัลกอริทึมการจัดตารางเวลา Coffman-Graham ซึ่งมีแอปพลิเคชันในการวาดกราฟ ส่วนที่ยากของ Coffman-Graham เป็นการเรียงลำดับทอพอโลยีแบบคำศัพท์ สิ่งนี้สามารถทำได้โดยการบำรุงรักษาสำหรับแต่ละ indegree ที่แตกต่างกันลำดับของจุดยอดที่มี indegree ในกราฟย่อยที่เกิดจากจุดยอดที่เหลือ จากนั้นให้ลบจุดยอดแรกออกจากลำดับของจุดยอดที่ไม่มีศูนย์และเพิ่มลงในลำดับโทโพโลยี แยกเพื่อนบ้านของvออกจากองศาที่พวกเขาเคยอยู่และผลักดันพวกมันไปยังลำดับสำหรับระดับที่เล็กกว่าถัดไป ดังนั้นO ( k ) เวลาสำหรับการดำเนินการแยกข้อมูลในโครงสร้างข้อมูลนี้จะนำไปสู่การใช้เวลาเชิงเส้นของอัลกอริทึม Coffman-Graham
ตั้งแต่เริ่มแรกฉันได้พบบทความนี้โดย Sethi ตั้งแต่ปี 1976ที่อนุญาตให้ใช้อัลกอริทึม Coffman – Graham ในเวลาเชิงเส้นและรวมไว้ในบทความ Wikipediaของฉันใน Coffman-Graham algorithmดังนั้นแรงจูงใจดั้งเดิมจึงมีความหมายน้อยกว่า ฉันยังคงสงสัยว่าคำตอบคืออะไร