JP6624915B2 - パッドのエンコード及びデコード - Google Patents

パッドのエンコード及びデコード Download PDF

Info

Publication number
JP6624915B2
JP6624915B2 JP2015242443A JP2015242443A JP6624915B2 JP 6624915 B2 JP6624915 B2 JP 6624915B2 JP 2015242443 A JP2015242443 A JP 2015242443A JP 2015242443 A JP2015242443 A JP 2015242443A JP 6624915 B2 JP6624915 B2 JP 6624915B2
Authority
JP
Japan
Prior art keywords
cell
empty
character
binary
cells
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2015242443A
Other languages
English (en)
Other versions
JP2016123089A (ja
Inventor
フレデリック・ボーコット
ルグルー・マーク・ジョエル・エルベ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2016123089A publication Critical patent/JP2016123089A/ja
Application granted granted Critical
Publication of JP6624915B2 publication Critical patent/JP6624915B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/3084Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0207Addressing or allocation; Relocation with multidimensional access, e.g. row/column, matrix
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/002Countermeasures against attacks on cryptographic mechanisms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/008Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols involving homomorphic encryption
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/14Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms
    • H04L9/16Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms the keys or algorithms being changed during operation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/34Bits, or blocks of bits, of the telegraphic message being interchanged in time
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/60General implementation details not specific to a particular type of compression
    • H03M7/6047Power optimization with respect to the encoder, decoder, storage or transmission
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Description

本発明は、データをエンコード及びデコードするための方法及び装置に関する。具体的には、本発明は、2次元パッドを用いてデータをエンコード及びデコードするための方法及び装置に関する。
テキストのエンコード及びデコードは、さらに一層複雑なアルゴリズムを用いる傾向にある。従って、エンコード及びデコードのために処理能力の向上が必要とされている。この論理的帰結は、専用ハードウェア・コンポーネントを使用することである。しかし、これは依然として、多大なコンピュータ・リソース(メモリ、コンピュータ処理サイクル)及びより大きなエネルギー源を用いるものである。
モバイル装置は、対応するデスクトップのものと比べてリソースが制約されていることが多い。しかし、モバイル・アプリケーションは、例えば、遠隔の場所からの伝送間のユーザ・データの難読化(obscurification)といった低レベルのエンコードしか必要としないことが多い。例えば、フィールド・センサ及びアクチュエータは、消費電力の削減、コンピュータ・リソース、及びセキュリティ強度との間の良好なトレードオフを提供するシステムから利益を得ている。
本発明の目的の1つは、データをエンコード及びデコードするためのシステム、方法、及びコンピュータ・プログラム製品を提供することである。
本発明の第1の態様において、英数字を表す2進文字の入力文字列をエンコードするためのシステムが提供される。システムは、開始エンプティ・セルを含む2次元セル形状の定義を格納するためのレジスタと、開始エンプティ・セルから始まるエンプティ・セルへの2進文字の書き込みを実行するための文字書き込みエンジンと、エンプティ・セルを見つけるまで2次元形状内の隣接するセルを規則的に(methodically)トラバースすることによって、次のエンプティ・セルを決定するための次セル決定エンジンと、データ文字がそれ以上存在しなくなるまで、又は、次のエンプティ・セルが決定されなくなるまで、文字書き込みエンジン及び次セル決定エンジンにループバックするためのループ・ファシリテータと、2次元形状内のセルを、エンコードされた英数字文字列を表す1次元の2進文字列に規則的に(methodically)シリアル化するためのシリアル化エンジンとを含む。
提案される解決策は、所定の規則に従って2次元形状(パッドと呼ばれる)のセルを入力数字(input digits)の文字列で埋め(fill)、次いで、2次元形状のセルを(例えば行ごとに)読み出すことによって、エンコードされた出力文字列を得ることを含む。
2次元形状を埋めるために用いられる論理は、従来の要求の多いエンコード技術を求めることのない簡単な論理テストを伴うものであり、多大なメモリ空間も必要としない。
提案されるスキームは、所与の入力文字列について膨大な数の可能な出力文字列が存在するという意味でロバストである。
本発明の第2の態様において、英数字を表す2進文字の入力文字列をエンコードするための方法であって、開始エンプティ・セルを含む規則的セル(regular cells)の2次元形状を定義することと、開始エンプティ・セルから始まる、エンプティ・セルへの2進文字の書き込みを実行することと、エンプティ・セルを見つけるまで2次元形状内の隣接するセルを規則的にトラバースすることによって、次のエンプティ・セルを決定することと、データ文字がそれ以上存在しなくなるまで、又は、次のエンプティ・セルが決定されなくなるまで、文字の書き込み及び次のエンプティ・セルの決定にループバックすることと、2次元形状内のセルを、エンコードされた英数字文字列を表す1次元の2進文字列に規則的に(methodically)シリアル化することとを含む、方法が提供される。
エンプティ・セルの概念は、「0」も又は「1」も保持しないセル、及び/又は、値を書き込める状態になっているセルである。エンプティ・セルは、アイドル・セルとも呼ばれる。充填セル(full cell)の概念は、「0」又は「1」のような値を保持するセルであり、ビジー・セルとも呼ばれる。
好ましくは、規則的にトラバースすることは、現在セルから新しいセルまで現在方向に移動することを含み、新しいセルがエンプティ・セルである場合には、その新しいセルが次のセルとなり、新しいセルがエンプティ・セルでない場合には、エンプティ・セルを見つけるまで再びトラバースする。再びトラバースすることは、現在セルから移動すること、又は、新しいセルから移動することを意味し得る。
より好ましくは、方法は、エンプティ・セルを見つけるためにトラバースする方向を変更することをさらに含む。
さらにより好ましくは、方法は、次のセルを見つけるために隣接するセルにトラバースするが、隣接しているエンプティ・セルが存在しない場合には、エンプティ・セルを見つけるために隣接していないセルにトラバースすることをさらに含む。このようなトラバースは、方向エスケープ(escape direction)を使用する。
さらにより好ましくは、方法は、特定の2進文字が書き込まれた場合、現在方向を変更することをさらに含む。例えば、好ましい実施形態において、方向は、北、東、南、及び西のうちの1つであり、書き込まれた2進文字が「1」である場合、新しい方向に変更され得る。現在方向が「0」又は「1」のいずれかの書き込みにより変更されることを含む、現在方向を変更するための任意の規則を含ませることができる。好ましい実施形態において、次の方向は、北、東、南、及び西のコンパスの周りの回転である。他の実施形態においては、他の方向は、中間の斜め方向を含むことができる。
有利なことに、現在方向へのトラバースが2次元形状の境界を越える場合、異なる方向が用いられる。
さらに有利なことに、現在方向が2次元形状のエッジにぶつかった場合、現在方向は反対方向に変更される。これは好ましい実施形態である。
さらにより有利なことに、2次元形状は、幅及び高さを有する矩形である。このような矩形は、パッドとしても知られる。2次元形状は、六角セルのハニカム・マトリックスとすることができる(図15を参照されたい)。定められた境界が存在する限り、規則的形状又は不規則的形状を含むいずれの他の形状も用いることも可能である。不規則形状は、多くの経路が可能になるように定めるべきである。例えば、2セルの幅を有する「L形状」パッドは、近隣セルへの経路を1つしか含むことができないので、回避されるべきである。
さらにより有利なことに、セルは初期充填パターン(initial filled in pattern)を有する。好ましい実施形態においては、初期充填パターンでは、セルは空である。他の実施形態においては、初期充填パターンでは、2次元形状のセルの一部を不規則に生成された及び/又はバランスの取れた「0」及び「1」のパターンで埋めることができる。
本実施形態の第3の態様において、エンコードされた英数字文字列を表す2進文字の入力文字列をデコードする方法が提供される。方法は、開始現在セルを含む規則的セルの2次元形状を定義することと、各々のポピュレートされたセルが充填されるように、定められた変換を用いてセルを前記2進文字でポピュレートすることと、現在セルから2進文字を読み出し、2進文字を出力文字列に書き込み、現在セルをエンプティに設定することと、充填セルを見つけるまで現在セルから2次元形状内の隣接するセルへ規則的にトラバースすることにより、次の充填セルを決定することと、データ文字がそれ以上存在しなくなるまで、又は、次の充填セルが決定されなくなるまで、文字を読み出すこと及び次の充填セルを決定することにループバックすることを含む。方法は、さらに2次元セルを、エンコードされた英数字文字列を表す1次元の2進文字列に規則的にシリアル化することとを含む。
入力文字列は、長さ≪文字列サイズ≫(SS:String Size)を有し、矩形のパッドの寸法は≪パッド幅≫(PW:PadWidth)及び≪パッド高さ≫(PH:Pad Height)によって指定される。矩形形状に関し、文字列サイズ(SS)は、パッド幅(PW)にパッド高さ(PH)を乗算したものを下回るか又はそれに等しい。
各セルの位置は、索引テーブル(IT:Index Table)において指定される索引により識別される。
セル構造は、初期位置(IP:InitialPosition)及び初期方向(ID:Initial Direction)から開始し、入力ビットの順番に従って、1ビットずつ埋められる。各ステップにおいて、n番目の入力ビットは、「現在方向」(CD:Current Direction)に関連付けられたn番目の「現在位置」(CP:CurrentPosition)内に埋められる。
好ましい実施形態において、CPが「1」で埋められた場合、「方向転換」(TD:Turn Direction)がCDに適用される。CPを埋めた後、本方法は、次のCPを探す。存在する場合には、これは、CDに続く最初のアイドル位置である(必要に応じて、パッドのエッジでループする)。他の場合には、≪方向エスケープ≫(ED:Escape Direction)がCDに適用され、前の論理を再開する。依然として見つからない場合、次のCPは、索引の順番に従った次のアイドル位置に対応する(必要に応じて、ループする)。プロセスの最後に、全ての残ったアイドル位置は無視される(文字列サイズが、パッド幅にパッド高さを乗算したものを下回る場合にのみ適用する)。
本発明の第4の態様において、英数字を表す2進文字の入力文字列をエンコードするためのコンピュータ・プログラム製品が提供される。コンピュータ・プログラム製品は、具体化されたコンピュータ可読プログラム・コードを有し、コンピュータ可読プログラム・コードは、方法の請求項の全てのステップを実施するように構成される。
コンピュータ・プログラム製品は、例えば、光ディスク、磁気ディスク、ソリッド・ステート・ドライブなどの、コンピュータ可読媒体のような有形媒体上に固定された、又は、これらに限定されるものではないが、光又はアナログ通信回線を含む有形媒体によって、又はこれらに限定されるものではないが、マイクロ波、赤外線、若しくは他の伝送技術を含む無線技術を使用して非有形に、モデル又は他のインターフェース・デバイスを通じて、コンピュータ・システムに伝送可能である、一連のコンピュータ可読命令を含む。一連のコンピュータ可読命令は、前述した機能の全て又は一部を具体化する。
当業者であれば、こうしたコンピュータ可読命令は、多くのコンピュータ・アーキテクチャ又はオペレーティング・システムで使用するための幾つかのプログラミング言語で記述できることを認識するであろう。さらに、こうした命令は、半導体、磁気、又は光を含むがこれに限定されない、現在又は将来の任意のメモリ技術を使用して格納し、又は、光、赤外線、又はマイクロ波を含むがこれに限定されない、現在又は将来の任意の通信技術を使用して伝送することができる。コンピュータ・プログラム製品は、シュリンク・ラップ・ソフトウェアのような印刷又は電子文書を添付するリムーバブル・メディアとして配布し、例えばコンピュータ・システムのシステムROM又は固定ディスク上に予めロードし、或いは、例えばインターネット又はワールド・ワイド・ウェブのようなネットワーク上でサーバ又は電子掲示板から配布することが企図される。
本発明の第5の態様において、コンピュータ可読媒体上に格納され、コンピュータの内部メモリ内にロード可能なコンピュータ・プログラムが提供される。プログラムは、コンピュータ上で実行されたとき、方法の請求項の全てのステップを実施するためのソフトウェア・コード部分を含む。
本発明の第6の態様において、コンピュータ・システム内にロードされ、それによって動作するときに、コンピュータ・システムが方法の請求項の全てのステップを実行することを可能にするための機能的コンピュータ・データ構造を含む、好ましい実施形態のデータ・キャリアの態様が提供される。好適なデータ・キャリアは、ソリッド・ステート・メモリ、磁気ドライブ、又は光ディスクとすることができる。データの伝送のためのチャネルは、同様に、あらゆる記載のストレージ媒体、並びに、有線又は無線の信号支持媒体のような信号支持媒体を含み得る。
ここで本発明の好ましい実施形態を、単なる例として添付図面を参照して説明する。
好ましい実施形態の配置図である。 好ましい実施形態のコンポーネント図である。 好ましい実施形態のエンコード方法のプロセスのフロー図である。 好ましい実施形態のエンコードのプロセスの例のフロー図である。 好ましい実施形態のエンコードのプロセスの例のフロー図である。 好ましい実施形態のデコード方法のプロセスのフロー図である。 好ましい実施形態のデコード方法の例示的なプロセスのフロー図である。 好ましい実施形態のデコード方法の例示的なプロセスのフロー図である。 生のストリーム文字及びコード化されたストリーム文字の例示的な図である。 図9の例をコード化するのに使用される初期パラメータの例示的な図である。 生のストリームを図9のコード化されたストリームにコード化するために使用される際の、例示的なパッドの状態図である。 生のストリームを図9のコード化されたストリームにコード化するために使用される際の、例示的なパッドの状態図である。 図10のコード化されたストリームをデコードするために使用される際の、例示的なパッドの状態図である。 図10のコード化されたストリームをデコードするために使用される際の、例示的なパッドの状態図である。 ハニカム型2次元形状の形状図である。
図1を参照すると、コンピュータ処理システム10における好ましい実施形態の配置(deployment)が説明される。コンピュータ処理システム10は、多数の他の汎用又は専用コンピューティング・システム環境又は構成と共に動作可能である。コンピュータ処理システム10と共に用いるのに適した周知のコンピューティング処理システム、環境、及び/又は構成の例として、これらに限定されるものではないが、パーソナル・コンピュータ・システム、サーバ・コンピュータ・システム、シン・クライアント、シック・クライアント、手持ち式又はラップトップ・デバイス、マルチプロセッサ・システム、マイクロプロセッサ・ベースのシステム、セット・トップ・ボックス、プログラマブル家庭用電化製品、ネットワークPC、ミニコンピュータ・システム、メインフレーム・コンピュータ・システム、及び上記のシステム又はデバイスのいずれかを含む分散型コンピューティング環境が挙げられる。分散型コンピュータ環境は、例えば、コンピュータ処理システムが、複数のコンピュータ処理システムの1つ又は複数によって実施される第三者サービスであるクラウド・コンピューティング環境を含む。また、分散型コンピュータ環境は、例えば、コンピュータ処理システムが、コンピューティング・サービスと相互作用することができるオブジェクトのネットワークにおいて分散される、モノのインターネット(Internet of things)のコンピューティング環境を含む。
コンピュータ処理システム10は、コンピュータ・プロセッサによる実行されている、プログラム・モジュールのようなコンピュータ・システム実行可能命令の一般的な文脈で説明することができる。一般に、プログラム・モジュールは、特定のタスクを実施する、又は、特定の抽象的データ型を実装する、ルーチン、プログラム、オブジェクト、コンポーネント、論理、及びデータ構造を含むことができる。コンピュータ処理システム10は、通信ネットワークを通じてリンクされる遠隔処理デバイスによってタスクが実行される分散型クラウド・コンピューティング環境において具体化することができる。分散型クラウド・コンピューティング環境においては、プログラム・モジュールは、メモリ・ストレージ・デバイスを含む、ローカル及び遠隔の両方のコンピュータ・システム・ストレージ媒体内に配置され得る。
コンピュータ処理システム10は、汎用コンピュータ・サーバ12、並びに、コンピュータ・サーバ12に直接取り付けられた1つ又は複数の入力デバイス14及び出力デバイス16を含む。コンピュータ処理システム10は、ネットワーク20に接続される。コンピュータ処理システム10は、入力デバイス14及び出力デバイス16を用いて、ユーザ18と通信する。入力デバイス14は、キーボード、スキャナ、マウス、トラックボール又は別のポインティング・デバイスの1つ又は複数を含む。出力デバイス16は、ディスプレイ又はプリンタの1つ又は複数を含む。コンピュータ処理システム10は、ネットワーク20上でネットワーク・デバイス(図示せず)と通信する。ネットワーク20は、ローカル・エリア・ネットワーク(LAN)、広域ネットワーク(WAN)、又はインターネットとすることができる。
コンピュータ・サーバ12は、中央演算処理ユニット(CPU)22、ネットワーク・アダプタ24、デバイス・アダプタ26、バス28、及びメモリ30を含む。
CPU22は、メモリ30からマシン命令をロードし、命令に応答してマシン演算を実施する。こうしたマシン演算は、レジスタにおいて値をインクリメント又はデクリメントすること、値をメモリ30からレジスタに又はその逆に転送すること、条件が真又は偽である場合にメモリ内の異なる位置に分岐すること(条件分岐命令としても知られる)、及び2つの異なるレジスタ内の値を加算又は減算し、結果を別のレジスタ内にロードすることを含む。典型的なCPUは、多数の異なるマシン演算を実施することができる。マシン命令のセットは、マシン・コード・プログラムと呼ばれ、マシン命令は、低レベル言語と呼ばれるマシン・コード言語で書かれる。高レベル言語で書かれたコンピュータ・プログラムは、これを実行する前にマシン・コード・プログラムにコンパイルする必要がある。代替的に、仮想マシン又はインタープリタなどのマシン・コード・プログラムは、マシン演算に関して高レベル言語を解釈することができる。
ネットワーク・アダプタ24は、コンピュータ・サーバ12とネットワーク・デバイスとの間の通信を可能にするために、バス28及びネットワーク20に接続される。
デバイス・アダプタ26は、コンピュータ・サーバ12と入力デバイス14及び出力デバイス16との間の通信を可能にするために、バス28、並びに入力デバイス14及び出力デバイス16に接続される。
バス28は、メモリ30を含む主システム・コンポーネントを一緒にCPU22に結合する。バス28は、メモリ・バス又はメモリ・コントローラ、周辺バス、アクセラレーテッド・グラフィックス・ポート、及び種々のバス・アーキテクチャのいずれかを用いたプロセッサ又はローカル・バスを含む、幾つかのタイプのバス構造のいずれかの1つ又は複数を表す。限定ではなく例として、このようなアーキテクチャは、業界標準アーキテクチャ(ISA:Industry Standard Architecture)バス、マイクロ・チャネル・アーキテクチャ(MCA:Micro Channel Architecture)バス、Enhanced ISA(EISA)バス、Video Electronics Standards Association(VESA)ローカル・バス、及びPeripheral Component Interconnect(PCI)バスを含む。
メモリ30は、一実施形態においては、読み出し専用メモリ(ROM)を含むことができる、揮発性メモリ32及び不揮発性又は永続的メモリ34の形態のコンピュータ・システム可読媒体を含む。揮発性メモリ32の例は、ランダム・アクセス・メモリ(RAM)36及びキャッシュ・メモリ38である。一般に、揮発性メモリは、これがより高速であるために使用され、一般に、不揮発性メモリは、これがより長期間データを保持するために使用される。コンピュータ処理システム10は、他の取り外し可能及び/又は取り外し不能、揮発性及び/又は不揮発性のコンピュータ・システム・ストレージ媒体をさらに含むことができる。単なる例として、取り外し不能の不揮発性磁気媒体(図示されておらず、典型的には磁気ハード・ディスク又はソリッド・ステート・ドライブ)との間の読み出し及び書き込みのために永続的メモリ34を設けることができる。図示されていないが、取り外し可能な不揮発性ソリッド・ステート・メモリのための外部ポートと、コンパクト・ディスク(CD)、デジタル・ビデオ・ディスク(DVD)、又はブルーレイなどの取り外し可能な不揮発性光ディスクとの間の読み出し又は書き込みのための光ディスク・ドライブとを含む、更に別のストレージ媒体を設けることができる。こうした場合、1つ又は複数のデータ媒体インターフェースによって、各々をバス28に接続することができる。以下でさらに示され、説明されるように、メモリ30は、本発明の実施形態の機能を実施するように構成されたプログラム・モジュールの組(例えば、少なくとも1つ)を有する少なくとも1つのプログラム製品を含むことができる。
好ましい実施形態の機能を実施するように構成されたプログラム・モジュールの組は、パッド・エンコード及びデコード・モジュール200を含む。一実施形態において、メモリ30内のROMは、コンピュータ・サーバ12がモジュール200に特有の専用コンピュータとして機能することを可能にするモジュール200を格納する。好ましい実施形態をサポートするが、図示されていない更に別のプログラム・モジュールは、ファームウェア、ブート・ストラップ・プログラム、オペレーティング・システム、及びサポート・アプリケーションを含む。オペレーティング・システム、サポート・アプリケーション、他のプログラム・モジュール、及びプログラム・データ、又はそれらの幾つかの組み合わせの各々は、ネットワーキング環境の実装を含むことができる。
コンピュータ処理システム10は、ネットワーク・アダプタ24を介して、少なくとも1つのネットワーク20(例えば、ローカル・エリア・ネットワーク(LAN)、汎用広域ネットワーク(WAN)、及び/又は、インターネットのようなパブリック・ネットワーク)と通信する。ネットワーク・アダプタ24は、バス28を介して、コンピュータ・サーバ12の他のコンポーネントと通信する。図示されないが、コンピュータ処理システム10と共に、他のハードウェア及び/又はソフトウェア・コンポーネントを使用できることを理解されたい。例として、これらに限定されるものではないが、マイクロコード、デバイス・ドライバ、冗長処理ユニット、外部のディスク・ドライブ・アレイ、redundant array of independent disk(RAID)、テープ・ドライブ、及びデータ・アーカイブ・ストレージ・システムが挙げられる。
図2を参照すると、パッド・エンコード及びデコード・モジュール200が、次のコンポーネント、すなわち、2次元形状定義データを格納するためのレジスタ202、文字読み出し及び書き込みエンジン204、次セル決定エンジン206、ループ・ファシリテータ208、シリアル化/デシリアル化エンジン210、パッド・エンコード方法300、及びパッド・デコード方法400を含む。
レジスタ202は、エンコード方法及びデコード方法のために使用される2次元形状を定義するためのものである2次元形状定義データを格納するためのものである。
文字読み出し及び書き込みエンジン204は、2次元形状から文字を読み出し、また、これに文字を書き込むためのものである。
次セル決定エンジン206は、2次元形状における次のセルを決定するためのものである。
ループ・ファシリテータ208は、文字読み出し及び書き込みエンジン204と次セル決定エンジン206との間をループさせるためのものである。
シリアル化/デシリアル化エンジン210は、2次元形状を、シリアル・データにシリアル化するため、及び、シリアル・データからデシリアル化するためのものである。
パッド・エンコード方法300は、好ましい実施形態のメイン・コード化プロセスを制御する。
パッド・デコード方法400は、好ましい実施形態のメイン・デコード・プロセスを制御する。
図3を参照すると、パッド・エンコード方法300は好ましい実施形態の論理プロセス・ステップ301乃至310を含み、図4及び図5に関連して、対応する論理プロセス・サブステップ302.2乃至310.2は好ましい実施形態の更なる詳細を説明する。パッド・エンコード方法300は、ユーザが何らかのテキスト又はデータを選択し、次いで、選択されたテキストに対してパッド・エンコード方法300が実行されることを選択したときに開始する。
ステップ301は、英数字の文字列を表す2進文字の入力文字列を取得するためのものである。
ステップ302は、方法の初期化において、定められたセル初期位置(IP)(開始セル)、及び初期方向(ID)などの他の開始パラメータを有する2次元セル形状を定めるためのものである。好ましい実施形態において、この形状は、セル幅(パッド幅(PW))及びセル高さ(パッド高さ(PD))を有するパッドと呼ばれる。このステップの例は、ステップ302.2である。
ステップ304は、最初にセル初期位置(IP)において、2進文字を、2次元形状内のエンプティ・セルすなわちアイドル・セルに書き込むためのものである。プロセスの開始時には全ての位置は状態≪アイドル≫を有しており、ひとたび位置が入力ビットにより埋められると≪ビジー≫になる。このステップの例は、ステップ304.2である。
例えば、パッド形状の2次元形状は、初期位置(IP)及び初期方向(ID)から開始し、入力ビットのシーケンスに従い、ビット単位で埋められる。各ステップにおいて、n番目の入力ビットは、「現在方向」(CD)に関連付けられたn番目の「現在位置」(CP)内に埋められる。
ステップ306は、次のアイドル・セルを決定し、そして、まず一般的に、現在方向を変更する入力文字列における条件を探すためのものである。詳細な実施形態において、方向は1で転換する。このステップの例は、ステップ306.2乃至ステップ306.38である。
例えば、CPが「1」で埋められた場合、「方向転換」(TD:Turn Direction)がCDに適用される。CPを埋めた後、本方法は、アイドル位置が存在する場合には、CDに続く最初のアイドル位置である次のCPを探す(パッドのエッジでは、ループする)。存在しない(アイドル・セル又は位置がない)場合には、≪方向エスケープ≫(ED)がCDに適用され、前の論理に復帰する。依然として見つからなかった場合、次のCPは、必要に応じてループを用いた索引シーケンスに従う続くアイドル位置に対応する。
ステップ308は、それ以上データ・セルが存在しなくなるまで又は一定の時間内に次のセルが決定されなくなるまで、セル書き込みステップ及び次セル決定ステップにループバックするためのものであり、この場合、プロセスはステップ310に進み、シリアル化された出力ストリームを構築する。このステップの例は、ステップ308.2及びステップ308.4である。
ステップ310は、出力ストリームを構築するためのものであり、ステップ310.2を含む。例えば、プロセスの最後に、残った全てのアイドル位置を無視する(SS<PW*PHの場合にのみ適用する)。暗号化された≪出力文字列≫(OS:Output String)は、パッド行のシーケンスにより作成される。
図4及び図5を参照して、好ましい実施形態の例示的な論理プロセス・ステップ302.2乃至310.2が説明される。
ステップ302.2は、初期位置(IP)、初期方向(ID)、方向転換(TD)、方向エスケープ(ED)、索引テーブル(IT)、及び文字列サイズ(SS)についての初期値を含む2次元形状の詳細を定義するためのものである。入力文字列(IS:Input String)の長さが測定され、測定値は≪文字列サイズ≫(SS)として格納される。パッドの寸法は、≪パッド幅≫(PW)及び≪パッド高さ≫(PH)によって指定される。SSは、2次元形状内のセル数を下回るか又はこれと等しくなる必要があり、幅及び高さを有する矩形形状においては、SSは、PWにPHを乗算したものを下回るか又はこれと等しくなる必要がある。2次元形状の各位置は、≪索引テーブル≫(IT:Index Table)において指定された索引により識別される。入力文字列の各位置は、nによって索引付けされ、nの初期値は1である。次は、ステップ304.2である。
ステップ304.2は、現在位置(CP)の値を入力文字列のn番目の文字に設定するためのものである。現在位置CPの状態は、アイドルからビジーに設定される。
ステップ306.2は、入力文字列の文字IS(n)が「1」であるかどうかをチェックするためのものである。そうである場合、ステップ306.4に進む。そうでない場合、ステップ306.6及びステップ306.8に進む。詳細な実施形態における例は2進文字列であるが、方向の変更を可能にする条件が存在する限り、どのような数ベースの文字又は文字列の文字を用いることもできる。
ステップ306.4は、方向ユニット(この場合は、TD)を現在方向(CD)に付加することによって方向を変更するためのものである。
ステップ306.6は、次の位置を探すためのものであり、ステップ306.8乃至ステップ306.14を含む。
ステップ306.8は、次の位置(NP:Next Position)を現在位置(CP)に設定するためのものである。
ステップ306.10は、次の位置を既存の次の位置及び現在方向の関数として設定するためのものである。
ステップ306.12は、次の位置の状態がアイドル状態であるかどうかをチェックするためのものである。そうであればステップ308.6に進む。そうでない場合にはステップ306.14に分岐する。
ステップ306.14は、次の位置が現在位置に戻ったかどうかをチェックするためのものである。そうであればステップ306.16及びステップ306.18に分岐する。そうでない場合には分岐してステップ306.10に戻る。
ステップ306.16は、多すぎる転換が、アイドル状態の又はまだ使用されていない新しいセルを見つけることなくループする連続的ループを招いた後に、ビジー・ライン又は列についての転換をエスケープするためのものである。ステップ306.16は、ステップ306.18乃至ステップ306.24を含む。
ステップ306.18は、方向エスケープ(ED)によって現在方向(CD)を変更するためのものである。
ステップ306.20は、位置及び現在方向(方向エスケープによって変更されている)の関数として、次の位置を変更するためのものである。
ステップ306.22は、次の位置がアイドル状態であった場合にはステップ308.6に進むためのものであり、そうでない場合には、方法はステップ306.24に続く。
ステップ306.24は、次の位置が現在位置である場合にはステップ306.28に分岐するためのものであり、他の場合には、方法はステップ306.18に続く。
ステップ306.26は、多すぎる転換が、アイドル状態の又はまだ使用されていない新しいセルを見つけることなく連続的にループする連続的ループを招いた後に、ビジー・ライン又は列についての転換をエスケープするためのものである。ステップ306.26は、3つのサブステップ306.28、306.30、及び306.32を含む。
ステップ306.28は、現在索引(CI:Current Index)を現在位置(CP)及び文字列サイズの関数に設定するためのものである。例えば、CI=1+CP.index mod SSである。
ステップ306.30は、現在索引CIについてのセルの状態がアイドルである場合にステップ308.4に分岐するためのものである。そうでない場合には、方法はステップ306.32に続く。
ステップ306.32は、現在索引をインクリメントし、次いで、アイドルであり、書き込める状態になっているセルを見つけるために、ステップ306.28にループバックするためのものである。
ステップ306.34は、現在位置を更新するためのものであり、ステップ306.36及びステップ306.38を含む。
ステップ306.36は、方法がステップ306.20から移るとき、現在位置を、現在索引を有するセルに設定するためのものである。次のステップは、308.2である。
ステップ306.38は、方法がステップ306.12又はステップ306.22から移るとき、現在位置を新しい位置に設定するためのものである。次は、ステップ308.2である。
ステップ308.2は、文字列内の文字数に達した場合にステップ310.2に分岐し、そうでない場合には、ステップ308.4に分岐するためのものである。
ステップ308.4は、文字カウンタnをインクリメントするためのものである。次は、ステップ304.2である。
ステップ310.2は、2次元形状内の各セルを通って所定の順序でトラバースし、各セルの値を線形出力文字列(OS)に書き込むためのものである。例えば、これは、output string(i)=cell(index=i).valueによって表すことができる。
図6を参照すると、パッド・デコード方法400は、好ましい実施形態の論理プロセス・ステップ401乃至410を含む。図7及び図8に関連して、対応する論理プロセスのサブステップ402.2乃至410.2は好ましい実施形態の例を説明する。パッド・デコード方法400は、ユーザが何らかのテキスト又はデータを選択し、次いで、選択されたテキストに対してデコード方法400が実行されることを選択したときに開始する。
ステップ401は、英数字のコード化された文字列を表す2進文字の2進入力文字列を取得するためのものである。
ステップ402は、方法の初期化において、セル幅(パッド幅(PW))及びセル高さ(パッド高さ(PD))を有するパッドと呼ばれる、好ましい実施形態における2次元形状を取得するためのものである。このステップの例は、ステップ402.2である。
ステップ403は、出力ストリームを読み出し、2次元形状を埋めるためのものである。このステップの例は、ステップ403.2である。
ステップ404は、最初に初期位置(IP)において2次元形状内のセルから文字を読み出すためのものである。プロセスの開始時に、全ての位置は状態≪アイドル≫を有し、ひとたび入力ビットによって埋められると≪ビジー≫になる。このステップの例は、ステップ404.2である。
ステップ406は、次のセルを決定し、まず一般的に、現在方向を変更する入力文字列における条件を探すためのものである。詳細な実施形態において、方向は1で転換する。このステップの例は、ステップ406.2乃至ステップ406.38である。
ステップ408は、それ以上データ・セルが存在しなくなるまで又は一定の期間内に次のセルが決定されなくなるまで、セルを読み出すステップ及び次セル決定ステップにループバックするためのものである。この場合、プロセスはステップ410に進み、シリアル化された出力ストリームを構築する。このステップの例は、ステップ408.2及びステップ408.4である。
図7及び図8を参照して、より詳細な実施形態の例示的な論理プロセス・ステップ402.2乃至414.4が説明される。
ステップ402.2は、初期位置(IP)、初期方向(ID)、方向転換(TD)、方向エスケープ(ED)、索引テーブル(IT)、及び文字列サイズ(SS)についての初期値を含む2次元形状(例えば、矩形のパッド)の更なる詳細を取得するためのものである。入力文字列(IS)の長さが測定され、計測値は≪文字列サイズ≫(SS)として格納される。パッドの寸法は、≪パッド幅≫(PW)及び≪パッド高さ≫(PH)によって指定される。SSは、2次元形状内のセルの数を下回るか又はこれと等しくなる必要があり、幅及び高さを有する矩形形状においては、SSは、PW*PHを下回るか又はこれと等しくなる必要がある。2次元形状の各位置は、≪索引テーブル≫(IT)において指定された索引により識別される。入力文字列の各位置は、nによって索引付けされ、nの初期値は1である。次は、ステップ403.2である。
ステップ403.2は、出力文字列(OS)内の各文字を読み出し、次いで、2次元形状内の各セルを通って所定の順序でトラバースし、トラバースしたセル内に文字を書き込むためのものである。例えば、これは、Cell(index=1)=Outputstring(i).valueにより表すことができる。次は、ステップ404.2である。
ステップ404.2は、現在位置(CP)の値を入力文字列のn番目の文字から読み出すためのものである。現在位置CPの状態は、ビジーからアイドルに設定される。次は、ステップ406.2である。
ステップ406.2は、入力文字列の文字IS(n)が「1」である場合にはステップ406.4に進み、そうでなければステップ406.6及びステップ406.8に進むためのものである。詳細の実施形態における例は2進文字列であるが、方向の転換を可能にする条件が存在する限り、どのような数ベースの文字又は文字列の文字を用いることもできる。
ステップ406.4は、方向ユニット(この場合は、TD)を現在方向(CD)に付加することによって方向を変更するためのものである。次は、ステップ406.8である。
ステップ406.6は、次の位置を探すためのものであり、ステップ406.8乃至ステップ406.14を含む。
ステップ406.8は、次の位置(NP)を現在位置(CP)に設定するためのものである。次は、ステップ406.10である。
ステップ406.10は、次の位置を既存の次の位置(NP)及び現在方向(CD)の関数として設定するためのものである。次は、ステップ406.12である。
ステップ406.12は、次の位置の状態がビジーである場合にはステップ406.36に進み、そうでない場合にはステップ406.14に分岐するためのものである。
ステップ406.14は、次の位置が現在位置に戻った場合にはステップ406.16及びステップ406.18に分岐し、そうでない場合にはもとのステップ406.10に分岐するためのものである。
ステップ406.16は、多すぎる転換が、アイドル状態の又はまだ使用されていない新しいセルを見つけることなく連続的に転換するループを招いた後に、ビジー・ライン又は列についての転換をエスケープするためのものであり、ステップ406.18乃至406.24を含む。
ステップ406.18は、方向エスケープ(ED)によって現在方向(CD)を変更するためのものである。次は、ステップ406.12である。
ステップ406.20は、位置及び現在方向(方向エスケープによって変更されている)の関数として、次の位置を変更するためのものである。
ステップ406.22は、次の位置がビジーであった場合にはステップ406.36に進むためのものであり、そうでない場合には、方法はステップ406.24に続く。
ステップ406.24は、次の位置が現在位置であった場合にはステップ406.28に分岐するためのものであり、そうでない場合には、方法はステップ406.18に続く。
ステップ406.26は、多すぎる転換がアイドル状態又はまだ使用されていない新しいセルを見つけることなく連続的に転換するループを招いた後に、ビジー・ライン又は列についての転換をエスケープするためのものである。ステップ406.26は、3つのサブステップ406.28、406.30、及び406.32を含む。
ステップ406.28は、現在索引(CI)を現在位置(CP)及び文字列サイズの関数に設定するためのものである。例えば、CI=1+CP.index mod SSとする。次は、ステップ406.30である。
ステップ406.30は、現在索引CIについてのセルの状態がアイドル状態である場合にはステップ406.38に分岐するためのものであり、そうでない場合には、方法はステップ406.32に続く。
ステップ406.32は現在索引をインクリメントし、次いで、アイドル状態であり、書き込める状態になっているセルを見つけるために、ステップ406.28にループバックするためのものである。
ステップ406.24は、現在位置を更新するためのものであり、ステップ406.36及びステップ406.38を含む。
ステップ406.36は、方法がステップ406.30から移るとき、現在位置を新しい位置に設定するためのものである。次は、ステップ408.2である。
ステップ406.38は、方法がステップ406.12又はステップ406.22から移るときに、現在位置を、現在索引を有するセルに設定するためのものである。次は、ステップ408.2である。
ステップ408.2は、文字列内の文字数に達した場合にはステップ408.4に分岐し、そうでない場合にはステップ408.6に分岐するためのものである。
ステップ408.4はデコード方法400の終了である。
ステップ408.6は、文字カウンタnをインクリメントするためのものである。次は、ステップ404.2である。
図9を参照して、生ストリーム(raw stream)及びコード化されたストリームの例が説明される。生ストリームは、16進法の0からFまで及び2進法の0000から1111までの一連の昇順の数として図の左側に見ることができる。図面の右側には、数のコード化されたストリームが2進法及び16進法で示される。
図10は、図9の例をコード化するのに用いられる初期パラメータの例示的な組である。初期位置(IP)=1、初期方向(ID)=東、方向転換(TD)=東、方向エスケープ(ED)=東、パッド幅(PW)=8、パッド高さ(PH)=8、及び文字列サイズ(SS)=64である。
図11及び図12は、生ストリームを図9の例のコード化されたストリームにコード化するために用いられる例示的なパッドの状態を示す。1から16まで番号が付けられた16個のパッド状態が示される。コンパスは、ページの上が北を指し示す。2次元形状は、図10におけるように定められ、パッド幅及びパッド高さが8セルに設定されている。
入力文字列は、次のように2進法で表される0から15までの数列である。
「0000000100100011010001010110011110001001101010111100110111101111」
第1のパッド状態は、初期位置1から東へ始まり、ラインの最後でカーソルが東を指し示す、水平ラインの2進文字「0000」を有する、ほとんどがエンプティ(空)のパッドを示す。これは、初期位置(IP)=1から始まるパッド上に2進数の最初の2進文字「0」を書き込み、東の初期方向(図示されるように、北はパッドの真上として定められる)に移動することに対応する。東を解析し、東にアイドル・セルを見つけることによって、次のセルを決定する。この方法は、書き込みステップにループバックし、それにより、2番目の文字「0」を隣接する東のセルに書き込む。これがさらに2回繰り返されて、アイドル・セルが、東、そして再び東に決定され、その結果、東に向かう連続ラインに「0000」が書き込まれる。次のアイドル・セルも東として決定され、方向転換(TD)(パッド1の矢印を参照されたい)は東に設定されたままである。
第2のパッドは、最後の位置から東に4セル進む水平ブロック・ライン「0001」を示す。これは、初期位置(IP)=5から始まるパッド上に数「0001」の第1の文字を書き込み、東の初期方向に移動することに対応する。再び東を解析し、アイドル・セルを直接東に見つけることによって、次のセルが決定される。この方法は、書き込みステップにループバックし、それにより、隣接する東のセルに第2の文字「0」が書き込まれる。これがさらに2回繰り返されて、アイドル・セルが東、そして再び東に決定され、その結果、東に向かう連続ラインに「0001」が書き込まれる。しかしながら、最後の書き込みが「1」であり、例示的規則は、「1」が書き込まれると方向を時計回りに変更するというものなので(さらに境界が存在する)、次の2進文字のシーケンスを求めての最初のアイドル・セルの探索は、東方向に開始されない。従って、TD方向(矢印を参照されたい)は、(方向ポインタをインクリメントすることにより)境界が存在しない南に変更される。同時に、境界のエッジに達し、この例では境界を回避するために、方向はまた時計回りに変更される。
第3のパッドは、南に3セル、西に1セルだけトラバースする、2進文字「0010」を示す(図12を参照されたい)。これは、方向を南に設定した状態で文字列「0010」の第1、第2及び第3の文字を書き込み、1を書き込むとすぐに、方向を西にインクリメントすることに対応する。解析を行い、解析の方向にアイドル・セルを見つけることにより、次のセルが決定される。この方法は、書き込みステップにループバックし、それにより、隣接する西のセルに第4の文字「0」が書き込まれ、TDは西を指し示したままである。
第4のパッドは、2進文字「0011」が、アイドル・セル内に書き込まれ、西に3セル、北に1セルだけトラバースし、TDを東に変更することを示す。
第5のパッドは、2進文字「01」が2つの東のアイドル・セル内に書き込まれ、文字「1」によってTDを南にインクリメントし、南の単一のビジー・セルをスキップし、2進文字「00」が2つの南のアイドル・セルに書き込まれ、TDは南に設定されたままであることを示す。
第6のパッドは、2進文字「0101」が、最後に書き込まれたセルから、南、南、西、及び西にトラバースして、隣接するセル内に書き込まれることを示す。最後の2進文字「1」が書き込まれた後、TDは北に変更される。
第7のパッドは、2進文字「0110」が、最後に書き込まれたセルから、北、北、東、南にトラバースして、セル内に書き込まれることを示す。最後の2進文字「1」が書き込まれた後、TDは南に変更され、次のアイドル・セルは、境界を通って南ラインに沿って選択される(南を指し示す矢印で示されるように)。
第8のパッドは、2進文字「0111」が、次のように、すなわち、次のアイドル・セル内に「0」が書き込まれ、南に3セルだけトラバースして「1」を書き込み、TDを西に変更し、西に1セルだけトラバースして「1」を書き込み、TDを北に変更して3セルだけトラバースして「1」を書き込み、TDを東に変更して2セルだけトラバースし、次のアイドル・セルを見つけるように、書き込まれることを示す。
第9のパッドは、2進文字「1000」が、次のように、すなわち、次のアイドル・セル内に「1」が書き込まれ、TDを南に変更するように、書き込まれることを示す。しかしながら、セルの南北ラインにはアイドル・セルが存在しないので、TDは再び西に変更される。西に2セルだけトラバースされて「0」が書き込まれ、西に1セルだけトラバースして「0」が書き込まれる。西にトラバースすると境界に接触するので、東西のラインの東側から開始して、西に2セルだけトラバースし、新しいアイドル・セルを見つける。
第10のパッドは、2進文字「1001」が、次のように、すなわち、新しいアイドル・セル内に「1」が書き込まれ、TDを北に変更するように、書き込まれることを示す。北にトラバースすると境界に接触するので、列の南側から北に1セルだけトラバースし、「0」を書き込むためのアイドル・セルを見つけるように、書き込まれることを示す。北に1セルだけトラバースして「0」が書き込まれる。北に1セルだけトラバースして「1」が書き込まれ、TDが東に変更され、東を指し示す矢印で示されるように、新しいアイドル・セルは、1セル東にある。
第11のパッドは、2進文字「1010」が、次のように、すなわち、新しいアイドル・セル内に「1」が書き込まれ、TDを南に変更し、南に1セルだけトラバースするように、書き込まれることを示す。「0」が書き込まれ、南に1セルだけトラバースされる。「1」が書き込まれ、TDが西に変更され、西に5セルだけトラバースする。「0」が書き込まれ、新しいアイドル・セルまで西に1セルだけトラバースされる。新しいアイドル・セル内で西を指し示す矢印により示されるように、TDは西である。
第12のパッドは、2進文字「1011」が、次のように、すなわち、新しいアイドル・セル内に「1」が書き込まれ、TDを北に変更し、1セルだけトラバースするように、書き込まれることを示す。「0」が書き込まれ、北に1セルだけトラバースされる。「1」が書き込まれ、TDが東に変更され、東に1セルだけトラバースされ、「1」が書き込まれ、TDが南に変更され、新しいアイドル・セルまで南に1セルだけトラバースされる。新しいアイドル・セル内の南を指し示す矢印により示されるように、TDは南である。
第13のパッドは、2進文字「1100」が、次のように、すなわち、新しいアイドル・セル内に「1」が書き込まれ、TDを西に変更し、西に2セルだけトラバースするように、書き込まれることを示す。「1」が書き込まれ、TDが北に変更され、北に1セルだけトラバースされる。「0」が書き込まれ、北に1セルだけトラバースされる。「0」が書き込まれ、新しいアイドル・セルまで北に1セルだけトラバースされる。新しいアイドル・セル内の北を指し示す矢印により示されるように、TDは北である。
第14のパッドは、2進文字「1101」が、次のように、すなわち、新しいアイドル・セル内に「1」が書き込まれ、TDを東に変更し、東に1セルだけトラバースするように、書き込まれることを示す。「1」が書き込まれ、TDが南に変更され、南に1セルだけトラバースされる。「0」が書き込まれ、列の北端から南に3セルだけトラバースされる。「1」が書き込まれ、TDが西に変更され、新しいアイドル・セルまで西に1セルだけトラバースされる。新しいアイドル・セル内の西を指し示す矢印により示されるように、TDは西である。
第15のパッドは、2進文字「1110」が、次のように、すなわち、新しいアイドル・セル内に「1」が書き込まれ、TDを北に変更し、南北のラインの南にある唯一のアイドル・セルまでトラバースするように、書き込まれることを示す。「1」が書き込まれ、TDが東に変更され、行の東に探索してアイドル・セルが見つからず、列の南を探索してもアイドル・セルが見つからない。西に1セルだけトラバースし、列を北に探索し、北に4セルだけトラバースする。「1」が書き込まれ、TDが西に変更され、西に1セルだけ移動する。「0」を書き込み、新しいアイドル・セルまで西に4セルだけトラバースする。新しいアイドル・セル内の西向き矢印で示されるように、TDは西である。
第16のパッドは、2進文字「1111」が、次のように、すなわち、新しいアイドル・セル内に「1」が書き込まれ、TDを北に変更し、北に1セルだけトラバースし、「1」が書き込まれ、TDが東に変更されるが、東のラインにはアイドル・セルが見つからないように、書き込まれることを示す。TDが南に変更され、列内の唯一のアイドル・セルまでトラバースする。「1」が書き込まれ、TDが西に変更され、行内の唯一のアイドル・セルまでトラバースする。「1」が書き込まれ、書き込むべき2進文字はそれ以上存在しない。
2進文字を上から下(北から南)、かつ、左から右(西から東)へシリアル化することにより、エンコードされた文字列
「0000000100010110111101101111000100111001011110111010000011010101」
が得られる。
図13及び図14は、エンコードされたストリームを、図9の例のストリームにデコードするために用いられるような、例示的なパッド状態を示す。1から16までの番号が付けられた16個のパッドが示される。コンパスは、ページの上が北を指し示す。
第1の段階は、エンコードされた文字列を、パッド内に書き込むことによってデシリアル化することである。図13のパッド状態1に見られるように、エンコードされた文字列は、左から右及び上から下に書き込まれている。
デコードは、エンコードとは反対の方法を用いる。エンコード方法は、パッド内のセルを、アイドル・セルに達するまでトラバースし、それにより、2進文字がアイドル・セル内に書き込まれ、その状態をビジーに変更する。対照的に、デコード方法は、パッドを、ビジー・セルに達するまでトラバースし、文字を読み出し、セルの状態をアイドルに変更する。
第1のパッド状態は、初期位置1(上部左コーナー部)から読み出された2進文字「0000」の水平ラインを有し、ラインの最後でカーソルが東を指し示している、ほとんど充填されている(full)のパッドを示す。これは、初期位置(IP)=1から始まるパッド上の2進数の最初の文字「0」を読み出し、東の初期方向(図示されるように、北はパッドの真上として定められる)に移動することに対応する。東へトラバースしてビジー・セルを見つけることによって、次のセルが決定される。この方法は、読み出すステップにループバックし、それにより、2番目の文字「0」が読み出される。これがさらに2回繰り返されて、ビジー・セルが東、そして再び東に決定されその結果、東に向かう連続ラインに「0000」が読み出される。TD方向(パッド1の矢印を参照)は東に設定されたままである。
第2のパッド状態において、次のビジー・セルは、東のセルとして決定される。第2のパッド状態は、水平ブロック・ライン「0001」が、最後の位置(第1のパッド状態からのカーソルにより参照される)から東に4セルだけ読み出されることを示す。これは、初期位置(IP)=5から始まるパッド上の数「0001」の第1の文字を読み出し、東の初期方向に移動することに対応する。東にトラバースし、ビジー・セルを見つけることによって、次のセルが決定される。この方法は、読み出すステップにループバックし、それにより、セルから第2の文字「0」を読み出す。これがさらに2回繰り返されて、ビジー・セルが東、そして再び東に決定され、その結果、東に向かう連続ラインにおいて「0001」が読み出される。しかしながら、最後の読み出しが「1」であり、例示的規則は、「1」が読み出されると、方向を時計回りに変更するというものなので、次の2進文字のシーケンスを求めての最初のビジー・セルの探索は、東方向に開始されない。従って、TD方向(矢印を参照されたい)は、方向ポインタをインクリメントすることにより、南に変更される。同時に、境界のエッジに達し、この例では境界を回避するために、方向はまた時計回りに変更される。
第3のパッド状態において、次のビジー・セルは、1セルだけ南である。第3のパッドは、2進文字「0010」が、南に3セル、西に1セルだけトラバースすることによって読み出されることを示す(図14を参照されたい)。これは、文字列「0010」の第1、第2及び第3の文字を読み出し、1を読み出すとすぐに方向を南に設定し、方向を西にインクリメントすることに対応する。トラバースし、トラバース方向にビジー・セルを見つけることにより、次のセルが決定される。この方法は、読み出すステップにループバックし、それにより、第4の文字「0」が読み出され、TDは西を指し示したたままである。
第4のパッド状態において、次のビジー・セルは、1セル西にある。第4のパッドは、2進文字「0011」が、ビジー・セルから読み出され、西に3セル、北に1セルだけトラバースし、TDを東に変更することを示す。
第5のパッド状態において、次のビジー・セルは、1セルだけ東にある。第5のパッドは、2進文字「01」が、2つの東のビジー・セルから読み出され、「1」の文字のためにTDを南にインクリメントし、南の単一のアイドル・セルをスキップして、南の2つのビジー・セルから2進文字「00」を読み出し、TDは南に設定されたままであることを示す。
第6のパッドは、2進文字「0101」が、最後に読み出されたセルから南、次に南、西、及び西にトラバースして、隣接するセルから読み出されることを示す。最後の2進文字「1」が読み出された後、TDは北に変更される。
第7のパッドは、2進文字「0110」が、最後に読み出されたセルから北、次に北、東、及び南にトラバースして、セルから読み出されることを示す。最後の2進文字「1」が読み出された後、TDは南に変更される。
第8のパッドにおいて、次のビジー・セルは、南ラインに沿い、境界を通って選択される(第7のパッド内の南を指し示す矢印で示されるように)。第8のパッドは、2進文字「0111」が、次のように、すなわち、次のビジー・セルにおいて「0」として読み出され、南に3セルだけトラバースし、「1」を読み出し、TDを西に変更し、西に1セルだけトラバースして「1」を読み出し、TDを北に変更して3セルだけトラバースして「1」を読み出し、TDを東に変更するように、読み出されることを示す。
第9のパッドにおいて、この方法は、2セルだけトラバースして、次のビジー・セルを見つける。第9のパッドは、2進文字「1000」が、次のように、すなわち、次のビジー・セルにおいて「1」が読み出され、TDを南に変更するように、読み出されることを示す。しかしながら、セルの南北ラインにはビジー・セルが存在しないので、TDは再び西に変更される。西に2セルだけトラバースされ、「0」が読み出され、西に1セルだけトラバースし、「0」が読み出される。
第10のパッドにおいて、この方法は、西にトラバースすると境界に接触するので、東西のラインの東側から開始して、西に2セルだけトラバースし、新しいビジー・セルを見つける。第10のパッドは、2進文字「1001」が、次のように、すなわち、新しいビジー・セルにおいて「1」が読み出され、TDを北に変更するように、読み出されることを示す。北にトラバースすると境界に接触するので、列の南側から開始して北に1セルだけトラバースし、「0」を読み出す。北に1セルだけトラバースして「0」が読み出される。北に1セルだけトラバースして「1」が読み出され、TDが東に変更される。
第11のパッドにおいて、新しいビジー・セルは、第10のパッドからの最後の矢印(東を指し示す)により示されるように、1セル東にある。第11のパッドは、2進文字「1010」が、次のように、すなわち。新しいビジー・セルにおいて「1」が読み出され、TDを南に変更し、1セルだけ南にトラバースするように、読み出されることを示す。「0」が読み出され、南に1セルだけトラバースされる。「1」が読み出され、TDが西に変更され、西に5セルだけトラバースする。「0」が読み出され、新しいビジー・セルまで西に1セルだけトラバースされる。西を指し示す矢印で示されるように、TDは西である。
第12のパッドは、2進文字「1011」が、次のように、すなわち、新しいビジー・セルから「1」が読み出され、TDを北に変更し、1セルだけトラバースするように、読み出されることを示す。「0」が読み出され、北に1セルだけトラバースされる。「1」が読み出され、東にTDが変更され、東に1セルだけトラバースされる。「1」が読み出され、TDが南に変更され、新しいビジー・セルまで南に1セルだけトラバースされる。南を指し示す矢印で示されるように、TDは南である。
第13のパッドは、2進文字「1100」が、次のように、すなわち、新しいビジー・セルにおいて「1」が読み出され、TDを西に変更し、西に2セルだけトラバースするように、読み出されることを示す。「1」が読み出され、TDが北に変更され、北に1セルだけトラバースされる。「0」が読み出され、北に1セルだけトラバースされる。「0」が読み出され、新しいビジー・セルまで北に1セルだけトラバースされる。TDは北である。
第14のパッドは、2進文字「1101」が、次のように、すなわち、新しいビジー・セルにおいて「1」が読み出され、TDを東に変更し、東に1セルだけトラバースするように、読み出されることを示す。「1」が読み出され、TDが南に変更され、南に1セルだけトラバースされる。「0」が読み出され、列の北端から南に3セルだけトラバースされる。「1」が読み出され、TDが西に変更される。
第15のパッドは、2進文字「1110」が、次のように、すなわち、新しいビジー・セルにおいて「1」が読み出され、TDを北に変更し、南北のラインの南にある唯一のビジー・セルまでトラバースするように、読み出されることを示す。「1」が読み出され、TDが東に変更され、行を東に探索してビジー・セルが見つからず、列を南に探索してビジー・セルが見つからない。西に1セルだけトラバースし、列を北に探索し、北に4セルだけトラバースする。「1」が読み出され、TDが西に変更され、西に1セルだけ移動する。「0」が読み出され、その後、新しいビジー・セルまで4セルだけ西にトラバースする。TDは西である。
第16のパッドは、2進文字「1111」が、次のように、すなわち、新しいビジー・セルにおいて「1」が読み出され、TDを北に変更し、北に1セルだけトラバースし、「1」が読み出され、TDが東に変更されるが、東のラインにはビジー・セルが見つからないように、読み出されることを示す。TDが南に変更され、列内の唯一のビジー・セルまでトラバースする。「1」が読み出され、TDが西に変更され、行内の唯一のビジー・セルまでトラバースする。「1」が読み出され、読み出すべき2進文字はそれ以上存在しない。
最初の時点において、出力文字列は、デコーダによって提示される特別な順序での全ての読み出された文字を収容しており、これは、最初にコード化されたオリジナルの入力文字列と同一である。
ここで、本発明の更に別の実施形態が説明される。好ましい実施形態の論理プロセス・ステップの全て又は一部は、本方法の論理プロセス・ステップを実施するように構成された論理要素を含む論理装置又は複数の論理装置において代替的に具体化できること、及び、このような論理要素はハードウェア・コンポーネント、ファームウェア・コンポーネント、又はそれらの組み合わせを含み得ることは、当業者には明らかであろう。
好ましい実施形態の論理コンポーネントの全て又は一部は、本方法のステップを実施するための論理要素を含む論理装置において代替的に具体化できること、及び、このような論理要素は、例えば、プログラマブル論理アレイ又は特定用途向け集積回路内の論理ゲートなどのコンポーネントを含み得ることも、当業者には等しく明らかであろう。このような論理構成は、例えば、固定された又は伝送可能なキャリア媒体を用いて格納及び伝送することができる仮想ハードウェア記述子言語を用いて、こうしたアレイ又は回路内の論理構造を一時的又は恒久的に確立するための要素を可能にする際にさらに具体化することができる。
更に別の代替的な実施形態において、本発明は、コンピュータ・インフラストラクチャ内に配備され、そこで実行されるときに、コンピュータ・システムに本方法の全てのステップを実施させるように動作可能なコンピュータ・プログラム・コードを配備するステップを含むサービスを配備するコンピュータ実装方法の形態で実現することができる。
本方法及び好ましい実施形態のコンポーネントは、代替的に、並列ソフトウェアを実行するための2つ又はそれ以上のプロセッサを含む並列コンピューティング・システムにおいて完全に又は部分的に具体化できることが理解されるであろう。
本発明の更に別の実施形態は、システム及び方法に関して定められたコンピュータ・プログラム製品である。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令をそこに有する、コンピュータ可読ストレージ媒体を含むことができる。
コンピュータ可読ストレージ媒体は、命令実行デバイスにより使用するための命令を保持及び格納することができる有形のデバイスとすることができる。コンピュータ可読ストレージ媒体は、例えば、これらに限定されるものではないが、電子ストレージ・デバイス、磁気ストレージ・デバイス、光記憶装置、磁気記憶装置、半導体ストレージ・デバイス、又は上記のいずれかの適切な組み合わせとすることができる。コンピュータ可読ストレージ媒体のより具体的な例(非網羅的なリスト)として、以下のもの、すなわち、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、読み出し専用メモリ(ROM)、消去可能なプログラム可能読み出し専用メモリ(EPROM又はフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SPRAM)、ポータブル・コンパクト・ディスク型読み出し専用メモリ(CD−ROM)、デジタル多用途ディスク(DVD)、メモリ・スティック、フロッピー・ディスク、パンチカード又は命令がそこに記録された溝内の隆起構造などの機械的エンコード・デバイス、及び上記のいずれかの適切な組み合わせが挙げられる。本明細書で用いられるとき、コンピュータ可読ストレージ媒体は、無線波又は他の自由に伝搬する電磁波、導波路若しくは他の伝送媒体(例えば、光ファイバ・ケーブルを通る光パルス)を通して伝搬する電磁波、又は配線を通じて伝送される電気信号などの、それ自体が一時的信号として解釈されるべきではない。
本明細書で説明されるコンピュータ可読プログラム命令は、コンピュータ可読ストレージ媒体からそれぞれのコンピューティング装置/処理装置自体に、又は、例えば、インターネット、ローカル・エリア・ネットワーク、広域ネットワーク、及び/又は無線ネットワークなどのネットワークを介して外部コンピュータ若しくは外部ストレージ・デバイスにダウンロードすることができる。ネットワークは、銅伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウオール、スイッチ、ゲートウェイ・コンピュータ及び/又はエッジ・サーバを含むことができる。各コンピューティング装置/処理装置内のネットワーク・アダプタ・カード又はネットワーク・インターフェースは、ネットワークからコンピュータ可読プログラム命令を受け取り、コンピュータ可読プログラム命令を転送し、それぞれのコンピューティング装置/処理装置内のコンピュータ可読ストレージ媒体に格納することができる。
本発明の操作を実行するためのコンピュータ・プログラム命令は、アセンブラ命令、命令−セット−アーキテクチャ(ISA)命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、又はSmalltalk、C++等のようなオブジェクト指向プログラミング言語、及びCプログラミング言語のような従来の手続き型プログラミング言語、又は同様のプログラミング言語を含む1つ又は複数のプログラミング言語のいずれかの組み合わせで記述されるソース、・コード又はオブジェクト・コードとすることができる。コンピュータ・プログラム・コードは、全体がユーザのコンピュータ上で実行される場合もあり、独立型ソフトウェア・パッケージとして、一部がユーザのコンピュータ上で実行される場合もあり、一部がユーザのコンピュータ上で実行され、一部が遠隔コンピュータ上で実行される場合もあり、又は全体が遠隔コンピュータ若しくはサーバ上で実行される場合もある。後者のシナリオにおいては、遠隔コンピュータは、ローカル・エリア・ネットワーク(LAN)若しくは広域ネットワーク(WAN)を含むいずれかのタイプのネットワークを通じてユーザのコンピュータに接続される場合もあり、又は外部コンピュータへの接続(例えば、インターネット・サービス・プロバイダを用いるインターネットを通じた)がなされる場合もある。幾つかの実施形態においては、例えばプログラマブル論理回路、フィールド・プログラマブル・ゲート・アレイ(FPGA)、プログラマブル論理アレイ(PLA)を含む電子回路は、本発明の態様を実行するために、コンピュータ可読プログラム命令の状態情報を用いて電子回路を個人化することにより、コンピュータ可読プログラム命令を実行することができる。
実施形態の態様は、方法、装置(システム)及びコンピュータ・プログラム製品のフローチャート図及び/又はブロック図を参照して以下で説明される。フローチャート図及び/又はブロック図の各ブロック、並びにフローチャート図及び/又はブロック図内のブロックの組み合わせは、コンピュータ・プログラム命令によって実装することができることが理解されるであろう。
これらのコンピュータ可読プログラム命令を、汎用コンピュータ、専用コンピュータ、又は他のプログラマブル・データ処理装置のプロセッサに与えてマシンを製造し、それにより、コンピュータ又は他のプログラム可能データ処理装置のプロセッサにより実行される命令が、フローチャート及び/又はブロック図の1つ又は複数のブロックにおいて指定された機能/動作を実装するための手段を生成するようにすることができる。これらのコンピュータ可読プログラム命令を、コンピュータ、プログラマブル・データ処理装置、及び/又は他のデバイスに特定の方式で機能させるように指示することができるコンピュータ可読ストレージ媒体内に格納し、それにより、そのコンピュータ可読ストレージ媒体内に格納された命令が、フローチャート及び/又はブロック図の1つ又は複数のブロックにおいて指定された機能/動作を実装する命令を含む製品を製造するようにすることもできる。
コンピュータ・プログラム命令を、コンピュータ、他のプログラム可能データ処理装置、又は他のデバイス上にロードして、コンピュータ、他のプログラム可能データ処理装置、又は他のデバイス上で、コンピュータ実装プロセスを生成するための一連の動作ステップを実施させて、それにより、コンピュータ又は他のプログラム可能装置上で実行される命令が、フローチャート及び/又はブロック図の1つ又は複数のブロックにおいて指定された機能/動作を実装するためのプロセスを提供するようにさえることもできる。
図中のフローチャート及びブロック図は、本発明の種々の実施形態によるシステム、方法及びコンピュータ・プログラム製品の可能な実装のアーキテクチャ、機能性、及び動作を示す。これに関して、フローチャート又はブロック図中の各ブロックは、指定された論理機能を実施するための1つ又は複数の実行可能命令を含む、モジュール、セグメント、又は命令の部分を表すことができる。さらに、幾つかの代替的実施において、ブロック内に記述された機能は、図中に示したのとは別の順序で実行することができることに留意されたい。例えば、連続して示した2つのブロックは、実際には、実質的に並列に実行することができ、又はブロックは場合により、関与する機能性に応じて逆の順序で実行することができる。さらに、ブロック図及び/又はフローチャート図の各ブロック、並びにブロック図及び/又はフローチャート図中のブロックの組み合わせは、指定された機能又は動作を実行する専用ハードウェアをベースとするシステム、又は専用ハードウェアとコンピュータ命令との組み合わせによって実施できることにも留意されたい。
当業者には、本発明の範囲から逸脱することなく、上記の例示的な実施形態に対して多くの改善及び変更をなし得ることが明らかであろう。
10:コンピュータ処理システム
12:汎用コンピュータ・サーバ
14:入力デバイス
16:出力デバイス
18:ユーザ
20:ネットワーク
22:中央演算処理ユニット(CPU)
24:ネットワーク・アダプタ
26:デバイス・アダプタ
28:バス
30:メモリ
32:揮発性メモリ
34:永続的メモリ
36:ランダム・アクセス・メモリ(RAM)
38:キャッシュ・メモリ
200:パッド・エンコード及びデコード・モジュール
202:レジスタ
204:文字読み出し及び書き込みエンジン
206:次セル決定エンジン
208:ループ・ファシリテータ
210:シリアル化/デシリアル化エンジン
300:パッド・エンコード方法
400:パッド・デコード方法

Claims (20)

  1. 英数字を表す2進文字の入力文字列をエンコードするためのシステムであって、
    開始エンプティ・セルを含む2次元セル形状の定義を格納するためのレジスタと、
    前記開始エンプティ・セルから始まる、エンプティ・セルへの2進文字の書き込みを実行するための文字書き込みエンジンと、
    エンプティ・セルを見つけるまで前記2次元形状内の隣接するセルを規則的に移動することによって、次のエンプティ・セルを決定するための次セル決定エンジンと、
    データ文字が存在しなくなるまで、又は、次のエンプティ・セルが決定されなくなるまで、前記文字書き込みエンジン及び前記次セル決定エンジンにループバックするためのループ・支援部と、
    前記2次元形状内のセルを、エンコードされた英数字文字列を表す1次元の2進文字列にシリアル化するためのシリアル化エンジンと、
    を含む、システム。
  2. 前記規則的に移動することは、現在セルから新しいセルまで現在方向に移動することを含み、前記新しいセルがエンプティ・セルである場合には、前記新しいセルが前記次のエンプティ・セルとなり、前記新しいセルがエンプティ・セルでない場合には、エンプティ・セルを見つけるまで再び移動する、請求項1に記載のシステム。
  3. エンプティ・セルを見つけるために移動の方向を変更することをさらに含む、請求項1 又は請求項2に記載のシステム。
  4. 次のエンプティ・セルを見つけるために隣接するセルに移動するが、隣接するセルがエンプティではない場合には、エンプティ・セルを見つけるために隣接していないセルに移動することをさらに含む、請求項1から請求項3のいずれかに記載のシステム。
  5. 特定の2進文字が書き込まれた場合、現在方向を変更することをさらに含む、請求項1から請求項のいずれかに記載のシステム。
  6. 現在方向への移動が前記2次元形状の境界を越える場合、異なる方向を用いる、請求項1から請求項5のいずれかに記載のシステム。
  7. エンコードされた英数字文字列を表す2進文字の入力文字列をデコードするためのシステムであって、
    開始現在セルを含むセルの2次元形状の定義を格納するためのレジスタと、
    各々のセルが充填されるようにするために、定められた変換を用いて前記セル前記2 進文字を書き込むためのシリアル化/ デシリアル化エンジンと、
    現在セルから2進文字を読み出し、前記2進文字を出力文字列に書き込み、現在セルをエンプティに設定するための文字読み出し/ 書き込みエンジンと、
    充填セルを見つけるまで現在セルから前記2次元形状内の隣接するセルへ規則的に移動することによって、次の充填セルを決定するための次セル決定エンジンと、
    データ文字が存在しなくなるまで、又は、次の充填セルが決定されなくなるまで、前記文字を読み出すこと及び前記次の充填セルを決定することにループバックするためのループ・支援部と、
    を含み、前記出力文字列は、エンコードされた英数字文字列を表す文字の1次元の2 進文字列となる、システム。
  8. 英数字を表す2進文字の入力文字列をエンコードする方法であって、
    開始エンプティ・セルを含む規則的セルの2次元形状を定義することと、
    前記開始エンプティ・セルから始まる、エンプティ・セルへの2進文字の書き込みを実行することと、
    エンプティ・セルを見つけるまで前記2次元形状内の隣接するセルを規則的に移動することによって、次のエンプティ・セルを決定することと、
    データ文字が存在しなくなるまで、又は、次のエンプティ・セルが決定されなくなるまで、前記文字の書き込み及び前記次のエンプティ・セルの決定にループバックすることと、
    前記2次元形状内のセルを、エンコードされた英数字文字列を表す1次元の2進文字列にシリアル化することと、
    を含む、方法。
  9. 前記規則的に移動することは、現在セルから新しいセルまで現在方向に移動することを含み、前記新しいセルがエンプティ・セルである場合には、前記新しいセルが前記次のセルとなり、前記新しいセルがエンプティ・セルでない場合には、エンプティ・セルを見つけるまで再び移動する、請求項に記載の方法。
  10. エンプティ・セルを見つけるために移動の方向を変更することをさらに含む、請求項又は請求項に記載の方法。
  11. 次のエンプティ・セルを見つけるために隣接するセルに移動するが、隣接するセルがエンプティではない場合には、エンプティ・セルを見つけるために隣接していないセルに移動することをさらに含む、請求項から請求項10のいずれかに記載の方法。
  12. 特定の2進文字が書き込まれた場合、現在方向を変更することをさらに含む、請求項から請求項11のいずれかに記載の方法。
  13. 現在方向への移動が前記2次元形状の境界を越える場合、異なる方向を用いる、請求項から請求項12のいずれかに記載の方法。
  14. 前記2次元形状は、幅及び高さを有する矩形であるか、又は、六角セルのハニカム・マトリックスである、請求項から請求項13のいずれかに記載の方法。
  15. 前記2次元形状内のセルは初期充填パターンを有し、前記初期充填パターンでは、前記2次元形状内のセルがエンプティである請求項から請求項14のいずれかに記載の方法。
  16. 前記2次元形状内のセルは初期充填パターンを有し、前記初期充填パターンでは、前記2次元形状の前記セル「0」及び「1」のパターンで埋められる、請求項から請求項14のいずれかに記載の方法。
  17. エンコードされた英数字文字列を表す2進文字の入力文字列をデコードする方法であって、
    開始現在セルを含むセルの2次元形状を定義することと、
    各々のセルが充填されるようにするために、定められた変換を用いて前記セル前記2 進文字を書き込むことと、
    現在セルから2進文字を読み出し、前記2進文字を出力文字列に書き込み、現在セルをエンプティに設定することと、
    充填セルを見つけるまで前記現在セルから前記2次元形状内の隣接するセルへ規則的に移動することによって、次の充填セルを決定することと、
    データ文字が存在しなくなるまで、又は、次の充填セルが決定されなくなるまで、前記文字を読み出すこと及び前記次の充填セルを決定することにループバックすることと、
    を含む、方法。
  18. 前記2次元セルを、エンコードされた英数字の文字列を表す1次元の2進文字列に規則的にシリアル化することをさらに含む、請求項17に記載の方法。
  19. 請求項から請求項18のいずれかの方法の各ステップを実施するように構成されたコンピュータ可読プログラム・コードを有する、コンピュータ・プログラム。
  20. コンピュータ可読媒体上に格納され、デジタル・コンピュータの内部メモリ内にロード可能なコンピュータ・プログラムであって、前記プログラムがコンピュータ上で実行されたとき、請求項から請求項18のいずれかの方法の各ステップを実施するためのソフトウェア・コード部分を含む、コンピュータ・プログラム。
JP2015242443A 2014-12-19 2015-12-11 パッドのエンコード及びデコード Active JP6624915B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB1422719.3A GB2533393A (en) 2014-12-19 2014-12-19 Pad encoding and decoding
GB1422719.3 2014-12-19

Publications (2)

Publication Number Publication Date
JP2016123089A JP2016123089A (ja) 2016-07-07
JP6624915B2 true JP6624915B2 (ja) 2019-12-25

Family

ID=55969839

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015242443A Active JP6624915B2 (ja) 2014-12-19 2015-12-11 パッドのエンコード及びデコード

Country Status (3)

Country Link
US (5) US9350382B1 (ja)
JP (1) JP6624915B2 (ja)
GB (1) GB2533393A (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9425825B2 (en) 2012-05-22 2016-08-23 International Business Machines Corporation Path encoding and decoding
GB2533392A (en) 2014-12-19 2016-06-22 Ibm Path encoding and decoding
GB2533393A (en) * 2014-12-19 2016-06-22 Ibm Pad encoding and decoding
GB2533391A (en) 2014-12-19 2016-06-22 Ibm Wall encoding and decoding
US9950261B2 (en) 2016-04-29 2018-04-24 International Business Machines Corporation Secure data encoding for low-resource remote systems

Family Cites Families (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3657699A (en) * 1970-06-30 1972-04-18 Ibm Multipath encoder-decoder arrangement
DE2922082C2 (de) 1979-05-31 1981-08-27 Licentia Patent-Verwaltungs-Gmbh, 6000 Frankfurt Verfahren und Anordnung zur Übertragung einer Binärfolge
US4555805A (en) 1980-03-14 1985-11-26 Harris Corporation Secure mobile telephone system
DE3210081C2 (de) 1982-03-19 1984-12-20 Siemens AG, 1000 Berlin und 8000 München Verfahren und Anordnung zum Übertragen von verschlüsselten Texten
IT1156086B (it) * 1982-10-25 1987-01-28 Cselt Centro Studi Lab Telecom Metodo e dispositivo di memorizzazione di segnali numerici organizzati in modo tridimensionale e soggetti a trasformazioni ortogonali
IL83549A (en) * 1987-08-16 1992-08-18 Yossi Matias Video scrambling apparatus and method based on space filling curves
JPH02134940A (ja) 1988-11-16 1990-05-23 Secom Co Ltd データ暗号化アダプタ装置、データ復号化アダプタ装置、およびこれらを用いたデータ通信システム
US6014733A (en) 1997-06-05 2000-01-11 Microsoft Corporation Method and system for creating a perfect hash using an offset table
US20030118186A1 (en) 1997-10-30 2003-06-26 Gilley James E. Apparatus for and method for cipher check of an analog scrambler
JP4242970B2 (ja) * 1998-07-09 2009-03-25 富士通株式会社 データ圧縮方法及びデータ圧縮装置
EP1161820B1 (en) 1999-03-12 2006-04-19 Aware, Inc. Seamless rate adaptive multicarrier modulation system and protocols
WO2001074005A1 (en) 2000-03-29 2001-10-04 Hammersmith Wolfgang S One-time-pad encryption with central key service and keyable characters
US8281155B1 (en) * 2000-11-02 2012-10-02 Intel Corporation Content protection using block reordering
US6737994B2 (en) * 2002-05-13 2004-05-18 International Business Machines Corporation Binary-ordered compression for unicode
US7327293B2 (en) * 2006-03-03 2008-02-05 Honeywell International Inc. Compression and data encoding for transmission over a character-based protocol
US8489987B2 (en) 2006-07-31 2013-07-16 Ricoh Co., Ltd. Monitoring and analyzing creation and usage of visual content using image and hotspot interaction
US9176984B2 (en) 2006-07-31 2015-11-03 Ricoh Co., Ltd Mixed media reality retrieval of differentially-weighted links
US8311222B2 (en) 2008-08-26 2012-11-13 GlobalFoundries, Inc. Hardware based multi-dimensional encryption
US8670560B2 (en) 2008-10-23 2014-03-11 University Of Ulster Encryption method
US8194858B2 (en) 2009-02-19 2012-06-05 Physical Optics Corporation Chaotic cipher system and method for secure communication
US8184804B2 (en) 2009-04-30 2012-05-22 Apple Inc. Hash function using a piling-up process
CN102025482B (zh) 2009-09-10 2014-02-12 中国科学院华南植物园 一种基于虚拟基因组的密码系统(vgc)的构造方法
TW201215070A (en) 2010-06-14 2012-04-01 Revere Security Corp Key Management Systems and methods for shared secret ciphers
CN101984574B (zh) 2010-11-29 2012-09-05 北京卓微天成科技咨询有限公司 一种数据加解密方法及装置
US8779950B2 (en) 2012-03-05 2014-07-15 Dcba, Llc Command encoded data compression
US9425825B2 (en) 2012-05-22 2016-08-23 International Business Machines Corporation Path encoding and decoding
US10009168B2 (en) 2012-11-26 2018-06-26 Massively Parallel Technologies, Inc. System and method for secure communications and data storage using multidimensional encryption
CN103023653B (zh) 2012-12-07 2017-03-29 哈尔滨工业大学深圳研究生院 低功耗的物联网安全组通信方法及装置
CN103684742A (zh) 2013-11-29 2014-03-26 西安交通大学 一种基于循环矩阵变换的支持密文计算的加密方法
GB2533393A (en) * 2014-12-19 2016-06-22 Ibm Pad encoding and decoding

Also Published As

Publication number Publication date
US9350382B1 (en) 2016-05-24
US10396816B2 (en) 2019-08-27
JP2016123089A (ja) 2016-07-07
US20160218736A1 (en) 2016-07-28
US9647681B2 (en) 2017-05-09
US9473167B2 (en) 2016-10-18
GB2533393A (en) 2016-06-22
US20160365872A1 (en) 2016-12-15
US20180034473A1 (en) 2018-02-01
US20170149442A1 (en) 2017-05-25
US9876508B2 (en) 2018-01-23

Similar Documents

Publication Publication Date Title
JP6624915B2 (ja) パッドのエンコード及びデコード
US20210019127A1 (en) Target architecture determination
JP2018504666A (ja) 多次元アレイから要素の多次元ブロックをプリフェッチするためのハードウェア装置および方法
Yu et al. GPU-based parallel reservoir simulation for large-scale simulation problems
CN104040487A (zh) 用于合并掩码模式的指令
US11216281B2 (en) Facilitating data processing using SIMD reduction operations across SIMD lanes
EP3938917B1 (en) Moving data in a memory and command for memory control
US9425825B2 (en) Path encoding and decoding
US9946701B2 (en) Selectively pinning sections of displayed content
US20220350514A1 (en) Memory mapping of activations for convolutional neural network executions
US10027345B2 (en) Wall encoding and decoding
US20220318015A1 (en) Enforcing data placement requirements via address bit swapping
US9577670B2 (en) Path encoding and decoding
Bhattacharjee et al. Synthesis and technology mapping for in-memory computing
KR20210121266A (ko) 다중 사용자 네트워크에서의 산술 및 논리 연산
Guang et al. Design of Encryption System Based on State Machine Optimization Scheme and FPGA Implementation
CN107015792B (zh) 一种图表统一动画的实现方法以及设备
TWI712016B (zh) 影像結合裝置以及包括所述裝置的顯示系統
US20130117532A1 (en) Interleaving address modification
Briffa Graphics processing unit implementation and optimisation of a flexible maximum a‐posteriori decoder for synchronisation correction

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180817

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20190712

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190724

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20191021

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20191105

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20191126

R150 Certificate of patent or registration of utility model

Ref document number: 6624915

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150