คำถามติดแท็ก persistent-data-structure

4
ทำไมเราถึงใช้โครงสร้างข้อมูลแบบต่อเนื่องในการโปรแกรมเชิงฟังก์ชัน?
ฟังก์ชั่นการเขียนโปรแกรมใช้งานโครงสร้างข้อมูลถาวรและวัตถุที่ไม่เปลี่ยนรูป คำถามของฉันคือเหตุใดจึงสำคัญที่ต้องมีโครงสร้างข้อมูลเช่นนี้ ฉันต้องการที่จะเข้าใจในระดับต่ำจะเกิดอะไรขึ้นถ้าโครงสร้างข้อมูลไม่คงที่? โปรแกรมจะทำงานผิดพลาดบ่อยขึ้นหรือไม่

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

2
การใช้งานโครงสร้างข้อมูลแบบไม่คงที่ (ถาวร) เหมือนอาร์เรย์ที่มีการจัดทำดัชนีอย่างรวดเร็วผนวกผนวกซ้ำ
ฉันกำลังมองหาโครงสร้างข้อมูลถาวรคล้ายกับอาเรย์ (แต่ไม่เปลี่ยนรูป) ให้การดำเนินการจัดทำดัชนีอย่างรวดเร็วผนวกต่อเติมและทำซ้ำ (ตำแหน่งที่ดี) Clojure ให้ Vector แบบถาวร แต่มันเป็นเพียงการผนวกที่รวดเร็วเท่านั้น เวกเตอร์ของ Scala มีการเพิ่มและต่อเติมอย่างต่อเนื่องอย่างมีประสิทธิภาพ แต่ฉันไม่สามารถนำมาใช้ได้เนื่องจากมันขึ้นอยู่กับโครงสร้างข้อมูลเดียวกัน (bit-mapped vector trie) เป็นเวกเตอร์ Clojure และอย่างที่ฉันเข้าใจ trie เวกเตอร์บิตแมป ไม่สามารถเพิ่มความเร็วได้อย่างรวดเร็วหากไม่มีเทคนิคบางอย่าง ฉันสนใจที่จะไม่พร้อมใช้งานการใช้งาน แต่ในรายละเอียดของวิธีการใช้โครงสร้างข้อมูลดังกล่าวด้วยตนเอง
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.