I kodningsteorin ger Kraft-McMillan-ojämlikheten ett nödvändigt och tillräckligt villkor för existensen av separerbara koder och prefixkoder som har en given uppsättning kodordslängder.
Låt två godtyckliga ändliga uppsättningar ges , som kallas respektive det kodade alfabetet och det kodade alfabetet . Deras element kallas tecken , och strängar (sekvenser av ändlig längd) av tecken kallas ord . Längden på ett ord är antalet tecken det består av.
Som ett kodningsalfabet betraktas ofta en uppsättning - det så kallade binära eller binära alfabetet.
Ett alfabetiskt kodningsschema (eller helt enkelt (alfabetisk) kod ) är varje mappning av tecknen i det kodade alfabetet till ord i kodningsalfabetet, som kallas kodord . Med hjälp av kodningsschemat kan varje ord i det kodade alfabetet associeras med dess kod - sammanlänkningen av kodord som motsvarar varje tecken i detta ord.
En kod kallas separerbar (eller unikt avkodbar ) om inte två ord i det kodade alfabetet kan associeras med samma kod.
En prefixkod är en alfabetisk kod där inget av kodorden är ett prefix till något annat kodord. Alla prefixkoder kan separeras.
Macmillans teorem (1956) . Låt de kodade och kodande alfabeten som består av respektive symboler anges och de önskade längderna på kodorden anges: . Då är ett nödvändigt och tillräckligt villkor för att det finns separerbara koder och prefixkoder med en given uppsättning kodordslängder uppfyllandet av olikheten: |
Denna ojämlikhet är känd som Craft-MacMillan ojämlikhet . Det härleddes först av Leon Kraft i sin masteruppsats 1949 [1] , men han betraktade endast prefixkoder, så när man diskuterar prefixkoder kallas denna ojämlikhet ofta helt enkelt som Krafts ojämlikhet . 1956 bevisade Brockway Macmillan nödvändigheten och tillräckligheten av denna ojämlikhet för en mer allmän klass av koder, separerbara koder. [2]
Alla rotade binära träd kan ses som en grafisk beskrivning av en prefixkod över ett binärt alfabet: tecknen i det kodade alfabetet motsvarar trädets löv, och sökvägen i trädet från roten till bladet anger dess kod ( banan består av en sekvens av rörelser "vänster" och "höger" som motsvarar tecknen 0 och 1).
För sådana träd säger Kraft-McMillan ojämlikheten att:
var är trädets lövuppsättning, och är bladets djup , antalet kanter på banan från roten till .
För trädet i figuren till höger har vi: