เหตุใดการเขียนโปรแกรมแบบไม่ทำงานจึงค้นคว้าต้นไม้แบบไดนามิก


19

ต้นไม้ไดนามิกมีบทบาทสำคัญในการแก้ปัญหาต่าง ๆ เช่นการไหลของเครือข่ายกราฟไดนามิกปัญหา combinatorial ("Dynamic Trees in Practice" โดย Tarjan และ Werneck) และเมื่อเร็ว ๆ นี้ได้รวมพจนานุกรม ("A Mergeable Dictionary" โดย Adam Karczmarz)

โดยต้นไม้ไดนามิกฉันอ้างถึงคำจำกัดความที่ระบุไว้ในกระดาษของ Sleator & Tarjan "โครงสร้างข้อมูลสำหรับต้นไม้ไดนามิก" ในปี 1983 ความพยายามน้อยได้รับการเผยแพร่ภายในขอบเขตการวิจัยการเขียนโปรแกรมการทำงานตั้งแต่

  1. เอ็ดเวิร์ด Kmett ดำเนินการรุ่นของต้นไม้ ST ส่วนใหญ่เป็นคำแปลของภาษา C ++ คู่ให้ดูต้นไม้ Link-ตัด
  2. Chris Okasaki เขียนการนำต้นไม้ Splay ไปใช้อย่าง จำกัด ในหนังสือที่โด่งดังของเขา
  3. Ralf Hinze และ Ross Paterson เปิดตัวโครงสร้างข้อมูลที่เรียกว่าต้นไม้ 2-3 นิ้ว แต่มีจุดประสงค์ที่แตกต่างจากคำนิยามดั้งเดิมของต้นไม้แบบไดนามิก

การดำเนินการ (และประสิทธิภาพ) ของต้นไม้ไดนามิกถูกแบ่งออกเป็นสามแนวทาง:

  1. การสร้างเส้นตรงที่ต้นไม้ ET (ทัวร์ออยเลอร์) มีบทบาทที่ยอดเยี่ยม ไม่พบการศึกษาการทำงานอย่างหมดจด
  2. เส้นทางการสลายตัวที่ต้นไม้ ST เป็นเรือธงเพิ่งจะพบเวอร์ชั่นของ Kmett
  3. Tree contraction, ที่ต้นไม้อันดับต้น, ต้นไม้โครงสร้างและต้นไม้ RC เป็นผู้เล่น ไม่พบการศึกษาการทำงานอย่างหมดจด

การวิเคราะห์และการใช้งานอย่างหมดจดสามารถพบได้ใน Splay, AVL, ต้นไม้สีแดงดำ แต่ไม่ได้เป็นต้นไม้แบบไดนามิก อดีตถือว่าเป็นเงา (หรือที่เรียกว่าเสมือนหรือเสริม) โครงสร้างข้อมูลของหลัง

ดังนั้นคำถามของฉันคือ:

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


14
ฉันไม่เข้าใจว่าสิ่งนี้สามารถตอบได้อย่างไรโดยไม่จัดตั้งคณะกรรมการชุมชนด้านการเขียนโปรแกรมเชิงอำนาจเพื่อจัดตั้งความคิดเห็นอย่างเป็นทางการ เราไม่สามารถปฏิรูปคำถามเพื่อให้มีบางสิ่งที่สามารถตอบได้ที่นี่ เท่าที่ฉันจะบอกได้ OP ควรไปและนำต้นไม้พลวัตของเขาไปใช้ใน Haskell หรืออะไรก็ตามแล้วกลับมาที่นี่เพื่อรายงานว่ามันได้ทำไปแล้ว
Andrej Bauer

อัปเดตเป็น @AndrejBauer: OP ได้หายไปและนำต้นไม้แบบไดนามิกมาใช้ใน Haskell: arxiv.org/abs/1908.11105
jbapple

คำตอบ:


-1

"ในวิทยาการคอมพิวเตอร์การเขียนโปรแกรมเชิงหน้าที่เป็นกระบวนทัศน์การเขียนโปรแกรมรูปแบบของการสร้างโครงสร้างและองค์ประกอบของโปรแกรมคอมพิวเตอร์ที่ใช้การคำนวณเป็นการประเมินฟังก์ชั่นทางคณิตศาสตร์และหลีกเลี่ยงการเปลี่ยนสถานะและข้อมูลที่ไม่แน่นอน" - วิกิพีเดีย

"การเปลี่ยนสถานะและข้อมูลที่ไม่แน่นอน" ในคำอื่น ๆ "แบบไดนามิก"

ดังนั้นคำถามของคุณเป็นเหมือนถามว่าทำไมซ้ายไม่ถูกต้อง


1
โปรแกรมการทำงานสามารถแสดงข้อมูลแบบไดนามิกที่มีโครงสร้างข้อมูลถาวร คำถามนี้ถามว่าทำไมการพัฒนาโครงสร้างข้อมูลถาวรสำหรับปัญหาบางอย่างยังไม่ได้รับการวิจัย คำถามทำให้รู้สึก
Reinstate Monica
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.