ความซับซ้อนของการคำนวณรหัสฟรีของคำนำหน้าที่เหมาะสมคืออะไรเมื่อความถี่ใกล้เคียงกัน?


13

มันเป็นที่รู้จักกันดีว่ามีขั้นตอนวิธีการที่ดีที่สุดกรณีที่เลวร้ายที่สุดในการคำนวณรหัส Huffman ในเวลาθ(nlgn) ) นี่คือการปรับปรุงในสองวิธีมุมฉาก:

  1. รหัสฟรีที่ดีที่สุดสามารถคำนวณได้เร็วขึ้นหากชุดของความถี่ที่แตกต่างกันมีขนาดเล็ก (เช่นขนาดσ ): จัดเรียงความถี่โดยใช้ [Munro and Spira, 1976] เพื่อใช้ประโยชน์จากค่าเล็ก ๆ ของσและคำนวณ Huffman ต้นไม้ในเวลาเชิงเส้นจากความถี่เรียง นี่เป็นวิธีแก้ปัญหาในO(nlgσ)

  2. มีอัลกอริทึมO(n16k)ในการคำนวณรหัสที่เทียบเท่าโดยที่kคือจำนวนความยาว codewords ที่แตกต่างกัน [Belal และ Elmasry]

O(nmin{16k,lgσ})


เป็นผลมาจาก STACS 2006 ดูเหมือนจะผิดO(nk) , Elmasry เผยแพร่บน arXiv ในปี 2010 (http://arxiv.org/abs/cs/0509015) รุ่นประกาศ -การดำเนินงานกับการป้อนข้อมูลและไม่ได้เรียงลำดับ - การดำเนินการบนอินพุตที่เรียงลำดับแล้วO(16kn)O(9klog2k1n)


  1. ฉันเห็นการเปรียบเทียบกับความซับซ้อนของการคำนวณลำเรือนูนซึ่งอัลกอริธึมใน (เรียงลำดับตามขณะที่อัลกอริทึมสำหรับรหัส Huffman) และใน (ของขวัญ) การห่อ) ถูกแทนที่โดยเคิร์กแพททริกและอัลกอริทึมของ Seidel ใน (ต่อมาพิสูจน์แล้วว่าเป็นอินสแตนซ์ที่ดีที่สุดกับความซับซ้อนของรูปแบบ ) ในกรณีของรหัสฟรีรหัสนำหน้าเมื่อเทียบกับแสดงถึงความเป็นไปได้ของอัลกอริทึมที่มีความซับซ้อนหรือแม้แต่โดยที่คือจำนวน codewords ยาวO(nlgn)O(nlgn)O(nh)O(nlgh)O(nH(n1,,nk)O(nlgn)O(nk)O(nlgk)O(nH(n1,,nk)niiใช้การเปรียบเทียบขอบของตัวเรือนูนที่ครอบคลุมชี้ไปที่ความยาวของรหัสที่ครอบคลุมสัญลักษณ์nini

  2. ตัวอย่างง่ายๆแสดงให้เห็นว่าการเรียงลำดับ (ปัดเศษ) ค่าลอการิทึมของความถี่ (ในเวลาเชิงเส้นในแบบจำลองคำคำแรม) ไม่ได้ให้รหัสที่ดีที่สุดฟรีในเวลาเชิงเส้น: θ(lgn)

    • สำหรับ ,และn=3f1=1/2εf2=f3=1/4+ε
    • lgfi=2ดังนั้นการเรียงลำดับไฟล์บันทึกจึงไม่เปลี่ยนลำดับ
    • แต่สองโค้ดจากสามต้นทุนบิตมากกว่าดีที่สุดn/4
  3. อีกคำถามที่น่าสนใจคือการลดความซับซ้อนเมื่อมีขนาดใหญ่เช่นรหัสทั้งหมดมีความยาวแตกต่างกัน:k

    • เช่นเมื่อความถี่เป็นค่าบันทึกที่แตกต่างกันทั้งหมด ในกรณีนี้เราสามารถเรียงลำดับความถี่ในเวลาเชิงเส้นใน word RAM และคำนวณรหัส Huffman ในเวลาเชิงเส้น (เพราะการเรียงลำดับค่าบันทึกของพวกเขาเพียงพอที่จะเรียงลำดับค่า) ส่งผลให้เวลาเชิงเส้นโดยรวม ดีกว่าจากอัลกอริทึมจาก Belal และ Elmasryk=nθ(lgn)n2

คำตอบ:


1

ใช้เวลาสองสามปี (ห้า!) แต่นี่เป็นคำตอบบางส่วนของคำถาม:

http://arxiv.org/abs/1602.00023

รหัสฟรีที่ดีที่สุดพร้อมการคัดแยกบางส่วนJérémy Barbay (ส่งมาวันที่ 29 มกราคม 2559)

เราอธิบายถึงอัลกอริทึมในการคำนวณรหัสฟรีที่ดีที่สุดสำหรับ n น้ำหนักเชิงบวกที่ยังไม่เรียงลำดับภายใน O (n (1 + lgα)) ⊆O (nlgn) โดยที่การสลับα∈ [1..n − 1] วัดปริมาณของ การเรียงลำดับที่ต้องการโดยการคำนวณ ความซับซ้อนเชิงเชิงเส้นนี้อยู่ในปัจจัยคงที่ของรูปแบบการคำนวณต้นไม้ตัดสินใจเชิงพีชคณิตที่ดีที่สุดในกรณีที่เลวร้ายที่สุดในทุกกรณีของขนาด n และการสลับα ผลลัพธ์ดังกล่าวปรับแต่งสถานะของความซับซ้อนของศิลปะของΘ (nlgn) ในกรณีที่เลวร้ายที่สุดในกรณีที่มีขนาด n ในแบบจำลองการคำนวณเดียวกันซึ่งเป็นจุดสังเกตในการบีบอัดและการเข้ารหัสตั้งแต่ปี 1952 โดยการรวมกันเท่านั้น รหัสฟรีจากน้ำหนักที่ถูกจัดเรียง (รู้จักกันตั้งแต่ปี 1976) โดยมีโครงสร้างข้อมูลที่เลื่อนออกไปเพื่อจัดเรียงชุดข้อมูลบางส่วนขึ้นอยู่กับแบบสอบถามบน (ที่รู้จักตั้งแต่ปี 1988)

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