A 2002-2003 tanévi 11-12-es FPI tehetséggondozó szakkör 18. foglalkozása

Kódok

Összeállította Hraskó András és Szőnyi Tamás

4. szakkör

Folytattuk a Kódok feladatgyűjtemény feldolgozását, leginkább az 5.9. feladattal foglalkoztunk. Menet közben megis­mer­ked­tünk a lineáris kód fogalmával, és több példán is láttuk, hogyan lehet 1-hiba javító lineáris kódot konstruálni.

Házi feladatnak a múlt óráról megmaradt: hétszögminták, 13-as totó, új példák: 5.11, fizetős barkochba.

5.9 Most is az 1, 2, 3, ...16 számok közül kell kitalálni egyet barkochba kérdésekkel. Kérdéseinket előre le kell írni és nincs befolyásunk arra, hogy a gondoló milyen sorrendben nézi és válaszolja meg azokat.[1] Hány kérdéssel tudjuk biztosan kitalálni a gondolt számot, ha várhatóan egyszer (legfeljebb egyszer) téves választ kapunk?

Megoldás (Alsó korlát)
Tegyük fel, hogy k előre leírt kérdéssel ki lehet találni a gondolt számot. Tekintsük ezt a k kérdést, és válasszuk ki a 16 szám egyikét, mintha az lenne a gondolt szám. Válaszoljuk meg a k db kérdést hazugság nélkül. Írjunk 0-t az "igen", 1-est a "nem" válasz helyett. Így egy k hosszúságú 0-1 sorozatot kapunk, amit a kiválasztott szám kódjának fogok nevezni. Ha a válaszoló egyszer hazudik, akkor nem a szám kódját kapjuk, hanem egy olyan sorozatot, amely egy helyen különbözik a szám kódjától. Az ilyen sorozatokat a szám álkódjának fogom nevezni. Álkódból éppen k darab van, mert a k kérdésből egyre kaphatunk rossz választ, és mindegyik kérdésre egyféle rossz választ kaphatunk. A 16 számhoz 16 kód és 16k álkód tartozik. Ezeknek mind különbözőeknek kell lennie, mert ha volna közös elemük, akkor az annak a 0-1 sorozatnak megfelelő válaszok esetén nem tudnánk kitalálni a gondolt számot. Összesen 2k darab k hosszú 0-1 sorozat van, így biztosan teljesül a 16·(k+1) ≤  2k egyenlőtlenség. A két oldal értékét k = 1, 2, ... esetén táblázatban írom fel.


k 1 2 3 4 5 6 7 8
16· (k+1) 32 48 64 80 96 112 128 144
2k 2 4 8 16 32 64 128 256

Látható, hogy az egyenlőtlenség a k = 7 esetben teljesül először. Tehát legalább 7 előre leírt kérdésre van szükség.

I. konstrukció ("Mohó algoritmus")
7 előre leírt kérdéssel megoldható a feladat.
Ennek igazolásához 16 db olyan 7 hosszúságú 0-1 sorozatot kell megadni, amelyek közül bármelyik kettő legalább három helyen eltér egymástól. Ebből ugyanis következik, hogy a 16 kód és 16·7 álkód mind különböző lesz: ha két különböző kódhoz tartozó álkód megegyezik, akkor a két kód csak két helyen tér el egymástól.
Mohó algoritmussal dolgozunk. A 0000000 sorozattól kezdve a lexikografikusan legkisebb olyan sorozatot keressük, amelyik mindegyik korábban már kiválasztott sorozattól legalább 3 helyen különbözik. Az eredményül kapott 16 db 0 - 1 sorozat az alábbi táblázat oszlopaiban található:


  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
1. sor 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
2. sor 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1
3. sor 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1
4. sor 0 0 1 1 1 1 0 0 1 1 0 0 0 0 1 1
5. sor 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
6. sor 0 1 0 1 1 0 1 0 1 0 1 0 0 1 0 1
7. sor 0 1 1 0 0 1 1 0 1 0 0 1 1 0 0 1

A 7 kérdés a 7 sorból olvasható ki. Egy oszlophoz tartozó kérdés, azokra az 1 és 16 közti számokra kérdez rá, amelyek sorában az adott oszlopban 0 áll. A hét kérdés mindegyike így kezdődik: "A gondolt szám az itt megadott halmazban van?". A hét megadott halmaz az alábbi sorokban olvasható:

1. kérdés: 1 2 3 4 5 6 7 8                
2. kérdés: 1 2 3 4         9 10 11 12        
3. kérdés: 1 2     5 6     9 10     13 14    
4. kérdés: 1 2         7 8     11 12 13 14    
5. kérdés: 1   3   5   7   9   11   13   15  
6. kérdés: 1   3     6   8   10   12 13   15  
7. kérdés: 1     4 5     8   10 11     14 15  

Érdekes, hogy a fenti 1., 2., 3., 5. kérdések rendre megegyeznek az 5.8 b) feladatra adott megoldások  kérdéseivel (lásd a 16. szakkört).

II. konstrukció (Algebra I.)
Az 5.8 b) feladatra adott II. konstrukcióra építve az 1.2 feladat IV. megoldásának mintájára dolgozunk.
Legyen (n-1) kettes számrendszerbeli alakja x8x4x2x1 (ahol n befutja az {1, 2, ..., 16} halmazt, míg xi értéke 0 vagy 1). Ebben a megközelítésben az 5.8 b) feladatra adott II. konstrukció kérdései így írhatók:

"x8 = 0?";              "x4 = 0?";              "x2 = 0?";              "x1 = 0?".

Állítjuk, hogy a jelen feladat megoldását kapjuk, ha a fenti négy kérdést kiegészítjük az alábbi hárommal:
"x4+x2+x1 = 0?";   "x8+x2+x1 = 0?";  "x8+x4+x1 = 0?",

ahol az összeadás és az egyenlőség mindenütt mod 2 értendő.
A válaszokat elfogadva megállapíthatjuk x8, x4, x2, x1, x4+x2+x1, x8+x2+x1, x8+x4+x1 értékeit és az első négyre kapott értékkel leellenőrizhetjük az utolsó hármat. Ha egyik ellenőrzés sem teljesül, akkor biztosan x1 volt a ludas, értékét kijavíthatjuk. Ha két ellenőrzésnél sem stimmelt az összeg, akkor x2, x4 vagy x8 értéke volt hibás, attól függően, hogy melyik két egyenlettel volt baj. Mindegyik változó legalább két összegben szerepel, így ha csak egy ellenőrzésnél jutottunk ellentmondáshoz, akkor biztosan annak az összegnek az értékét kaptuk rosszul, a változók értékei helyesek. Végül, ha minden ellenőrzés klappolt, akkor nem is kaptunk hamis választ, tudjuk a változók értékeit.

Megjegyzés: mutassuk meg, hogy az I. konstrukcióban megadott kérdések is megfogalmazhatók a II. konstrukcióban adott algebrai alakban!

III. konstrukció (Algebra II., Hamming kód)
Az I. konstrukció gondolatmenete alapján, de a II. konstrukcióban szereplő algebrai módszerhez hasonló megoldást keresünk.
16 db olyan hét hosszúságú 0 - 1 sorozatot kell megadni, amelyek közül bármelyik kettő legalább három helyen eltér egymástól. Szeretnénk ezeket a sorozatokat egy

a1ˇ y1+ a2ˇ y2 + ... + a7ˇ y7 = 0,
b1ˇ y1 + b2ˇ y2 + ... + b7ˇ y7 = 0,
c1ˇ y1 + c2ˇ y2 + ... + c7ˇ y7 = 0

homogén lineáris egyenletrendszer megoldásaként előállítani. (Itt, és az alábbiakban a +, ˇ műveletek és az egyenlőség is mod 2 értendő, az együtthatók, változók értékei 0 és 1 lehetnek.) Azaz olyan a1a2, ..., a7, b1b2, ..., b7, c1c2, ..., c7 együtthatókat keresünk, amelyek esetén a fenti egyenlet­rend­szert kielégítő y1 y2 ... y7 sorozatok közül bármelyik kettő legalább 3 helyen eltér egymástól. Az ilyen kódot lineáris kódnak nevezik.
A lineáris kódnak a következő előnye van. Az egyenletrendszer egyik megoldása, tehát az egyik kódszó a 00...0 sorozat. Tegyük fel, hogy sikerül olyan az egyenletrendszer együtthatóit úgy megválasztani, hogy bármelyik másik megoldás 00...0-tól legalább három helyen térjen el, azaz legalább három 1-es legyen benne. Állítjuk, hogy ebben az esetben bármelyik két megoldás legalább három helyen eltér egymástól. Valóban, ha az y11 y21 ... y71 és az y12 y22 ... y72 sorozat is teljesíti a fenti egyenletrendszert, azaz
a1ˇ y11 + a2ˇ y21 + ... + a7ˇ y71 = 0,                         a1ˇ y12 + a2ˇ y22 + ... + a7ˇ y72 = 0,
b1ˇ y11 + b2ˇ y21 + ... + b7ˇ y71 = 0,                         b1ˇ y12 + b2ˇ y22 + ... + b7ˇ y72 = 0,
c1ˇ y11 + c2ˇ y21 + ... + c7ˇ y71 = 0,                          c1ˇ y12 + c2ˇ y22 + ... + c7ˇ y72 = 0,

akkor a megfelelő egyenletek kivonása révén kapjuk, hogy
a1ˇ (y11 - y12) + a2ˇ (y21 - y22) + ... + a7ˇ (y71 - y72) = 0,
b1ˇ (y11 - y12) + b2ˇ (y21 - y22) + ... + b7ˇ (y71 - y72) = 0,
c1ˇ (y11 - y12) + c2ˇ (y21 - y22) + ... + c7ˇ (y71 - y72) = 0,

azaz az (y11 - y12) (y21 - y22)... (y71 - y72) sorozat is teljesíti az eredeti egyenletrendszert. Ebben a sorozatban feltételünk szerint legalább három 1-es van, de pontosan ott van benne 0-tól különböző szám, ahol az  y11 y21 ... y71y12 y22 ... y72 sorozatok eltérnek egymástól. Tehát ha egy lineáris kódban nincs olyan kódszó, amelyikben egy vagy két 0-tól különböző jel van, akkor bármely két kódszó távolsága legalább három.
Feltételi egyenlet nélkül az y1, y2, ..., y7 bináris változók értékei 27-féleképpen választhatók meg, hiszen mind a hét változó szabadon és egymástól függetlenül fölveheti a 0, 1 értékek bármelyikét. Egy egyenlet lehetőséget ad, hogy az egyik változót kifejezzük a többiből, így a szabad változók száma eggyel csökken. Azt szeretnénk elérni, hogy az egyenletrendszernek 16 = 24 megoldása legyen, ehhez 3 (független) egyenletet kell megadni.
Az
a1ˇ y1 + a2ˇ y2 + ... + a7ˇ y7 = 0,
b1ˇ y1 + b2ˇ y2 + ... + b7ˇ y7 = 0,
c1ˇ y1 + c2ˇ y2 + ... + c7ˇ y7 = 0

egyenletrendszer tehát pontosan akkor megfelelő, ha (egyenletei függetlenek és) nincs olyan megoldása, amelyben az ismeretlenek közül egynek vagy kettőnek az értéke 1-es (és a többi 0).
y1 = 1, y2 = ... = y7 = 0 pontosan akkor megoldása a fenti egyenletrendszernek, ha az

mátrix első oszlopában mindenütt 0 áll. Általában, egyenletrendszerünknek pontosan akkor van olyan megoldása, amelyben az egyik változó értéke 1, a többié 0, ha A-nak van azonosan 0 oszlopa.
y1 = y2 = 1,  y3 = ... = y7 = 0 pontosan akkor megoldása az egyenletrendszernek, ha az A mátrix első két oszlopa egyenlő egymással. Általában, pontosan akkor van olyan megoldás, amelyben két változó értéke 1, a többié 0, ha A-nak van két egyforma oszlopa. Az A mátrix tehát pontosan akkor ad megfelelő egyenletrendszert, ha egyik oszlopa sem egyezik meg az azonosan 0 oszloppal vagy egy másik oszloppal (és az egyenletek függetlenek).
A egy-egy oszlopa egy három elemből álló bináris sorozat, amely 23 = 8-féleképpen választható meg. A 8 közül az egyik azonosan 0, ez nem lehet A-ban, tehát A oszlopai - a sorrendtől eltekintve - egyértelműen meghatározottak:

Tehát a megfelelő egyenletrendszer:
y1 + 1ˇy2 + 1ˇy3 + 0ˇy4 + 1ˇy5 + 0ˇy6 + 0ˇy7 = 0,
y1 + 1ˇy2 + 0ˇy3 + 1ˇy4 + 0ˇy5 + 1ˇy6 + 0ˇy7 = 0,
y1 + 0ˇy2 + 1ˇy3 + 1ˇy4 + 0ˇy5 + 0ˇy6 + 1ˇy7 = 0,

Ennek valóban 16 megoldása van (azaz egyenletei függetlenek) hiszen y1, y2, y3, y4 értékei szabadon választhatók és
y5 = 1ˇy1  + 1ˇy2 + 1ˇy3 + 0ˇy4,
y6 = 1ˇy1  + 1ˇy2 + 0ˇy3 + 1ˇy4,
y7 = 1ˇy1  + 0ˇy2 + 1ˇy3 + 1ˇy4.

A 16 megoldás itt látható:
  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
y1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
y2 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1
y3 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1
y4 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
y5 0 0 1 1 1 1 0 0 1 1 0 0 0 0 1 1
y6 0 1 0 1 1 0 1 0 1 0 1 0 0 1 0 1
y7 0 1 1 0 0 1 1 0 1 0 0 1 1 0 0 1

Látható, hogy - két sor felcserélődésétől eltekintve - ugyanahhoz a táblázathoz jutottunk, mint az I. konstrukció esetén.

Megjegyzés: Az előbb látottak alapján új konstrukciót adunk a múlt órai 4.6, 5.6 példákhoz. Most tehát háromféle jelünk van, pld 0, 1, 2 és négyes sorozatokat kell gyártanunk. Számoljunk mod 3 (tehát 2 = -1), és keressünk olyan

a1ˇy1 + a2ˇy2 + a3ˇy3 a4ˇy4 = 0,
b1ˇy1 + b2ˇy2 + b3ˇy3 + b4ˇy4 = 0

alakú egyenletrendszert, amely megoldáshalmaza 1-hiba javító lineáris kód! Azért van szükség most csak két egyenlet­re, mert 4 változónk van, de 9 kódszót keresünk, tehát két szabad változót kell hagynunk, kettőt kell tudni kiküszöbölni az egyenletekkel. Most is úgy kell megválasztani az egyenletrendszer együtthatóinak

mátrixát, hogy az egyenletrendszernek ne legyen olyan megoldása, amelyben csak egy vagy két változó értéke különbözik 0-tól. Az egy darab 0-tól különböző elemet tartalmazó sorozatokat most is úgy tudjuk kizárni, hogy nem engedünk meg a mátrixban olyan oszlopot, amelyben mindkét elem 0. Tekintsünk most két darab nullától különböző elemet tartalmazó sorozatokat, legyen pld y1 = y2 ≠ 0,  y3y4 = 0. Ez pontosan akkor megoldás, ha a1 = - a2 és b1 = - b2, azaz ha az

oszlopvektorok egymás ellentettjei. Az y1 = 1, y2 = -1,  y3y4 = 0 valamint az y1 = -1, y2 = 1,  y3y4 = 0 számnégye­sek pontosan akkor megoldások, ha a1 = a2 és b1 = b2, azaz ha

Ha nem akarunk olyan megoldásokat, amelyek legfeljebb két helyen térnek el egymástól, akkor olyan A mátrixot kell választani, amelynek nincsenek azonosan 0, egymással egyenlő, illetve egymással ellentétes oszlopai. Pld egy ilyen mátrix:

amely az
y1 +  y2 + 2ˇy3 = 0,
y1 + y2 + 2ˇy4 = 0

egyenletrendszert, azaz a
y1 +  y2 = y3,
y1 + y2  = y4

összefüggéseket határozza meg. Épp ezeket "találtuk ki" az előző órán a 4.6 feladat II. megoldásában.

IV. konstrukció (Négyzetminta)
Térjünk vissza a "Négyzetminta" feladathoz, az előző foglalkozás első példájához! Egész számok helyett számoljunk binárisan (mod 2), azaz a "páros" és "páratlan" szavakat 0 és 1 helyettesítse! A négyzet csúcsaihoz írt 8 számot 16-féle­képpen adhatjuk meg, hiszen a csúcsokhoz először írt egy-egy szám összesen 24-féle lehet és ezek már meghatározzák a további négy számot. Így tehát összesen 16 db 0-1 sorozatot kapunk, amelyek egy lineáris halmazt alkotnak, azaz a 16 közül bármelyik két sorozat összege (természetesen koordinátánként és mod 2 értve) is a 16 sorozat között van. A "Négyzetminta" feladatban azt láttuk, hogy e sorozatokban 0, 4 vagy 8 db 1-es lehet, tehát a 16 sorozat egy olyan line­á­ris kódot alkot, amelynek minimális távolsága 4. Ha a nyolcelemű sorozatok egyik, pld az utolsó elemét minde­gyik­ben elhagyjuk, akkor 16 olyan hételemű 0-1 sorozatot kapunk, amelyek közül bármelyik kettő Hamming távolsága legalább 3. Az I. konstrukció elején leírtak szerint éppen ilyen sorozatokat kerestünk.

Végül két levezető feladat:

Jó-30-as Az egész számok egy I30 részhalmazát "jó 30-as"-nak nevezzük, ha teljesülnek rá az alábbi feltételek:
1. Ha h I30-ban van és n tetszőleges egész szám, akkor nˇh is I30-ban van.
2. Ha h1 és h2 is I30-ban van, akkor I30-ban van h1 + h2 is.
3. A 30 benne van I30-ban.
Az egész számok halmazának hány "jó 30-as" részhalmaza van?

Megoldás Az 1. - 2. tulajdonságokból következik, hogy jó 30-as halmazban lehet maradékosan osztani, azaz, ha h1 I30-ban van és h2 is I30-ban van és h1 = nˇh2 + m ahol n, m egész számok, akkor m is I30-ban van. Legyen k egy jó 30-as halmaz (egyik) legkisebb abszolút-értékű, de 0-tól különböző eleme. (Ilyen elem biztos van, hiszen 30 benne van a halmazban, így csak az 1, 2, ... 30 eseteket kell végignézni.) Ekkor k minden többszöröse is a jó 30-as halmazban van, de más elem nem is lehet a hal­maz­ban, mert a maradékos osztás k-nál kisebb abszolút-értékű elemet eredményezne. Tehát minden jó 30-as halmaz egy elem összes többszöröséből áll. 30 pontosan akkor lesz egy ilyen halmaznak eleme, ha a szóbanforgó elem 30 osztója. 8 megfelelő halmaz van, ezek rendre 30, 15, 10, 6, 5, 3, 2, 1 összes többszöröseiből állnak.

Pénzesbarkochba Az 1, 2, 3, ... 16 számok közül kell kitalálni egyet barkochba kérdésekkel. A válaszokért fizetnünk kell: az IGEN válaszért 1 Ft-ot, a NEM válaszért 2-t. Legalább hány Ft-ra van szükség ahhoz, hogy biztosan kitaláljuk a gondolt számot? Erdős Gábor tanár úrtól hallottam

Ez a feladat házi feladatnak maradt.

További gondolkodnivalók:

Még a múltkori óráról:

Hétszögminták Ebben a feladatban egy szabályos hétszög csúcsaira írunk 0-t vagy 1-et. Összesen 27=128 ilyen kitöltés van. A kitöltések egy I7 részhalmaza "7-szögre ideális", ha
1. Ha h az I7-ben van, akkor h bármely (n·360°/7-kal való) elforgatottja is I7-ben van.
2. Bármely két I7-beli kitöltés csúcsonként és mod 2 számított összege is I7-ben van.
A kitöltéseknek hány "7-szögre ideális" részhalmaza van?

13-as totó "Adjunk meg" 59049 szelvénykitöltést a 13 mérkőzésből álló totón úgy, hogy biztosan legyen olyan szelvényünk, amely legalább 12 találatos!

Új feladat:

5.11 Egy kém az ellenséges ország televíziójánál dolgozik. Esténként alkalma van az adásba kerülő 8×8-as fekete fehér tábla egyetlen mezőjének színét megváltoztatni. Nem feltétlenül szükséges változtatnia. Sajnos sohasem tudja előre, hogy milyen mintázatú lesz a 64 mező, amikor eléje kerül. Hányféle információt tud így küldeni a TV-n keresztül? Juhász Istvántól és Szegedy Balázstól is hallottam

[1] Ezzel az "Előző válaszod igaz volt?" - típusú kérdéseket akarjuk kiszűrni. Tehát kérdés nem vonatkozhat a válaszok igazságtartalmára.