岡村耕二 http://okaweb.ec.kyushu-u.ac.jp/lectures/in/ ビット誤りと訂正 岡村耕二 http://okaweb.ec.kyushu-u.ac.jp/lectures/in/ 情報ネットワーク.

Slides:



Advertisements
Similar presentations
第2章 第2節 情報通信の効率的な方法 1 情報の容量と伝送の特性 2 データの圧縮 3 エラー検出とエラー訂正
Advertisements

第四章 情報源符号化の基礎 4・1 情報量とエントロピー 4・2 エントロピー符号化 4・3 音声符号化 4・4 画像符号化.
コンピュータの予備知識 ネットワークシステムⅠ 第4回.
コンテンツ配信に優れている P2P 技術と、著作権侵害問題の関係について 述べよ。
富山大学 公開講座 2008 「QRコードを作ろう!」 ~ QRコードを作ろう! ~.
数当てゲーム (「誤り訂正符号」に関連した話題)
15.1 文字列処理の基本 15.2 文字列処理用ライブラリ関数
情報処理の基礎 私たちとコンピュータの扱うデータの違い 明治学院大学 法学部消費情報環境法学科 鶴貝 達政
QRコード作って使ってみる 作成者: 川瀬 智美 川瀬智美ですよろしくお願いします ここにあるマークご覧になったことありますでしょうか?
コンピュータ基礎(10) 11章 通信ネットワーク.
情報エレクトロニクス学科共通科目・2年次・第1学期〔必修科目〕 講義「情報理論」(クラスC)
[復習]通信路符号化の限界 通信路符号化定理(Shannonの第2符号化定理)
基礎プログラミングおよび演習 第9回
文字配列の課題1 解説 /* a */ #include <stdio.h> main( ) { int i;
第2回:Javaの変数と型の宣言 プログラミングII 2007年10月2日.
プログラミング論 II 2008年9月25日 誤り検出,訂正符号 ハミング符号
2012年度 情報数理 ~ QRコードを作ろう!(1) ~.
2008年度 情報数理 ~ QRコードを作ろう!(1) ~.
OSI7層の各層の1)名称 2)機能の簡単な説明 3)各階層に関連のあ る機器、規格などを5つ以上書いて下さい。
コンピュータ基礎(10) 11章 通信ネットワーク.
10.通信路符号化手法2 (誤り検出と誤り訂正符号)
情 報 A ー ディジタル化のしくみ ー.
2010年度 情報数理 ~ QRコードを作ろう!(1) ~.
環境数理モデル特論A (符号理論) 2016年8月8‐9日 於岡山大学環境理工学部 渡辺宏太郎 防衛大学校情報工学科教授.
第3回: 今日の目標 平均情報量を説明し、計算できる シャノンの通信モデルを説明できる 情報源符号化の条件を示せる
情報基礎 講義番号:X61029 科目区分:教養教育科目 対象年次:1-4 必修 クラス指定 工(応化) 講義の内容
動画ファイル形式 コンピュータでは、文字や画像、動画、音声といった様々な種類の情報を扱うことができるが、記憶装置に記録されるデータそのものは0と1の情報でしかない。動画ファイルの形式としてはMPEGやAVIです。
センサーネットワークでも 「More is different」
プログラミング応用 printfと変数.
岡村耕二 トランスポート層 ソケットプログラミング 岡村耕二 情報ネットワーク.
共通暗号方式 共通のキーで暗号化/復号化する方法 例) パスワードつきのZIPを送信して、後からパスワードを送る方法 A さん B さん
岡村耕二 トランスポート層 岡村耕二 情報ネットワーク.
アルゴリズムとデータ構造 補足資料5-2 「サンプルプログラムsetop.c」
今までの練習問題の復習.
前回の練習問題.
第13章 文字の取り扱い方 13.1 文字と文字型変数 13.2 文字列 13.3 文字型配列への文字列の代入
indentについて forやifの「中身」を右に寄せる. forやifの「外枠」は右に寄せない. int x; x = 3;
第13章 文字の取り扱い方 13.1 文字と文字型関数 13.2 文字列 13.3 文字型配列への文字列の代入
プログラミング言語論 第五回 理工学部 情報システム工学科 新田直也.
暗号技術 ~暗号技術の基本原理~ (1週目) 情報工学科  04A1004 石川 真悟.
高度プログラミング演習 (05).
9.通信路符号化手法1 (誤り検出と誤り訂正の原理)
モバイル通信システム(10) 「誤り訂正技術と等化技術」 水野.
コミュニケーションと ネットワークを探索する
岡村耕二 TCP通信プログラム 課題と回答例 岡村耕二 情報ネットワーク.
岡村耕二 情報ネットワーク 岡村耕二 情報ネットワーク.
富山大学 公開講座 2008 「QRコードを作ろう!」 ~ ハミング距離 ~.
高度プログラミング演習 (09).
第13章 文字の取り扱い方 13.1 文字と文字型変数 13.2 文字列 13.3 文字型配列への文字列の代入
エラー訂正符号を含むシステム CD, DAT, MD, DVD, ディジタルVTR等 ディジタル(衛星)TV放送 ディジタル・セルラ
高度プログラミング演習 (11).
C言語講座 制御(選択) 2006年 計算技術研究会.
オブジェクト指向言語論 第五回 知能情報学部 新田直也.
岡村耕二 TCP通信プログラム 岡村耕二 情報ネットワーク.
情報処理Ⅱ 2007年12月3日(月) その1.
プログラミング 4 文字列.
/24 というアドレスブロックにおいて ネットワーク長 28 のアドレスはいくつ取るこ とができるか
岡村耕二 UDP通信プログラム 課題と回答例 岡村耕二 情報ネットワーク.
データの改竄を防ぐ仕組み 2002/9/12 牧之内研究室「インターネット実習」Webページ
線形符号(10章).
岡村耕二 ビット誤りと訂正演習 岡村耕二 情報ネットワーク.
CSS符号を用いた量子鍵配送の安全性についての解析
知能情報工学演習I 第11回(後半第5回) 課題の回答
2008年度 情報数理 ~ 授業紹介 ~.
2012年度 情報数理 ~ 授業紹介 ~.
C言語講座第5回 2017 構造体.
岩村雅一 知能情報工学演習I 第7回(後半第1回) 岩村雅一
2012年度 情報数理 ~ ハミング距離 ~.
2010年度 情報数理 ~ ハミング距離 ~.
岡村耕二 TCP通信プログラム 岡村耕二 情報ネットワーク.
Presentation transcript:

岡村耕二 http://okaweb.ec.kyushu-u.ac.jp/lectures/in/ ビット誤りと訂正 岡村耕二 http://okaweb.ec.kyushu-u.ac.jp/lectures/in/ 情報ネットワーク

デジタル通信 ICT機器で使われる様々な情 報の種類 計算機 ネットワーク 文字、画像、動画、音声 数字(Byte=8bit) ビット列 情報は計算機やネットワークでどのように扱われているか ICT機器で使われる様々な情 報の種類 文字、画像、動画、音声 計算機 数字(Byte=8bit) ネットワーク ビット列

デジタル通信(処理) 1ビットでも誤ると しかも 通信 嘘の情報 誤りは検知できない 受信者は送信者がどのような 信号を出したかわからない。 CD/DVD 書き込み、読み出し 1ビットでも誤ると 嘘の情報 しかも 誤りは検知できない 受信者は送信者がどのような 信号を出したかわからない。

ビット誤り 1bit の処理に誤りが発生する確率を 0.1% として、 1024bit が処理された時の誤り率 1bit 2bit 1-(1-0.01)^1 =0.001 2bit 1-(1-0.001)^2=0.002 16bit 1-(1-0.001)^16=0.016 1024 1 - (1 – 0.001) ^ 1024 = 0.641

ビット誤りが発生しても自動的に訂正して欲しい たくさん送る? 1101 1001 をたくさん送る 1101 1001 1101 1001 1101 1001

誤りの発生する状況でも正しく情報を伝達する(1) 名簿 岡村耕二 中村誠一 金子耕一 誤り訂正ができる例 中村耕二さんをお願いします。 間違えてるけど岡村耕二さんか ひと文字くらいは間違えているかもという前提で。

誤りの発生する状況でも正しく情報を伝達する(2) 名簿 金井耕一 金子耕助 金子誠二 誤り検出ができる例 間違えているけど 金井耕一さんか 金子耕助さんか 金子耕一さんをお願いします。 ひと文字くらいは間違えているかもという前提で。

誤りの発生する状況でも正しく情報を伝達する(3) 名簿 岡村耕二 岡村誠二 金子耕助 誤り検出できない例 岡村耕二さんをお願いします。 間違えていなければ岡村耕二さんかな? 岡村誠二さんの間違いかな? ひと文字くらいは間違えているかもという前提で。

誤りの発生する状況でも正しく情報を伝達する(4) 名簿 岡村Pretty耕二 岡村Sweet 誠一 金子Dandy 耕助 冗長化してみる 岡村Pretty誠二さんをお願いします。 名前間違えているけど 岡村Pretty耕二さんか ひと文字くらいは間違えているかもという前提で。

誤り検出/訂正 ハミング距離 【定義】長さの等しい2つのビット列 x, y に対して x と y のハミング距離を以下で 定義する。 d(x,y) (x[i]≠[y[i]となる i の個数) x = 1011 0100 1110 y = 1001 0101 1010 d(x,y)=3

誤り検出・訂正 高々 s 個の誤り検出 【定理】 高々 t 個の誤り検出 符号語どうしがハミング距離 s+1 以上離れて いれば、高々 s 個の誤りの自動検出が可能 高々 t 個の誤り検出 符号語どうしがハミング距離 2t + 1 以上離れ ていれば、高々 t 個の誤りについて自動訂正 が可能

符号化

誤り検出符号

誤り訂正符号

ハミング距離が2以上なので、高々1文字の誤り検出が可能 金井耕一 金子耕助 金子誠二 2 3 ハミング距離が2以上なので、高々1文字の誤り検出が可能

ハミング距離が3以上なので、高々1文字の誤り訂正が可能 岡村耕二 中村誠一 金子耕一 3 ハミング距離が3以上なので、高々1文字の誤り訂正が可能

演習 “abc” 文字コード 01100001 01100010 01100011 97 98 99

1ビット誤りの訂正ができるようにアルファベットを符号化 検査ビット a 97 0110 0001 b 98 0110 0010 c 99 0110 0011 d 100 0110 0100 e 101 0110 0101 ハミング距離が3以上になるように検査ビットを設計して、高々1ビットの誤り訂正を可能にする 0110 0001 0110 0010 0110 0011 0110 0100 0110 0101 2 1 3

ここは見ないでまずは自分で考えてみよう 0110 0001 00 0110 0010 01 0110 0011 11 0110 0100 01 0110 0101 11 3 2 4 0110 0001 000 0110 0010 010 0110 0011 111 0110 0100 011 0110 0101 110 3 4

ここは見ないでまずは自分で考えてみよう 0110 0001 0110 0010 0110 0011 0110 0100 0110 0101 2 1 3 000 010 111 011 110 1 3 2 検査ビット a 97 0110 0001 000 b 98 0110 0010 010 c 99 0110 0011 111 d 100 0110 0100 011 e 101 0110 0101 110

コンピュータでシミュレーション 11bit の処理で、1ビットだけ反転する 可能性がある。 復号 文字列が正しく送れるか? 11bit 単位で、1bit コピーするときにある 確率でbit が反転する。1bit反転したら、 次の11bit 単位までは反転しない。 復号 ハミング距離が1以下のものを選ぶ 文字列が正しく送れるか?

伝送部 #define DENSOERR 1 denso(src,dst,u,b) char *src,*dst; int u,b; { int i; int f=DENSOERR,cnt=0; for(i=0;i<b;i++){ if(f && rand()%10<3){ dst[i]= '0' + ('1' - src[i] ); f--; }else dst[i]=src[i]; cnt++; if(cnt==u){ f=DENSOERR; cnt=0; }

符号化・復号化 #define MOJI11A "01100001000“ #define MOJI11B "01100010010“ #define MOJI11C "01100011111“ #define MOJI11D "01100100011“ #define MOJI11E "01100101110“ char moji11[5][11]={MOJI11A, MOJI11B, MOJI11C, MOJI11D, MOJI11E}; enc11(src,dst) char src,*dst; { strncpy(dst,moji11[src-'a'],11); } char dec11(src) char *src; { int i; for(i=0;i<5;i++){ int h=0,j; for(j=0;j<11;j++) if(src[j]!=moji11[i][j]) h++; if( h<2) return 'a' + i; } return '?';

メインプログラム main() { char iii[1024],sss[1024],ddd[1024]; int i; fscanf(stdin,"%s",iii); bzero(sss,1024); bzero(ddd,1024); for(i=0;i<strlen(iii);i++){ char enc[16]; bzero(enc,16); enc11(iii[i],enc);   strncpy(sss + i * 11,enc,11); } printf("%s\n",iii); printf("%s\n",sss); denso(sss,ddd,11,strlen(sss)); printf("%s\n",ddd); for(i=0;i<strlen(ddd);i+=11){ char dec[16]; strncpy(dec,ddd + i ,11); printf("%c",dec11(dec)); } printf("\n");

コンピュータでシミュレーション 伝送誤りの発生を確認する。 伝送誤りが自動訂正されているこ とを確認する。 誤り発生率を厳しくしてみる。 1ビット反転してもさらに反転させ る。