{"id":16133648,"url":"https://github.com/gabboraron/informacio_es_kodelmelet","last_synced_at":"2025-12-31T14:10:46.525Z","repository":{"id":131753117,"uuid":"337754810","full_name":"gabboraron/informacio_es_kodelmelet","owner":"gabboraron","description":"információ és kódelmélet","archived":false,"fork":false,"pushed_at":"2021-05-21T19:55:37.000Z","size":16839,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-02-12T21:34:15.113Z","etag":null,"topics":["encoder-decoder","hamming-distance","information-theory","lzw-compression","nightfall","noise-reduction","rle-compression","rsa-encryption"],"latest_commit_sha":null,"homepage":"https://cryptohack.org","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/gabboraron.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-02-10T14:47:46.000Z","updated_at":"2023-03-18T16:12:52.000Z","dependencies_parsed_at":"2023-06-05T21:30:36.410Z","dependency_job_id":null,"html_url":"https://github.com/gabboraron/informacio_es_kodelmelet","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gabboraron%2Finformacio_es_kodelmelet","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gabboraron%2Finformacio_es_kodelmelet/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gabboraron%2Finformacio_es_kodelmelet/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gabboraron%2Finformacio_es_kodelmelet/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gabboraron","download_url":"https://codeload.github.com/gabboraron/informacio_es_kodelmelet/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247502474,"owners_count":20949267,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["encoder-decoder","hamming-distance","information-theory","lzw-compression","nightfall","noise-reduction","rle-compression","rsa-encryption"],"created_at":"2024-10-09T22:45:15.583Z","updated_at":"2025-12-31T14:10:46.496Z","avatar_url":"https://github.com/gabboraron.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Információ és kódelmélet\n\n**Követelmények:**\n- 2 zh 25 pt a max\n- beadandó (15pt) és annak prezentálása (5 perc) \n  - elmúlt max 3 évben publikált technika alkalmazaása\n  - néhány oldalas esszé, 2-10 oldal, forrás megjelöléssel\n  - kódelmélet/titkosítás/tömörítés technika\n- félévközi kis házi feladatok (35pt)\n\n## EA1\n**Kódok**\n- Speciális jelentéssel bíró szavak, betűk, színek,  jelek\n- Nem minden kód titkos. \n- A napi gyakorlatban a kódokat gyors és könnyű üzenetküldésre használjuk (szemafor, Morse-kód, térkép kódok, bináris kódok,…)\n\n**A kriptológia** a rejtett, vagy titkos kommunikáció tudománya és felöleli mindazokat a módszereket, amelyekkel olyan üzeneteket lehet készíteni, amit csak az arra jogosultak tudnak megfejteni.\n\n\u003e A **kódoláselmélet** olyan algoritmusok keresésének a tudománya, amelyekkel a digitális információt hatékonyan kódolhatjuk zajos csatornákon történő megbízható átvitelhez. *nem feltétlen titkosítás!*\n\u003e \n\u003e Az **információelmélet** az üzenetek adásának és vételének (kommunikációnak) matematikai elmélete.\n\n\u003e ### Története\n\u003e - **1837: S. Morse** elektromos távirója és kódja\n\u003e - **1875: E. Baudot** jeltovábbítója és kódja\n\u003e - **1924, 1928: H. Nyquist és R. Hartley** munkái a kommunikációs csatornákról és az átviteli sebességről, American Telephone and Telegraph Company-Bell laboratórium\n\u003e - **1947-1948:** Az információelmélet születése: **C. Shannon** forráskódolási és csatornakapacitási tételei.\n\n![shannon féle hírközlési rendszerek sémája](https://regi.tankonyvtar.hu/hu/tartalom/tamop425/0005_20_informacioelmelet_scorm_03/20_k05.jpg)\n\n\u003e Shannon szerint az **optimális csatorna felhasználási kapacitás**t a Shanon kóddal adhatjuk meg ami az üzenetben nézi a szavak eloszlását és rövidebb szóhoz/betűhöz rövidebb kódot ad hosszabbhoz, hosszabbat, hogy a végeredmény egyenletes legyen.\n\n### Alapfogalmak:\n- **információ**: véges számú ismert lehetséges alternatíva valamelyikének megnevezése. Azt vizsgáljuk, hogy mennyi \"információ\" kell egy tetszőleges elem azonosításához, ha az alternatívák lehetséges *A* halmaza adott.\n  - **hír**: tudom mi a téma és azzal kapcsolatban várok új információt\n- **Forrás:** az információt(közleményeket) szolgáltató objektum.\n- **Forrásábécé**: véges jel halmaz (ábécé) *(pl a magyar/angol ábécé)*\n- **közlemény:** a forrásábécé jeleiből álló véges jelsorozat\n- **távközlési csatorna**: egynelő időközönként egymás után következő jelek vihetőek át rajta\n- **csatornaábécé**: a gyatornán továbbítható kódjelek összessége *(csatornán továbbítható jel lehet pl 1/0)*\n- **lehetséges kódtípusok:** változó hosszúságú/fix hosszúságú blokk kód\n- **lehetséges kódolási eljárás**: betűnként/blokkonként,veszteséggel vagy a nélkül\npéldák: Morse kód, Ascii kód, isbn kód\n- **Zajmentes csatorna:** ideális, a jeleket nem torzítja, a kimeneti kódjel mindig ugyanaz mint a bemeneti\n- **Zajos csatorna:** a jeleket torzít(hat)ja\n- **Bináris csatorna:** kétféle kódjel továbbítható rajta\n- **Kódoló:** a közleményt átalakítja a csatornán való továbbításhoz (kódolás)\n- **Kódközlemény:** az eredeti közlemény kódolt alakja, a csatornaábécé \"betűiből\" álló véges sorozatok\n- **Dekódoló:** a csatorna kimeneti oldalán vett (kód)közlemény megfejtése (dekódolás)\n- **Kódolási eljárás:** olyan \"utasítás„/algoritmus, amely minden lehetséges közleményhez hozzárendel egy kódjelekből álló sorozatot, az illető közlemény kódközleményét\n\n**Lehetséges kódolási eljárások:** \n- betűnként, blokkokként, \n- információ veszteség nélkül, információ veszteséggel\n\n**Lehetséges kódtípusok:** \n- változó hosszúságú *Példa: Morse-kód*\n- fix hosszúságú (blokk) kód.\n  - *Példák:*\n    - Baudot-kód (5 bites blokkok),\n    - ASCII kód (8 bites blokkok),\n    - ISBN kód (10 jel hosszú blokkok)\n\n\u003e **Definíció: Egy kód blokk kód, ha a kódok a csatornaábécé fix hosszúságú sorozataiból állnak.**\n\n### Tételek\nhttp://zeus.nyf.hu/~falu/kod/k.pdf, fájlként: https://github.com/gabboraron/informacio_es_kodelmelet/blob/main/kodelmelet.pdf\n\n\u003e Az *A1, A2,..., An* nemüres halmazok Descartes vagy direkt szorzatán az X[i=1 → n] *Ai = A1 x A2 x ... x An* = {(a1, a2, ..., an) | a1∈*A1*, a2∈*A2*, ..., an∈*An*} halmazt értjük.\n\u003e \n\u003e Legyen továbbá *A ≠ ∅, A^n* = A x A x ... x A *(n-szer A)* = A^+ = ∪A^n | n\u003e=1.\n\u003e \n\u003e *Tetszőleges Σ ≠ ∅ halmazt ábécének nevezzük. A Σ ábécé elemeit a Σ betűinek (szimbólumainak) nevezzük.* Példa: Σbool = {0,1}, a Boole ábécé; Σlat = {a,b,c,...,z} a latin ábécé.\n\u003e \n\u003e **Def:** *A Σ ábécé jeleinek tetszőleges véges sorozatát **Σ  feletti szó**nak nevezzük. A *w* szó, |*w*| hossza a *w*-ben lévő jelek száma.* A *w* = x1x2...xn szó hossza: |*w*| = n. A *w* szót felfoghatjuk a Σn halmazz egy (x1, x2, ..., xn) elemeinek is amelyből a zárójeleket és az elválasztójeleket elhagyjuk.\n\u003e \n\u003e **Def:** *Σ+ a Σ ábécéből képzett **összes szó** halmaza.* A továbbiakban jelöljön Σx = {x1, x2, ..., xd} egy forrásábécét Σy = {y1, y2, ..., yr} pedig egy csatornaábécét!\n\u003e \n\u003e **Betűnkénti vagy szimbólum kód:** *A K: Σx → Σy+ leképezést kódnak nevezzük, a K(x) az x ∈ Σx-hez tartozó kódszó, l(x) a K(x) kódszó hossza, Li = l(xi).* Állandó *n* hosszúságú kód esetén *K* valójában K:Σx → Σy*n* típusú leképezés, ahol *n* az állandó (blokk) kódhossz. A kódot szokás  a K={K*1*, K*2*,...K*d*} lakban is megadni, ahol a *Ki* ∈ Σy*n* az *xi* ∈ Σx szimbólumhoz rendelt kódszó.\n\u003e \n\u003e **Változó hosszúságú betűnkénti kódoláshoz** minden egyes jelet megszorzunk a jel gyakoriságával és ezek összegét vesszük.\n\u003e \n\u003e **Kiterjesztett *K+* kód:** *Az K+: Σx+ → Σy+ leképzeést a K kód kiterjesztésének nevezzzük, ha K+(xi1xi2...xiN) = K(xi1)K(xi2)...K(xiN). Gyakorlatban a K+ jelölés helyett a K(xi1xi2...xiN) = K(xi1)K(xi2)...K(xiN)-t használjuk.*\n\u003e \n\u003e **Def:** *Egy K: Σx+ → Σy+ kódot **nemszinguláris**nak nevezünk, ha minden x,x' ∈ Σx, x ≠ x' esetén K(x) ≠ K(x') is teljesül. A nemszingularitás elég egy kódjel egyértelmű azonosításához, de nem elég egy üzenet azonosításához.* \n\u003e \n\u003e **szinguláris kód**: minden ábécéhez ugyanazt rendeljük\n\u003e \n\u003e **Def:** *Egy K: Σx+ → Σy+ kód **egyértelműen dekódolható**, ha Σx+ különböző elemeit (üzeneteket) különböző karaktersorozatba képezi, azaz* `∀x,y ∈ Σx+, x≠y ⇒ K+(x) ≠ K+(y)`. ***Azaz K+ invertálható.*** Zajmentes csatorna esetében az egyértelmű dekódolhatóság biztosítja az információ hű átvitelét.\n\u003e \n\u003e **Def:** Egy kódot **prefix**nek nevezünk, ha egyetlen kódszó sem valódi szelete egy másiknak. **Minden prefix kód egyértelműen dekódolható.**\n\u003e **Biz:** Tfh két *Ki1Ki2...Kin* és *Kj1Kj2...Kjm* jelsorozat megegyezik, azaz `Ki1Ki2...Kin = Kj1Kj2...Kjm`. Igazoljuk, hogy *Ki1 = Kji*. Ha *Li1 = Lj1* akkor a két közlemény jelenkénti egyenlősége és a kódszavak különbözősége miatt meg kell, hogy egyezzenek. Ha az egyik kódszó hosszabb volna a  másiknál, akkor  az szükségképpen a másikfolytatása. De ez a prefx tulajdonság miatt nem lehetséges. Tehát *Ki1 = Kj1*. A gondolatmenetet í]y folytatva kapjuk, hogy a *Kil = Kjl (l\u003e1)* és *m=n*.\n\n| Σx   | *a* - szinguláris  | *b* - nem szinguláris nem egyértelműen felírható prefixkód  |  *g* - egyértelműen dekódolható, de nem prefix | *d*- prefix kód, egyiknek sem folytatása a másik kód, és egyértelműen dekódolható| *o* - egyenlő hosszúságú kódokat is hozzá lehet tenni, *mivel négy jelet kódolok ezért a kódhozz 2*| \n| ---- |:------------------:| -----:| -----:| -----:| -----:|\n| 1    | 0                  | 0     |   10  |  0    |  00   |\n| 2    | 0                  |  010  |   00  | 10    |  01   |\n| 3    | 0                  |    01 |   11  | 110   |  10   |\n| 4    | 0                  |    10 |   110 | 111   |  11   |\n\n### Gazdaságosság\n\u003e Tekintsük először az **állandó hosszúságú betűnkénti kódolás** esetét bináris csatornaábécét és egyértelmű dekódolhatóságot feltétlezve. A kódjelek hosza *L*. Ekkor *N* jel hosszúságú közlemény továbbításának költésge *N L*-el arányos egy betű átlagos költsége peig `C=(1/N)NL = L`. Az *L* hosszúságú 0 - 1 sorozatok száma 2^L. A *d* betűhöz *2^L* különböző L bit hosszú bináris sorozat rendelhető. Egyértelműen dekódolható, ha `d\u003c=2^L ⇔ log3 d \u003c= L`. Tehát L = log3 d felülre kerkekítésével.\n\u003e \n\u003e Állandó kódhosszúságú és egyértelműen dekódolható bináris kódlásnál az egy betűre eső költésg `log2`*`d`*-nél nem lehet kisebb: `log2`*`d`*`≤`*`C`*`\u003clog2`*`d`*`+(1/n)` ha az egy betűre jutó költség *`C`*.\n\u003e \n\u003e \n\u003e **Változó betűnkénti kódhosszúság** esetén a gyakoribb jelnek hosszabb kódot adunk, a legrövidebb közleményt a legrövidebb módon szeretnénk tárolni. Ehhez minden jelhez kell annak a valószínűsége. Σx = {x1, x2, ..., xn} a forrásábécé, *pi* az *xi* előfordulásnak a valószínűsége. *Ki* az *xi* kódja, *Li* pedig *xi* kódjának hossza. A teljes hossz: `L = Σ [i=1 → d] NiLi` Az egy betűre eső átlagos kódhossz: `L' = L/N = Σ[i=1 → d](Ni*Li)/N`. Azaz az előforduló jelek relatív gyakoriságukkal megszorozva: `L(K) = Σ[i=1→d]Ni*pi`.\n\n## EA2 - forráskódolás\n- https://forgos.uni-eszterhazy.hu/wp-content/tananyagok/tarsesmedkomm_pc_exe/415_shannon_s_weaver_informcielmleti_hradstechnikai_modellje.html\n- [információs rendszerek alapjai](https://people.inf.elte.hu/molnarba/IREAE%20_Informacios%20rendszerek%20elmeleti%20alapjai%20EA.%20(MSc%20Ir)/Eloadas_2015_ELTE/Eloadas_1/Inform%e1ci%f3elm%e9let.pdf), fájl: [Információelmélet - molnarba - ELTE.pdf](https://github.com/gabboraron/informacio_es_kodelmelet/blob/main/Inform%C3%A1ci%C3%B3elm%C3%A9let%20-%20molnarba%20-%20ELTE.pdf)\n\n![shannon - kódoló](https://images.slideplayer.hu/9/2671866/slides/slide_7.jpg)![shannon-csatorna](https://images.slideplayer.hu/8/2274975/slides/slide_22.jpg)![shannon-dekódoló](https://images.slideplayer.hu/8/2274975/slides/slide_23.jpg)\n\n### Információmennyiség\n\u003e **Információ** valamaly véges számú, előre ismert esemény közül annak megnevezése, hogy melyik következett be. Alternatív megfoglamazás: az infomráció mértéke azonos azzal a bizonytalansággal amelyet megszűntet.\n\u003e \n\u003e *Felező algoritmus: mindig felezzük az intervallumot, és így kapjuk meg a keresett elemet, azaz 8 elemből 3 lpéssel kapjuk meg az elemet. Azaz 8=2^3 amiből 3 lépésben kaptuk meg, tehát kettes alapú logaritumst használva kapjuk meg a lépésszámot. Amennyiben nem kettővel osztható, úgy felső egész részét vehetjük a logaritmusnak.*\n\u003e \n\u003e **Hartley:** *m* számmú azonos valósínűségű esemény közül egy megnevezésével nyert infomráció: `I=log2`*`m`*. (Azaz `log2`*`m`* kérdéssel azonosítható egy elem). Két esemény összevonsával 1 bittel lesz rövidebb, hiszen m/2 számú párból egy. Ez ugyanaz mint `I = -log1/m`\n\u003e \n\u003e **Shannon:** *minél váratlanabb egy esemény bekövetkezése annál több infomrációt jelent, annál több bizonytalanságot kell kiküszöbölni.* Legyen *A={A1, A2, ..., Am}* esemény halmaz, *m* eseménnyel az *A1* esemény valószínűsége p1, ... az Am-é pm. Ekkor Ai megnvezésekor nyert irnformáció: `I(Ai) = log2`*`1/pi`*`=-log2`*`pi`*.\n\u003e\n\u003e **információ mennyiség**: \n\u003e - keresett jel gyakorisága/(összes jel gyakoriságának összege, ez *m*\n\u003e - *m* számú azonos valségű esemény közül egy megnevezésével nyert információ `I = log2*m*`\n\u003e\n\u003e **normálás**: legyen `I(A)=1 ha p(A)=1/2=0,5`. Azaz, ha az infomráció mennyisége `1` akkor a hozzá tartozó valség `1/2`. Ekkor kettes alapú logaritmus használandó és az információmennyisége a ***bit***.`I(mi)=log(1/pi)`. Ha 10-es laapú logaritmust használunk akkkor *hartley*-nek nevezzük, ha természetes alapú logaritmust használunk akkor ***nat***.\n\n*példa:* \n- a forrás lead egy üzentet amiben van 21 db `c`, 22 db`n`, 17 db`d`akkor az információtartalma, ha a következő betű `c`lesz úgy adható meg, hogy:\n  - relatív gyakoriság:*`c`*` darabszáma/összes elem száma` azaz `p(c) = 21/(21+22+17) = 21/60 = 0,35`\n  - hozzá tartozó infomráció mennyiség: `-log2`*`elem relatív gyakorisága`* azaz: `l(c) = -log2`*`0,35`*` = -ln0,35/ln2 = 1,51` \n\n\u003e Csatorna kapacitás: adott csatornához a kapacitás- a bináris szimmetrikus csatornával való ekvivalencia alapján: Egységnyi idő alatt „átlag” ugyanannyi különböző jelsorozat vihető át, mint egy `C bit/sec` sebességű bináris csatornán. Ekkor a csatorna kapacitás `C`.\n\u003e \n\u003e A forrás szimbólumok sorozatát választja, a választás bizonytalanságát jellemezzük az egy szimbólumra jutó átlagos mennyiséggel, ez lesz a **Shannon-entrópia**. Entrópia sázmoló: https://planetcalc.com/2476/\n\u003e\n\u003e Shannon egy véges sok jelből álló (véges ábécé feletti) **üzenet információértékét** az üzenet jeleinek mint a jelre jellemző valószínűséggel bekövetkező események információtartalmának „átlagos”, azaz várható értékeként határozta meg: ![shannon entrópia](https://wikimedia.org/api/rest_v1/media/math/render/svg/5130465a49650626ef8fec76f8ceebb1b5ec2fbc) azaz az `i`-edik jelhez tartozó információ mennyiségéevel kifejezve az entrópia az a jelnekénti infomráció valószínűség és az elem gyakoriságának szorzatának elemenként vett öszege: ![val vált entrópiája H(x)](https://wikimedia.org/api/rest_v1/media/math/render/svg/82ab20e6d90eea88d584baeff1712345f9a412e8). Az entrópia egy elem bizonytalanságának mértékével egyenlő. *\"Ha két jel azonos értékkel rendelkezik akkor az azt jelzi, hogy nehéz megjósolni a következő elemet.\"*. \n\n**Entrópia tulajdonságai:**\n1. Nem negatív:  `H( p1,p2,…,pm) ≥  0`, ha `pi = 1` akkor `H(x)=0`\n2. Az események valószínűségeinek folytonos   függvénye. \n3. `H( p1,p2,…,pm, 0 )  =  H( p1,p2,…,pm)` \n4. Ha `pi= 1`, a többi  `pk = 0`, `( k=1, …, i−1, i+1 ,…, m)`, akkor  `H( p1,p2,…,pm) = 0`. \n5. `H( p1,p2,…,pm) ≤ H( 1/m,1/m, … 1/m )` Egyenlőség csak egyenletes eloszlásra, a legnagyobb  bizonytalanságú eloszlásra. \n6.`H(p1, …, pk−1,pℓ ,pk+1,…,pℓ−1,pk ,pℓ+1,…,pm)  = H( p1,p2,…,pm)`, `∀k, ℓ` ;   azaz az entrópia szimmetrikusváltozóinak cseréjére. \n7. szétválasztás: `H(p1,…,pn) = H(p1+p2,p3,…,pn)+(p1+p2)H(p1/(p1+p2), p2/(p1+p2))`.\n\n\u003e ***K* szimólum átlagos (várható) kódhossza:** `L(K) = Σp(xi)l(xi) | x∈Σx` Azaz ez a relatív gyakorisága az elemnek.\n\u003e \n\u003e **teljes kódhossz:** `L(x) = nili + n2l2 + ... + ndld`\n\u003e \n\u003e **átlagos kódhossz:** `L(x) = (nili + n2l2 + ... + ndld)/n`\n\n![kódfa](https://slideplayer.hu/slide/13073258/79/images/8/K%C3%B3dfa+Olyan+bin%C3%A1ris+fa%2C+amely+csom%C3%B3pontjaihoz+vezet%C5%91+%C3%BAt+megfelel+a+k%C3%B3dszavaknak.+%28pl.+jobbra%3D0%2C+balra%3D1%29.jpg)\n\n- rövid kódhoz a legnagoybb valséget rendeli\n  - huffman kód viszafele halad\n\n**Kraft-Fano egyenlőtlenség**: 4.30-as tétel: [Információ- és kódelmélet - Fegyverneki Sándor - Miskolc.pdf](https://github.com/gabboraron/informacio_es_kodelmelet/blob/main/Inform%C3%A1ci%C3%B3-%20%C3%A9s%20k%C3%B3delm%C3%A9let%20-%20Fegyverneki%20S%C3%A1ndor%20-%20Miskolc.pdf), vagy: https://www.uni-miskolc.hu/~matfs/INF_11_main_kep.pdf\n\n**McMillan egyenlőtlenség:** akkor is fenn áll ha egyértelműen dekódolhatóak, nem csak a prefix kódra: *Ha a forrás ábécé: ![source alphabet](https://wikimedia.org/api/rest_v1/media/math/render/svg/46bc1766527df66cdb8fdff1f1a3770b60320878) és a kódolt szavak hossza rendre ![length](https://wikimedia.org/api/rest_v1/media/math/render/svg/7d75142eca874965147c8ec91de1ac7a48b02099), mikora kód `r` akkor ![Kraft-McMillan](https://wikimedia.org/api/rest_v1/media/math/render/svg/e9394af5e22e877c9075dcfdac035207424aaa35)*.\n\n**Prefix kód alsó határa:**\n- forrásábécé: `Σx = {x1, x2, ..., xd}`\n- eloszlása: `Px = {p1, p2, ... pd}`\n- csatornaábécé: `Σy = {y1, y2, ..., yd}`\n- prefix kódja: `K = {K1, K2, .... Kd}` ahol `Ki` kódszó hossza `Li`\n- ekkor: `L(K) = ΣLipi ≥ H(x)/log2`*`r`*`  | i=1..d` Azaz az átlagos kódhosssz nagyobb vagy egyenlő mint az entrópia, egyenlő, ha a kódhossz a kitevők számát adja.\n- **Optimális forráskódhossz:** `Li = logr`*`(1/pi)`*\n\n**Prefix kód felső határa:** `L(K) \u003c (H(X)/log2`*`r`*`)+1`\n\n**Kód hatásfoka:** `H(x)/(L(K)log2`*`r`*`)`\n\n\u003e **Huffamnn kódolás:** https://hu.wikipedia.org/wiki/Huffman-k%C3%B3dol%C3%A1s\n\u003e - prefix\n\u003e - optimális\n\u003e \n\u003e ![huffmann kód](https://upload.wikimedia.org/wikipedia/commons/thumb/a/a0/Huffman_coding_visualisation.svg/768px-Huffman_coding_visualisation.svg.png) ![huffmann kódfa](https://upload.wikimedia.org/wikipedia/commons/d/d8/HuffmanCodeAlg.png)\n\u003e\n\u003e **Lépések:**\n\u003e - a két legkisebb valószínűségű elemet összevonjuk\n\u003e - ezt elvégezzük az összes elemre\n\u003e - újrarendezzük\n\u003e - ismétlejük\n\u003e - ...\n\u003e - amire származtattunk arra `0`-t adunk, amire nem arra `1`-et, ezt folytatjuk visszafele \n\u003e \n\u003e YT tutorial: https://www.youtube.com/watch?v=A6wEgIVEZL8\n\u003e \n\u003e bővebben: [Algoritmusok es adatszerkezetek 2 javitott 2019.06.07.pdf](https://github.com/gabboraron/informacio_es_kodelmelet/blob/main/Algoritmusok%20es%20adatszerkezetek%202%20javitott%202019.06.07.pdf)\n- [Huffman-kódolás wikipédiában](https://hu.wikipedia.org/wiki/Huffman-k%C3%B3dol%C3%A1s)\n  - https://people.ok.ubc.ca/ylucet/DS/Huffman.html\n\n- Előnye hogy rövidebb. \n\n## EA3 - elmaradt\n\n## EA4 - statisztikai alapú kódolás\n### Shannon-Fano kód\n\u003e - [Informatika alapjai jegyzet -Tóthné Dr Laufer Edit.pdf](https://github.com/gabboraron/informacio_es_kodelmelet/blob/main/Informatika%20alapjai%20jegyzet%20-T%C3%B3thn%C3%A9%20Dr%20Laufer%20Edit.pdf) - 105 - oldal\n\u003e - [Shannon-Fano kód](https://regi.tankonyvtar.hu/hu/tartalom/tamop425/0046_informacio_es_kodelmelet/ch04s04.html): hivatalos jegyzetben: http://siva.bgk.uni-obuda.hu/~laufer/bevinfo_tankonyv/Informatika%20alapjai%20jegyzet.pdf\n\u003e   - [Kutor féle részlet](http://uni-obuda.hu/users/kutor/IRA%202014/IRA%202014-7.pdf)\n\u003e   \n\u003e ![shannon fano kód](http://www.algoanim.net/_Media/shannonfano2_med.png)\n\n**Lépések:**\n1. rendezzük gyakoriság szerint\n2. felmérjük egy `[0,1]` intervallumra, úgy, ohgy a lgekisebb van elől az `1`-nél\n3. Az intervallumot felosztjuk egyenlő részekre, ezt addig ismételjük míg minden elemhez tartozik egy intervallum szakasz.\n4. a szakaszokból kkódfár építünk, balra `0` jobbra `1` elágazással.\n````\n|x2        x4      x3    x1   x5   |\n0                                  1\n[               ][                 ]\n                 [        ][       ]\n                 [    ][  ][  ][   ]\n        x2          x4   x3 x1   x5\n        \n                /\\\n               0  1\n                  /\\\n                 0  1\n                /\\  /\\\n               0  1 0 1\nx1 = 110\nx2 = 0\nx3 = 101\nx4 = 100\nx5 = 111\n````\n\n### Gilbert-Moore kód\n\u003e - [Informatika alapjai jegyzet -Tóthné Dr Laufer Edit.pdf](https://github.com/gabboraron/informacio_es_kodelmelet/blob/main/Informatika%20alapjai%20jegyzet%20-T%C3%B3thn%C3%A9%20Dr%20Laufer%20Edit.pdf) - 108 - oldal\n\u003e - [Gilbert-Moore kód](https://gyires.inf.unideb.hu/KMITT/c07/ch04s05.html)\nAzért jó mert nem kell rendezni, hanem olyan sorrendben vesszük fel az intervallumra ahogy jönnek az elemek, így lesznek üres ágak, de a kód nem lesz optimális.\n\n\u003e ### Optimális kód tulajdonságai\n\u003e Az a kód ami a **legjobban megközleíti az átlagos kódhossz alsó határát.** \n\u003e \n\u003e 1. Ha növekvő sorrendben állnak a valószínűségek akkor csökkenő sorrendben állnak a hozzájuk tartozó kódhosszok, ugyanaz a rendezettség kell legyen\n\u003e 2. kiegynesúlyozott kódfát kell kapnunk.\n\n### Távközlési csatorna \n#### Diszkrét emlékezet nélkül csatorna\n\u003e `P(y|x)` ~ `y`- t fogadtunk és `x`-et küldtünk.\n\u003e\n\u003e A csatorna az átviteli valségek mátrixával jellemezhető: `p(y|x)` ahol `x` az input jele, `y` az output jele.\n\nHa `X` és `Y` val változók lehetséges értékei, azaz `Σx = {x1, x2, ..., xr}` és `Σy = {y1, y2, ..., ym}` Tegyük fel, hogy a csatorna hibázhat: `xj` imput jelhez több `yj` kimenet bármelyikét hozzárendelheti, `p(x|y)` annak a valsége, hogy `y`-t fogadtunk, úgy, hogy `x`-et küldtünk: `p(x|y) = P(X = x|Y = y) = p(x,y)/p(y)`. Azaz `p(x|y)*p(y) = p(x,y)` tehát a peremvalószínűséget kifejezhetjük így is: `p(x|y) = p(x,y)/p(y)`.\n\n#### Perem és feltételes valószínűségek\n\u003e mekkora a valsége annak, hogy y értéke 1\n \n*együttes valószínűségi csatornamátrix/táblázat:*\n```\nP(x,y)    |        x               | P(y)\n__________|___1____2_____3_____4___|_____\n        1 |  1/8  1/16  1/32  1/32 |  1/4\n        2 | 1/16  1/8   1/32  1/32 |  1/4\n   y    3 | 1/16  1/16  1/16  1/16 |  1/4        \n        4 | 1/4    0     0     0   |  1/4\n__________|________________________|_____\n  P(x)    | 1/2   1/4   1/8   1/8  |\n```\n\n**`x` és `y` függetlenek, ha `P(xi,yi) = P(xi) * P(yi)`** Ez alapján *pl a fenti táblázatban, `x = 2; y=2` esetben `P(y) = 1/4`, `P(x) = 1/4` tehát `P(xi,yi) = 1/4 * 1/4 = 1/16` de a táblázatban `1/8` szerepel, tehát ezek a val váltok nem függetlenek egymástól!*\n\n\nA feltételes valséghez: `P(x|y)` úgy jutunk, hogy minden `x`,`y` mátrix értéet elosztjuk a perem valószínűséggel, `P(y)`-al, teht *pl, ha `x =1; y=1` esetet vesszük akkor `1/8` az érték, amit elosztunk a hozzá tartozó `P(y)`-al, `1/4`-el*\n\n```\nP(x|y)    |       x\n__________|__1____2____3____4__\n        1 | 1/2  1/4  1/8  1/8\n        2 | 1/4  1/2  1/8  1/8\n   y    3 | 1/4  1/4  1/4  1/4\n        4 |  1    0    0    0\n```\n\n*pl: Mekkora a valsée annak, hogy `2`-t kapunk ha `3`-mat küldünk?: `y = 2; x = 3`-ban `1/8`, tehát `1/8` a valsége.\n\n\n#### Feltételes entrópia és kölcsönös információ\nhttps://vik.wiki/Felt%C3%A9teles_entr%C3%B3pia_%C3%A9s_tulajdons%C3%A1gai\nAnnak az informáciuónak az átlagos mennyisége amly annak az x mértékének a megadásához súlyozottan ismertek.\n\n`X` és `y` bizonytalansági mértéke a feltételes bizonytalanásgi mérték összegezve a feltétel bizonytalanságával `H(x,y) = H(y) + H(x|y)`\n\nEzért a `H(x) - H(x|y)` azt adja meg, hogy az `y` mennyi plusz információt ad `x`-ről.\n\n**Feltételes entrópia:** `H(X|Y = yk) = Σp(x|yk)log2`*`1/p(x|yk)`*` | x∈Σx`\nAz `x`entrópiája egy adott, fogadott `y` tükrében ezt a feltételes vaséget használja:`p(x|yk)`, ezután minden `y` fogadott jel szerint ezt súlyzottan összegezzük, tehát minden fogadott entrópiát összegzünk a hozzá tartozó `y` súlyával: `ΣΣp(x,y)log2`*`1/p(x|y)`*` | x∈Σx; y∈Σy`. Azaz az entrópia az esemény bekövetkezésének valószínűségének és az esemény információ tartalmának hányadosa. Alacsony valószínűséghez mgaas információtartalom társul, ismét.\n\n**`x` és `y` bozonytalansági mértéke:** a feltételes bizonytalansági érték a feltétel bizonytalanságával megtoldva: `H(x,y) = H(y) + H(x|y) = H(x) + H(y|x)` tehát `H(x|y)\u003c=H(x)`\n\n**`x` és `y` valvált kölcsönös információja:** annak átlagos mértéke amit `x` és `y` egymásra vonatkozóan tartalmaz: `I(x,y) = H(x) - H(x|y), azaz ez annak az indormáció mennyisége amit a fogadott jelkészlet nyújt (`y`), az elküldött jelkészletről(`x`).\n\n![kölcsönös információ](https://image2.slideserve.com/4393275/k-lcs-n-s-inform-ci-l.jpg)\n\n```\n------------H(x,y)--------------\n-------H(x)--------\n           --------H(y)---------\n--H(x|y)-- --I(x,y)-- --H(y|x)--  \n```\n\n#### Csatorna típusok\n**A csatorna zajmentes ha `X=Y`, ekkor `I(x,y) = I(x,x) = H(x) \u003c= log `*`r`*** \n\n##### szimetrikus csatorna \nA csatorna szimatrikus, ha a `[p(y|x)]` csatornamátrix sorai egymás permutációi és oszlopai is egymás permutációi.\n\n*pl szimetrikusra:*\n```\np   1-p       =      p(0|0)   p(1|0)\n1-p  p               p(0|1)   p(1|1)\n```\n\n*pl aszimetrikusra:*\n```\n1-q   0             \nq     q        =     \n0     1-q\n```\n\n![csatornatípusok](https://slideplayer.hu/slide/3171132/11/images/9/Csatornat%C3%ADpusok%2C+m%C3%A1trixaik+%C3%A9s+gr%C3%A1fjaik.jpg)\n\n## EA5\n### csatorna kapacitás\nA csatornakapcitás emlékezet élküli csatornán: `C = max I(x,y)`\n\n\u003e **Shannon szerint:** a csatorna kapacitás az egy kódjellel maximálisan átvihető információ átlagos értékével egyenlő. Ha a csatorna kapacitása *C* és a csatorna kód átlagos hossza *L(K)*, akkor egy kódszó átlagosan *L(K)C* mennyiségű információt vihet át a csatornán. Ezért a forrás közleményeket csak akkor továbbíthatjuk, ha a `H(X)\u003c=L(K)C`. \n\u003e \n\u003e Bináris szimetrikus csatorna esetén a helyes továbbítás valsége *p*, a hibáé *q=1-p*.\n\nhttps://www.slideshare.net/DrSanjayMGulhane/digital-communication-information-theory\n\n![val mátrix](https://image.slidesharecdn.com/unit2dcsmgslideshare-191011143725/95/digital-communication-information-theory-50-1024.jpg?cb=1570805063)![all definitions](https://image.slidesharecdn.com/informationtheory-160202054047/95/information-theory-36-638.jpg?cb=1454392202)![image_with_desc](https://slideplayer.com/slide/9681076/31/images/4/Binary+symmetric+Channel.jpg)\n\n\n\n\n\n## EA6 - hibajelzés, hibajavítás\nhttps://gyires.inf.unideb.hu/GyBITT/30/ch03s02.html\n\n\u003e hogyan ismerjük fel a hibát és hogy tudjuk kijavítani?\n\u003e\n\u003e miért:\n\u003e - továbbításkor megváltozik az üzenet\n\u003e - kibővítjük az eredeti üzenetet, hogy vételkor ellenőrizni tudjuk, történt-e változás\n\u003e   - kód + redundáns információ\n\u003e   - hibajelző újra küldés\n\u003e   - paritás bitek\n\u003e   - hibajavító kód, hamming kód, stb\n### Blokk kód\nEgy adott elemhez egy blokknyi (azonos hosszúságú) kódot rendelünk. Alapvetően **`m` adatbit**, hozzátéve még redundáns bitet , most három ilyent. Ha nem adunk hozzá redundáns bitet akkor egy **szisztematikus kód**.\n\u003e #### Lineáris kódok\n\u003e A kód első részének valamilyen lineáris vag yvalamilyen más függvénye, mint a `kizáró vagy` vagy `mod 2`.\n\njellemzője ű\n- **kódhosszúság**: ami a teljes kódra vonatkozik\n- **kódsebesség**: azaz a nem redundáns információt tartlmazó rész **`m/n`**. Zajos csatornán sok redundáns bit kell.\n\n\u003e ### Hiba\n\u003e elküldök egy jelet és másikat fogadok. a köztük levő különbség a Hamming távolság. \n\u003e \n\u003e *Pl:*\n\u003e ```\n\u003e 10001001\n\u003e 10110001\n\u003e 00111000\n\u003e ```\n\u003e - első szó Hamming ávosága `dH`, jelen esetben `3`\n\u003e - a **teljes kódrendszer Hamming rávolsága mindegyik kódszó mindegyikkel vett összehasonlításából keletkező érték minimuma**.\n\u003e \n\u003e #### hiba észlelése\n\u003e Ha `m` hosszú a bináris üzenet akkor a lehetséges üzenet k száma `2^m`, ezek *legális kódszavak*. az ellenörző bitek miatt nem fordul elő mindegyik kódszó, mert a redundáns rész ismétlődik.\n\u003e \n\u003e Ha úgy választjuk kia a redundánsokat, hogy a kódszó leglaább 3 legyen akkor biztosan ki tudunk javítani egy bit tévedést.\n\u003e\n\u003e Ha egy érvényes kódszót lát a vevő akor átviteli hiba történt. Ha viszont `t` hibát szeretnénk jelezni akkor `2*t+1` távolságú kell legyen, hogy felismerjük a hibát, hogy *biztosan elkülönítsük* kettőt egymástól. Ha csak `2t` a különbség akkor a határon levő elemet nem lehet megmondani hova tartozik.\n\u003e \n\u003e *pl:*\n\u003e ```\n\u003e n=10\n\u003e \n\u003e 0000000000\n\u003e 0000011111\n\u003e 1111100000\n\u003e 1111111111\n\u003e \n\u003e dh= 5, d = 5\n\u003e 5 = 2*t+1=\u003e t = 2\n\u003e \n\u003e ```\n\nEgy kód akkor és csak akkor korrekt `t` hibáig ha a `kódtávolság \u003e= 2t+1`\n\nA blokk három fő paramétere:\n- `M`: kódvektorok száma\n- `n` kódszavak hossza\n- `d` kódtávolság\n\nAz `m` paraméter helyett szokás az információs bitek `k` számát vagy az `R=k/n` hányadpst is használni. Szokás továbbá a blokk kódra az `(n,M,d)` formában hivatkozni.\n\nTetszőleges legfeljebb `t` hibát javító blokk kdra fenn kell állnia a `M * ΣC(n,i) \u003c= 2^n | i=0..t` \n- Ahol egynelőség áll fenn ott *perfeekt kódról* van szó\n- a kófdokat 2^n darab bináris vektorként és `M` darab `t` sugarú gömbbel a *\"legszorosabb kitöltést biztosítják\"**.\n\nCsak három tökéletes kódoszt  ály létezik:\n- pűratlan hosszúságú\n- Hamming kódok - 1 hibát javít\n- Golay kód.\n\n*példa:*\n```\n- bináris ismétlődő kód hossza 3\n- a kód a jelet 3 szor megismétli\n - `0`  - `000`\n - `1`  - `111`\n- a két kód távolsága: `dH((000),(111)) = 3`\n- `din = 3`\n- 3 hoszú bináris vektorok száma `2^3 = 8`, ezek egy 3D kocka egségoldalainak is meglelelnek.\n```\n\n- **Plotkin korlát:** bámrely blokk kódra tlejesül, hogy: `M\u003c= 2^(n-2d+2)d`\n- **Gilbert korlát:** ha a aparméterek kielégítik `(M-1) ΣC(n,i)` akor létezik ilyen tulajdonásgú blokk kód.\n- **Varshamov - Gilbert korlát:** ha a aparméterek kielégítik `M * ΣC(n-1,i) \u003c 2^n | i=0..d-2` akor létezik ilyen tulajdonásgú blokk kód.\n\n**Shannon tétele alapján eléggé  hoszú hibajavító kóddal tetetszőlegesen kis hibavalószínűség érhető el, ha a kódolt bitek átviteli sebessége kisebb mint a csatorna kapacitása. A hosszabb kóddal javul a hibajavító képessége, de nő a dekódolás bonyolultsága és ideje.** \n\n*beadandóról:*\n\u003e még három óra és zh a a kódolásból és a tömörítésből.\n\u003e - a beadandó mindegy milyen formában, de doc formátumban kell, amihez kell egy prezentáció, kb 6- 8 dia\n\n## EA7 \nhttps://szit.hu/doku.php?id=oktatas:kriptologia:kriptografia\n\u003e *Ismétlés*\n\u003e \n\u003e *`D` a kódtávolság ami a két kód közti különbség száma, pl: `000` és `111` kód között a különbség `3` theát  `D=3`. Valamint `2t+1 = D` =\u003e `t=1` ahol `t` a felismerhető hibák száma.*\n\u003e \n\u003e ![kódolás menete](https://szit.hu/lib/exe/fetch.php?media=oktatas:kriptologia:kodolaselvivazlata.png)\n\u003e \n\u003e A forrás `k` hosszú, `u=(u`*`1`*`,u`*`2`*`,...,u`*k*`)` bináris üzenet melyet tekintsünk egyetlen *forrásszónak* - kíván eljuttatni hírközlési csatornán keresztül egy nyelőbe. a Kódoló az üzenetet egy`n ≥ k` hosszúságú `c=(c`*`1`*`, c`*`2`*`,..., c`*`n`*`)` bináris *kódszó*ba képezi le. A csatornakimenetén egy `n` hosszúságú `v=(v`*`1`*`,v`*`2`*`,...,v`*`n`*`)` bináris *vett szó* jelenik meg.\n\u003e \n\u003e Az `u` ami *`k`* hosszúságú szót kibővítjük a kódolás során `c`-re ami már *`n`* hosszúságú.\n\u003e \n\u003e Tehát a hiba az elküldött és vett szavak közti különbség, a *Hamming távolságuk* azon pozíciók száma maiben különbözik `u` és `v` ez lesz `t`: *`t=d(c,v)`*\n\u003e \n\u003e Elsősorban aznos hosszúságú kódokról lesz szó, tehát *blokkkód*okról. A kérdés *hány elemet lehet lekódolni?*: Ha `k` hosszú a szó akkor `2^k` üzenetet tudok elkódolni.\n\u003e \n\u003e Dekódoláshoz a vett `v` szóból, valamilyen döntési mechanizmus alapján egy *`c`* kódba kell leképezni, azaz, meg kell nézni, hogy van-e hiba, össze kell hasonlítani, az eredeti kódszóval.\n\u003e \n\n*gyakorlati példa:*\n````\nC(5,2) kód az alábbi kódolás szerint:\n\n      u        c\n\na    00      00000\nb    01      01101\nc    10      10110\nd    11      11011\n\n\ndekódolási táblázat első pár sora:\n  v       c'    u'\n00000   00000   00\n10000   00000   00\n01000   00000   00\n11000   00000   00\n00100   00000   00\n10100   10110   10\n01100   01101   01\n11100   01101   01\n00010   00000   00\n10010   10110   10\n ...     ...    ...\n````\nTehát, ha van négy elemünk, `a,b,c,d` amikhez fix hosszú kódokat adunk hozzá, és kiegészül `v`-re, tehát `01`-\u003e `01101`. Ezek után két lehetőségünk van:\n1. **táblázatos módszer:**\n   Átküldjük előre, hogy amennyiben a meghatározott `v` jelet vesszük, úgy azt milyen `c'` jelbe dekódolja, aminek milyen `u'` az eredeti kódszava. Ekkor mindegy, hogy a fogadott `v` szó létezik-e az eredeti kódolási eljárásban keletkezett `c` kódok bármelyikével, ha azt kapjuk *pl a csatornán, hogy`10100` akkor az `10110`-nak feleltethető meg, ami az `10` bináris jelen futó `c` betű.* \n   **hátránya:** hogy nagy tárkapacitást ígényel, *pl: `k=50` bitüzenethosszúság esetén 2^50 ~ 10^15 méretű a kód.*\n2. **hibajelzés módszer:**\n   Ehhez használjuk, hogy a *Hamming-távolság*, vagy *kódtávolság*: `d`*`min`*`=min(d(c,c')) | c != c', c,c'∈C`, előző példában ez`d`*`min`*`=3`. Hasonlóan meghatározhatjuk, hogy a vett szó kódszó-e, ha a hibák sázma legfeljebb  `t`és `d`*`min`*`\u003et` akkor hiba esetén **biztosan nem keletkizk téves kódszó!**    \n\n### Lineáris kdok\n\u003e *Hogyan konstruálható elegendő hosszúságú kód? Miért pont ezek a bővítések szerepelnek ezekhez a kdokhoz? pl`00-hoz 00000`?*\n\u003e \n\u003e Generátor mátrixot használunk, ahol, ahol lineárisan független vektrokból álló mátrixot használunk:\n\u003e ```  \n\u003e G =  10110\n\u003e      01101\n\u003e ```\n\u003e \n\u003e mátrixot a `u` mátrixal vett XOR (*mod2*)-a adja. \n\u003e \n\u003e **Def:** `c` kód **lineáris kód**, ha a `C` halmaz lineáris tér, azaz ha minden `c,c ∈ C'` esetén `c+c'∈C`. Ennek  megfelelően `g1,g2,...gk` `C`-beli vektorok a `2^k` elemet tartlmazó lineáris tér  egy bázisát adják, tehát testszőlegesen sok `c∈C` elem előállítható velük: `c=Σu`*`i`*`g`*`i`*` | i=1..k`.\n\u003e  \n\u003e **Szisztematikus kód:** az a kód amiben szerepel az eredeti kódszó. *pl a fenti példa ilyen.*\n\u003e \n\u003e **paritás mátrix:** A `C` lineáris kódhoz hozzárendelünk egy `H(n-k)xn` méretű bináris mátrixor amelynek az a tulajdonsága, hogy detektálni tudja az `n` hosszú vektorok `2^n` méretű halmazában a `C` kódszavait. A detektálás alapja: `Hc^T =0` akkor és csak akkor igaz, ha `c∈C`. Szimetrikus ggeometrikus kódok esettén egyszerűen megkaphatjuk a `H` mátrixot: `H=(A,In-k)`, ahol `A=-B^T`.\n\u003e \n\u003e **hibavektor:** `e=v-c` ahol `c` a küldött, `v` a fogadott szó, *pl: `c=10110` és `v=11110` akkor `e=01000`, azaz a második koordináta a hibás.* Hasonlóan mátrixokra is a paritásmátrixal: `Hv^T=H(c+e)^T=Hc^T+He^T=He^T`.\n\u003e \n\u003e Megadható a lineáris kódok dekódolása a szindráma felasználásával:\n\u003e - két oszlopot írunk fel\n\u003e - egyikben a szindrómák, másikban a szindrómáknak megfelelő minimális hibaszámú hibavektorok állnak. \n\u003e - a nulladik sorban a zérus szindróma és a neki megfelelő zérus hibaminta áll ami hibamentes esetnek felel meg.\n\u003e \n\u003e A szindrómavektorok hossza `n-k`, a szindrómák száma `2^n-k`.\n\u003e \n\u003e ***Szindrómadetektálás lépései:***\n\u003e 1. a `v` vett szónak megfelelő `s` szindróma kiszámítása\n\u003e 2. a dekódolótáblázat `s`-nek megfelelő sorából a becsült `e`hibavektor kiolvasása\n\u003e 3. `c'=v-e` dekódolási lépés elvégzése\n\u003e 4. az `u'`dekódolt üzenet `c'`-hez rendelése\n\n### Paritás kód  \nhttps://hu.qaz.wiki/wiki/Multidimensional_parity-check_code\n\nA kétdimenziós paritásellenőrző kód, amelyet általában optimális téglalap alakú kódnak neveznek, a többdimenziós paritásellenőrző kód legnépszerűbb formája. Tegyük fel, hogy a cél a négyjegyű `1234`üzenet továbbítása kétdimenziós paritás séma segítségével. Először az üzenet számjegyei téglalap alakban vannak elrendezve: \n```\n12\n34\n```\nA paritás számjegyeit azután kiszámítják, hogy az oszlopokat és a sorokat külön-külön összeadják: \n```\n12 3\n34 7\n46 \n```\nA `12334746` nyolc számjegyű sorozat az az üzenet, amelyet ténylegesen továbbítanak. Ha bármilyen hiba történik az átvitel során, akkor ez a hiba nem csak felismerhető, hanem kijavítható is. Tegyük fel, hogy a kapott üzenet hibát tartalmazott az elsõ számjegynél. A vevő átrendezi az üzenetet a rácsba:\n```\n9 2 3\n34 7\n46\n```\nA vevő láthatja, hogy az első sor és az első oszlop helytelenül is összeadódik. Ezen tudás és annak feltételezése alapján, hogy csak egy hiba történt, a vevő kijavíthatja a hibát. Két hiba kezelése érdekében négydimenziós sémára lenne szükség, több paritás számjegy árán. Többdimenziós paritásellenőrző kód.\n\n## EA 8 - Veszteséges és veszteség mentes tömörítés\n\u003e ### Veszteséges\n\u003e Vagy elhagyjuk a dekódolásnál nem fontos részeit a forrásfájlnak, pl zene esetében nem hallhtó frekvenciákat, képeknél pixeleket összevonhatunk.\n\u003e - fraktál tömörítések\n\u003e - hullám tömörítések\n\n### Veszteségmentes\n- aritmetikai kódolások: valamilyen valósínűségen alapuló kódolások, ezek tömörítenek a leg veszteségmentesebben.\n- lexikális kódolás:\n  - LZW\n  - LZ77/LZ78\n  - DEFLATE\n- futamhossz kódolás: bináris kódokhoz, veszteségmentes tömörítés a veszteséges tömörítés között\n\n\u003e célja: tárolóhely igény csökkentése, akár belterjesen, a saját gépet tekintve is, adatátvitel idejének csökkentése\n\u003e \n\u003e a lehetőséget az adja, hogy a legtöbb fájl redundáns.  \n\n**Fogalmak:**\n`M-\u003eKódoló-\u003eC(M)-\u003eDekódoló-\u003eM'`\n- **kódoló:** az `M` egy tömörített `C(M)` reprezentációja állítja elő, amely remélhetően kevesebb bitet használ.\n- **kompresszió hányados:** 0\u003c`C(M) bitjeinek a száma`/`M bitjeinek a sázma`\u003c=1. Csak akkor veszteségmentes ha a dekódoló pontosan az M üzenetet állítja elő.\n- veszteségmentes tömörítésnél tipikusan 10% \n\n\n- preliniáris(?) adatelemzés szükséges\n- adaptív tömörítés\n\n*Dinamikus modell:* a szövegen alapuló modellt generáll, sttisztikán alapul, pl Huffman\n\n*Adaptív modell:* progresszíven tanulja és módosítja a modellt a szöveg olvasásával párhuzamosan., pl LZW\n\n*Futamhossz tömörítés:* Ez egy egyszerű technika, az ismétlődő karakteek hosszú futamait használja fel.\n\n**LZV**\nNagy hátrány, hogy a szótárat is át kell küldeni!\n- menet közben építi a szótárat\n\n**támadások:**\n- passzív támadás: ha a támadó csak leolvassa a üzenetet\n- aktív támadás ha a támadó változtat az üzeneten\n\n## EA 9 zh felkészülés\n- haming távolság\n- lineáris kód\n- tömörítés\n\nkonzultáció hétfőn 18-19:30\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgabboraron%2Finformacio_es_kodelmelet","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgabboraron%2Finformacio_es_kodelmelet","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgabboraron%2Finformacio_es_kodelmelet/lists"}