5

本質的に損失があり、一方向の通信チャネルがあると想像してください。つまり、たとえばランダムビットが切り替わる原因となる、除去できない固有のノイズがいくつかあります。また、これが1つの方法であると想像してください。再送信を要求することはできません。

ただし、データを送信する必要があります。そのチャネルを介して番号テキストを送信するためにどのような手法を使用できますか?

  1. ランダムなビットをいじっても、元の値に近い値として解釈できるように数値をエンコードすることは可能ですか(不可逆送信)?

  2. 文字列(ASCIIなど)をロスレス方式で送信する方法はありますか?

これはただの楽しみです。私はあなたがモールス信号または任意の非常に低い周波数のバイナリ通信を使用できることを知っています。エラーを検出して再試行するためのパリティビットとチェックサムについて知っています。アナログ信号を使った方がいいと思います。損失の多いチャネルを介してこのようなものを送信するための興味深いコンピュータ技術のテクニックがあるかどうか、私はただ興味があります。

4

9 に答える 9

9

損失のあるチャネルについて提供していない詳細に応じて、最初にグレイコードを使用して、シングルビットエラーがわずかな違いをもたらすようにし(損失のある伝送での損失の軽減に対する要望をカバーするため)、次にお勧めします。おそらく、結果のストリームを「ロスレス」(==ロスレスにしようとします;-)エンコーディングでエンコードすることもできます。

リードソロモンとその変形は、ノイズエピソードが小さなバースト(たとえば、1バイト内のいくつかのビットミス)で発生する傾向がある場合に特に適しています。これは、グレイコーディングとうまく相互運用する必要があります(マルチビットミスはグレイの「損失軽減」の側面。ワイヤ上のシングルビットエラーに対して適切に劣化するように設計されています)。これは、RSは本質的にブロックスキームであり、RSの観点からは、1つのブロック内の複数のエラーは基本的にその中の単一のエラーと同じであるためです;-)。

エラーの多くが消去である場合、RSは特に素晴らしいです。簡単に言えば、消去は送信時に破壊された可能性が最も高いシンボルですが、破壊されたという重大な事実を知っています。物理層は、その設計方法によっては、その事実についてのヒントを持っていることがよくあります。それが上位層に通知する方法がある場合、それは非常に役立ちます。消去について少し説明しましょう...:

0が-1ボルトのレベルとして送信され、1が+1ボルトのレベルとして送信される(何らかの基準波に対して)単純な例として、ノイズがあります(物理的なノイズは多くの場合、適切にモデル化できます。有能なコミュニケーションエンジニア;-); ノイズモデルに応じて、デコードでは、-0.7 V以下は0ビットと見なされ、+ 0.7 V以上は1ビットと見なされ、その間のすべては消去と見なされます。つまり、上位層に通知されます。問題のビットはおそらく送信中に破壊されたため、無視する必要があります。(私は時々、抽象化が「リーク」すべきであるという私の論文の一例としてこれを挙げます-制御され、設計された方法で:Spolskyのリーク抽象化の法則に対するMartelliの結果!-)。

任意の冗長性の比率を持つRSコードは、消去(デコーダーに通知されるエラー)の修正に、他の方法では未知のエラーの修正の約2倍の効果があります。両方の側面を組み合わせて、いくつかの消去と両方を修正することも可能です。それ以外の場合は不明なエラー。

一番上のチェリーとして、カスタムRSコードは、消去と未検出エラー(確率とバースト性の両方)。

私はこの分野全体を「コンピューター技術」とは呼びません。実際、卒業したとき(MSEE、30年前)、私は主に「CS」のものを避けて、チップ設計、システム設計、高度なものを優先しようとしていました。無線システム、&c-それでも私はこのようなもの(まあ、すでに実用的なエンジニアリングの使用の領域内にあったサブセット;-)をかなりよく教えられました。

そして、1世代で物事がそれほど変わっていないことを確認するために、私の娘は通信工学の修士号を取得しました(厳密に高度な無線システムに焦点を当てています)-彼女は深刻なプログラム、アルゴリズム、またはデータ構造(彼女はCとJavaの必須コースでうまくいきましたが、これらのコースでもカリキュラムの他の場所でもCSの深さはまったくありませんでした-彼女の毎日の作業言語はmatlabです...!-)-まだ彼女は私がこれまでに学んだよりも情報とコーディング理論についてよく知っています。それはPhDレベルの研究のです(彼女はPhDのために滞在していますが、まだ始まっていません)。

したがって、これらのフィールドはCS-yよりもEE-yであると主張します(もちろん、境界はあいまいですが、数年後にチップを設計した後、私は多かれ少なかれ偶然にSWの男になってしまったという事実を目の当たりにします。私の同時代人の多くもそうしました;-)。

于 2009-08-09T17:37:08.190 に答える
4

この質問は、符号理論の主題です。

于 2009-08-05T08:40:29.880 に答える
3

おそらく、よく知られている方法の1つは、ハミングコードを使用することです。大規模なエラーを修正する最善の方法ではないかもしれませんが、理解するのは非常に簡単です。

于 2009-08-05T06:44:52.673 に答える
2
于 2009-08-05T06:22:48.443 に答える
2

ターボコードまたは一般データの低密度パリティチェックコードのいずれか。これらはシャノンの限界に最も近いためです。ウィキペディアを参照してください。

于 2009-08-12T21:19:11.263 に答える
1

リードソロモンコードを使用できます。

于 2009-08-05T06:36:46.073 に答える
1

スライディングウィンドウプロトコル(TCPで使用される)も参照してください。

これには、パケットが並べ替えられたり、完全に失われたりすることも含まれますが、これは問題の定義の一部ではありませんでした。

于 2009-08-05T06:43:55.123 に答える
1

Alex Martelliが言うように、世界には多くの符号理論がありますが、リードソロモン符号は間違いなくスイートスポットです。実際に何かを作成したい場合は、JimPlankリードソロモン符号化に関する優れたチュートリアルを作成しました。Plankは、それをバックアップするための多くの実践的な専門知識を備えたコーディングに専門的な関心を持っています。

于 2009-08-15T03:30:32.347 に答える
0

私はこれらの提案のいくつかに行き、その後に同じデータを複数回送信します。そうすることで、ストリームのさまざまなポイントでさまざまなエラーが発生することを期待でき、目的の数をはるかに簡単に推測できる可能性があります。

于 2009-08-15T03:07:45.287 に答える