Johnsonin raja määrittelee pituuskoodin tehorajan ja minimietäisyyden .
Antaa olla -th pituinen koodi kentän päällä tai toisin sanoen :n osajoukko . Olkoon koodin minimietäisyys , ts .
missä on Hamming- etäisyys koodisanojen ja .
Antaa olla joukko kaikista -th koodit pituus ja pienin etäisyys , ja anna merkitsee osajoukko kaikkien tasapainokoodit , toisin sanoen kaikki koodit, joiden paino kaikki koodisanat on yhtä suuri .
Merkitään koodisanojen lukumäärällä , ja — pituuskoodin maksimikardinaliteetti ja pienin etäisyys , ts.
Samoin määrittelemme koodin maksimitehoksi :
Lause 1 (Johnson matkalla kohti ):
klo
Huomaa: löytääksesi ylärajan parillisille arvoille , voit käyttää seuraavaa yhtälöä
Lause 2 (Johnson matkalla kohti ):
klo
Kun anna , ja myös silloin
jossa operaattori merkitsee luvun kokonaislukuosaa .
Huomautus: Korvaamalla Lauseen 2 rajan lauseeseen 1, saadaan yläraja .
Antaa olla koodi pituus , teho vähimmäisetäisyys , joka sisältää nollavektorin. Merkitään joukolla vektoreita, jotka ovat etäisyyden päässä koodista , eli
Siten ,. Sitten , koska jos vektori sijaitsisi etäisyydellä tai kauempana koodista , voisimme lisätä sen koodiin ja saada vielä suuremman tehon koodin. Koska joukot eivät leikkaa toisiaan, tämä merkitsee pallomaisen pakkauksen rajaa . Halutun rajan saamiseksi arvioimme tehon .
Valitaan mielivaltainen koodisana ja siirretään koodia sopivalla siirrolla koordinaattien alkupisteeseen. Painokoodisanat muodostavat tasapainokoodin , jonka vähimmäisetäisyys on vähintään , ja siksi painokoodisanojen määrä ei ylitä .
Merkitään painovektorijoukolla . _ Mikä tahansa vektori kohteesta kuuluu joko , tai . Jokainen painokoodisana vastaa painovektoreita , jotka ovat etäisyyden päässä .
Kaikki nämä vektorit ovat erilaisia ja kuuluvat joukkoon . Näin ollen
Vektori joukosta on enintään koodisanojen etäisyydellä. Todellakin, siirretään origo johonkin pisteeseen ja lasketaan kuinka monta koodisanaa voi olla etäisyyden päässä ja niiden välillä voi olla Hamming-etäisyys . Niitä ei määritelmän mukaan pitäisi olla enemmän . Siksi vektorit joukosta voidaan laskea korkeintaan , eli jokainen koodisana vastaa vähintään
eri vektoreita etäisyyden päässä kohteesta .