ความแตกต่างระหว่างต้น Radix กับ Patricia คืออะไร?


31

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

ตัวอย่างเช่นNISTแสดงรายการทั้งสองเหมือนกัน:

ต้นแพทริเซีย

(โครงสร้างข้อมูล)

คำจำกัดความ: การนำเสนอแบบย่อของ trie ซึ่งโหนดใด ๆ ที่เป็นชายน์เดียวถูกรวมเข้ากับพาเรนต์

รู้จักกันในชื่อ radix tree

แหล่งข้อมูลมากมายบนเว็บอ้างสิทธิ์เหมือนกัน อย่างไรก็ตามเห็นได้ชัดว่า Patricia พยายามเป็นกรณีพิเศษของต้นไม้ Radix รายการWikipediaพูดว่า:

PATRICIA พยายามคือ Radix จะพยายามด้วย Radix เท่ากับ 2 ซึ่งหมายความว่าแต่ละบิตของคีย์จะถูกเปรียบเทียบเป็นรายบุคคลและแต่ละโหนดจะเป็นสองทาง (เช่นซ้ายกับขวา) สาขา

ฉันไม่เข้าใจสิ่งนี้จริงๆ ความแตกต่างในวิธีเปรียบเทียบเท่านั้นเมื่อทำการค้นหา แต่ละโหนดจะเป็น "สาขาสองทาง" ได้อย่างไร ไม่ควรมีALPHABET_SIZEกิ่งที่เป็นไปได้มากที่สุดสำหรับโหนดที่ระบุ

ใครสามารถอธิบายเรื่องนี้ได้? เพื่อวัตถุประสงค์ในทางปฏิบัติ Radix จะพยายามใช้งานตามปกติเมื่อ Patricia พยายาม (และด้วยเหตุนี้จึงมักถือว่าเหมือนกัน) หรือไม่สามารถสร้างภาพรวมดังกล่าวได้?

คำตอบ:


22

ฉันพบว่าโพสต์นี้มีประโยชน์มาก

หากต้องการดูความแตกต่างระหว่าง Patricia พยายามและ Radix ต้นไม้สิ่งสำคัญคือต้องเข้าใจ:

  • ความคิดของradixตั้งแต่ Patricia พยายามเป็นต้นไม้ radix ที่มี radix เท่ากับ 2
  • R2R

สมมติว่าเราใส่กุญแจยิ้ม , ยิ้มและรอยยิ้ม (ในลำดับนี้) ในแพทริเซี Trie การเป็นตัวแทนไบนารีของคีย์เหล่านี้มีดังต่อไปนี้:

การเป็นตัวแทนไบนารีของคีย์ตัวอย่างทั้งสาม

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

Patricia trie ที่มี 3 โหนด

ยกตัวอย่างเช่นถ้า radix เท่ากับ 4 โหนดภายในอาจมีลูกสี่คน (โดยมีขอบของพวกเขาระบุว่า 00, 01, 10 และ 11 ตามลำดับ) ในกรณีนี้คีย์จะถูกเปรียบเทียบโดยกลุ่มของบิต 2 และไม่ใช่ 1 (เช่นเดียวกับใน Patricia พยายาม)


โครงสร้างข้อมูลทั้งสองแตกต่างกันอย่างไร?

เพื่อความเข้าใจของฉันความแตกต่างเพียงอย่างเดียวคือ Radix ซึ่งเท่ากับ 2 ในกรณีของ Patricia พยายาม ค่านี้สามารถเป็นพลังงานใด ๆ ของ 2 ในต้นไม้ radix ปกติ

ความแตกต่างในวิธีเปรียบเทียบเท่านั้นเมื่อทำการค้นหา

เข้าสู่ระบบ2RR

แต่ละโหนดจะเป็น "สาขาสองทาง" ได้อย่างไร ไม่ควรมีALPHABET_SIZEกิ่งที่เป็นไปได้มากที่สุดสำหรับโหนดที่ระบุ

radix สร้างจำนวนสูงสุดของชายด์ที่โหนดของต้นไม้ radix สามารถมีได้ ตัวอย่างเช่นเมื่อ radix = 2 แต่ละโหนดสามารถมีชายน์ได้ไม่เกินสองรายการ นี่เป็นกรณีของการพยายามของแพทริเซีย (หรือที่รู้จักกันในชื่อต้นไม้ฐานสอง)

Radix พยายามใช้งานตามปกติหรือไม่เนื่องจาก Patricia พยายาม (และด้วยเหตุนี้บ่อยครั้งจะถือว่าเหมือนกัน) หรือไม่สามารถสร้างภาพรวมดังกล่าวได้?

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


3

Patricia trie เป็นเลขฐานสองซึ่งเป็นผลมาจากการใช้อัลกอริทึม PATRICIA กับข้อมูลตัวอักษรและตัวเลข

PATRICIA ย่อมาจากอัลกอริธึมเชิงปฏิบัติในการดึงข้อมูลที่เขียนด้วยตัวอักษรและตัวเลข [ เอกสารต้นฉบับโดย Donald R. Morrison ] บทความนี้จะกำหนดคำศัพท์พื้นฐานซึ่งประกอบด้วย START, STOP, END, L-PHRASE, BRANCH, TWIN และ CHAIN PATRICIA พยายามคือความพยายามที่เป็นผลมาจากการประยุกต์ใช้อัลกอริธึมนี้ - ฐานเลขฐานสองพยายามที่ส่วนฐาน, r, คือ 2 [ wikipedia ] (ขึ้นไป); ตัวเลือกไบนารีที่แต่ละโหนดเมื่อทำการสำรวจทั้งสาม)

อย่างไรก็ตามในทางปฏิบัติคำว่า Patricia ดูเหมือนว่าจะใช้กับ r> = 2 (เช่นพยายาม radix) ซึ่งมีการใช้หน่วยเก็บข้อมูลที่คล้ายกันและค้นหา alogorithm ตัวอย่างเช่นนี้มีชื่อว่าเป็นแพทริเซีย Ethereum แพทริเซี Merkle Trieเป็นอีกตัวอย่างหนึ่งที่ r คือ 16 ในบางโหนด

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