# US 2018/0026656 A1 · Technologies for heuristic huffman code generation

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 2018/0026656 A1
- Document ID: US20180026656A1
- Status: Published application
- Kind: A1
- Application number: 15/639,602
- Filed: 2017-06-30
- Published: 2018-01-25
- Earliest claimed: 2016-07-22
- Assignees: Intel Corporation
- Applicants: Intel Corporation
- Inventors: Vinodh Gopal; James D. Guilford
- Web page: https://patentgrep.com/patent/US20180026656A1

## CPC

- G06F 3/061: {Improving I/O performance}
- G02B 6/3882: {using rods, pins or balls to align a pair of ferrule ends}
- G02B 6/3893: {Push-pull type, e.g. snap-in, push-on}
- G02B 6/3897: {Connectors fixed to housings, casing, frames or circuit boards (G02B6/44528 takes precedence)}
- G02B 6/4292: {the light guide being disconnectable from the opto-electronic element, e.g. mutually self aligning arrangements}
- G06F 1/183: Internal mounting support structures, e.g. for supporting printed circuit boards
- G06F 1/20: Cooling means
- G06F 3/0613: {in relation to throughput}
- G06F 3/0625: {Power saving in storage systems}
- G06F 3/064: {Management of blocks}
- G06F 3/065: {Replication mechanisms}
- G06F 3/0653: {Monitoring storage devices or systems}
- G06F 3/0655: {Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices}
- G06F 3/0664: {at device level, e.g. emulation of a storage device or system}
- G06F 3/0665: {at area level, e.g. provisioning of virtual or logical volumes}
- G06F 3/0673: {Single storage device}
- G06F 3/0679: {Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]}
- G06F 3/0683: {Plurality of storage devices}
- G06F 3/0688: {Non-volatile semiconductor memory arrays}
- G06F 3/0689: {Disk arrays, e.g. RAID, JBOD}
- G06F 8/65: Updates (security arrangements therefor G06F21/57)
- G06F 9/30036: {Instructions to perform operations on packed data, e.g. vector, tile or matrix operations}
- G06F 9/4401: Bootstrapping (security arrangements therefor G06F21/57)
- G06F 9/4881: {Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues}
- G06F 9/5027: {the resource being a machine, e.g. CPUs, Servers, Terminals}
- G06F 9/544: {Buffers; Shared memory; Pipes}
- G06F 12/109: for multiple virtual address spaces, e.g. segmentation (G06F12/1036 takes precedence)
- G06F 12/1408: {by using cryptography (for digital transmission H04L9/00)}
- G06F 13/1668: {Details of memory controller}
- G06F 13/385: {for adaptation of a particular data processing system to different peripheral devices}
- G06F 13/4022: {using switching circuits, e.g. switching matrix, connection or expansion network (G06F13/4009 takes precedence)}
- G06F 13/4068: {Electrical coupling}
- G06F 13/409: {Mechanical coupling (back panels H05K7/1438)}
- G06F 15/161: {Computing infrastructure, e.g. computer clusters, blade chassis or hardware partitioning (casings, cabinets, racks or drawers for data centers H05K5/00)}
- G06F 16/1748: {De-duplication implemented within the file system, e.g. based on file segments (de-duplication techniques in storage systems for the management of data blocks G06F3/0641)}
- G06F 16/9014: {hash tables}
- G08C 17/02: using a radio link
- G11C 5/02: Disposition of storage elements, e.g. in the form of a matrix array
- G11C 7/1072: {for memories with random access ports synchronised on clock signal pulse trains, e.g. synchronous memories, self timed memories}
- G11C 11/56: using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
- G11C 14/0009: {in which the volatile element is a DRAM cell}
- H03M 7/3084: {using adaptive string matching, e.g. the Lempel-Ziv method}
- H03M 7/3086: {employing a sliding window, e.g. LZ77}
- H03M 7/4056: {Coding table selection}
- H03M 7/4081: {Static prefix coding}
- H04B 10/25891: {Transmission components (H04B10/40 takes precedence)}
- H04L 41/145: {involving simulating, designing, planning or modelling of a network}
- H04L 43/0817: by checking functioning
- H04L 43/0876: Network utilisation, e.g. volume of load or congestion level
- H04L 43/0894: Packet rate
- H04L 47/83: based on usage prediction
- H04L 49/00: Packet switching elements
- H04L 49/25: Routing or path finding in a switch fabric
- H04L 49/35: Switches specially adapted for specific applications
- H04L 49/357: {Fibre channel switches}
- H04L 49/45: Arrangements for providing or supporting expansion
- H04L 67/02: based on web technology, e.g. hypertext transfer protocol [HTTP]
- H04L 67/306: User profiles
- H04L 69/04: Protocols for data compression, e.g. ROHC
- H04L 69/329: in the application layer [OSI layer 7]
- H04Q 1/09: {Frames or mounting racks not otherwise provided for}
- H04Q 11/0003: {Details}
- H05K 7/1442: {with a radial structure}
- B25J 15/0014: {having fork, comb or plate shaped means for engaging the lower surface on a object to be transported}
- B65G 1/0492: {with cars adapted to travel in storage aisles}
- G05D 23/1921: {using a thermal motor}
- G05D 23/2039: {using mechanical means}
- G06F 3/0611: {in relation to response time}
- G06F 3/0616: {in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]}
- G06F 3/0619: {in relation to data integrity, e.g. data losses, bit errors}
- G06F 3/0631: {by allocating resources to storage systems}
- G06F 3/0638: {Organizing or formatting or addressing of data}
- G06F 3/0647: {Migration mechanisms}
- G06F 3/0658: {Controller construction arrangements}
- G06F 3/0659: {Command handling arrangements, e.g. command buffers, queues, command scheduling}
- G06F 3/067: {Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]}
- G06F 9/3887: {controlled by a single instruction for multiple data lanes [SIMD]}
- G06F 9/5016: {the resource being the memory}
- G06F 9/5044: {considering hardware capabilities}
- G06F 9/505: {considering the load}
- G06F 9/5072: {Grid computing}
- G06F 9/5077: {Logical partitioning of resources; Management or configuration of virtualized resources (specific details on emulation or internal functioning of virtual machines G06F9/455)}
- G06F 11/141: {for bus or memory accesses}
- G06F 11/3414: {Workload generation, e.g. scripts, playback}
- G06F 12/0862: with prefetch
- G06F 12/0893: Caches characterised by their organisation or structure
- G06F 12/10: Address translation
- G06F 13/161: {with latency improvement}
- G06F 13/1694: {Configuration of memory controller to different memory types}
- G06F 13/42: Bus transfer protocol, e.g. handshake; Synchronisation
- G06F 13/4282: {on a serial bus, e.g. I2C bus, SPI bus (on daisy chain buses G06F13/4247)}
- G06F 15/8061: {Details on data memory access}
- G06F 2209/483: Multiproc
- G06F 2209/5019: Workload prediction
- G06F 2209/5022: Workload threshold
- G06F 2212/1008: Correctness of operation, e.g. memory ordering
- G06F 2212/1024: Latency reduction
- G06F 2212/1041: Resource optimization
- G06F 2212/1044: Space efficiency improvement
- G06F 2212/152: Virtualized environment, e.g. logically partitioned system
- G06F 2212/202: Non-volatile memory
- G06F 2212/401: Compressed data
- G06F 2212/402: Encrypted data
- G06F 2212/7207: management of metadata or control data
- G06Q 10/06: Resources, workflows, human or project management; Enterprise or organisation planning; Enterprise or organisation modelling
- G06Q 10/06314: {Calendaring for a resource}
- G06Q 10/087: Inventory or stock management, e.g. order filling, procurement or balancing against orders
- G06Q 10/20: Administration of product repair or maintenance
- G06Q 50/04: Manufacturing
- G07C 5/008: {communicating information to a remotely located station (transmission systems for measured values G08C)}
- G08C 2200/00: Transmission systems for measured values, control or similar signals
- G11C 5/06: Arrangements for interconnecting storage elements electrically, e.g. by wiring
- H03M 7/30: Compression (speech analysis-synthesis for redundancy reduction G10L19/00; for image communication H04N); Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M 7/40: Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
- H03M 7/4031: {Fixed length to variable length coding}
- H03M 7/6005: {Decoder aspects}
- H03M 7/6023: {Parallelization}
- H04B 10/25: Arrangements specific to fibre transmission
- H04J 14/00: Optical multiplex systems
- H04L 9/0643: {Hash functions, e.g. MD5, SHA, HMAC or f9 MAC}
- H04L 9/14: using a plurality of keys or algorithms
- H04L 9/3247: {involving digital signatures}
- H04L 9/3263: {involving certificates, e.g. public key certificate [PKC] or attribute certificate [AC]; Public key infrastructure [PKI] arrangements (network architectures or network communication protocols for supporting authentication of entities using certificates in a packet data network H04L63/0823)}
- H04L 12/2809: {indicating that an appliance service is present in a home automation network (monitoring functionality H04L43/0817; discovery or management thereof, e.g. service location protocol [SLP] or web services, H04L67/51)}
- H04L 41/024: {using relational databases for representation of network management data, e.g. managing via structured query language [SQL]}
- H04L 41/046: comprising network management agents or mobile agents therefor
- H04L 41/0813: characterised by the conditions triggering a change of settings
- H04L 41/082: the condition being updates or upgrades of network functionality
- H04L 41/12: Discovery or management of network topologies
- H04L 41/149: for prediction of maintenance
- H04L 41/40: using virtualisation of network functions or resources, e.g. SDN or NFV entities
- H04L 41/5019: Ensuring fulfilment of SLA
- H04L 43/065: related to network devices
- H04L 43/16: Threshold monitoring
- H04L 45/02: Topology update or discovery
- H04L 45/52: Multiprotocol routers
- H04L 47/24: Traffic characterised by specific attributes, e.g. priority or QoS
- H04L 47/38: by adapting coding or compression rate
- H04L 47/765: triggered by the end-points
- H04L 47/782: {Hierarchical allocation of resources, e.g. involving a hierarchy of local and centralised entities}
- H04L 47/805: {QOS or priority aware}
- H04L 47/82: {Miscellaneous aspects}
- H04L 49/15: Interconnection of switching modules
- H04L 49/555: {Error detection}
- H04L 61/00: Network arrangements, protocols or services for addressing or naming
- H04L 67/10: in which an application is distributed across nodes in the network (software deployment G06F8/60; multiprogramming arrangements G06F9/46)
- H04L 67/1004: Server selection for load balancing
- H04L 67/1008: based on parameters of servers, e.g. available memory or workload (monitoring of computer activity G06F11/30)
- H04L 67/1012: based on compliance of requirements or conditions with available server resources
- H04L 67/1014: based on the content of a request
- H04L 67/1029: using data related to the state of servers by a load balancer
- H04L 67/1034: Reaction to server failures by a load balancer
- H04L 67/1097: for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
- H04L 67/12: specially adapted for proprietary or special-purpose networking environments, e.g. medical networks, sensor networks, networks in vehicles or remote metering networks
- H04L 67/34: {involving the movement of software or configuration parameters (network booting or remote initial program loading [RIPL] G06F9/4416)}
- H04L 67/51: Discovery or management thereof, e.g. service location protocol [SLP] or web services
- H04Q 1/04: Frames or mounting racks for selector switches; Accessories therefor, e.g. frame cover
- H04Q 11/00: Selecting arrangements for multiplex systems (multiplex systems H04J)
- H04Q 11/0005: {Switch and router aspects}
- H04Q 11/0062: {Network aspects}
- H04Q 11/0071: {Provisions for the electrical-optical layer interface}
- H04Q 2011/0037: {Operation}
- H04Q 2011/0041: {Optical control}
- H04Q 2011/0052: {Interconnection of switches}
- H04Q 2011/0073: {Provisions for forwarding or routing, e.g. lookup tables}
- H04Q 2011/0079: {Operation or maintenance aspects}
- H04Q 2011/0086: {Network resource allocation, dimensioning or optimisation}
- H04Q 2213/13523: bandwidth management, e.g. capacity management
- H04Q 2213/13527: protocols - X.25, TCAP etc.
- H04W 4/023: {using mutual or relative location information between multiple location based services [LBS] targets or of distance thresholds}
- H04W 4/80: Services using short range communication, e.g. near-field communication [NFC], radio-frequency identification [RFID] or low energy communication
- H05K 1/0203: {Cooling of mounted components (H05K1/0272 takes precedence)}
- H05K 1/181: associated with surface mounted components
- H05K 5/0204: {Mounting supporting structures on the outside of casings}
- H05K 7/1418: {Card guides, e.g. grooves (H05K7/1425 takes precedence)}
- H05K 7/1421: {Drawers for printed circuit boards}
- H05K 7/1422: {Printed circuit boards receptacles, e.g. stacked structures, electronic circuit modules or box like frames}
- H05K 7/1447: {External wirings; Wiring ducts; Laying cables}
- H05K 7/1461: {Slidable card holders; Card stiffeners; Control or display means therefor}
- H05K 7/1485: {Servers; Data center rooms, e.g. 19-inch computer racks}
- H05K 7/1487: {Blade assemblies, e.g. blade cases or inner arrangements within a blade}
- H05K 7/1489: {characterized by the mounting of blades therein, e.g. brackets, rails, trays (H05K7/1491 takes precedence)}
- H05K 7/1491: {having cable management arrangements (management of optical cables G02B6/444; in telecommunication cabinets H04Q1/06)}
- H05K 7/1492: {having electrical distribution arrangements, e.g. power supply or data communications}
- H05K 7/1498: {Resource management, Optimisation arrangements, e.g. configuration, identification, tracking, physical location (thermal management H05K7/20836)}
- H05K 7/2039: {characterised by the heat transfer by conduction from the heat generating element to a dissipating body (arrangements for increasing/decreasing heat-transfer, e.g. fins details, F28F13/00)}
- H05K 7/20709: {for server racks or cabinets; for data centers, e.g. 19-inch computer racks}
- H05K 7/20727: {within server blades for removing heat from heat source}
- H05K 7/20736: {within cabinets for removing heat from server blades}
- H05K 7/20745: {within rooms for removing heat from cabinets, e.g. by air conditioning device}
- H05K 7/20836: {Thermal management, e.g. server temperature control}
- H05K 13/0486: {Replacement and removal of components}
- H05K 2201/066: Heatsink mounted on the surface of the printed circuit board [PCB]
- H05K 2201/10121: Optical component, e.g. opto-electronic component
- H05K 2201/10159: Memory
- H05K 2201/10189: Non-printed connector
- Y02D 10/00: Energy efficient computing, e.g. low power processors, power management or thermal management
- Y02P 90/30: Computing systems specially adapted for manufacturing
- Y04S 10/50: Systems or methods supporting the power network operation or management, involving a certain degree of interaction with the load-side end user applications
- Y04S 10/52: Outage or fault management, e.g. fault detection or location
- Y10S 901/01: Mobile robot
- Y10S 901/30: End effector
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- G02B: OPTICAL ELEMENTS, SYSTEMS OR APPARATUS
- G08C: TRANSMISSION SYSTEMS FOR MEASURED VALUES, CONTROL OR SIMILAR SIGNALS (fluid pressure transmitting systems F15B; mechanical means for transferring the output of a sensing member into a different variable G01D5/00; mechanical control systems G05G)
- G11C: STATIC STORES (semiconductor memory devices H10B)
- H03M: CODING; DECODING; CODE CONVERSION IN GENERAL (using fluidic means F15C4/00; optical analogue/digital converters G02F7/00; coding, decoding or code conversion, specially adapted for particular applications, see the relevant subclasses, e.g. G01D, G01R, G06F, G06T, G09G, G10L, G11B, G11C, H04B, H04L, H04M, H04N; ciphering or deciphering for cryptography or other purposes involving the need for secrecy G09C)
- H04B: TRANSMISSION
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)
- H04Q: SELECTING (switches, relays, selectors H01H; wireless communication networks H04W)
- H05K: PRINTED CIRCUITS; CASINGS OR CONSTRUCTIONAL DETAILS OF ELECTRIC APPARATUS; MANUFACTURE OF ASSEMBLAGES OF ELECTRICAL COMPONENTS
- B25J: MANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES ({manipulators specially adapted for use in surgery A61B34/70; manipulators used in cleaning hollow articles B08B9/04}; manipulators associated with rolling mills B21B39/20; manipulators associated with forging machines B21J13/10; {manipulators associated with picking-up and placing mechanisms B23P19/007}; means for holding wheels or parts thereof B60B30/00; {vehicles with ground-engaging propulsion means, e.g. walking members B62D57/02, B62D57/032; devices for picking-up and depositing articles or materials between conveyors B65G47/90, B65G47/91; manipulators with gripping or holding means for transferring packages B65H67/065}; cranes B66C; {manipulators used in the protection or supervision of pipe-line installations F17D5/00; walking equipment adapted for nuclear steam-generators F22B37/006}; manipulators specially adapted for, or associated with, nuclear reactors G21C; {apparatus used for handling wafers during manufacture or treatment of semiconductor H10P72/50})
- B65G: TRANSPORT OR STORAGE DEVICES, e.g. CONVEYORS FOR LOADING OR TIPPING, SHOP CONVEYOR SYSTEMS OR PNEUMATIC TUBE CONVEYORS (packaging B65B; handling thin or filamentary materials, e.g. paper sheets or thread, B65H; cranes B66C; portable mobile or lifting or hauling appliances, e.g. hoists, B66D; devices for lifting or lowering goods for loading or unloading purposes, e.g. fork-lift trucks, B66F9/00; emptying bottles, jars, casks, barrels or similar containers, not otherwise provided for, B67C9/00; delivering or transferring liquids B67D; filling or discharging vessels for liquefied, solidified or compressed gases F17C; pipe-line systems for fluids F17D)
- G05D: SYSTEMS FOR CONTROLLING OR REGULATING NON-ELECTRIC VARIABLES
- G06Q: INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G07C: TIME OR ATTENDANCE REGISTERS; REGISTERING OR INDICATING THE WORKING OF MACHINES; GENERATING RANDOM NUMBERS; VOTING OR LOTTERY APPARATUS; ARRANGEMENTS, SYSTEMS OR APPARATUS FOR CHECKING NOT PROVIDED FOR ELSEWHERE
- H04J: MULTIPLEX COMMUNICATION (transmission in general H04B; peculiar to transmission of digital information H04L5/00; systems for the simultaneous or sequential transmission of more than one television signal H04N7/08; in exchanges H04Q11/00; stereophonic systems H04S)
- H04W: WIRELESS COMMUNICATION NETWORKS (broadcast communication H04H; communication systems using wireless links for non-selective communication, e.g. wireless extensions H04M1/72)
- Y02D: CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02P: CLIMATE CHANGE MITIGATION TECHNOLOGIES IN THE PRODUCTION OR PROCESSING OF GOODS
- Y04S: SYSTEMS INTEGRATING TECHNOLOGIES RELATED TO POWER NETWORK OPERATION, COMMUNICATION OR INFORMATION TECHNOLOGIES FOR IMPROVING THE ELECTRICAL POWER GENERATION, TRANSMISSION, DISTRIBUTION, MANAGEMENT OR USAGE, i.e. SMART GRIDS
- Y10S: TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS

## Abstract

Technologies for heuristic Huffman code generation include a computing device that generates a weighted list of symbols for a data block. The computing device determines a threshold weight and identifies one or more lightweight symbols in the list that have a weight less than or equal to the threshold weight. The threshold weight may be the average weight of all symbols with non-zero weight in the list. The computing device generates a balanced sub-tree of nodes for the lightweight symbols, with each lightweight symbol associated with a leaf node. The computing device adds the remaining symbols and the root of the balanced sub-tree to a heap and generates a Huffman code tree by processing the heap. The threshold weight may be adjusted to tune performance and compression ratio. Other embodiments are described and claimed.

## Claims

### Claim 1

A computing device comprising:
a heuristic processor to (i) determine a threshold weight for a list of symbols, wherein each symbol is associated with a weight, (ii) identify one or more lightweight symbols of the list of symbols, wherein the weight of each lightweight symbol has a predetermined relationship to the threshold weight, and (iii) generate a balanced sub-tree of nodes for the lightweight symbols, wherein each of the lightweight symbols is associated with a leaf node of the balanced sub-tree; and
a tree processor to generate a Huffman code tree for any remaining symbols of the list of symbols other than the lightweight symbols and a root node of the balanced sub-tree.

### Claim 2 (depends on 1)

The computing device of claim 1, wherein the predetermined relationship comprises less than or equal to.

### Claim 3 (depends on 1)

The computing device of claim 1, further comprising a Huffman encoder to:
compute a Huffman code length for each symbol of the list of symbols based on a depth of a corresponding node in the Huffman code tree; and
encode a data block with the Huffman code lengths, wherein the data block comprises a block of symbols.

### Claim 4 (depends on 1)

The computing device of claim 1, further comprising a hardware compression engine to generate the list of symbols, wherein to identify the one or more lightweight symbols comprises to identify the one or more lightweight symbols in response to generation of the list of symbols.

### Claim 5 (depends on 1)

The computing device of claim 1, wherein to determine the threshold weight for the list of symbols comprises to determine an average weight for each symbol of the list of symbols.

### Claim 6 (depends on 5)

The computing device of claim 5, wherein to determine the threshold weight for the list of symbols further comprises to scale the average weight by a predetermined scale factor.

### Claim 7 (depends on 1)

The computing device of claim 1, wherein to identify the one or more lightweight symbols of the list of symbols comprises to identify all symbols of the list of symbols as the lightweight symbols.

### Claim 8 (depends on 1)

The computing device of claim 1, wherein to generate the Huffman code tree for the remaining symbols of the list of symbols and the root node of the balanced sub-tree comprises to:
add the remaining symbols and the root node to a heap data structure; and
while the heap data structure includes more than one node, to:
pop a first node and a second node from the heap data structure, wherein the first node and the second node each have a weight, and wherein the weights of the first node and the second node are the smallest weights in the heap data structure;
create a third node, wherein the third node is a parent node of the first node and the second node, and wherein a weight of the third node is a sum of the weight of first node and the weight of the second node; and
insert the third node in the heap data structure.

### Claim 9 (depends on 8)

The computing device of claim 8, wherein to generate the Huffman code tree further comprises to add the first node and the second node to a sorted list of nodes in response to a pop of the first node and the second node.

### Claim 10 (depends on 1)

The computing device of claim 1, wherein to generate the Huffman code tree for the remaining symbols of the list of symbols and the root node of the balanced sub-tree comprises to:
add the remaining symbols and the root node of the balanced sub-tree to a heap data structure; and
while the heap data structure includes more than one node, to:
pop a first node from the heap data structure, wherein the first node has a weight, and wherein the weight of the first node is the smallest weight in the heap data structure;
create a second node, wherein the second node is a parent node of the first node and a third node, wherein the third node is at a top of the heap data structure, and wherein a weight of the second node is a sum of the weight of first node and the weight of the third node; and
replace the third node in the heap data structure with the second node.

### Claim 11

One or more computer-readable storage media comprising a plurality of instructions that in response to being executed cause a computing device to:
determine a threshold weight for a list of symbols, wherein each symbol is associated with a weight;
identify one or more lightweight symbols of the list of symbols, wherein the weight of each lightweight symbol has a predetermined relationship to the threshold weight;
generate a balanced sub-tree of nodes for the lightweight symbols, wherein each of the lightweight symbols is associated with a leaf node of the balanced sub-tree; and
generate a Huffman code tree for any remaining symbols of the list of symbols other than the lightweight symbols and a root node of the balanced sub-tree.

### Claim 12 (depends on 11)

The one or more computer-readable storage media of claim 11, wherein the predetermined relationship comprises less than or equal to.

### Claim 13 (depends on 11)

The one or more computer-readable storage media of claim 11, wherein to determine the threshold weight for the list of symbols comprises to determine an average weight for each symbol of the list of symbols.

### Claim 14 (depends on 13)

The one or more computer-readable storage media of claim 13, wherein to determine the threshold weight for the list of symbols further comprises to scale the average weight by a predetermined scale factor.

### Claim 15 (depends on 11)

The one or more computer-readable storage media of claim 11, wherein to identify the one or more lightweight symbols of the list of symbols comprises to identify all symbols of the list of symbols as the lightweight symbols.

### Claim 16 (depends on 11)

The one or more computer-readable storage media of claim 11, wherein to generate the Huffman code tree for the remaining symbols of the list of symbols and the root node of the balanced sub-tree comprises to:
add the remaining symbols and the root node to a heap data structure; and
while the heap data structure includes more than one node:
pop a first node and a second node from the heap data structure, wherein the first node and the second node each have a weight, and wherein the weights of the first node and the second node are the smallest weights in the heap data structure;
create a third node, wherein the third node is a parent node of the first node and the second node, and wherein a weight of the third node is a sum of the weight of first node and the weight of the second node; and
insert the third node in the heap data structure.

### Claim 17 (depends on 16)

The one or more computer-readable storage media of claim 16, wherein to generate the Huffman code tree further comprises to add the first node and the second node to a sorted list of nodes in response to popping the first node and the second node.

### Claim 18 (depends on 11)

The one or more computer-readable storage media of claim 11, wherein to generate the Huffman code tree for the remaining symbols of the list of symbols and the root node of the balanced sub-tree comprises to:
add the remaining symbols and the root node of the balanced sub-tree to a heap data structure; and
while the heap data structure includes more than one node:
pop a first node from the heap data structure, wherein the first node has a weight, and wherein the weight of the first node is the smallest weight in the heap data structure;
create a second node, wherein the second node is a parent node of the first node and a third node, wherein the third node is at a top of the heap data structure, and wherein a weight of the second node is a sum of the weight of first node and the weight of the third node; and
replace the third node in the heap data structure with the second node.

### Claim 19

A computing device comprising a heuristic processor to:
determine a threshold weight for a list of symbols, wherein each symbol is associated with a weight;
identify one or more lightweight symbols of the list of symbols, wherein the weight of each lightweight symbol has a predetermined relationship to the threshold weight;
generate a first balanced sub-tree of nodes for the lightweight symbols, wherein each of the lightweight symbols is associated with a leaf node of the first balanced sub-tree;
generate a second balanced sub-tree of nodes for one or more remaining symbols of the list of symbols other than the lightweight symbols, wherein each of the remaining symbols is associated with a leaf node of the second balanced sub-tree; and
join the first balanced sub-tree and the second balanced sub-tree with a root node to generate a Huffman code tree.

### Claim 20 (depends on 19)

The computing device of claim 19, wherein the predetermined relationship comprises less than or equal to.

### Claim 21 (depends on 19)

The computing device of claim 19, further comprising a Huffman encoder to:
compute a Huffman code length for each symbol of the list of symbols based on a depth of a corresponding node in the Huffman code tree; and
encode a data block with the Huffman code lengths, wherein the data block comprises a block of symbols.

### Claim 22 (depends on 19)

The computing device of claim 19, further comprising a hardware compression engine to generate the list of symbols, wherein to identify the one or more lightweight symbols comprises to identify the one or more lightweight symbols in response to generation of the list of symbols.

### Claim 23

One or more computer-readable storage media comprising a plurality of instructions that in response to being executed cause a computing device to:
determine a threshold weight for a list of symbols, wherein each symbol is associated with a weight;
identify one or more lightweight symbols of the list of symbols, wherein the weight of each lightweight symbol has a predetermined relationship to the threshold weight;
generate a first balanced sub-tree of nodes for the lightweight symbols, wherein each of the lightweight symbols is associated with a leaf node of the first balanced sub-tree;
generate a second balanced sub-tree of nodes for one or more remaining symbols of the list of symbols other than the lightweight symbols, wherein each of the remaining symbols is associated with a leaf node of the second balanced sub-tree; and
join the first balanced sub-tree and the second balanced sub-tree with a root node to generate a Huffman code tree.

### Claim 24 (depends on 23)

The one or more computer-readable storage media of claim 23, wherein the predetermined relationship comprises less than or equal to.
