
Zatocodingなどの重ね合わせコードは、マージナル パンチ カード システムで人気のあったハッシュ コードの一種です。
マージナルパンチカードシステムには、エッジノッチカード、スロットカード、EZソート、ザトカード、マクビー、マクビーキーソート、フレキシソート、ベロム、ロケットなど、様々な名称が用いられてきました。中には商標登録されているものもあります。各カードの中央には、関連情報(通常は近くの棚にある書籍、研究論文、または雑誌記事の名称と著者、そして主題とキーワードのリスト)が記載されていました。カードセットの中には、ユーザーが必要とするすべての情報がカード自体に手書き、タイプライター、またはマイクロフィルム(アパーチャーカード)で記載されているものもありました。1枚のカードにはすべて、同じセットのパンチ穴があらかじめ開けられていました。ユーザーは、カードホルダーまたはカードトレイを用いてカードセットの穴を揃え、1本または複数本の編み針のような棒をカードの束に完全に差し込むことで、検索に関連する特定のカードを見つけます。そうすることで、目的のカード(切り込みが入っているか切り開かれている)が、コレクション内の無関係なカード(切り込みが入っていない)から落ちてきます。無関係なカードは針に残っています。ユーザーはこの選択を何度も繰り返すことで、複雑なブール検索クエリを作成できます。2つ以上の主題に関連するカードは、それぞれの主題のスロットが切り取られているため、どちらか一方の主題、または両方の主題が選択されると、そのカードが落ちてきます。Zatocodingなどの「重ね合わせコード」コーディングシステムは、複数の主題またはすべての主題を同じフィールドに入力することでスペースを節約します。このような「重ね合わせコード」は、より少ないスペースに多くの情報を格納できますが、時折「誤った」選択が発生するという欠点があります。[ 1 ]
図書館で、書籍、研究論文、または雑誌記事ごとに1枚ずつ索引カードを収集し、その書籍のカードに特定の書籍で扱われているキーワード(主題)のリストを記入しておくと、それらの主題をコード化する「明白な方法」は、コレクションR全体で使用されている主題の総数を数え、各カードの上部近くにR列の穴を開け、特定の書籍で実際に扱われている主題ごとに、その書籍に対応するカードの対応する穴からスロットを切り取ることです。 [ 2 ] 当然のことながら、これには、コレクションで使用されているすべての主題について、各主題に対応する穴を示す個別のリストも必要です。残念ながら、コレクションには数千もの異なる主題が含まれる可能性があり、すべてのカードに数千の穴を開けることは現実的ではありません。主題ごとに1つ未満の穴を使用することは不可能に思えるかもしれませんが、重ね合わせコードシステムによってこの問題を解決できます。
情報検索のためのザトコーディングシステムは、 1947年にカルビン・ムーアズによって開発されました。 [ 3 ]
カルビン・ムーアズはMITで、重ね合わせたコードに基づく機械的な情報検索システムであるザトコーディングを発明し、その応用を商業化するために1947年にザトール社を設立した。[ 4 ] このシステムで使用されている特定の重ね合わせコードはザトコーディングと呼ばれ、マージナルパンチカード情報検索システム全体は「ザトール」と呼ばれている。[ 5 ]
特定のライブラリのスーパーインポーズ コードを設定する手順は次のようになります。
後で、ある特定の主題に関する本を探す必要があるときは、R 個の主題すべてのリストからその主題を検索し、対応する n スロットのスロット パターンを見つけて、そのパターンでスタック全体に n 本の針を刺します。そのパターンでカットされたカードはすべて落ちます。他の不要なカードもいくつか落ちる可能性があります。つまり、目的のパターンを模倣するように穴のパターンが重なり合う複数の主題を持つカードです。n 本の針のあるパターンを選択した場合に、v 個のスロットがカットされた不要なカードが落ちる確率 F は、約 です。ほとんどのシステムでは、N が十分に大きく r が十分に小さいため、v < N/2 (つまり、カードは半分未満しかパンチされていない) となり、不要なカードが落ちる確率は 未満になります 。[ 2 ]
各科目にどの穴を配置するかを選択するには、いくつかの方法があります。
(ザトコーディングにはいくつかのバリエーションが開発されました。ボーンは「スーパーインポーズコーディングシステムの高性能を必要とする新しい検索システム用」のバリエーションについて説明し、[ 6 ]ムーアズが1959年に発表したアプローチを使用しています。 [ 7 ])
特定のR対象リストに対してZatocodeを設定する手順は次のようになります。[ 2 ]
Zatocodeは、すべての主題を列挙したコードブックと、それぞれに関連付けられたランダムに生成されたノッチコードを必要とします。その他の「直接的な」重ね合わせコードは、主題(の1つの綴り)の文字をノッチコードに変換するための固定ハッシュ関数を備えています。このようなコードでは、単語の文字を対応するノッチコードに変換する記述を記述した、はるかに短いコードブックが必要です。また、原理的にはコードブックを変更することなく、新しい主題を簡単に追加できます。[ 5 ]
ブルームフィルタは一種の重ね合わせコードと考えることができる。[ 8 ]