คำถามที่โดดเด่นในโครงสร้างข้อมูลที่ทำงานได้อย่างหมดจดคืออะไร?


51

คำถามนี้เป็นแรงบันดาลใจคำถามเกี่ยวกับสิ่งใหม่ใน PFDs ตั้งแต่การตีพิมพ์หนังสือ Okasaki ในปี 1998

ฉันจะเริ่มด้วยคำถามสองข้อที่ฉันมี:

  • มีโครงสร้างข้อมูลชุดการทำงานอย่างหมดจดที่ใกล้ความเร็วของตารางแฮช? ความพยายามยังไม่จบ
  • มีต้นไม้นิ้วที่ทำงานได้อย่างหมดจดด้วย O (1) ต่อท้าย? สิ่งที่ดีที่สุดคือ O (lg lg n) ซึ่งคิดค้นโดย Kaplan และ Tarjan

ปัญหาโครงสร้างข้อมูลที่ทำงานได้อย่างแท้จริงอื่นใดที่เปิดอยู่?


ฉันเอาคุณหมายถึงลองในต้นไม้แฮชมากกว่าพจนานุกรมทั่วไปมากขึ้นด้วยคีย์ที่เป็นลำดับ? FWIW ฉันคิดว่ามันเป็นไปไม่ได้ที่จะเข้าใกล้โต๊ะแฮชเก่าที่ดีที่นี่
Jon Harrop

คำตอบ:


19

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

ในบริบทนั้นฉันถือว่า UNION-FIND เป็นปัญหาเปิดที่สำคัญ มีกระดาษ Conchon-Filliâtreที่ถูกกล่าวถึงในหัวข้ออื่น ผู้แสดงความคิดเห็นนำปัญหามาแล้วกับอาร์เรย์ถาวรที่เรียกว่า: มันเป็นกึ่งถาวรเท่านั้น แต่สมมติว่าคุณแทนที่ด้วย hash trie หรืออาร์เรย์ถาวรที่แท้จริงที่ทำงานได้ดีกว่าในกรณีที่แย่ที่สุด (และปานกลาง) แต่แย่กว่าในกรณีที่ดีที่สุด ยังคงเปิดประเด็นสำคัญอยู่:

กระดาษให้การพิสูจน์ความถูกต้องอย่างเป็นทางการใน Coq แต่พวกเขาล้มเหลวในการจัดการกับความซับซ้อนที่ถูกตัดจำหน่ายอย่างเป็นทางการหรือไม่เป็นทางการ มันไม่ชัดเจนสำหรับฉันที่การกลายพันธุ์ที่ซับซ้อนเบื้องหลังส่งผลให้เกิดความซับซ้อนที่คาดว่าจะตัดจำหน่ายในทุกกรณี เมื่อฉันคิดถึงมันครั้งสุดท้ายฉันรู้สึกค่อนข้างมั่นใจว่าฉันสามารถสร้างตัวอย่างได้ถ้าฉันใช้ความพยายาม แม้ว่าฉันจะผิดเกี่ยวกับส่วนสุดท้ายนั้นการขาดการวิเคราะห์ที่เหมาะสมคือช่องว่างที่สำคัญ เป็นที่ชัดเจนว่าการวิเคราะห์ค่าตัดจำหน่ายแบบคลาสสิกของ Trajan ของ UNION-FIND ไม่ได้ถ่ายโอนโดยตรง


5
หนึ่งในผู้สมัครชิงตำแหน่งถาวรอย่างเต็มที่ ( แต่ไม่ถาวร confluently) อาร์เรย์จะนำเสนอในพยายาม Persistent Confluently สำหรับการควบคุมเวอร์ชันที่มีประสิทธิภาพ ผู้เขียนอ้างว่าการชะลอตัวของ O (lg lg n) คือการชะลอตัวของ Dietz และ al (lg lg m) โดยที่ m คือจำนวนการดำเนินการที่ดำเนินการในอาร์เรย์
jbapple

1
ฉันยังจะเพิ่มว่าแม้ว่าโครงสร้างที่ถูกตัดทิ้งอย่างขี้เกียจของ Okasaki มักจะง่ายกว่าทางเลือกอื่น แต่ฉันไม่ทราบว่ามีโครงสร้างข้อมูลใดที่สามารถนำไปใช้ในวิธีที่ไม่สามารถนำไปใช้ได้ (ด้วยขอบเขตเดียวกัน แต่ กรณีที่เลวร้ายที่สุด) ในวิธีการทำงานอย่างแท้จริงอย่างแท้จริง
jbapple

12

ปัญหาโครงสร้างข้อมูลที่ทำงานได้อย่างแท้จริงอื่นใดที่เปิดอยู่?

นี่คือหนึ่ง:

อะไรคือสิ่งที่เทียบเท่ากับตารางแฮชอ่อน ๆ


15
อืม .... OP ได้ขอคำถามที่ยังไม่ได้ตอบดังนั้นสิ่งนี้จะถือว่าเป็นคำตอบที่เป็นไปได้สำหรับคำถามของ OP
Jason S

6
โอเคฉันจะกัด ตารางแฮชที่อ่อนแอคืออะไร
Jeffε

4
มันเป็นตารางแฮชที่อนุญาตให้องค์ประกอบของขยะถูกรวบรวมถ้าเพียงมัน (และแผนที่อ่อนแออื่น ๆ ) มีการอ้างอิงถึงมัน
Havvy

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

5
@NeelKrishnaswami ฉันไม่คิดว่าเป็นอย่างนั้น คุณสามารถสร้างโครงสร้างข้อมูลที่ไม่รัดกุมซึ่งไม่สร้าง non-เด็ดเดี่ยวเช่นตารางที่อ่อนแอที่ไม่สนับสนุนการแจงนับ (หรือนับ) ดูwiki.ecmascript.org/doku.php?id=harmony:weak_mapsสำหรับตัวอย่าง
Sam Tobin-Hochstadt
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.