Máy tính thuật ngữ
Cất chứa
0Hữu dụng +1
0
Cấp định N cái quyền giá trị làm N cáiLá cây giao điểm,Cấu tạo một cây nhị xoa thụ, nếu nên thụ mang quyền đường nhỏ chiều dài đạt tới nhỏ nhất, xưng như vậy nhị xoa thụ vì tối ưu nhị xoa thụ, cũng xưng là Huffman thụ (Huffman Tree). Huffman thụ là mang quyền đường nhỏ chiều dài ngắn nhất thụ, quyền giá trị trọng đại giao điểm ly căn so gần.
Tiếng Trung danh
Huffman thụ
Ngoại văn danh
Huffman Tree
Đừng danh
Tối ưu thụ
Đường nhỏ chiều dài
Căn giao điểm đến đệ L tầng giao điểm đường nhỏ chiều dài vì L-1
Mang quyền đường nhỏ chiều dài
WPL
Ứng dùng
Huffman mã hóa

Tóm tắt

Bá báo
Biên tập
Máy tínhSố liệu xử lýTrung, Huffman mã hóa sử dụngBiến bản thảo sơ bộ mã biểuĐối nguyên ký hiệu ( như văn kiện trung một chữ cái ) tiến hành mã hóa, trong đóBiến bản thảo sơ bộ mã biểuLà thông qua một loại đánh giá nơi phát ra ký hiệu xuất hiện cơ suất phương pháp được đến, xuất hiện cơ suất cao chữ cái sử dụng so đoản mã hóa, phản chi xuất hiện cơ suất thấp tắc sử dụng so lớn lên mã hóa, này liền sử mã hóa lúc sau tự phù xuyến bình quân chiều dài,Kỳ vọngHạ thấp, do đó đạt tớiKhông tổn hao gì áp súcSố liệu mục đích.
Tỷ như, ở tiếng Anh trung, e xuất hiệnCơ suấtTối cao, mà z xuất hiện xác suất tắc thấp nhất. Đương lợi dụng Huffman mã hóa đối một thiên tiếng Anh tiến hành áp súc khi, e vô cùng có khả năng dùng một cáiSo đặcTới tỏ vẻ, mà z tắc khả năng hoa đi 25 cáiSo đặc( không phải 26 ). Dùng bình thường tỏ vẻ phương pháp khi, mỗi cái tiếng Anh chữ cái đều chiếm dụng một cáiByte,Tức 8 cáiSo đặc.Hai người so sánh với, e sử dụng giống nhau mã hóa 1/8 chiều dài, z tắc sử dụng 3 lần nhiều. Nếu chúng ta có thể thực hiện đối với tiếng Anh trung các chữ cái xuất hiện xác suất so chuẩn xác tính ra, liền có thể đại biên độ đề cao không tổn hao gì áp súc tỉ lệ.
Huffman thụ lại xưng tối ưu nhị xoa thụ, là một loại mang quyền đường nhỏ chiều dài ngắn nhấtNhị xoa thụ.Cái gọi là thụ mang quyền đường nhỏ chiều dài, chính là thụ trung sở hữu diệp giao điểm quyền giá trị thừa thượng này đến căn giao điểm đường nhỏ chiều dài ( nếu căn giao điểm vì 0 tầng, diệp giao điểm đến căn giao điểm đường nhỏ chiều dài vì diệp giao điểm tầng số ). Thụ đường nhỏ chiều dài là từ rễ cây đến mỗi một giao điểm đường nhỏ chiều dài chi cùng, nhớ vì WPL= ( W1*L1+W2*L2+W3*L3+...+Wn*Ln ), N cái quyền giá trị Wi ( i=1,2,...n ) cấu thành một cây có N cái diệp giao điểm nhị xoa thụ, tương ứng diệp giao điểm đường nhỏ chiều dài vì Li ( i=1,2,...n ). Có thể chứng minh Huffman thụ WPL là nhỏ nhất.

Lịch sử

Bá báo
Biên tập
1951 năm, Huffman ởViện công nghệ Massachusetts( MIT ) ra sức học hành tiến sĩ học vị, hắn cùng tu đọcLý thuyết thông tinChương trình học đồng học đến lựa chọn là hoàn thành học kỳ báo cáo vẫn là cuối kỳKhảo thí.Đạo sưRobert · pháp nặc( Robert Fano ) ra học kỳ báo cáo đề mục là: Tra tìm nhất hữu hiệu cơ số hai mã hóa. Bởi vì vô pháp chứng minh cái nào đã có mã hóa là nhất hữu hiệu, Huffman từ bỏ đối đã có mã hóa nghiên cứu, chuyển hướng tân thăm dò, cuối cùng phát hiện căn cứ vào có tự tần suấtNhị xoa thụMã hóa ý tưởng, cũng thực mau chứng minh rồi phương pháp này là nhất hữu hiệu. Huffman sử dụng tự đế hướng về phía trước phương pháp xây dựng nhị xoa thụ, tránh cho thứ ưu thuật toánHương nông - phạm nặc mã hóa( Shannon–Fano coding ) lớn nhất tệ đoan ── tự đỉnh xuống phía dưới xây dựng thụ.
1952 năm, với luận văn 《 một loại xây dựng cực tiểu dư thừa mã hóa phương pháp 》 (A Method for the Construction of Minimum-Redundancy Codes) trung phát biểu cái này mã hóa phương pháp.

Ứng dụng

Bá báo
Biên tập
Ở số liệu thông tín trung, yêu cầu đem truyền tống văn tự thay đổi thành cơ số hai tự phù xuyến, dùng 0, 1 mã bất đồng sắp hàng tới tỏ vẻ tự phù. Tỷ như, cần truyền tống báo văn vì “AFTER DATA EAR ARE ART AREA”, nơi này dùng đến tự phù tập vì “A, E, R, T, F, D”, các chữ cái xuất hiện số lần vì {8, 4, 5, 3, 1, 1}. Hiện yêu cầu vì này đó chữ cái thiết kế mã hóa. Muốn khác nhau 6 cái chữ cái, đơn giản nhất cơ số hai mã hóa phương thức là chờ bản thảo sơ bộ mã, cố định chọn dùng 3 vị cơ số hai, nhưng phân biệt dùng 000, 001, 010, 011, 100, 101 đối “A, E, R, T, F, D” tiến hành mã hóa gửi đi, đương đối phương tiếp thu báo văn khi lại dựa theo ba vị một phân tiến hành dịch mã. Hiển nhiên mã hóa chiều dài quyết định bởi báo văn trung bất đồng tự phù cái số. Nếu báo văn trung khả năng xuất hiện 26 cái bất đồng tự phù, tắc cố định mã hóa chiều dài vì 5. Nhưng mà, truyền tống báo văn khi luôn là hy vọng tổng trưởng độ tận khả năng đoản. Trong ứng dụng thực tế, các tự phù xuất hiện tần độ hoặc sử dụng số lần là không giống nhau, như A, B, C sử dụng tần suất xa xa cao hơn X, Y, Z, tự nhiên sẽ nghĩ đến thiết kế mã hóa khi, làm sử dụng tần suất cao dùng đoản mã, sử dụng tần suất thấp dùng trường mã, lấy ưu hoá toàn bộ báo văn mã hóa.
Vì sử không đợi bản thảo sơ bộ mã vì tiền tốMã hóa( tức yêu cầu một chữ phù mã hóa không thể là một cái khác tự phù mã hóa tiền tố ), nhưng dùng tự phù tập trung mỗi cái tự phù làm lá cây giao điểm sinh thành một cây mã hóa nhị xoa thụ, vì đạt được truyền tống báo văn ngắn nhất chiều dài, nhưng đem mỗi cái tự phù xuất hiện tần suất làm tự phù giao điểm quyền giá trị giao cho nên giao điểm thượng, hiển nhiên tự sử dụng tần suất càng nhỏ quyền giá trị càng nhỏ, quyền giá trị càng nhỏ lá cây liền càng dựa hạ, vì thế tần suất tiểu mã hóa trường, tần suất cao mã hóa đoản, như vậy liền bảo đảm này thụ nhỏ nhất mang quyền đường nhỏ chiều dài hiệu quả thượng chính là truyền tống báo văn ngắn nhất chiều dài. Bởi vậy, cầu truyền tống báo văn ngắn nhất chiều dài vấn đề chuyển hóa vì cầu từ tự phù tập trung sở hữu tự phù làm lá cây giao điểm, từ tự phù xuất hiện tần suất làm này quyền giá trị sở sinh ra Huffman thụ vấn đề. Lợi dụng Huffman thụ tới thiết kế cơ số hai tiền tố mã hóa, đã thỏa mãn tiền tố mã hóa điều kiện, lại bảo đảm báo văn mã hóa tổng trưởng ngắn nhất.
Huffman trạng thái tĩnh mã hóa:Nó đối yêu cầu mã hóa số liệu tiến hành hai lần rà quét: Đệ nhất biến thống kê nguyên số liệu trung các tự phù xuất hiện tần suất, lợi dụng được đến tần suất giá trị sáng tạo Huffman thụ, cũng cần thiết đem thụ tin tức bảo tồn lên, tức đem tự phù 0-255(2^8=256) tần suất giá trị lấy 2-4BYTES chiều dài trình tự tồn trữ lên, ( dùng 4Bytes chiều dài tồn trữ tần suất giá trị, tần suất giá trị tỏ vẻ phạm vi vì 0--2^32-1, này đã trọn đủ tỏ vẻ đại văn kiện trung tự phù xuất hiện tần suất ) để giải áp khi sáng tạo đồng dạng Huffman thụ tiến hành giải áp; lần thứ hai tắc căn cứ đệ nhất biến rà quét được đến Huffman thụ tiến hành mã hóa, cũng đem mã hóa sau được đến gõ chữ tồn trữ lên.
Huffman động thái mã hóa:Động thái Huffman mã hóa sử dụng một cây động thái biến hóa Huffman thụ, đối đệ t+1 cái tự phù mã hóa là căn cứ nguyên thủy số liệu trung trước t cái tự phù được đến Huffman thụ tới tiến hành, mã hóa giải hòa mã sử dụng tương đồng mới bắt đầu Huffman thụ, mỗi xử lý xong một chữ phù, mã hóa giải hòa mã sử dụng tương đồng phương pháp sửa chữa Huffman thụ, cho nên không cần phải vì giải mã mà bảo tồn Huffman thụ tin tức. Mã hóa giải hòa mã một chữ phù sở cần thời gian cùng nên tự phù mã hóa chiều dài có quan hệ trực tiếp, cho nên động thái Huffman mã hóa nhưng thật khi tiến hành.
2, HuffmanDịch mã
Ở thông tín trung, nếu đem tự phù dùng Huffman mã hóa hình thức gửi đi đi ra ngoài, đối phương tiếp thu đến mã hóa sau, đem mã hóa hoàn nguyên thành tự phù quá trình, xưng là Huffman dịch mã.

Cơ bản thuật ngữ

Bá báo
Biên tập
Huffman thụ lại xưng là tối ưu thụ.
1, đường nhỏ cùng đường nhỏ chiều dài
Ở một thân cây trung, từ một cái giao điểm đi xuống có thể đạt tới hài tử hoặc tôn tử giao điểm chi gian thông lộ, xưng là đường nhỏ. Thông lộ trung chi nhánh số lượng xưng là đường nhỏ chiều dài. Nếu quy định căn giao điểm tầng số vì 1, tắc từ căn giao điểm đến đệ L tầng giao điểm đường nhỏ chiều dài vì L-1.
2, giao điểm quyền cập mang quyền đường nhỏ chiều dài
Nếu đem thụ trung giao điểm phú cấp một cái có nào đó hàm nghĩa trị số, tắc cái này trị số xưng là nên giao điểm quyền. Giao điểm mang quyền đường nhỏ chiều dài vì: Từ căn giao điểm đến nên giao điểm chi gian đường nhỏ chiều dài cùng nên giao điểm quyền tích số.
3, thụ mang quyền đường nhỏ chiều dài
Thụ mang quyền đường nhỏ chiều dài quy định vì sở hữu lá cây giao điểm mang quyền đường nhỏ chiều dài chi cùng, nhớ vì WPL.

Cấu tạo

Bá báo
Biên tập
Huffman thụ cấu tạo
Giả thiết có n cái quyền giá trị, tắc cấu tạo ra Huffman thụ có n cái lá cây giao điểm. n cái quyền giá trị phân biệt thiết vì w1, w2,…, wn, tắc Huffman thụ cấu tạo quy tắc vì:
(1) đem w1, w2,…, wn xem thành là có n cây rừng rậm ( mỗi cây chỉ có một cái giao điểm );
(2) ở trong rừng rậm tuyển ra hai cái căn giao điểm quyền giá trị nhỏ nhất thụ xác nhập, làm một cây tân thụ tả, hữu tử thụ, thả tân thụ căn giao điểm quyền giá trị vì này tả, hữu tử rễ cây giao điểm quyền giá trị chi cùng;
(3) từ trong rừng rậm xóa bỏ lựa chọn sử dụng hai cây, cũng đem tân thụ gia nhập rừng rậm;
(4) lặp lại (2), (3) bước, thẳng đến trong rừng rậm chỉ còn một thân cây mới thôi, nên thụ tức vì sở cầu được Huffman thụ.

Nhiều xoa Huffman thụ

Bá báo
Biên tập
Huffman thụ cũng có thể là k xoa, chỉ là ở cấu tạo k xoa Huffman thụ khi yêu cầu trước tiến hành một ít điều chỉnh. Cấu tạo Huffman thụ tư tưởng là mỗi lần tuyển k cái quyền trọng nhỏ nhất nguyên tố tới hợp thành một cái tân nguyên tố, nên nguyên tố quyền trọng vì k cái nguyên tố quyền trọng chi cùng. Nhưng là đương k lớn hơn 2 khi, dựa theo cái này bước đi làm đi xuống khả năng đến cuối cùng dư lại nguyên tố thiếu với k cái. Giải quyết vấn đề này biện pháp là giả thiết đã có một cây Huffman thụ ( thả vì một cây mãn k xoa thụ ), tắc có thể tính toán ra này diệp tiết điểm số mục vì (k-1)nk+1, tư thế trung nk tỏ vẻ tử tiết điểm số mục vì k tiết điểm số mục. Vì thế đối cấp định n cái quyền giá trị cấu tạo k xoa Huffman thụ khi, có thể trước suy xét gia tăng một ít quyền giá trị vì 0 lá cây tiết điểm, khiến cho lá cây tiết điểm tổng số vì (k-1)nk+1 loại này hình thức, sau đó lại dựa theo Huffman thụ phương pháp tiến hành cấu tạo là được.

Thực hiện phương pháp

Bá báo
Biên tập

Số liệu áp súc

Thực hiệnHuffman mã hóaPhương thức chủ yếu là sáng tạo một cáiNhị xoa thụCùng này tiết điểm. Này đó thụ tiết điểm có thể tồn trữ ởSố tổ,Số tổLớn nhỏ vì ký hiệu ( symbols ) số lớn nhỏn,Mà tiết điểm phân biệt là đầu cuối tiết điểm ( diệp tiết điểm ) cùng phi đầu cuối tiết điểm ( bên trong tiết điểm ).
Ngay từ đầu, sở hữu tiết điểm đều là đầu cuối tiết điểm, tiết điểm nội có ba chữ đoạn:
1. Ký hiệu ( Symbol )
2. Quyền trọng ( Weight, Probabilities, Frequency )
3. Chỉ hướng phụ tiết điểmLiên tiếp( Link to its parent node )
Mà phi đầu cuối tiết điểm nội có bốn chữ đoạn:
1. Quyền trọng ( Weight, Probabilities, Frequency )
2. Chỉ hướng hai cái tử tiết điểmLiên tiếp( Links to two child node )
3. Chỉ hướng phụ tiết điểmLiên tiếp( Link to its parent node )
Trên cơ bản, chúng ta dùng '0' cùng '1' phân biệt đại biểu chỉ hướng tả tử tiết điểm cùng hữu tử tiết điểm, cuối cùng vì hoàn thành nhị xoa thụ cùng sở hữunCái đầu cuối tiết điểm cùngn-1Cái phi đầu cuối tiết điểm, đi trừ bỏ không cần thiết ký hiệu cũng sinh ra tốt nhất mã hóa chiều dài.
Trong quá trình, mỗi cái đầu cuối tiết điểm đều bao hàm một cái quyền trọng ( Weight, Probabilities, Frequency ), hai hai đầu cuối tiết điểm kết hợp sẽ sinh ra một cái tân tiết điểm,Tân tiết điểm quyền trọngLà từHai cái quyền trọng nhỏ nhất đầu cuối tiết điểm quyền trọng chi tổng hoà,Cũng liên tục tiến hành này quá trình thẳng đến chỉ còn lại có một cái tiết điểm mới thôi.
Thực hiện Huffman thụ phương thức có rất nhiều loại, có thể sử dụng ưu tiên đội ngũ ( Priority Queue ) đơn giản đạt thành cái này quá trình, cấp cho quyền trọng so thấp ký hiệu so cao ưu tiên cấp ( Priority ), thuật toán như sau:
⒈ đem n cái đầu cuối tiết điểm gia nhập ưu tiên đội ngũ, tắc n cái tiết điểm đều có một cái ưu tiên quyền Pi, 1 ≤ i ≤ n
⒉ nếu đội ngũ nội tiết điểm số >1, tắc:
  • ⑴ từ đội ngũ trung di trừ hai cái nhỏ nhất Pi tiết điểm, tức liên tục làm hai lần remove ( min ( Pi ), Priority_Queue)
  • ⑵ sinh ra một cái tân tiết điểm, này tiết điểm vì ( 1 ) chi di trừ tiết điểm chi phụ tiết điểm, mà này tiết điểm quyền trọng giá trị vì ( 1 ) hai tiết điểm chi quyền trọng cùng
  • ⑶ đem ( 2 ) sinh ra chi tiết điểm gia nhập ưu tiên đội ngũ trung
⒊ cuối cùng ở ưu tiên đội ngũ điểm vì thụ căn tiết điểm ( root )
Mà này thuật toán thời gian phức tạp độ (Time Complexity) vì O (nlogn); bởi vì có n cái đầu cuối tiết điểm, cho nên thụ tổng cộng có 2n-1 cái tiết điểm, sử dụng ưu tiên đội ngũ mỗi cái tuần hoàn cần O ( logn).
Ngoài ra, có một cái càng mau phương thức sử thời gian phức tạp độ giáng đến tuyến tính thời gian ( Linear Time ) O (n), chính là sử dụng hai cái đội ngũ ( Queue ) sáng tạo Huffman thụ. Cái thứ nhất đội ngũ dùng để tồn trữ n cái ký hiệu ( tức n cái đầu cuối tiết điểm ) quyền trọng, cái thứ hai đội ngũ dùng để tồn trữ hai hai quyền trọng hợp ( tức phi đầu cuối tiết điểm ). Này pháp nhưng bảo đảm cái thứ hai đội ngũ đằng trước ( Front ) quyền trọng vĩnh viễn đều là nhỏ nhất giá trị, thả phương pháp như sau:
⒈ đem n cái đầu cuối tiết điểm gia nhập cái thứ nhất đội ngũ ( y theo quyền trọng đại tiểu sắp hàng, nhỏ nhất ở phía trước đoan )
⒉ nếu đội ngũ nội tiết điểm số >1, tắc:
  • ⑴ từ đội ngũ đằng trước di trừ hai cái thấp nhất quyền trọng tiết điểm
  • ⑵ đem ( 1 ) trung di trừ hai cái tiết điểm quyền trọng tương thêm hợp thành một cái tân tiết điểm
  • ⑶ gia nhập cái thứ hai đội ngũ
⒊ cuối cùng ở cái thứ nhất đội ngũ tiết điểm làm gốc tiết điểm
Tuy rằng sử dụng này phương pháp so sử dụng ưu tiên đội ngũ thời gian phức tạp độ còn thấp, nhưng là chú ý này pháp đệ 1 hạng, tiết điểm cần thiết y theo quyền trọng đại tiểu gia nhập đội ngũ trung, nếu tiết điểm gia nhập trình tự không ấn lớn nhỏ, tắc yêu cầu trải qua bài tự, tắc ít nhất hoa O (nlogn) thời gian phức tạp độ tính toán.
Nhưng là ở bất đồng trạng huống suy tính hạ, thời gian phức tạp độ đều không phải là quan trọng nhất, nếu chúng ta suy xét tiếng Anh chữ cái xuất hiện tần suất, lượng biến đổi n chính là tiếng Anh chữ cái 26 cái chữ cái, tắc sử dụng nào một loại thuật toán thời gian phức tạp độ đều sẽ không ảnh hưởng rất lớn, bởi vì n không phải một bút khổng lồ con số.

Số liệu giải áp súc

Đơn giản tới nói, Huffman mã thụ giải áp súc chính là đem được đến trước trí mã ( Prefix Huffman code ) thay đổi hồi ký hiệu, thông thường mượn từ thụ truy tung ( Traversal ), đem tiếp thu đến so đặc xuyến ( Bits stream ) từng bước một hoàn nguyên. Nhưng là muốn truy tung thụ phía trước, cần thiết muốn trước trùng kiến Huffman thụ; nào đó dưới tình huống, nếu mỗi cái ký hiệu quyền trọng có thể bị trước đó đoán trước, như vậy Huffman thụ liền có thể trước trùng kiến, hơn nữa tồn trữ cũng lặp lại sử dụng, nếu không, gửi đi đoan cần thiết trước gửi đi Huffman thụ tương quan tin tức cấp tiếp thu đoan[1].
Đơn giản nhất phương thức, chính là trước thống kê các ký hiệu quyền trọng cũng gia nhập đến áp súc chi so đặc xuyến, nhưng là này pháp giải toán lượng tiêu phí tương đối lớn, cũng không thích hợp thực tế ứng dụng. Nếu là sử dụng Canonical encoding, tắc nhưng tinh chuẩn biết được thụ trùng kiến số liệu lượng chỉ chiếmB2^BSo đặc ( trong đó B vì mỗi cái ký hiệu so đặc số ( bits ) ). Nếu đơn giản đem tiếp thu đến so đặc xuyến một cái so đặc một cái so đặc trùng kiến, tỷ như: '0' tỏ vẻ phụ tiết điểm, '1' tỏ vẻ đầu cuối tiết điểm, nếu mỗi lần đọc vào tay 1 khi, hạ 8 cái so đặc tắc sẽ bị giải đọc là đầu cuối tiết điểm ( giả thiết số liệu vì 8-bit chữ cái ), tắc Huffman thụ tắc nhưng bị trùng kiến, lấy này phương pháp, số liệu lượng lớn nhỏ khả năng vì 2~320 byte không đợi. Tuy rằng còn có rất nhiều phương pháp có thể trùng kiến Huffman thụ, nhưng bởi vì áp súc số liệu xuyến bao hàm "traling bits", cho nên hoàn nguyên khi nhất định phải suy xét khi nào đình chỉ, không cần hoàn nguyên đến sai lầm giá trị, như ở số liệu áp súc lúc nào cũng hơn nữa mỗi bút số liệu chiều dài chờ.

Thí dụ mẫu

Bá báo
Biên tập
  • Đương có 100 vị trí, có màu trắng chiếm 60%, màu cà phê chiếm 20%, màu lam cùng màu đỏ các chiếm 10%, tắc nên như thế nào phân phối mới có thể tối ưu hóa này chỗ ngồi?
(a)direct:
Giả thiết kết quả vì: Màu trắng vì 00, màu cà phê 01, màu lam 10 cùng màu đỏ 11 cái bits tắc kết quả vì:100*2 = 200bits
(b)huffman code: (must be satisfy the following conditions, if not change the node)
(1) sở hữu mã toàn ở Coding Tree điểm cuối, lại đi xuống không có phân chi ( thỏa mãn nhất trí giải mã cùng nháy mắt giải mã )
(2) cơ suất càng lớn, code length càng ngắn; cơ suất càng nhỏ, code length càng dài
(3) giả thiết
Là đệ L tầng node,
Là đệ L+1 tầng node
Tắc
Cần thiết thỏa mãn
Giả thiết kết quả vì: Màu trắng chiếm 0, màu cà phê 10, màu lam 110 cùng màu đỏ 111 cái bits
Tắc kết quả vì:60*1+20*2+20*3=160bits
Lẫn nhau tương đối hai cái kết quả huffman code suốt thiếu 40bits tồn trữ không gian.