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
↑↑ Lumikodlak:
Spíš mi přišlo nepraktické neurčit v zadání nějaké omezení na délku kódového slova - pokud je řečeno, že v kódovém slově se vyskytnou vždy nejvýše 2 chyby - a to nezávisle na délce tohoto slova. Pak někdo navrhne délku kódového slova 11bitů, někdo jiný třeba jeho délku 44bitů, ale stále se v každém z nich podle předpokladu vyskytnou nejvýše dvě chyby. Dle mého by spíš pro daný přenosový kanál měla být jeho charakteristika dána tím, kolik nejvýše chyb se vyskytne v nějakém bitovém řetězci o pevné délce - tj. např. že v řetězci o 11bitech se vyskytnou nejvýše 2 chyby. Potom ale - pokud by někdo kódoval 4bitové slovo pomocí 44bitů (4 11bitové bloky) - by dle mého - pokud by šlo o reálný kanál - mělo dojít k nejvýše 2 chybám v každém z těchto 4 bloků - a nikoli k nejvýše 2 chybám v celém 44bitovém slově.
Příklad s 10000bity, kterými kóduji 4bitové slovo, byl jen teoretický, který poukazoval na odtržení zadání od reality (čím delší kódové slovo vymyslím, tím nižší četnosti chyb dosáhnu, což pro reálné kanály dle mého neplatí).
Offline
Souhlasím s názorem že úloha je mimo realitu, ale která vysoškolská úloha je realná:-) Jedná se o předmět Teoretická informatika. I tak mi zatím není nějak moc jasné jak ten kod hledat. Chápu jednotkovou matici, ale ty kontrolní bity mi zatím unikají. Ale i tak děkuji za velmi důkladný rozbor.
Offline
Mate k tomu nejake materialy? Take jsem na internetu nenasel, jak to hledat pro dve chyby, takze jsem jen napsal, jak si myslim, ze by se to dalo najit.
Testovaci bity - tim myslis, jak se pouziva ta testovaci matice, nebo jak potom vyhodnotit vysledek (po vynasobeni tou matici)? Kdyz po vynasobeni prijateho slova matici dostanes same nuly tak tam neni zadna chyba (ledaze by bylo vic chyb, nez je schopno kodovani rozpoznat), kdyz nejsou same nuly, tak je to slozitejsi :-)
Offline
No ono na ty dvojite chyby je asi predpoklad jit pouze logickou uvahou. To vyhodnoceni zakodovaneho slova pomoci paritni matice je mi jasny. Spis mi neni jasny postup pri tvorbe generujici matice. Vim proc je ta jednotkova, ale jak se postupuje pri pridavani kontrolnich bitu. Materialy máme takove vselijake. Jedine co mame je na tomto webu: Odkaz
Offline
Je potreba, aby kdyz se kontrolni matice vynasobi transponovanou generacni matici, tak aby vysledek byl same nuly. To kdyz se rozepise (vis, ze jsou tam ty jednotkove casti), tak vyjde, ze staci vzit levou cast kontrolni matice, transponovat ji, a pouzit jako pravou cast te generacni.
Offline
Jo to je mi i jasny to jsem s toho vykoukal. Spis mi jde o to jakým postupem jsi ziskal ten kod opravujici dve chyby. Jako napr mam slovo 1 0 0 0 a dle jakeho algoritmu jsi prisel na ty kontrolni bity, kterými pokračuješ dál. To mi neni jasny
Offline
Jo tak to jo, zase jsem to spletl :-) Kdyz vezmes zakodovane slovo, a vynasobis kontrolni matici, tak dostanes vsude nuly. Kdyz ale zmenis bit toho slova (coz je ta chyba pri prenosu), nebo nekolik bitu, tak se pak zmeni vysledek toho nasobeni. To, jak se zmeni, je dane tou matici - napriklad chyba je ve 3. bitu zakodovaneho, tak tam, kde jsou jednicky ve 3. sloupci matice, tak se prohodi ve vysledku bity. Kdyz budes chtit opravovat jednu chybu, tak staci, aby pro kazdy sloupec to dalo jiny vysledek - pak podle vysledku muzes zpetne odvodit, ktery bit se zmenil. Cili staci, aby zadny sloupec se nerovnal jinemu . Kdyz budes chtit opravovat dve chyby, tak je to slozitejsi - aby se dalo jednoznacne urcit, ktere bity se zmenily, nesmi se rovnat ani soucet dvou jakychkoliv sloupcu (uz jsem to popisoval tady ↑↑ Lumikodlak:). To jsem se pokusil nejak vyzkouset a najit, ale nepovedlo se mi to. Tak jsem napsal jednoduchy program, ktery vyzkousel vsechny moznosti :-) a zjistil jsem, ze bude potreba bit navic a vysla mi ta matice: ↑↑ Lumikodlak:. (Nejsem si jisty, jestli jsi se ptal na tohle)
Offline
Takže jestli to chápu dobře tak jsi si nejdřív určil kontrolní a z ní pak generující. Otázka zní zda by to šlo obráceně. Tzn. nejdřív generujícíc. I když nad tím přemýšlím tak by možná stačilo místo sloupců pracovat v tomto případě s řádky. Hmmm, musím se nad tím zamyslet, ale myslím že to bude ono.
Offline
Ano, nejdriv jsem urcil kontrolni, a pak generujici. Obracene by to urcite nejak slo, ale neni to moc prakticke podle me. Musel bys pamatovat na tu jednotkovou casti, ty nerovnosti maji platit i s tou jednotkovou casti te kontrolni (ta ale potom jakoby v te generacni neni, ta jednotkova je tam na jinem miste). Jeste bys musel naopak prestat brat v uvahu tu jednotkovou cast generacni.
Offline
Nic moc lepsiho me nenapada, 128 vektoru podle me neni zas tak moc.
Krome toho ma napada jedine postupovat nejakou uvahou: (neplati to obecne, ale jestli jsem to nespletl, melo by to fungovat pro tabulku co jsem uvadel a take nektere jine)
Kdyz zjistis, ze tam neni jedna chyba, ale dve (nebo vic), tak provest nasledujici
- Kdyz jsou dva bity vysledku nastavene na 1, tak je jasne, ze obe chyby jsou v paritnich bitech (ve kterych, to je jasne).
- Kdyz budou 3 nebo 5 bitu, tak je jedna chyba v informacnim, a jedna v paritnim, cili najit sloupec (v kontrolni matici), se kterym se vysledek lisi jen o ten jeden bit (jedna chyba je v tom sloupci a ta druha v paritnim podle toho, ktery bit se lisi)
- Jinak (4 nebo 6 bitu) jsou obe chyby v informacnich, a to uz me napada jedine ten seznam vektoru, melo by jich byt 16, coz by bylo asi lepsi nez tech 128.
Offline
Dobrý den, řešil jsem velmi podobný příklad, tato diskuze mi pomohla tak bych sem chtěl přidat svoje řešení.
Pro vyřešení jsem použil opakovací kód. Klíč je v tom představit si jednotkovou matici o příslušné velikost (kanonická báze - z té vytvoříme jakékoliv slovo) (velikost záleží na počtu informační bitů). Potom musíte vypočítat kolikrát každý byt zopakujete. Využijeme tedy vzorec (n-1)/2 pro binární opakovací kódy a vyjde nám počet chyb, které kód opraví. N pak udává počet opakování. Každý bit tedy opakujete podle výpočtu. Nakonec provedete permutaci řádků tak, aby v levé části vyšla jednotková matice. Tím máte hotovou generující matici. Pro kontrolní matici jen vezmete tu část B z té generační (tedy tu část bez jednotkové) provedete transponování B a k tomu doděláte jednotkovou a máte kontrolní matici H.
Tady ještě přikládám výborný článek z Wikipedie na základě kterého jde v podstatě celý úkol vyřešit:
http://wh.cs.vsb.cz/cs/index.php/Zpraco … lních_dat_(ZMD)/Cvičení/05-Lineární_kódy
Offline