Matematické Fórum

Nevíte-li si rady s jakýmkoliv matematickým problémem, toto místo je pro vás jako dělané.

Nástěnka
22. 8. 2021 (L) Přecházíme zpět na doménu forum.matweb.cz!
04.11.2016 (Jel.) Čtete, prosím, před vložení dotazu, děkuji!
23.10.2013 (Jel.) Zkuste před zadáním dotazu použít některý z online-nástrojů, konzultovat použití můžete v sekci CAS.

Nejste přihlášen(a). Přihlásit

#1 05. 04. 2011 15:43

Redby
Příspěvky: 57
Reputace:   
 

Samoopravný kod

Ahoj, tak jsem zase narazil na bezmocnost u jedné úlohy. Mám navrhnout samoopravný kod kterej bude opravovat dvojnásobné chyby u 4 bitové informační části. Takže Hammingův kod mi asi moc nepomůže protože ten umí dvojnásobné jen detekovat a jednonásobné opravovat. Díky moc za pomoc. Myslím že to bude jen nějakou logickou uvahou, ale ne a ne na to přijít.

Offline

 

#2 05. 04. 2011 19:20

check_drummer
Příspěvky: 4897
Reputace:   105 
 

Re: Samoopravný kod

Ahoj, co se rozumí dvojnásobnou chybou u 4bitové informační části?


"Máte úhel beta." "No to nemám."

Offline

 

#3 05. 04. 2011 19:57

Redby
Příspěvky: 57
Reputace:   
 

Re: Samoopravný kod

Je tím myšleno že se má kodovat čtyřbitová informační čás a opravovat dvojité chyby. Tedy chyby ve dvou bitech

Offline

 

#4 05. 04. 2011 21:31

check_drummer
Příspěvky: 4897
Reputace:   105 
 

Re: Samoopravný kod

A jde to vůbec? Např. mě napadlo každý bit kódovat 5 bity o stejné hodnotě, ale i tak si myslím nepoznám, zda došlo k chybě nebo ne (a k jaké).
Obecně si myslím, že těch chyb je příliš mnoho (2 chyby na 4 znaky), než aby bylo možné je opravit. Na každá dvě 4bitová slova lze aplikovat nějakým způsobem dvě chyby tak, že nakonec není možné poznat, jaké slovo bylo "vysláno".
Např. pro 0000 a 1111 lze např. záměnou dvou bitů u obou z nich získat 1100 a 0011, z čehož nelze poznat, jaké slovo bylo vysláno.
Ale možná existuje nějaká teorie, která si s tímto poradí.


"Máte úhel beta." "No to nemám."

Offline

 

#5 05. 04. 2011 21:49 — Editoval Lumikodlak (06. 04. 2011 17:10)

Lumikodlak
Místo: Praha
Příspěvky: 212
Pozice: Programator nebo tak neco :-)
Reputace:   19 
 

Re: Samoopravný kod

Nikdy jsem toto neresil, akorat jsem se dival na toto, doufam, ze dal pak neplacam nesmysly :-)

Kdyz p je pocet paritnich bitu, tak celkem budes mit 4+p bitu. Jestlize potrebujes opravovat 2 chyby, tak to bude:

1 moznost zadna chyba
4+p moznosti pro jednu chybu
(4+p)*(4+p-1)/2 moznosti pro 2 chyby

Takze dohromady moznosti chyb:

11+4.5p+p^2/2

Paritni bity ti daji 2^p moznosti, takze potrebujes, aby:

2^p >= 11+4.5p+p^2/2

Coz plati pro p>=6, takze budes potrebovat 6 paritnich bitu - celkem 10. Co dal, to presne nevim, to bude podle me ten hlavni orisek :-) Co presne mate za ukol? Staci vytvorit tabulku pro ty parity?

Napadaji me treba tyhle moznosti:

Code:

ddddpppppp

x x x x x
xx  xx  x 
xxxx   x   
   x xxx x
 xx xx   x
   x  xxxx

nefunkcni, a to hodne - 4. a 8. sloupec je stejny! :)

Ale moc jsem to neproveroval, kdyztak to opravim nebo vymazu. V tom druhem by asi bylo slozitejsi nastavovat ty paritni bity, nevim presne, jak se pracuje s tema maticema. Jeste se na to mozna podivam. Treba se jeste nekdo jiny ozve, kdo by vedel.

Offline

 

#6 06. 04. 2011 08:55

Redby
Příspěvky: 57
Reputace:   
 

Re: Samoopravný kod

Díky za info. Ukolem je vytvorit generujici matici a kontrolni matici a potom zakodovat jedno slovo, což už by bylo v pohodě. Mě napadlo mít u každeho informačního bitu dva paritni, ale ještě tu myšlenku musím nějak dotahnout do konce. Ale nejsem si jistej jestli by to vubec fungovalo

Offline

 

#7 06. 04. 2011 14:27

Lumikodlak
Místo: Praha
Příspěvky: 212
Pozice: Programator nebo tak neco :-)
Reputace:   19 
 

Re: Samoopravný kod

Co jsem daval za priklad jsou vlastne ty kontrolni matice (x jsou jednicky, mezery nuly). Ten prvni priklad co jsem psal by nefungoval, tak to mazu (ten druhy asi taky, ale necham to tam zatim). Podle me je treba, aby zadne dva sloupce nebyly stejne a zaroven aby nebyly stejne soucty jakychkoliv dvou sloupcu - to zaruci, ze pro jakoukoliv jednu nebo dve chyby budou vysledne chybove parity davat jinou kombinaci, a pujde tak jednoznacne urcit, ktere bity jsou spatne. Vytvorit tu matici tak, aby kombinace tech sloupcu nebyly stejne mi nejak nejde, je to slozite asi :-) Ale kdyby slo pouzit vic bitu, tak by to tak slozite nebylo, nevim, jestli to mate mit s maximalni efektivitou nebo ne. Mozna se na to jeste podivam, jestli se mi to povede nejak nakombinovat ty sloupce (nebo zjistit jak se to dela).
Co se tyce dvou paritnich bitu k jednou informacimu, tak kdyz budou chyby v obou paritnich, tak nepoznas, jestli jsou spatne oba paritni, nebo jen informacni, ale mozna to vis a je to to, co chces dotahnout do konce.

Offline

 

#8 06. 04. 2011 15:04

Redby
Příspěvky: 57
Reputace:   
 

Re: Samoopravný kod

No přesně tak, problem je v tom když bude chyba v paritnim bitu. Jinak asi by jsem si nedělal hlavu z efektivnosti. O tom nebylo ani slovo, takže neřeším maximální počet bitů. Ještě jsem někde vygoogloval že by mohlo být řešení opakovací kod. Ale nějak mi to není jasný opakovací kod versus ty matice.

Offline

 

#9 06. 04. 2011 17:08

Lumikodlak
Místo: Praha
Příspěvky: 212
Pozice: Programator nebo tak neco :-)
Reputace:   19 
 

Re: Samoopravný kod

Jeste jsem to zkousel, a myslim, ze pro 6 paritnich bitu to nepujde. Ten dalsi priklad co jsem psal nefunguje. Podarilo se mi vytvorit tu kontrolni matici pro 7 paritnich (11 celkem), ktera by mela opravdu fungovat:

Code:

1 1 1 0 1 0 0 0 0 0 0 
1 1 0 1 0 1 0 0 0 0 0 
1 0 1 0 0 0 1 0 0 0 0 
1 0 0 1 0 0 0 1 0 0 0 
0 1 1 0 0 0 0 0 1 0 0 
0 1 0 1 0 0 0 0 0 1 0 
0 0 1 1 0 0 0 0 0 0 1

Jestli chces, muzes z toho vytvorit tu generacni matici, nebo s tim cokoliv zkouset jineho. Obavam se, ze vic uz s tim asi nepomuzu :-)

Offline

 

#10 06. 04. 2011 17:13

Redby
Příspěvky: 57
Reputace:   
 

Re: Samoopravný kod

Super diky moc, zkusim to nějak protestovat a uvidime.

Offline

 

#11 07. 04. 2011 20:55

check_drummer
Příspěvky: 4897
Reputace:   105 
 

Re: Samoopravný kod

Ahoj, nechť kóduji (4 bitové) slovo xyzw pomocí n čtveřic bitů A1A2A3...An a dále nechť kóduji slovo abcd pomocí B1B2...Bn. Potom lze docílit poruchy C1C2...Cn, že Ci se liší od Ai i od Bi nejvýše o 2 bity, tedy nejsem schopen určit, zda tento porouchaný kód odpovídá slovu xyzw nebo abcd. Tedy dle mého nelze úlohu vyřešit.


"Máte úhel beta." "No to nemám."

Offline

 

#12 07. 04. 2011 22:33

Lumikodlak
Místo: Praha
Příspěvky: 212
Pozice: Programator nebo tak neco :-)
Reputace:   19 
 

Re: Samoopravný kod

Jestlize ale to kodovani ma opravovat 2 chyby, tak to znamena, ze i v te poruse budou jen 2 bity porusene. Kdyz to bude spravne zakodovane, tak by se nemelo stat, ze by se nedalo poznat, ktere bity byly porusene (pokud nebude porusenych vic nez 2). Pro tu testovaci matici, co jsem psal, by generacni mela vypadat napriklad tak: (to cerpam predevsim z te wiki akorat :-) )

Code:

1 0 0 0 1 1 1 1 0 0 0
0 1 0 0 1 1 0 0 1 1 0
0 0 1 0 1 0 1 0 1 0 1
0 0 0 1 0 1 0 1 0 1 1

Proveroval jsem tu testovaci matici, a mela by byt spravne. Mozna jsem ale nekde udelal chybu, jestli se podari komukoliv najit priklad, kdy to nepujde rozlisit pri kodovani podle te generacni matice, co jsem sem dal, tak dejte vedet, nejspis to tu pak vsechno vymazu :-)

Offline

 

#13 08. 04. 2011 15:31

check_drummer
Příspěvky: 4897
Reputace:   105 
 

Re: Samoopravný kod

↑ Lumikodlak:
Jak tedy prosím zakóduješ slovo 0000 a jak slovo 1111? Díky


"Máte úhel beta." "No to nemám."

Offline

 

#14 08. 04. 2011 15:57

Lumikodlak
Místo: Praha
Příspěvky: 212
Pozice: Programator nebo tak neco :-)
Reputace:   19 
 

Re: Samoopravný kod

Podle te generacni matice:
Slovo 0000 zakoduju jako 00000000000
Slovo 1111 jako 11111100000

(podle testovaci pak vyjde v obou pripadech 0000000, coz je bez chyb)

Offline

 

#15 08. 04. 2011 18:46

check_drummer
Příspěvky: 4897
Reputace:   105 
 

Re: Samoopravný kod

V mém předchozím důkazu je xyzw=0000, abcd=1111, A1A2A3=0000|0000|000x (to je kód 0000) a B1B2B3=1111|1100|000x (to je kód 1111). Jen jsem oddělil svislou čarou čtveřeci bitů a poslední bit označil x (jako libovolný), aby čtveřice byla úplná. Nyní uvažujme kód C1C2C3=1100|1100|000x. Na tento kód se vlivem poruch může "přeměnit" jak A1A2A3, tak i B1B2B3 - jak tedy poznám, zda C1C2C3 je zakódované 0000 či 1111?


"Máte úhel beta." "No to nemám."

Offline

 

#16 08. 04. 2011 19:04

Lumikodlak
Místo: Praha
Příspěvky: 212
Pozice: Programator nebo tak neco :-)
Reputace:   19 
 

Re: Samoopravný kod

Kod A1A2A3 se muze na C1C2C3 premenit jedine kdyz budou chyby ve 4 bitech, to kodovani ma opravovat maximalne 2. Jestli to spravne chapu, tak to kodovani nema opravovat 2 chyby pro kazde 4 bity ze zakodovanych dat - to by samozrejme ani neslo - jak uz jsi psal (ani ten Hamminguv kod by nefungoval). To kodovani ma vzit 4 informacni bity, na neco je zakodovat, to zakodovane se pak posle (pres nejaky nespolehlivy kanal), a pak kdyz se to prijme, tak i pres to, ze az 2 bity z toho zakodovaneho se porusily, je mozne rozpoznat ty puvodni 4 informacni bity.

Offline

 

#17 08. 04. 2011 20:39

check_drummer
Příspěvky: 4897
Reputace:   105 
 

Re: Samoopravný kod

To mi ale nedává smysl - i když bude mít zpráva 2 bity nebo 10000bitů, pořád dojde k maximálně dvěma chybám? To by byl trošku divný přenosový kanál... Já to chápal tak, že dojde k max. dvěma chybám v každém 4bitovém bloku...

Ale asi by se k tomuto měl vyjádřit autor tohoto příspěvku, jak to myslel.


"Máte úhel beta." "No to nemám."

Offline

 

#18 08. 04. 2011 22:17

Lumikodlak
Místo: Praha
Příspěvky: 212
Pozice: Programator nebo tak neco :-)
Reputace:   19 
 

Re: Samoopravný kod

Ty chyby jsou brane pro jedno to kodove slovo, ne celkove pro vsechny data. Vezmou se 4 informaci bity, ty se zakoduji v tomto pripade na 11 bitu. Kdyz v tech jedenacti bitech budou nejvyse 2 chybne, tak je porad mozne z nich zrekonstruovat ty 4 puvodni informacni bity (tech dalsich 7 bitu je redundantich a davaji informace jen k tomu, aby sly obnovit ty 4). Kdyz by se posilalo 10000 bitu, tak se zakodujou na 2500 jedenactibitovych slov (celkem 27500 bitu), a v kazdem tom slove muzou byt az 2 chyby (teoreticky az 5000 chyb z tech 27500 bitu, kdyz by byly spravne rozlozene). (tak jsem to chapal ja)

Offline

 

#19 09. 04. 2011 19:07

check_drummer
Příspěvky: 4897
Reputace:   105 
 

Re: Samoopravný kod

↑ Lumikodlak:
Tak jednou tvrdíš, že v kódovaném slovu může být 5000 chyb a jindy zas jen dvě chyby.
Takže kdyby se 4bitové slovo kódovalo 10000bitovým slovem, kolik by tedy v tomto 10000bitovém slovu mohlo být nejvýše chyb - 2 nebo 5000?... Pokud 2 tak bych se mohl tvářit, že kóduji 4bitové slovo, ale ve skutečnosti bych kódoval 4bitových slov víc - a hle - jako zázrakem bych měl v tomto kódu stále jen dvě chyby. :-)


"Máte úhel beta." "No to nemám."

Offline

 

#20 09. 04. 2011 19:28

check_drummer
Příspěvky: 4897
Reputace:   105 
 

Re: Samoopravný kod

Jinaak obecně - pokud se v kódovaném slově má objevit nejvýše p chyb, tak slovo x zakóduji jako xxx....x - celkem 2p+1 krát. A pak spočítám, jaké slovo se při přijmutí vyskytne nejčastěji - a to bude x.


"Máte úhel beta." "No to nemám."

Offline

 

#21 09. 04. 2011 20:49

Lumikodlak
Místo: Praha
Příspěvky: 212
Pozice: Programator nebo tak neco :-)
Reputace:   19 
 

Re: Samoopravný kod

↑ check_drummer:
Netvrdim, ze v kodovem slovu muze byt 5000 chyb. V jednom muzou byt dve, takze ve 2500 slovech (10000 informacnich bitech) muze byt dohromady 5000 chyb (reagoval jsem na tohle: "To mi ale nedává smysl - i když bude mít zpráva 2 bity nebo 10000bitů, pořád dojde k maximálně dvěma chybám? To by byl trošku divný přenosový kanál..."). Nechtel jsem kodovat 4 bity 10000bitovym slovem, to akorat 10000 bitu by se kodovalo v 2500 slovech po 4 bitech informace. Asi to ale nedovedu vysvetlit. Ted vazne nevim, v cem vidis problem :-)

↑ check_drummer:
Ano, ale to neni tak efektivni, pri 4 bitove informaci by bylo treba 20 bitu, da se to zaridit i s 11 bity jak jsem psal. Mozna, ze by to ale ke splneni autorova ukolu stacilo.

Offline

 

#22 09. 04. 2011 20:55

Redby
Příspěvky: 57
Reputace:   
 

Re: Samoopravný kod

Koukám že se tu rozvířila diskuze tak raději napíšu plné zadání úlohy: Navrhněte systematický lineární kod, který umožní kodovat čtyřbitové informační části tak, aby bylo možné opravovat dvojité chyby. Sestrojte matice G a H, zakodujte informační část u = (1,1,1,0) vysvětlete prncip opravy chyb.

Tak přesně takto je to zadáno. Takže myslím, že Lumikodlak to pochopil stejně jako já.

Offline

 

#23 09. 04. 2011 22:33

check_drummer
Příspěvky: 4897
Reputace:   105 
 

Re: Samoopravný kod

↑ Redby:
Tak ještě pro upřesnění - co se myslí dvojitou chybou? Jedná se o to, že v zakódovaném slovu (tj. v kódu pro dané 4bitové slovo) - ať je dlouhé třeba 4 bity nebo 10000bitů - se mohou vyskytovat jen nejvýše dvě chyby? A nebo, že v každém 4bitovém bloku, které tvoří zakódované slovo, se mohou vyskytnout nejvýše 2 chyby?

Např. zakóduju-li 0000 pomocí 000000000000 - může se mi vlivem chyb změnit toto slovo na 110011001100?


"Máte úhel beta." "No to nemám."

Offline

 

#24 09. 04. 2011 22:37

check_drummer
Příspěvky: 4897
Reputace:   105 
 

Re: Samoopravný kod

↑ Lumikodlak:
Pak si asi nerozmíne, co myslíš kódovým slovem - pro mě kódové slovo znamená kód, kterým kóduji 4bitové slovo. Pokud bych ho (hypoteticky) kódoval pomocí 10000bitů, znamená to tedy, že v rámci těchto 10000bitů dojde jen k nejvýše dvěma chybám?

Tedy obecněji - pokud 4bity zakóduji slovem, které má 4m bitů - bude se v tomto slově vyskytovat nejvýše m chyb nebo nejvýše dvě chyby?


"Máte úhel beta." "No to nemám."

Offline

 

#25 10. 04. 2011 01:50

Lumikodlak
Místo: Praha
Příspěvky: 212
Pozice: Programator nebo tak neco :-)
Reputace:   19 
 

Re: Samoopravný kod

Ja nevim, jestli ma smysl tu o tom diskutovat :-) O tech samoopravnych kodech se preci daji najit informace normalne na internetu napriklad. Ty zakladni principy jsem si odvodil podle tohot clanku na wikipedii. Kdyby to nefungovalo, tak nevim, proc by se to normalne uz desitky let pouzivalo.

↑ check_drummer:
Nemyslim si, ze by tu tak slo o to, ke kolika chybam dojde. Rozdil je mezi tim, ke kolika chybam dojde (coz nezavisi na tom kodu, ale na tom prenosovem kanale), a mezi tim, kolik chyb umi kod opravit. Ten kod muzes vytvorit jakykoliv ches (teoreticky), a podle toho, jaky ten kod bude, tak podle toho bude mit informacnich bitu, zakodovanych bitu, bude schopen opravovat nejaky pocet chyb a podobne. Nevim, jaky ma smysl ten priklad s kodovanim 4 bitu na 10000 - to zase zalezi na tom, jak to zakodujes, pri kodovani ze 4 bitu na 10000 by urcite slo opravovat mnohem vic chyb nez jen 2. Kodovani, podle te tabulky, co jsem tu popsal, koduje ze 4 bitu na 11 a je schopno opravit 2 chyby. Hemminguv kod pro 4 informacni bity koduje ze 4 na 7 a umi opravit jednu chybu. To co jsi popsal predtim koduje z m bitu na m(2p+1) bitu a je chopno opravit p chyb.

Kdyz 4 bity zakodujes 4m bity, tak to nema zadny vliv na to, kolik tam bude chyb. Predpokladam, ze ses chtel zeptat na to, kolik chyb bude umet opravit - nepopsal jsi, jak by se to kodovalo, takze nevim, kolik by to umelo opravit chyb (akorat treba pro m=1 zadnou chybu protoze takove nemuze existovat, coz uz jsi vlastne sam psal).

Offline

 

Zápatí

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson