ホーム » スタッフ » 斉藤徹 » 創造工学演習予備実験・通信関係の実験

2013年4月
« 3月   5月 »
 123456
78910111213
14151617181920
21222324252627
282930  

最近の投稿(電子情報)

アーカイブ

カテゴリー

創造工学演習予備実験・通信関係の実験

今年度のプログラミングコンテストは、サイコロを使ったデータ伝送なので、 通信に関係する基礎実験を行うこととする。

通信では、データ伝送時にノイズの発生などで、相手側にデータが正しく 届くとは限らない。今回のプロコンでも、サイコロのコードに変換する作業は 人間が行うことから、違う情報となって送られる可能性が高い。

このことから、今回の実験は、与えられた1行データを 自分なりの間違いチェック情報を付けて送信し、受信時で元に戻して復号するための プログラムを作る。ただし、通常のWindowsのパソコンで実験ができるように、 実際の通信を行う訳ではなく、以下の様に仮想的に関数で変換しながら行う。

  • プログラムは与えられたファイルから1行づつデータを読む。
  • この1行データは、encode(out[],in[]) によって呼び出される。 あなたは、入力したデータが後のdecode()で戻せるように、 チェックのための情報を付加し、out[] に格納する。
  • この作られたデータは、本来なら通信路に送り出されるが、 簡単な実験なので、実験用の関数でノイズを加えられる。
    ノイズの処理では、一定の確率で文字が欠落したり重複する。 さらに、一定の確率で文字の各ビットが反転する。
  • このノイズが加えられたデータを受信したとして、 あなたは、付加されたチェック情報をみて、正しく送られたか確認しながら、 もとに戻す、decode(in[]) の処理を記載する。 ノイズが加えられ、元に戻せずもう一度データが欲しい場合は、 decode()の返り値として1を返すこと。 同じデータに対し、改めて異なるノイズが加えられたうえで、 もう一度decode()が呼び出される。

上に示した、send-recv.cxx には、必要な処理が記載されているので、 この中の encode( out[],in[] ) と、decode( in[] ) の中身を作成せよ。

レポートに記載する内容

  • send-recv.cxx の 関数 encode() , decode() のプログラムリスト
  • と、その説明(チェック方法および間違いが発生したらどうなるかの説明)。
  • その実験結果。ノイズは乱数を元にしているため、複数回実験を行い、 正しく伝送されているか検証すること。
  • 実際にサイコロで情報を伝達するとして、文字をどのようにサイコロで 表現可能か『手法の一案』を示し、さらに人間が並べる作業でミスがあったら、 どういった現象が発生する可能性があるか、発生しうる様々な状況を考察せよ。
    レポートでは、実際に簡単な英単語を変換した例と、サイコロを間違えた例を示し、 ミスをチェックできることを確認せよ。