「言葉の距離」よりも「人間同士の距離感」をつかみかねています。
独極・QRコード担当の「あじな」です。
まともな人間になりたい・・・
日本語で考えると、ちょっと難しいので、QRコードらしく、1,0の世界で考えてみます。
結論からいうと、「1,0の単語における、単語間の「距離」は、2つの単語の1,0が異なる箇所の個数にしよう!」と決まっております。
例えば、「10001」と「0000」の距離は、(二つの符号間で2個ほど異なる部分があるので)「2」となります。
こういった距離のことを「ハミング距離」と呼びます。
まぁ、そういわれればそうかな・・・という感じですよね。
例として、3桁の1,0からなる符号を考えてみてください。
この符号は、最大で何種類のものが表せるかというと、「\(2^3=8\)」なので、8種類になります。
この符号を全部書くとつぎの8個になります。「000」「001」「010」「011」「100」「101」「110」「111」
では、早速、先ほど解説した「ハミング距離」を、それぞれの符号間で計算してみましょう。
次の表は、一番上の行に記載している符号と、一番左の列に記載している符号との「ハミング距離」を表に記載したものです。
さて、例にあげている8個の符号間で最も小さい「ハミング距離」はいくつだったでしょうか?
簡単ですね。「1」ですね。ということは、例にあげている8個の符号間の「最小距離」は「1」となります。
こうすると、単語間の距離はどうなるでしょうか?2つしかないので簡単ですね。「000」⇔「111」の距離は「3」となります。
つまり、2種類の符号しか使えないことにした場合、最小距離は「3」になるのです。先ほどの最小距離「1」の状況から変わりましたね。
このことから、「単語を制限する(いくつか使えない単語を作る)と最小距離は大きくなる」ということがわかります。
逆に言えば、「「最小距離」を大きくすると、「使えない単語」が増えてくる」ということですね。
ちょっとずつ、「エラー訂正」の本質に触れるような話になってきました。
次の解説から「最小距離」と「エラー訂正能力」の関係を見ていきます。
これまでの復習 [表示する]
- QRコードは株式会社デンソーが作ったもので、スマホや携帯で読み取れる
- QRコードは「小さな白と黒の四角でできている」「多少汚れても大丈夫」という特徴がある
- 白黒の四角を使うのは、コンピュータにわかりやすくさせるため
- QRコードは「機能パターン」と「符号化領域」で出来上がっている
- 「機能パターン」は、「クワイエットゾーン」「位置検出パターン」「位置検出パターンの分離パターン」「タイミングパターン」「位置合わせパターン」の5種類
- 「符号化領域」は「形式情報」「型番情報」「データ領域」の3種類
- 「形式情報」は「エラー訂正レベル」と「マスクパターン参照子」で決まり、「\(4 \times 8=32\)」種類のパターンがある
- 「型番情報」は「QRコードのバージョンによって決まり、40種類ある
- 「データ領域」は「データ」と「エラー訂正情報」で出来上がる
- QRコードはバージョンが1~40まである。一辺の大きさは、「QRコードのバージョン(1~40)\( \times \)4\( + \)17」
- 「エラー訂正レベル」は「L(7%の汚れまで)」「M(15%の汚れまで)」「Q(25%の汚れまで)」「H(30%の汚れまで)」の4種類ある。
- 「エラー訂正レベル」が「L」だと「QRコード」で表現できるデータの量は最大で、「H」のときに最小になる。
- 「1bit」とは白・黒、1・0のような2種類の情報を表すことができる能力のことで、文字を増やすと「2bit(4種類)」「3bit(8種類)」と表現できる種類が増える
- 日常の言葉を「エンコード」して「コード(符号)」に置き換え、「コード(符号)」を「デコード」して日常の言葉に戻す
- QRコードの「エンコード」方式は「数字モード」「英数字モード」「漢字モード」「8bitモード」の4種類
- どの「エンコード」方式でも、データは「モード指示子」+「文字数指示子」+「データ」+「終端パターン」+「埋め草ビット」+「埋め草ワード」となる
- QRコードには「白」と「黒」を読み間違えても、元の情報を復元する「エラー訂正」能力が備わっている
- 「エラー訂正」は読み取れた(聞き取れた)言葉から最も近い「ありえそうな単語」を推測すること
- 「エラー訂正力が強い」ということは、「あえて使っていない単語が多い」ということと同じで、効率性は悪い
言葉の近さ
前回の解説では、「こんに■は」を例にとって、近い言葉を探すことで復元をするというお話をしましたが、どうやって「言葉の近さ」は決まるのでしょうか?日本語で考えると、ちょっと難しいので、QRコードらしく、1,0の世界で考えてみます。
結論からいうと、「1,0の単語における、単語間の「距離」は、2つの単語の1,0が異なる箇所の個数にしよう!」と決まっております。
例えば、「10001」と「0000」の距離は、(二つの符号間で2個ほど異なる部分があるので)「2」となります。
こういった距離のことを「ハミング距離」と呼びます。
まぁ、そういわれればそうかな・・・という感じですよね。
最小距離を見極めろ!
距離に関連して、もう一つ「QRコード」の「エラー訂正」で重要な考え方があります。「最小距離」です。例として、3桁の1,0からなる符号を考えてみてください。
この符号は、最大で何種類のものが表せるかというと、「\(2^3=8\)」なので、8種類になります。
この符号を全部書くとつぎの8個になります。「000」「001」「010」「011」「100」「101」「110」「111」
では、早速、先ほど解説した「ハミング距離」を、それぞれの符号間で計算してみましょう。
次の表は、一番上の行に記載している符号と、一番左の列に記載している符号との「ハミング距離」を表に記載したものです。
--- | 000 | 001 | 010 | 011 | 100 | 101 | 110 | 111 |
000 | 0 | 1 | 1 | 2 | 1 | 2 | 2 | 3 |
001 | 1 | 0 | 2 | 1 | 2 | 1 | 3 | 2 |
010 | 1 | 2 | 0 | 1 | 2 | 3 | 1 | 2 |
011 | 2 | 1 | 1 | 0 | 3 | 1 | 2 | 1 |
100 | 1 | 2 | 2 | 3 | 0 | 1 | 1 | 2 |
101 | 2 | 1 | 3 | 2 | 1 | 0 | 2 | 1 |
110 | 2 | 3 | 1 | 2 | 1 | 2 | 0 | 1 |
111 | 3 | 2 | 2 | 1 | 2 | 1 | 1 | 0 |
さて、例にあげている8個の符号間で最も小さい「ハミング距離」はいくつだったでしょうか?
簡単ですね。「1」ですね。ということは、例にあげている8個の符号間の「最小距離」は「1」となります。
単語を制限したら最小距離はどうなるの?
では次に、先ほどでてきた3桁の1,0の単語の組み合わせのうちから、いくつかの単語を禁止して、「000」「111」の2種類の符号しか使えないことにしてみましょう。こうすると、単語間の距離はどうなるでしょうか?2つしかないので簡単ですね。「000」⇔「111」の距離は「3」となります。
つまり、2種類の符号しか使えないことにした場合、最小距離は「3」になるのです。先ほどの最小距離「1」の状況から変わりましたね。
このことから、「単語を制限する(いくつか使えない単語を作る)と最小距離は大きくなる」ということがわかります。
逆に言えば、「「最小距離」を大きくすると、「使えない単語」が増えてくる」ということですね。
ちょっとずつ、「エラー訂正」の本質に触れるような話になってきました。
次の解説から「最小距離」と「エラー訂正能力」の関係を見ていきます。