JP6251437B1 - 分類用符号生成ソフトウェアを記録した記録媒体 - Google Patents
分類用符号生成ソフトウェアを記録した記録媒体 Download PDFInfo
- Publication number
- JP6251437B1 JP6251437B1 JP2017104663A JP2017104663A JP6251437B1 JP 6251437 B1 JP6251437 B1 JP 6251437B1 JP 2017104663 A JP2017104663 A JP 2017104663A JP 2017104663 A JP2017104663 A JP 2017104663A JP 6251437 B1 JP6251437 B1 JP 6251437B1
- Authority
- JP
- Japan
- Prior art keywords
- data
- variable
- code
- character
- assigned
- 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
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
【課題】コンピューターで使用する文字列等のデーターを高速に検索する為に分類する分類用の符号を生成する技術を提供する。【解決手段】分類対象文字列の任意の位置から任意の文字数分文字列を取得して、2進数に変換して、2進数に変換した数値の任意の位置から任意の桁数の2進数を抽出して、抽出した2進数を10進数に変換して分類する為の符号として生成すると言うbit単位で処理を行う。【選択図】図1
Description
本発明は、コンピューターで使用する文字列等のデーターを高速に検索する為に分類する分類用の符号を生成する技術に関する
圧縮技術に関する文献としては、〔非特許文献1〕と〔非特許文献2〕がある。
奥村晴彦・山崎敏 著 LHAとZIP 圧縮アルゴリズム×プログラミング入門 ソフトバンク パブリッシング株式会社 2003/12/6 初版 R.セジウィック 著 野本 浩平/星 守/佐藤 創/田口 東 共訳 アルゴリズムC・新版 近代科学社 2004/5/31初版発行
奥村晴彦・山崎敏 著 LHAとZIP 圧縮アルゴリズム×プログラミング入門 ソフトバンク パブリッシング株式会社 2003/12/6 初版 R.セジウィック 著 野本 浩平/星 守/佐藤 創/田口 東 共訳 アルゴリズムC・新版 近代科学社 2004/5/31初版発行
〔非特許文献1〕は、ZIP形式の圧縮技術とLZH形式の圧縮技術を説明した文献である。それとともに、今日までに開発された圧縮技術を紹介している文献である。以下に、「生成する」と「算出する」と「処理する」は、同じ意味として使用している。
関数とは、ある処理を行う処理工程の事を言い、ソフトウェアと同じ意味で使用する事とする。
以下に、ハッシュ関数とは、分類しようとするデーターを基にその分類しようとするデーターを代表する数値を生成する為の処理工程の事を言う事とする。また、このハッシュ関数から算出された数値の事をハッシュ値と呼んだり、ハッシュコードと呼んだりする。
この文献では、分類しようとするデーターの事を分類対象データーと呼んだりする。また、分類しようとする文字列の事を分類対象文字列と呼んだりする。
簡単に言い換えると、ハッシュ関数とは、ハッシュコードを生成するソフトウェアの事であると言える。
本発明の分類用符号生成ソフトウェアを記録した記録媒体は、符号を生成する処理を行うソフトウェアを記録した記録媒体であり、ハッシュ関数の一種であるが、従来のハッシュ関数ではないので、生成される数値をハッシュ値とは呼ばずに、符号と呼ぶ事とする。
実施例では、文字列操作関数と言う関数を使用して処理している。文字列操作関数とは、文字列の状態で処理する関数の事を言う。例えば、「ああ言えば、@こう言う」と言う文字列全体を検査して「@」が含まれているかどうかを検査するとか、「@」の位置は、先頭から何文字目なのかを検査するとか、「@」で文字列を分割して「ああ言えば、」と、「こう言う」の二つに分割するなどの処理が出来る様になっている関数の事を文字列操作関数と言う。文字列操作関数には、先頭から何文字取得すると言う処理や、文字列全体が何文字かを検査する処理など、多種多様な操作が出来る様になっている。
この〔非特許文献1〕の文献では、113ページから114ページに、ハッシュ関数を使用してハッシュコードを生成して、生成したハッシュコードごとにデーターを分類して保存する事で検索処理を高速化する方法を簡単に説明している。
関数とは、ある処理を行う処理工程の事を言い、ソフトウェアと同じ意味で使用する事とする。
以下に、ハッシュ関数とは、分類しようとするデーターを基にその分類しようとするデーターを代表する数値を生成する為の処理工程の事を言う事とする。また、このハッシュ関数から算出された数値の事をハッシュ値と呼んだり、ハッシュコードと呼んだりする。
この文献では、分類しようとするデーターの事を分類対象データーと呼んだりする。また、分類しようとする文字列の事を分類対象文字列と呼んだりする。
簡単に言い換えると、ハッシュ関数とは、ハッシュコードを生成するソフトウェアの事であると言える。
本発明の分類用符号生成ソフトウェアを記録した記録媒体は、符号を生成する処理を行うソフトウェアを記録した記録媒体であり、ハッシュ関数の一種であるが、従来のハッシュ関数ではないので、生成される数値をハッシュ値とは呼ばずに、符号と呼ぶ事とする。
実施例では、文字列操作関数と言う関数を使用して処理している。文字列操作関数とは、文字列の状態で処理する関数の事を言う。例えば、「ああ言えば、@こう言う」と言う文字列全体を検査して「@」が含まれているかどうかを検査するとか、「@」の位置は、先頭から何文字目なのかを検査するとか、「@」で文字列を分割して「ああ言えば、」と、「こう言う」の二つに分割するなどの処理が出来る様になっている関数の事を文字列操作関数と言う。文字列操作関数には、先頭から何文字取得すると言う処理や、文字列全体が何文字かを検査する処理など、多種多様な操作が出来る様になっている。
この〔非特許文献1〕の文献では、113ページから114ページに、ハッシュ関数を使用してハッシュコードを生成して、生成したハッシュコードごとにデーターを分類して保存する事で検索処理を高速化する方法を簡単に説明している。
〔非特許文献1〕は、242ページから246ページに、ハッシュ関数を使用して生成したハッシュコードとは違う処理として特殊な処理が記述されている。記述されている特殊な処理の内容を「」内に記述する。「最初のValの計算はハッシュ関数の代わりでもあるのですが、ハッシュ関数とは違い最初の2文字を混ぜません。ですので、文字'AB'で始まるリンクリストには、'AB'で始まる文字列しか登録されないようになっています。この文字数を増やせばサーチ処理は早くなるのですが、その分テーブルの初期化処理や辞書のスライド処理に時間がかかるようになります。このあたりのバランスは実際に動かして時間を測ることで決定しました。」と記述している。最初の二文字を混ぜずに、そのままの状態の二文字で分類する方法を書いているように読み取れる。だが、隠していて何を記述しているのかが良く理解できない説明である。「Val」についても何も記述されていないのでどんな計算式なのかが全く解らない説明である。
〔非特許文献1〕の242ページから246ページに記述されている「ハッシュ関数とは違い最初の2文字を混ぜません。」と言う意味は、分類対象文字列の先頭二文字分が一致するデーターを分類したと言うものだと考えられる。分類対象文字列の先頭二文字として文字'AB'で始まる文字列の'AB'と言う二文字分は、ASCII文字コードだと2byteとなる。ハッシュ関数は、全ての文字列を混ぜて代表値を算出するものだと言う表現で説明しているものだと考えられる。「混ぜる」と言うあいまいな表現について鑑みるに、殆どの部分で、この様な表現でこの書籍では説明していると考えられるので、以下に、文章の表現を解釈すると、ハッシュ関数とは違う数値による分類方法として記述しているものであるから、分類対象文字列の先頭から、二文字分が一致するデーターを分類するという分類方法であると解釈できる説明文である。
〔非特許文献1〕の242ページから246ページのハッシュ関数を使用して生成したハッシュコードとは違う処理として特殊な処理が記述されているが、分類対象文字列の先頭から二文字分が一致するデーターを分類すると言う方法であるが、全く、符号を生成しないで分類する方法だと考えられる。また、分類対象文字列の先頭から二文字分が一致するデーターを分類すると言う方法の場合は、2byte分の文字コードが一致するデーターを分類する方法と言い換える事が出来る。本発明は、符号を生成する処理を行うソフトウェアを記録した記録媒体なので、本発明とは、全く異なる技術である。また、本発明は、byte単位で符号を算出するものでもなく、bit単位で符号を算出するものである。分類対象文字列の先頭から二文字分の文字コードが一致するデーターを分類する方法は、分類対象文字列の先頭から2byte分の文字コードが一致するデーターを分類する方法という意味であるから、byte単位で処理する技術である。本発明は、bit単位で処理する技術である。従って、本発明とは、全く異なる技術である。byte単位で算出する場合と、bit単位で算出する場合とでは、全く、処理工程が違うから、全く違う技術である。
〔非特許文献2〕の517ページから518ページには、任意のキーに対して、指定の数で割って得られる余りをハッシュ値とするハッシュ関数を記述している。
〔非特許文献2〕の518ページの「図14.2 整数キーに対する除算剰余ハッシュ関数」の説明文の部分に中央の関数(V%100)は、キーの右の2桁だけを使っているので、ランダムでないキーに対しては、性能が悪くなりやすい。と記述して、除算剰余ハッシュ関数の途中の計算の一例として説明している。例として20個程の除算剰余ハッシュ関数の途中の計算によるハッシュ値を記述しているので、最初の行に記述されているハッシュ値の説明を行う。
中央の関数(V%100)の例として、キーを、13836とした場合は、右の2桁の36をハッシュ値として算出するハッシュ関数の存在を明記している。しかし、これらの例は、全て、キーがbyte単位の数値であるし、計算も、byte単位で行われている。キーの数値の右の2桁を抽出しているが、byte単位で1桁の数字と言う文字にした数字を抽出しているのである。右の2桁分の36と言う数値は、2byteである。13836と言う数値の、1桁の数値は、一文字分ずつに分離された1byteの文字で構成されており、全部で5byteである。13836と言う数値の1桁の数値が、一文字の数値として表されているから右の2桁の36と言う数値を抽出できるのである。本発明は、byte単位で符号を算出するものではなく、bit単位で処理して符号を算出するものである。byte単位の数値を2進数の数値に変換して、任意の位置から任意の桁数を抽出して、抽出した2進数の数値を10進数の数値に変換して得られた数値を符号とするのが、本発明の分類用符号生成ソフトウェアを記録した記録媒体である。従って、〔非特許文献2〕の517ページから518ページに記述されている除算剰余ハッシュ関数とは、全く違う技術である。除算剰余ハッシュ関数の途中の計算で、キーとなる数値の右の2桁を抽出する処理工程とも、全く違う処理である。byte単位で算出する場合と、bit単位で算出する場合とでは、全く、処理工程が違うから、全く違う技術である。
〔非特許文献2〕の518ページの「図14.2 整数キーに対する除算剰余ハッシュ関数」の説明文の部分に中央の関数(V%100)は、キーの右の2桁だけを使っているので、ランダムでないキーに対しては、性能が悪くなりやすい。と記述して、除算剰余ハッシュ関数の途中の計算の一例として説明している。例として20個程の除算剰余ハッシュ関数の途中の計算によるハッシュ値を記述しているので、最初の行に記述されているハッシュ値の説明を行う。
中央の関数(V%100)の例として、キーを、13836とした場合は、右の2桁の36をハッシュ値として算出するハッシュ関数の存在を明記している。しかし、これらの例は、全て、キーがbyte単位の数値であるし、計算も、byte単位で行われている。キーの数値の右の2桁を抽出しているが、byte単位で1桁の数字と言う文字にした数字を抽出しているのである。右の2桁分の36と言う数値は、2byteである。13836と言う数値の、1桁の数値は、一文字分ずつに分離された1byteの文字で構成されており、全部で5byteである。13836と言う数値の1桁の数値が、一文字の数値として表されているから右の2桁の36と言う数値を抽出できるのである。本発明は、byte単位で符号を算出するものではなく、bit単位で処理して符号を算出するものである。byte単位の数値を2進数の数値に変換して、任意の位置から任意の桁数を抽出して、抽出した2進数の数値を10進数の数値に変換して得られた数値を符号とするのが、本発明の分類用符号生成ソフトウェアを記録した記録媒体である。従って、〔非特許文献2〕の517ページから518ページに記述されている除算剰余ハッシュ関数とは、全く違う技術である。除算剰余ハッシュ関数の途中の計算で、キーとなる数値の右の2桁を抽出する処理工程とも、全く違う処理である。byte単位で算出する場合と、bit単位で算出する場合とでは、全く、処理工程が違うから、全く違う技術である。
分類用符号生成ソフトウェアを記録した記録媒体と言う題名であるが、コンピューターに実行させる分類用符号生成ソフトウェアを記録した記録媒体を記録したコンピューターが読み取る事が可能な記録媒体の事である。また、本発明の分類用符号生成ソフトウェアを記録した記録媒体の事を分類用符号生成ソフトウェアと略して記述する事がある。
コンピューターで普通に使われているテキスト文字(日本国では、文字コード二文字以上で一文字を表す文字と文字コード一文字で表す半角文字の事)を、テキスト文字または、文字と略して記述する事とする。また、テキスト文字とリンクされている数値を文字コードと言う事がある。文字コードは、0〜255までの数値である。1byteとは、一文字分のbit数の事を言う。また、現在の一文字分のbit数は、8bitである。bitとは、2進数で数値を表した時の2進数の桁数の事である。また、コンピューターで普通に使われている機械語を機械語と略して記述する事とする。コンピューターで普通に使われている機械語とは、コンピューターに搭載されているCPUと呼ばれる中央演算処理装置が処理を予定している命令文の事を言う。
コンピューターで普通に使われているテキスト文字を段落〔0009〕で簡単に説明しているが一例に過ぎない。もう少し、補足説明を行う事とする。コンピューターで普通に使われているテキスト文字にリンクしている文字コードの規格は、多種多様である。7bitを1byteとして文字コードを規定している規格もある。文字コードの前にどんな文字コードなのかを識別させる為に1byteから数byteの識別記号を挿入する文字コードの規格もある。以上でコンピューターで普通に使われているテキスト文字の補足説明を終了する。
コンパイラとは、ソフトウェアを制作する為に作られたソフトウエアの事を言う事とする。人間が書いたプログラムをコンピューターが読み込んで実行する事が出来る機械語に変換処理する事でソフトウェアを制作するソフトウェアの事をコンパイラと言う事とする。
変数の型とは、変数を作成する場合に指定するものであり、作成する変数のデーターを代入する事ができる領域の全てに適用されるものである。前述の「領域の全てに適用されるものである」と言う意味は、変数のデーターを代入する事ができる領域に型の違うデーターを混在させることが出来ないと言う意味である。人間が読む事が出来る文字列を代入する事ができる変数の型としてstring型と言う型がある。string型ではない数値を代入する事が出来る型もある。
string型の変数ではない、数値を代入する事が出来る変数に数値を代入する場合は、「何bitの変数を作成する」または、「何byteの変数を作成する」と言う表現で変数を作成する事とする。8bitの変数を作成すると言う表現で説明している場合の意味は、8bitの数値のデーターを代入する事ができる変数を作成すると言う事である。
string型の変数ではない、数値を代入する事が出来る変数に数値を代入する場合は、「何bitの変数を作成する」または、「何byteの変数を作成する」と言う表現で変数を作成する事とする。8bitの変数を作成すると言う表現で説明している場合の意味は、8bitの数値のデーターを代入する事ができる変数を作成すると言う事である。
変数を作成する場合、string型の場合は、「何bitのstring型で変数を作成する」または、「何byteのstring型で変数を作成する」と言う表現でstring型の変数を作成する説明を行う事にする。
string型とは、文字列を代入する事ができる変数の型を意味するものである。言い換えるとstring型とは、文字列型と言う言い方が出来るものである。string型で変数を作成して、作成したstring型の変数に文字列や文字を代入すると自動的に文字コードと言う数値から、人間が読む事ができる文字に変換されて変数に代入されるものである。
従って、string型とは、文字や文字列を代入する事が出来る変数の型をstring型だと言う事が出来るものである。
string型とは、文字列を代入する事ができる変数の型を意味するものである。言い換えるとstring型とは、文字列型と言う言い方が出来るものである。string型で変数を作成して、作成したstring型の変数に文字列や文字を代入すると自動的に文字コードと言う数値から、人間が読む事ができる文字に変換されて変数に代入されるものである。
従って、string型とは、文字や文字列を代入する事が出来る変数の型をstring型だと言う事が出来るものである。
string型と同じ様なものとしてテキスト形式と言う形式もある。テキスト形式とは、ファイルを開いたり保存したりする形式である。
テキスト形式も、string型と同じで、テキスト形式と指定すると、文字列や文字を自動的に文字コードと言う機械語の数値から、人間が読む事ができる文字に変換される形式である。テキスト形式を指定する場合は、「テキスト形式で」と言う文言を使用して、「指定して」を略して表現したりする。従って、「テキスト形式で1byteずつデーターをファイルに記録して保存する」または、「テキスト形式でファイルを開いて1byteずつデーターを読み込む」という表現で説明する事とする。
テキスト形式も、string型と同じで、テキスト形式と指定すると、文字列や文字を自動的に文字コードと言う機械語の数値から、人間が読む事ができる文字に変換される形式である。テキスト形式を指定する場合は、「テキスト形式で」と言う文言を使用して、「指定して」を略して表現したりする。従って、「テキスト形式で1byteずつデーターをファイルに記録して保存する」または、「テキスト形式でファイルを開いて1byteずつデーターを読み込む」という表現で説明する事とする。
バイナリー形式と言う形式もある。バイナリー形式とは、ファイルを開いたり保存したりする形式である。
バイナリー形式を指定すると、人間が読む事ができる文字から、自動的に文字コードと言う機械語の数値に変換される形式である。バイナリー形式を指定する場合は、「バイナリー形式で」と言う文言を使用して、「指定して」を略して表現したりする。従って、「バイナリー形式で、1byteづつデーターをファイルに保存する」または、「バイナリー形式でファイルを開いて、1byteずつデーターを読み込む」という表現で説明する事とする。
バイナリー形式を指定すると、人間が読む事ができる文字から、自動的に文字コードと言う機械語の数値に変換される形式である。バイナリー形式を指定する場合は、「バイナリー形式で」と言う文言を使用して、「指定して」を略して表現したりする。従って、「バイナリー形式で、1byteづつデーターをファイルに保存する」または、「バイナリー形式でファイルを開いて、1byteずつデーターを読み込む」という表現で説明する事とする。
テキスト形式でファイルに記録して保存する場合は、人間が読める文字として保存される為に、1byteから数byteずつとなる。テキスト形式の場合は、文字コード一文字分ずつと言う指定となる為に、2byteであったり、3byteであったり、4byteである場合もある為である。これは、実施例で使用しているコンピューターが使用している文字コードが半角英数字の場合は、1byteずつの規格で作られており、漢字や平仮名などを表す際の規格は、2byte分、3byte分、4byte分の数値で各々、漢字や平仮名や全角カタカナを一文字として表示するように規格されている為に、データー量をはっきりと記述できないのである。実施例で使用したコンパイラの場合は、自動的に最初の1byte目の文字コードで一文字分の文字コードが何byteなのかをコンピューターに判断させて一文字分の文字コード分に相当する1byteから数byteずつ保存する事になる。しかしながら、何と言う文字を扱うのかが解らない為、サイズを一定にして記述できないものである。しかし、実施例の説明では、1byteずつ保存するという表現で説明する事にする。
配列とは、データーを1個から複数のデーターを代入する事が出来るものを言い、配列のサイズとは、配列に代入する事が出来るデーターの数の事を言う。配列のサイズの事を配列サイズと言ったりする事がある。配列にデーターを代入する事が出来る部分を配列要素または、配列の要素と呼び、配列要素または、配列の要素の合計数を配列要素数または、配列の要素数と呼ぶ事とする。配列要素数または、配列の要素数は、配列のサイズと同じ意味のものである。
配列の型には、主に数値型とstring型の二種類がある。数値型の場合は、代入できるデーターは、数値のみである。string型の場合は、人間が読む事が出来る文字列の状態のデーターのみ代入できるものである。数値型とstring型という二種類の型の特徴は、配列だけではなく、変数の場合と同じである。
数値型とstring型という二種類の型は、配列を作成する場合に指定するものであり、作成する配列のデーターを代入する事ができる領域の全てに適用されるものである。前述の「領域の全てに適用されるものである」という意味は、型の違うデーターを、配列のデーターを代入する事ができる領域に混在させることが出来ないという事である。実施例では、数値型の場合は、数値型の配列を作成すると断り書きをしない事とした。数値型の配列を作成する場合に、「幾つのサイズで何bitの数値型で配列を作成する」という表現ではなく、数値を略して「幾つのサイズで何bitの型で配列を作成する」という表現をする事とする。これを10の配列サイズで8bitの型で配列を作成するという表現で説明している場合で意味を説明する。この場合は、配列の要素1個に8bitのデーターを1個代入できる様なものとして、配列要素数10個で配列を作成するという意味である。
string型で配列を作成する場合は、以下の様に表現する。「幾つのサイズで何bitのstring型の配列を作成する」という表現をする事とする。例えば、10個のサイズで16bitのstring型で配列を作成すると記述した場合で説明する。配列の1個のデーターを代入する事が出来る領域の1個のデーターが使用するメモリー量が2byteであるとし、10個のデーターを代入する事が出来る配列を作成するという事である。この10個のサイズで16bitのstring型で配列を作成する場合のメモリーの総使用量は、16bit×10という計算が可能となり、答えは、160bit(または、20byte)となる。
これで、string型で配列を作成する場合の表現に関する説明を終わる。
これで、string型で配列を作成する場合の表現に関する説明を終わる。
配列のインデックスとは、配列の添字または、配列番号などとも呼ばれる事があるものである。以降、配列のインデックスを配列の添字または、配列番号と呼ぶ事がある。配列を作成すると通常、配列のデーターを代入できる領域の最初の位置に付けられるインデックスは0番となり、順次1ずつ番号が増えた数値が配列のデーターを代入できる各々の配列の位置にコンパイラによって自動的に付けられるものである。つまり、言い換えると配列のインデックスとは、配列に代入されるデーターの位置を示す番号の事を言うという事になる。
配列のインデックスを取得する場合の詳しい説明を行う。
1byteの変数を作成してこの作成した変数を仮変数と呼ぶ事として、仮変数に0を代入して初期化する。配列に代入されたデーターが全て1byteであると仮定して配列のインデックスを取得する処理工程の説明を行う事とする。配列の最初の位置に代入されているデーターから最後の位置までに代入されたデーターを1byteずつ読む度に仮変数に代入された数値に1を加算する事で回数をカウントするという処理を行うと、仮変数に代入された数値と配列のインデックスとが対応した数値になるので仮変数に代入された数値が配列のインデックスとなるので、仮変数に代入された数値を取得するのが配列のインデックスの取得方法である。
配列のインデックスの取得方法の詳しい説明を終わる。
また、配列のデーターを代入する事ができる領域の最初の位置という表現を配列の最初の位置という様に略した表現を行う場合がある。また、配列のデーターを代入する事ができる領域の最後の位置という表現を配列の最後の位置という様に略した表現を行う場合がある。
1byteの変数を作成してこの作成した変数を仮変数と呼ぶ事として、仮変数に0を代入して初期化する。配列に代入されたデーターが全て1byteであると仮定して配列のインデックスを取得する処理工程の説明を行う事とする。配列の最初の位置に代入されているデーターから最後の位置までに代入されたデーターを1byteずつ読む度に仮変数に代入された数値に1を加算する事で回数をカウントするという処理を行うと、仮変数に代入された数値と配列のインデックスとが対応した数値になるので仮変数に代入された数値が配列のインデックスとなるので、仮変数に代入された数値を取得するのが配列のインデックスの取得方法である。
配列のインデックスの取得方法の詳しい説明を終わる。
また、配列のデーターを代入する事ができる領域の最初の位置という表現を配列の最初の位置という様に略した表現を行う場合がある。また、配列のデーターを代入する事ができる領域の最後の位置という表現を配列の最後の位置という様に略した表現を行う場合がある。
配列のインデックスを取得する方法について例を示して詳しく説明する。配列のサイズが10の配列の場合で説明する事とする。配列のサイズが10の配列を作成するとインデックスは、0から9までの数値がコンパイラと呼ばれるプログラムを書く為に一般的に使われるプログラムによって自動的に付けられる。最初のインデックスは、必ず0から始まるものであり、配列の最後の位置まで番号が連番で付けられる。配列のサイズが10の配列の場合は、「0,1,2,3,4,5,6,7,8,9」という連番が配列のインデックスとなる。
配列のサイズが10の配列の場合の様に、配列の最初の位置から最後の位置までに付けられた数値が配列のインデックスとなるのである。そのインデックスを配列のデーターから取得する方法は無い。インデックスを使用して配列からデーターを取得するには、最初の位置を0番として、0番から配列の最後の位置までの連番を作成して、その連番の中から1個ずつ順番に数値を取得する事でインデックスを取得して、取得したインデックスを使用して配列からデーターを取得するのである。配列の位置を指定する時に配列のインデックスを指定する事はできるが、その反対に配列に代入されたデーターからインデックスを取得する事は出来ない。配列に代入されたデーターの位置を0から1ずつ数値を積算する事で得た数値を、配列のデーターと同じ位置にあったインデックスとして使用すると言う技術が、配列に代入されたデーターからインデックスを取得する方法である。
これで、配列のインデックスを取得する方法について例を示した詳しい説明を終わる。
配列のサイズが10の配列の場合の様に、配列の最初の位置から最後の位置までに付けられた数値が配列のインデックスとなるのである。そのインデックスを配列のデーターから取得する方法は無い。インデックスを使用して配列からデーターを取得するには、最初の位置を0番として、0番から配列の最後の位置までの連番を作成して、その連番の中から1個ずつ順番に数値を取得する事でインデックスを取得して、取得したインデックスを使用して配列からデーターを取得するのである。配列の位置を指定する時に配列のインデックスを指定する事はできるが、その反対に配列に代入されたデーターからインデックスを取得する事は出来ない。配列に代入されたデーターの位置を0から1ずつ数値を積算する事で得た数値を、配列のデーターと同じ位置にあったインデックスとして使用すると言う技術が、配列に代入されたデーターからインデックスを取得する方法である。
これで、配列のインデックスを取得する方法について例を示した詳しい説明を終わる。
以下に、配列の末尾にデーターを代入すると記述している場合がある。未だに配列に代入されたデーターが無い場合は、普通、配列の最初の位置にデーターを代入するものである。しかし、配列の最初の位置から代入する度に数byteずつ代入する位置をずらして、データーを数byteずつ代入していく場合、配列の最初の位置にデーターを代入した後は、配列に代入されたデーターの最後の位置にあるデーターの次の位置に代入するという事になる。この場合、配列の最初の位置に既にデーターを代入した後の位置の指定を末尾と表現する事が出来る。未だに配列に代入されたデーターが無い場合で、配列の最初の位置から代入する度に数byteずつ代入する位置をずらして数byteずつデーターを配列に代入していく場合で、配列の最初の位置にデーターを代入する場合でも、配列の末尾にデーターを代入すると表現する事が出来ると考えられる。そこで、配列の最初の位置から代入する度に数byteずつ代入する位置をずらして、数byteずつデーターを配列に代入していく場合は、配列の最初の位置に代入する場合であっても、配列の末尾に代入すると記述している場合がある。また、以下の段落で、配列の最初の位置から代入する度に数byteずつ代入する位置をずらして、数byteずつデーターを配列に代入していく場合に於いて、配列に代入するデーターの順番について断り書きが無い場合は、取得した元のデーター(作成したデーターや取得したデーターや読み込んだデーターや元の配列に代入されていたデーターなど)の順番通りに数byteずつ配列に代入するものとする。
テキスト形式とバイナリー形式は、ファイルを扱う場合のみ使用できる形式である。
実施例で使用しているコンパイラを使用した場合は、string型で変数を作成すると約20億個の文字コードで出来た文字を代入出来るサイズで変数が作成される。つまり、約20億byteの変数が作成される。作成された変数は代入される文字列の文字数によって、自動的にメモリーの使用量が変更されるようになっている。
実施例で使用しているコンパイラを使用した場合は、string型で変数を作成すると約20億個の文字コードで出来た文字を代入出来るサイズで変数が作成される。つまり、約20億byteの変数が作成される。作成された変数は代入される文字列の文字数によって、自動的にメモリーの使用量が変更されるようになっている。
この様にstring型で変数を作成するとメモリーの使用領域が自動的に代入されるデーターの量によって変化するものになっている。使用するコンパイラによっては、この様な自動的に代入される文字列の文字数によって変数のサイズを変更する機能が無い場合がある。そこで、本発明の明細書では、string型で変数を作成する場合、型として使用するメモリー使用量を指定する事とする。実施例で使用しているコンパイラを使用した場合、実際には、型として使用するメモリー使用量を指定して変数を作成する事はできない。
プログラマーとは、ソフトウェアを作成する人間の事を言う事とする。但し、人工知能を使用してソフトウェアを自動的に作成する場合は、人工知能もプログラマーであるとする。
人工知能とは、思考処理を行うソフトウェアの事である。思考処理とは、人間の様に物事を考えて処理するソフトウェアの処理工程を言う事とする。
人工知能とは、思考処理を行うソフトウェアの事である。思考処理とは、人間の様に物事を考えて処理するソフトウェアの処理工程を言う事とする。
文字列検索処理を高速化する為に、検索対象データーの文字列を分類する際にハッシュコードまたは、ハッシュ値と呼ばれるハッシュ関数を使用して算出された数値を使用するのが普通である。しかし、従来のハッシュ関数によるハッシュ値の算出には、処理時間がかかる。従来のハッシュ関数によるハッシュ値の算出に処理時間がかかる原因は、byte単位で処理するからである。コンピューターが読み込んで処理する事が出来る機械語の文字コードと言う数値を人間が読める数値に変換しなければならいと言う処理工程を避けてハッシュ値を算出する事が出来ないからである。
〔非特許文献1〕の242ページから246ページのハッシュ関数を使用して生成したハッシュコードとは違う処理として特殊な処理が記述されているが、この〔非特許文献1〕の特殊な処理は、分類対象文字一文字で分類する事も可能だと推測される。〔非特許文献1〕の特殊な処理の分類対象文字一文字で分類する場合は、8bitの文字コードの一文字分で分類するので0から255までの分類となる。この様に、0から255までの分類を行う場合、本発明でも8bitの2進数を抽出して10進数に変換した場合に生成される符号の最大数は、255になるので、最大分類数が256となり、従来のハッシュ関数によるハッシュ値の最大分類数と同じになる。しかし、処理工程が、全く違うので全く違う技術である。
また、〔非特許文献1〕の242ページから246ページのハッシュ関数を使用して生成したハッシュコードとは違う処理として特殊な処理が記述されているが、この〔非特許文献1〕の特殊な処理の分類対象文字一文字で分類する場合は、ASCIIコードの人間が読める文字に割り当てられた文字コードの部分だけの数が最大分類数となる。
また、分類対象文字列の先頭から二文字分が一致するデーターで分類する技術も記述されているが、この方法では、分類数が幾つになるかが解らない。ソフトウェアを作成する際、かなりの問題が発生すると考えられる。
〔非特許文献1〕の242ページから246ページのハッシュ関数を使用して生成したハッシュコードとは違う処理として特殊な処理の分類対象文字列の先頭から二文字分が一致するデーターで分類する技術で、二文字分の桁数の2進数を最大値の分類数だと仮定して考えると、二文字分は、2byteとなる。2byteで表現できる2進数の最大値は、「1111111111111111」で、10進数だと65535である。つまり、0から65535までの分類数となり、65536と言う異常に大きな分類数になってしまう問題がある。65536に分類すると、ソフトウェアの処理工程で、多分岐の量が多すぎて分岐処理する分岐を探し出すだけでも大きな時間を取られそうな分類数である。
本発明は、従来のハッシュ関数を使用した処理よりも高速に処理を行わせる事が本発明の課題である。また、従来のハッシュ関数ではない分類用符号を生成する技術を開発する事が本発明の課題である。また、分類対象文字列の先頭から一文字分が一致するデーターで分類する技術や、分類対象文字列の先頭から二文字分が一致するデーターで分類する技術よりも、最大分類数を細かく設定できる符号を生成させる事が本発明の目的である。
本発明の分類用符号生成ソフトウェアを記録した記録媒体は、従来のハッシュ関数とは違う分類用の符号を生成するソフトウェアである。
〔非特許文献1〕の242ページから246ページのハッシュ関数を使用して生成したハッシュコードとは違う処理として特殊な処理が記述されているが、この〔非特許文献1〕の特殊な処理は、分類対象文字一文字で分類する事も可能だと推測される。〔非特許文献1〕の特殊な処理の分類対象文字一文字で分類する場合は、8bitの文字コードの一文字分で分類するので0から255までの分類となる。この様に、0から255までの分類を行う場合、本発明でも8bitの2進数を抽出して10進数に変換した場合に生成される符号の最大数は、255になるので、最大分類数が256となり、従来のハッシュ関数によるハッシュ値の最大分類数と同じになる。しかし、処理工程が、全く違うので全く違う技術である。
また、〔非特許文献1〕の242ページから246ページのハッシュ関数を使用して生成したハッシュコードとは違う処理として特殊な処理が記述されているが、この〔非特許文献1〕の特殊な処理の分類対象文字一文字で分類する場合は、ASCIIコードの人間が読める文字に割り当てられた文字コードの部分だけの数が最大分類数となる。
また、分類対象文字列の先頭から二文字分が一致するデーターで分類する技術も記述されているが、この方法では、分類数が幾つになるかが解らない。ソフトウェアを作成する際、かなりの問題が発生すると考えられる。
〔非特許文献1〕の242ページから246ページのハッシュ関数を使用して生成したハッシュコードとは違う処理として特殊な処理の分類対象文字列の先頭から二文字分が一致するデーターで分類する技術で、二文字分の桁数の2進数を最大値の分類数だと仮定して考えると、二文字分は、2byteとなる。2byteで表現できる2進数の最大値は、「1111111111111111」で、10進数だと65535である。つまり、0から65535までの分類数となり、65536と言う異常に大きな分類数になってしまう問題がある。65536に分類すると、ソフトウェアの処理工程で、多分岐の量が多すぎて分岐処理する分岐を探し出すだけでも大きな時間を取られそうな分類数である。
本発明は、従来のハッシュ関数を使用した処理よりも高速に処理を行わせる事が本発明の課題である。また、従来のハッシュ関数ではない分類用符号を生成する技術を開発する事が本発明の課題である。また、分類対象文字列の先頭から一文字分が一致するデーターで分類する技術や、分類対象文字列の先頭から二文字分が一致するデーターで分類する技術よりも、最大分類数を細かく設定できる符号を生成させる事が本発明の目的である。
本発明の分類用符号生成ソフトウェアを記録した記録媒体は、従来のハッシュ関数とは違う分類用の符号を生成するソフトウェアである。
本発明の分類用符号生成ソフトウェアを記録した記録媒体は、分類対象文字列を2進数の数値に変換して任意の位置から任意の桁数分抽出して、抽出した任意の桁数分の2進数を10進数に変換してハッシュ値とする符号を生成する技術を記録した記録媒体である。
本発明の分類用符号生成ソフトウェアを記録した記録媒体も、ハッシュ関数のように、符号を生成するものである。しかし、従来のハッシュ関数とは、全く違うものである。ハッシュ関数は、分類対象文字列をbyte単位で計算してハッシュ値を求める処理を行うものである。ハッシュ関数が計算に使用するデーターは、数値であっても文字列であるから、byte単位であると言う事になる。
本発明の分類用符号生成ソフトウェアを記録した記録媒体も、ハッシュ関数のように、符号を生成するものである。しかし、従来のハッシュ関数とは、全く違うものである。ハッシュ関数は、分類対象文字列をbyte単位で計算してハッシュ値を求める処理を行うものである。ハッシュ関数が計算に使用するデーターは、数値であっても文字列であるから、byte単位であると言う事になる。
本発明の分類用符号生成ソフトウェアを記録した記録媒体は、分類対象文字列を2進数の数値に変換して任意の位置から任意の桁数分抽出して、抽出した任意の桁数分の2進数を10進数に変換してハッシュ値とする符号を生成する技術であるが、「任意の位置」とは、文字列の先頭の位置から何桁目の位置と言う意味であり、「任意の桁数分」とは、文字列の先頭の位置から何桁目から何桁目までの0と1から成る2進数の桁数の事である。
本発明の分類用符号生成ソフトウェアを記録した記録媒体で生成した符号は、最低1bitの2進数から、分類対象文字列を全て2進数に変換して、2進数に変換した数値を全て連結して作成した2進数の最大桁数以下のサイズまでの2進数を抽出して10進数に変換して符号として生成する。
分類対象文字列を分類する為の技術として本発明の分類用符号生成ソフトウェアを記録した記録媒体である。しかし、圧縮処理を行う場合にも分類処理を行うのが普通なので、分類対象データーは、文字列や文字だけではなく、画像データーや、音響データーなど、さまざまな形式のデーターを分類する為の符号を生成するものである。
本発明の分類用符号生成ソフトウェアを記録した記録媒体は、可逆圧縮と不可逆圧縮どちらの場合でも圧縮対象データーを分類する場合に使用する事が出来る分類用の符号を生成する技術である。可逆圧縮とは、圧縮する前の元の状態のファイルに復元できる圧縮技術の事を言い、不可逆圧縮とは、圧縮前の元の状態のファイルに復元できないが、元の状態のファイルに近い状態程度には復元できる圧縮技術の事を言う。
本発明は、インターネット検索などでも使用が可能になる分類用の符号なので、インターネットで使用される種々多様なデーター形式のデーター全てに使用されるものと考えている。インターネットで使用される種々多様なデーター形式のデーターとは、例えば、地図などの画像データーなどや、写真などの画像や動画などや、文字列などである。
分類対象文字列を分類する為の技術として本発明の分類用符号生成ソフトウェアを記録した記録媒体である。しかし、圧縮処理を行う場合にも分類処理を行うのが普通なので、分類対象データーは、文字列や文字だけではなく、画像データーや、音響データーなど、さまざまな形式のデーターを分類する為の符号を生成するものである。
本発明の分類用符号生成ソフトウェアを記録した記録媒体は、可逆圧縮と不可逆圧縮どちらの場合でも圧縮対象データーを分類する場合に使用する事が出来る分類用の符号を生成する技術である。可逆圧縮とは、圧縮する前の元の状態のファイルに復元できる圧縮技術の事を言い、不可逆圧縮とは、圧縮前の元の状態のファイルに復元できないが、元の状態のファイルに近い状態程度には復元できる圧縮技術の事を言う。
本発明は、インターネット検索などでも使用が可能になる分類用の符号なので、インターネットで使用される種々多様なデーター形式のデーター全てに使用されるものと考えている。インターネットで使用される種々多様なデーター形式のデーターとは、例えば、地図などの画像データーなどや、写真などの画像や動画などや、文字列などである。
本発明の分類用符号生成ソフトウェアを記録した記録媒体は、分類対象文字列を2進数の数値に変換して任意の位置から任意の桁数分抽出して、抽出した任意の桁数分の2進数を10進数に変換してハッシュ値とする符号を生成する技術であるが、分類対象文字列の一文字分をどのように扱うかで処理が違ってくる。現在の文字コードは、8bitで1byteである。1byteずつ分ずつ抽出して文字コードに変換して、変換した文字コードから2進数を求めると2進数の数値が8桁に満たない場合がある。2進数の数値が8桁に満たない場合は、普通は、左側に0を連結して、8桁になる様に調整して、8桁の2進数に変換するのである。
例えば、10進数で0は、2進数だと00000000である。例えば、10進数で1は、2進数だと00000001である。例えば、10進数で2は、2進数だと00000010である。例えば、10進数で3は、2進数だと00000011である。
本発明の分類用符号生成ソフトウェアを記録した記録媒体の技術は、七種類の技術に大別できると考えられる。つまり、2進数の数値が8桁に満たない場合に、8桁に調整するか否かによる違いや、2進数の数値を完全に逆順に並べ替えて処理する技術などを併用して処理する事で異なった符号の算出をする技術や、分類対象文字列の全ての文字列を2進数に変換して、変換した2進数から任意の桁数を抽出して連結する事で任意の長さの2進数を作成して符号を作成する技術などが考えられるのである。以下に、考えられる七種類の技術を説明する。
第一の技術は、分類対象文字列の全ての文字の文字コードを取得して、取得した文字コードを2進数に変換して、変換した2進数が8桁に満たない場合は、8桁に調整して、変換した2進数が8桁の場合は、何も処理しない事で全ての2進数を8桁に調整して、8桁に調整した2進数を全て連結して、分類対象文字列の文字列分の桁数の2進数を作成して、分類対象文字列の文字列分の桁数の2進数の任意の位置から任意の桁数分の2進数を抽出して10進数に変換して符号とする技術。
第二の技術は、分類対象文字列の全ての文字コードを取得して、取得した全ての文字コードを2進数に変換して、変換した2進数を8桁に調整して、調整した8桁の2進数の任意の桁数を任意の位置から任意の桁数分抽出して、任意の桁数分になる様に連結して2進数を作成して、作成した任意の桁数の2進数を10進数に変換して符号を生成する技術。
第三の技術は、第一の技術や第二の技術で、分類対象文字列の任意の位置から最小必要桁数の2進数を抽出する為に、分類対象文字列の任意の位置の文字を2進数の最小必要桁数を超える文字数分だけ抽出して、文字コードを取得して、取得した文字コードを2進数に変換して、変換した2進数を8桁に調整して、8桁に調整した2進数を連結して、必要最低限度の2進数の数値を作成して、作成した必要最低限度の2進数の数値の任意の位置から任意の桁数分の2進数を抽出して10進数に変換して符号とする技術。
第四の技術は、第一の技術や、第二の技術や、第三の技術で、分類対象文字列の文字から文字コードを取得して、取得した文字コードを全てを2進数に変換して、変換した2進数を8桁に調整して、8桁に調整した2進数の数値を完全に逆順に並べ替えた2進数を作成して、逆順に並べ替えた2進数を全て分類対象文字列の文字の順番に連結して、分類対象文字列の文字数に相当する桁数の2進数を作成して、作成した桁数2進数の任意の位置から任意の桁数分の2進数を抽出して10進数に変換して、得られた10進数を符号とする技術。
第四の技術では、8桁に調整しているが、0を2進数の前方に必要分付加する事で調整している。この調整する際に、2進数の前方でなくて後方に0を付加する事でも8桁に調整できるが、調整の方法を2進数の後方に0を必要分付加する技術を使用しても本発明の簡単なレパートリーである。
第五の技術は、第一の技術や、第二の技術や、第三の技術や、第四の技術で、分類対象文字列の文字の文字コードを取得して、取得した文字コードを2進数に変換して、変換した2進数が8桁に満たない場合に、8桁に調整しているが、2進数に変換した数値が8桁に満たない場合に、8桁に調整しないで、そのままの桁数のまま全ての2進数を連結して任意の位置から任意の桁数分の2進数を抽出して10進数に変換して、得られた10進数を符号とする技術。
第六の技術は、第一の技術や、第二の技術や、第三の技術や、第四の技術や、第五の技術で、分類対象文字列の文字を必要文字数分取得して、取得した文字の文字コードを取得して、取得した文字コードを全てを2進数に変換して、2進数に変換した数値を完全に逆順に並べ替えた2進数を作成して、逆順に並べ替えた2進数を全て分類対象文字列の文字の順番とは、逆順に連結して、分類対象文字列の文字の必要文字数分取得した文字数分の桁数に相当する桁数の2進数を作成して、必要文字数分取得した文字数分の桁数に相当する桁数の2進数の任意の位置から任意の桁数分の2進数を抽出して10進数に変換して、得られた10進数を符号とする技術。
第七の技術では、第一の技術や、第二の技術や、第三の技術や、第四の技術や、第五の技術や、第六の技術で、分類対象文字列の文字から文字コードを取得して、取得した文字コードを全てを2進数に変換して、変換した2進数を正順や逆順に連結しているが、逆順と正順を交互に入れ替えた2進数を作成して、正順と逆順を交互に入れ替えた2進数の任意の位置から任意の桁数分抽出して、地湧出した2進数を10進数に変換して符号を生成する技術。
考えられる七種類の技術を説明を終わる。
本発明の実施例では、この考えられる七種類の技術の内の第三の技術を使用して、本発明の分類用符号生成ソフトウェアを記録した記録媒体を実施した。但し、本発明の実施例では、4桁の2進数を任意の位置から取得するので分類対象文字列の一文字分だけを抽出して2進数に変換しているので、変換した2進数を連結して長い2進数を作成する処理工程は無い。第一の技術や、第二の技術や、第四の技術や、第五の技術や、第六の技術や、第七の技術は、本発明の分類用符号生成ソフトウェアを記録した記録媒体の簡単なレパートリーであると言えるので本発明である事を明言する。
例えば、10進数で0は、2進数だと00000000である。例えば、10進数で1は、2進数だと00000001である。例えば、10進数で2は、2進数だと00000010である。例えば、10進数で3は、2進数だと00000011である。
本発明の分類用符号生成ソフトウェアを記録した記録媒体の技術は、七種類の技術に大別できると考えられる。つまり、2進数の数値が8桁に満たない場合に、8桁に調整するか否かによる違いや、2進数の数値を完全に逆順に並べ替えて処理する技術などを併用して処理する事で異なった符号の算出をする技術や、分類対象文字列の全ての文字列を2進数に変換して、変換した2進数から任意の桁数を抽出して連結する事で任意の長さの2進数を作成して符号を作成する技術などが考えられるのである。以下に、考えられる七種類の技術を説明する。
第一の技術は、分類対象文字列の全ての文字の文字コードを取得して、取得した文字コードを2進数に変換して、変換した2進数が8桁に満たない場合は、8桁に調整して、変換した2進数が8桁の場合は、何も処理しない事で全ての2進数を8桁に調整して、8桁に調整した2進数を全て連結して、分類対象文字列の文字列分の桁数の2進数を作成して、分類対象文字列の文字列分の桁数の2進数の任意の位置から任意の桁数分の2進数を抽出して10進数に変換して符号とする技術。
第二の技術は、分類対象文字列の全ての文字コードを取得して、取得した全ての文字コードを2進数に変換して、変換した2進数を8桁に調整して、調整した8桁の2進数の任意の桁数を任意の位置から任意の桁数分抽出して、任意の桁数分になる様に連結して2進数を作成して、作成した任意の桁数の2進数を10進数に変換して符号を生成する技術。
第三の技術は、第一の技術や第二の技術で、分類対象文字列の任意の位置から最小必要桁数の2進数を抽出する為に、分類対象文字列の任意の位置の文字を2進数の最小必要桁数を超える文字数分だけ抽出して、文字コードを取得して、取得した文字コードを2進数に変換して、変換した2進数を8桁に調整して、8桁に調整した2進数を連結して、必要最低限度の2進数の数値を作成して、作成した必要最低限度の2進数の数値の任意の位置から任意の桁数分の2進数を抽出して10進数に変換して符号とする技術。
第四の技術は、第一の技術や、第二の技術や、第三の技術で、分類対象文字列の文字から文字コードを取得して、取得した文字コードを全てを2進数に変換して、変換した2進数を8桁に調整して、8桁に調整した2進数の数値を完全に逆順に並べ替えた2進数を作成して、逆順に並べ替えた2進数を全て分類対象文字列の文字の順番に連結して、分類対象文字列の文字数に相当する桁数の2進数を作成して、作成した桁数2進数の任意の位置から任意の桁数分の2進数を抽出して10進数に変換して、得られた10進数を符号とする技術。
第四の技術では、8桁に調整しているが、0を2進数の前方に必要分付加する事で調整している。この調整する際に、2進数の前方でなくて後方に0を付加する事でも8桁に調整できるが、調整の方法を2進数の後方に0を必要分付加する技術を使用しても本発明の簡単なレパートリーである。
第五の技術は、第一の技術や、第二の技術や、第三の技術や、第四の技術で、分類対象文字列の文字の文字コードを取得して、取得した文字コードを2進数に変換して、変換した2進数が8桁に満たない場合に、8桁に調整しているが、2進数に変換した数値が8桁に満たない場合に、8桁に調整しないで、そのままの桁数のまま全ての2進数を連結して任意の位置から任意の桁数分の2進数を抽出して10進数に変換して、得られた10進数を符号とする技術。
第六の技術は、第一の技術や、第二の技術や、第三の技術や、第四の技術や、第五の技術で、分類対象文字列の文字を必要文字数分取得して、取得した文字の文字コードを取得して、取得した文字コードを全てを2進数に変換して、2進数に変換した数値を完全に逆順に並べ替えた2進数を作成して、逆順に並べ替えた2進数を全て分類対象文字列の文字の順番とは、逆順に連結して、分類対象文字列の文字の必要文字数分取得した文字数分の桁数に相当する桁数の2進数を作成して、必要文字数分取得した文字数分の桁数に相当する桁数の2進数の任意の位置から任意の桁数分の2進数を抽出して10進数に変換して、得られた10進数を符号とする技術。
第七の技術では、第一の技術や、第二の技術や、第三の技術や、第四の技術や、第五の技術や、第六の技術で、分類対象文字列の文字から文字コードを取得して、取得した文字コードを全てを2進数に変換して、変換した2進数を正順や逆順に連結しているが、逆順と正順を交互に入れ替えた2進数を作成して、正順と逆順を交互に入れ替えた2進数の任意の位置から任意の桁数分抽出して、地湧出した2進数を10進数に変換して符号を生成する技術。
考えられる七種類の技術を説明を終わる。
本発明の実施例では、この考えられる七種類の技術の内の第三の技術を使用して、本発明の分類用符号生成ソフトウェアを記録した記録媒体を実施した。但し、本発明の実施例では、4桁の2進数を任意の位置から取得するので分類対象文字列の一文字分だけを抽出して2進数に変換しているので、変換した2進数を連結して長い2進数を作成する処理工程は無い。第一の技術や、第二の技術や、第四の技術や、第五の技術や、第六の技術や、第七の技術は、本発明の分類用符号生成ソフトウェアを記録した記録媒体の簡単なレパートリーであると言えるので本発明である事を明言する。
本発明の分類用符号生成ソフトウェアを記録した記録媒体を使用して生成される符号は、2byteから分類したいと思う数までに分類できる事になる。但し、文字列を全て2進数に変換して、変換した全ての2進数を連結して作成した長い2進数の桁数分の2進数の数値を10進数に変換して得られた符号の最大値を上限として分類できる技術である。以下に、細かく最大分類数を設定して分類できる事が解る様に9bitの2進数を10進数に変換した場合の分類数までを記述する。
(1) 2bitの2進数を10進数に変換した符号だと0〜2までの符号を生成するので、3種類にデーターを分類できる符号を生成する事になる。
(2) 3bitの2進数を10進数に変換した符号と0〜7までの符号を生成するので、8種類にデーターを分類できる符号を生成する事になる。
(3) 4bitの2進数を10進数に変換した符号だと0〜15までの符号を生成するので、16種類にデーターを分類できる符号を生成する事になる。
(4) 5bitの2進数を10進数に変換した符号だと0〜31までの符号を生成するので、32種類にデーターを分類できる符号を生成する事になる。
(5) 6bitの2進数を10進数に変換した符号だと0〜63までの符号を生成するので、64種類にデーターを分類できる符号を生成する事になる。
(6) 7bitの2進数を10進数に変換した符号だと0〜127までの符号を生成するので、128種類にデーターを分類できる符号を生成する事になる。
(7) 8bitの2進数を10進数に変換した符号だと0〜255までの符号を生成するので、256種類にデーターを分類できる符号を生成する事になる。
(8) 9bitの2進数を10進数に変換した符号だと0〜511までの符号を生成するので、512種類にデーターを分類できる符号を生成する事になる。
実施例では、生成する符号は、任意の位置から4bitの桁数分の2進数を抽出して10進数に変換して得られた数値を符号とする処理を行っているが、2進数の数値から抽出する桁数を指定して符号を生成できるように作成していない。桁数を指定する事が出来る様にソフトウェアを変更しても本発明の簡単なレパートリーであるから、本発明の分類用符号生成ソフトウェアを記録した記録媒体である事を明言する。
(1) 2bitの2進数を10進数に変換した符号だと0〜2までの符号を生成するので、3種類にデーターを分類できる符号を生成する事になる。
(2) 3bitの2進数を10進数に変換した符号と0〜7までの符号を生成するので、8種類にデーターを分類できる符号を生成する事になる。
(3) 4bitの2進数を10進数に変換した符号だと0〜15までの符号を生成するので、16種類にデーターを分類できる符号を生成する事になる。
(4) 5bitの2進数を10進数に変換した符号だと0〜31までの符号を生成するので、32種類にデーターを分類できる符号を生成する事になる。
(5) 6bitの2進数を10進数に変換した符号だと0〜63までの符号を生成するので、64種類にデーターを分類できる符号を生成する事になる。
(6) 7bitの2進数を10進数に変換した符号だと0〜127までの符号を生成するので、128種類にデーターを分類できる符号を生成する事になる。
(7) 8bitの2進数を10進数に変換した符号だと0〜255までの符号を生成するので、256種類にデーターを分類できる符号を生成する事になる。
(8) 9bitの2進数を10進数に変換した符号だと0〜511までの符号を生成するので、512種類にデーターを分類できる符号を生成する事になる。
実施例では、生成する符号は、任意の位置から4bitの桁数分の2進数を抽出して10進数に変換して得られた数値を符号とする処理を行っているが、2進数の数値から抽出する桁数を指定して符号を生成できるように作成していない。桁数を指定する事が出来る様にソフトウェアを変更しても本発明の簡単なレパートリーであるから、本発明の分類用符号生成ソフトウェアを記録した記録媒体である事を明言する。
コンピューターで使用されているファイルを圧縮する場合にハッシュ関数を使用して生成された数値を符号として分類対象文字列の分類に使用しているが、ハッシュ関数の代わりに本発明の分類用符号生成ソフトウェアを記録した記録媒体を使用して符号を生成して分類すると、符号の生成にかかる時間が短縮される事によって、圧縮処理時間が大幅に短縮できる効果がある。
本発明の分類用符号生成ソフトウェアを記録した記録媒体は、圧縮技術で使用すると高速な処理が可能になるので使用するメリットが大きい。圧縮技術で使用する事を想定して開発した発明である。圧縮技術で使用する技術なので、文字列のみに使用する技術では無く、画像や音響や計算処理を行うソフトウェアなどのデーターの圧縮を行う処理でも使用する事を目的とした発明である。
文字列が記録されているファイルを圧縮する場合など、ハッシュ関数を使用してハッシュ値を生成し、そのハッシュ値で文字列を分類するよりも、本発明の分類用符号生成ソフトウェアを記録した記録媒体を使用して符号を生成して分類した方が処理速度が速いと言う効果を得られるはずである。
また、ソフトウェアを圧縮する場合でも、処理速度を高速にする効果がある。
また、音響ファイルや画像ファイルや動画ファイルは、既に圧縮された状態で提供されているのが普通であるが、未圧縮の音響ファイルや未圧縮の画像ファイルや未圧縮の動画ファイルの圧縮にも使用できる。
本発明の分類用符号生成ソフトウェアを記録した記録媒体は、圧縮技術で使用すると高速な処理が可能になるので使用するメリットが大きい。圧縮技術で使用する事を想定して開発した発明である。圧縮技術で使用する技術なので、文字列のみに使用する技術では無く、画像や音響や計算処理を行うソフトウェアなどのデーターの圧縮を行う処理でも使用する事を目的とした発明である。
文字列が記録されているファイルを圧縮する場合など、ハッシュ関数を使用してハッシュ値を生成し、そのハッシュ値で文字列を分類するよりも、本発明の分類用符号生成ソフトウェアを記録した記録媒体を使用して符号を生成して分類した方が処理速度が速いと言う効果を得られるはずである。
また、ソフトウェアを圧縮する場合でも、処理速度を高速にする効果がある。
また、音響ファイルや画像ファイルや動画ファイルは、既に圧縮された状態で提供されているのが普通であるが、未圧縮の音響ファイルや未圧縮の画像ファイルや未圧縮の動画ファイルの圧縮にも使用できる。
圧縮処理を行うソフトウェア圧縮対象ファイルは、既に圧縮された文字列が記録されているファイルだけではなく、既に圧縮されているソフトウェアや、既に圧縮された音響ファイルや、既に圧縮された画像ファイルや、既に圧縮された動画ファイルを再圧縮する場合があると想定される。本発明の分類用符号生成ソフトウェアを記録した記録媒体は、再圧縮処理を高速化できる効果がある。
ファイル内に記録されたデーターの中から検索を行う場合でも、ハッシュコードで分類するよりも、本発明の分類用符号生成ソフトウェアを記録した記録媒体を使用して符号を生成して分類して検索する方が高速に処理できると言う効果が期待できる。
データーベースと呼ばれる大量のデーターの中から検索する場合でも、ハッシュ関数を使用して分類する事で高速検索処理を可能にしているが、本発明の分類用符号生成ソフトウェアを記録した記録媒体を使用して符号を生成して分類して検索する方が高速に処理できると言う効果が期待できる。
インターネットなどのネットにあるホームページの大量のデーターを入手して、入手した大量のデーターを対象にホームページ検索を行っている。この様なホームページ検索をインターネット検索と呼んでいる。インターネット検索で行っているホームページ検索にもハッシュ関数が使用されている。本発明の分類用符号生成ソフトウェアを記録した記録媒体をインターネット検索で使用する事で高速な検索処理が可能になると考えている。
また、認証や電子署名などでも、ハッシュ関数が使用されているが、本発明は、認証や電子署名で使用されると考えられる。認証または、電子署名とは、ソフトウェアの使用許諾の為のパスワードの様なものである。認証とは、許可が与えられた者の証である。電子署名とは、手書きの文字では無いが電子的な記録によって確実に本人である事を証明する為の署名の役割を果たすものの事を言う。
また、暗号処理に使用される事も有るであろうと考えられる。
本発明の分類用符号生成ソフトウェアを記録した記録媒体で符号を生成した場合は、従来からあるハッシュ関数には無い処理工程で符号を生成しているので、従来のハッシュ関数を使用してハッシュ値を生成した電子署名や認証や暗号に加えて、違う処理で電子署名や認証や暗号を生成する事が出来る様になるので、処理工程の違う処理工程を持った処理が増えた分だけ、電子署名や認証や暗号の解読不能性が高くなり、インターネットやコンピューター上のセキュリティーの向上に効果を発揮すると考えている。
また、現在では、ファイルに改ざんが無いかどうかを検査するのに、従来からあるハッシュ関数によって生成されたハッシュ値が利用されている。この様な、ファイルに改ざんが無いかどうかの検査にも、本発明の分類用符号生成ソフトウェアを記録した記録媒体で、生成した符号が利用される事が有るであろうと考えている。
また、認証や電子署名などでも、ハッシュ関数が使用されているが、本発明は、認証や電子署名で使用されると考えられる。認証または、電子署名とは、ソフトウェアの使用許諾の為のパスワードの様なものである。認証とは、許可が与えられた者の証である。電子署名とは、手書きの文字では無いが電子的な記録によって確実に本人である事を証明する為の署名の役割を果たすものの事を言う。
また、暗号処理に使用される事も有るであろうと考えられる。
本発明の分類用符号生成ソフトウェアを記録した記録媒体で符号を生成した場合は、従来からあるハッシュ関数には無い処理工程で符号を生成しているので、従来のハッシュ関数を使用してハッシュ値を生成した電子署名や認証や暗号に加えて、違う処理で電子署名や認証や暗号を生成する事が出来る様になるので、処理工程の違う処理工程を持った処理が増えた分だけ、電子署名や認証や暗号の解読不能性が高くなり、インターネットやコンピューター上のセキュリティーの向上に効果を発揮すると考えている。
また、現在では、ファイルに改ざんが無いかどうかを検査するのに、従来からあるハッシュ関数によって生成されたハッシュ値が利用されている。この様な、ファイルに改ざんが無いかどうかの検査にも、本発明の分類用符号生成ソフトウェアを記録した記録媒体で、生成した符号が利用される事が有るであろうと考えている。
〔非特許文献1〕は、242ページから246ページに書かれている、ハッシュ関数とは違う方法が良く解らない。しかしながら、そのハッシュ関数とは違う方法が、分類対象文字列の先頭の二文字分が一致するデーターを分類すると言う方法であると言う場合でも、分類対象文字列の先頭の二文字分が一致するデーターを分類すると言う方法を使用するよりも、本発明の分類用符号生成ソフトウェアを記録した記録媒体は、使用する効果が大きいと考えている。なぜならば、分類される数が細かく決められるので2byteの数値で分類できる最大数の65535に分類すると言う異常な数の分類を行わずに済むと考えられるからである。65535に分類すると、多分岐の数が多くなりすぎて、多分岐の分岐を探すだけでも大きな時間のロスが発生すると考えられるからである。
以上の理由から、本発明の分類用符号生成ソフトウェアを記録した記録媒体を使用して符号を生成する効果があると考えている。
以上の理由から、本発明の分類用符号生成ソフトウェアを記録した記録媒体を使用して符号を生成する効果があると考えている。
分類数は、ソフトウェアを記録した記録媒体を作成する人間が決定するものである。しかし、人工知能を使用して分類数を決定する事も可能である。人工知能を使用して分類数を変更または、決定する方法を使っていたとしても、簡単なレパートリーなので、本発明の分類用符号生成ソフトウェアを記録した記録媒体であると明言する。
分類用符号生成ソフトウェアは、図2の<分類用符号生成ソフトウェアで使用した機材の説明図>に示した様なハードウェア資源で動作するプログラムである。図2の<分類用符号生成ソフトウェアで使用した機材の説明図>に示した様なハードウェア資源は、図符号Bのコンピューター本体と図符号Aのモニターと図符号Cのキーボードと図符号Dのマウスの合計4個のパーツで構成された機材であるが、これらの合計4個のパーツで構成された機材を一般的にコンピューターと呼んでいる。図符号Bのコンピューター本体は、パーソナルコンピューターと一般的に呼ばれているコンピューターである。図符号Bのコンピューター本体には、ハードディスクドライブなどの記録媒体やCPUや本体メモリーなどと呼ばれる装置が内蔵されており、本発明の分類用符号生成ソフトウェアは、図符号Bのコンピューター本体内部に在るハードディスクドライブなどの記録媒体にインストールされているものとする。図符号Bのコンピューター本体に接続された外部に在るハードディスクドライブなどの記録媒体に本発明の分類用符号生成ソフトウェアがインストールされていて、図符号Bのコンピューター本体から本発明の分類用符号生成ソフトウェアを起動する事が出来る場合は、図符号Bのコンピューター本体に接続された外部に在るハードディスクドライブなどの記録媒体に本発明の分類用符号生成ソフトウェアがインストールされているものとする。
本発明の分類用符号生成ソフトウェアがインストールされている図符号Bのコンピューター本体内部に在るハードディスクドライブなどの記録媒体または、図符号Bのコンピューター本体に接続された外部に在るハードディスクドライブなどの記録媒体にインストールされている本発明の分類用符号生成ソフトウェアを起動すると本発明の分類用符号生成ソフトウェアは、図符号Bのコンピューター本体に内蔵された本体メモリーに適時に必要量読み込まれる。図符号Bのコンピューター本体に内蔵された本体メモリーに適時に必要量読み込まれた本発明の分類用符号生成ソフトウェアに書かれたCPUが処理を予定している命令文が必要な時に必要量CPUに読み込まれ、そのCPUに読み込まれた命令文がCPUによって実行される事によってコンピューターによって本発明の分類用符号生成ソフトウェアが動作する。
本発明の分類用符号生成ソフトウェアがインストールされている図符号Bのコンピューター本体内部に在るハードディスクドライブなどの記録媒体または、図符号Bのコンピューター本体に接続された外部に在るハードディスクドライブなどの記録媒体にインストールされている本発明の分類用符号生成ソフトウェアを起動すると本発明の分類用符号生成ソフトウェアは、図符号Bのコンピューター本体に内蔵された本体メモリーに適時に必要量読み込まれる。図符号Bのコンピューター本体に内蔵された本体メモリーに適時に必要量読み込まれた本発明の分類用符号生成ソフトウェアに書かれたCPUが処理を予定している命令文が必要な時に必要量CPUに読み込まれ、そのCPUに読み込まれた命令文がCPUによって実行される事によってコンピューターによって本発明の分類用符号生成ソフトウェアが動作する。
従って、本発明の分類用符号生成ソフトウェアがハードウェア資源を使用してどのような工程で処理されるのかを簡単な表現で説明すると、本発明の分類用符号生成ソフトウェアに書かれた命令文は、コンピューター本体のCPUによって処理されると表現しなおす事ができるのである。
図2の<分類用符号生成ソフトウェアで使用した機材の説明図>に示した様なハードウェア資源で動作する分類用符号生成ソフトウェアである事を段落〔0042〕にて説明したが、コンピューターの形状は、図2の<分類用符号生成ソフトウェアで使用した機材の説明図>に示した様なハードウェア資源に限定できるものではなく、図符号Aのモニター、図符号Bのコンピューター本体、図符号Cのキーボード、図符号Dのマウスが一体化したものや、図符号Dのマウスが存在しない構成のものや、図符号Aのモニター、図符号Bのコンピューター本体の二つを一体化した構成のもの等いろいろある。今後、もっと多くのいろいろな形状のコンピューターが開発されていくであろうと考えられる。図2の<分類用符号生成ソフトウェアで使用した機材の説明図>に示した様なハードウェア資源でなくても、類似と言い得る、いわゆるコンピューターを使用して本発明の分類用符号生成ソフトウェアを動作させている場合も本発明の分類用符号生成ソフトウェアである事を明言する。
図2、図3、図4、図5、図6、図7、図8、図9、図10、図11、図12、図13、図14、図15は、実際とは、多少異なる事を明記する。図4、図5、図6、図7、図8、図9、図10、図11、図12、図13、図14、図15は、試しに符号を生成させた結果を示した図である。図3の<分類用符号生成ソフトウェアの操作画面図>で図符号Fで「4bitの符号を生成するボタン」と言うボタンの名称になっているが、正確には、4桁の0と1の文字列で表された2進数の数値を抽出して10進数に変換して、10進数に変換して得られた数値を符号として生成するボタンである。しかし、実施例のソフトウェアでは、「4bitの符号を生成するボタン」としてボタンを作成した。
図3の<分類用符号生成ソフトウェアの操作画面図>で、図符号Iをソフトウェアの名称として説明していて、「符号を生成するソフトウェア」と書かれている部分を図3の<分類用符号生成ソフトウェアの操作画面図>で、図符号Iが示しているが、「符号を生成するソフトウェア」とは、本発明の分類用符号生成ソフトウェアを記録した記録媒体の事である。
図符号Eの<データーを入力するテキストボックス>に入力する事が出来るデーターは、100byteまでとする。実際には、無制限に入力できるが説明の都合上、100byteまでとする。
また、テキストボックスなどの画面に表示する処理工程は、常識的処理なので処理工程を説明していない。
図3の<分類用符号生成ソフトウェアの操作画面図>で、図符号Iをソフトウェアの名称として説明していて、「符号を生成するソフトウェア」と書かれている部分を図3の<分類用符号生成ソフトウェアの操作画面図>で、図符号Iが示しているが、「符号を生成するソフトウェア」とは、本発明の分類用符号生成ソフトウェアを記録した記録媒体の事である。
図符号Eの<データーを入力するテキストボックス>に入力する事が出来るデーターは、100byteまでとする。実際には、無制限に入力できるが説明の都合上、100byteまでとする。
また、テキストボックスなどの画面に表示する処理工程は、常識的処理なので処理工程を説明していない。
以下の段落に於いて、変数を作成すると記述しているが変数が作成される場所は、図符号Bのコンピューター本体の内部にある本体メモリーに作成される。但し、OSと呼ばれるソフトウェアによって仮想メモリー領域に作成される場合もある。仮想メモリー領域とは、図符号Bのコンピューター本体の内部に在るハードディスクドライブなどの記録媒体の一部分を仮想的に本体メモリーとして使用する場合に使用する図符号Bのコンピューター本体の内部に在るハードディスクドライブなどの記録媒体の一部分の事を言う。この図符号Bのコンピューター本体の内部にある本体メモリーまたは、図符号Bのコンピューター本体の内部にあるハードディスクドライブなどの記録媒体の一部分を仮想的に本体メモリーとして使用する場合に使用する図符号Bのコンピューター本体の内部に在るハードディスクドライブなどの記録媒体の一部分の事をコンピューター内部のメモリー装置と呼ぶ事とする。従って、変数を作成すると記述している場合の変数が作成される場所を端的な表現をして説明するならば、コンピューター内部のメモリー装置内に作成されると言う表現になる。
以下の段落に於いて、全て変数や一次元配列を使用してプログラムを作成しているが、多次元配列を使用したり、ファイルを使用する事でも同じ処理が出来ると考えられる。また、変数と一次元配列と多次元配列とファイルの組み合わせによっても、同じ処理が出来ると考えられる。これらはプログラムの書き方の違いであって、全て本発明の分類用符号生成ソフトウェアを記録した記録媒体の単純なレパートリーでしかないと言う事を明言する。
図1の<分類用符号生成ソフトウェアのフローチャート図>を参照の事。図符号Jと図符号Kには、ステップ番号を右肩位置に付してあるが、その右肩位置に付したステップ番号順に説明する事とする。まず、本発明の分類用符号生成ソフトウェアを記録した記録媒体を起動すると、図3の<分類用符号生成ソフトウェアの操作画面図>の様な操作画面が図符号Aのモニターに表示される。
ステップ100の「データーをキーボードで入力して、4bitの符号を生成させるボタンをマウスで左クリックする処理工程」に進む。ステップ100は、人為的な手動による操作または入力処理工程である。
図符号Eの<データーを入力するテキストボックス>に図符号Cのキーボードなどの入力デバイスを使用して符号を生成する任意のデーターを人為的に入力する。符号を生成する任意のデーターとは、分類対象データーまたは、分類対象文字列の事である。図符号Eの<データーを入力するテキストボックス>に入力した任意の分類対象文字列を基に符号を生成する処理を行う。次に、図符号Fの<4bitの符号を生成するボタン>を図符号Dのマウスなどの入力デバイスを使用してクリックする事で処理を開始する。
図符号Eの<データーを入力するテキストボックス>に図符号Cのキーボードなどの入力デバイスを使用して符号を生成する任意のデーターを人為的に入力する。符号を生成する任意のデーターとは、分類対象データーまたは、分類対象文字列の事である。図符号Eの<データーを入力するテキストボックス>に入力した任意の分類対象文字列を基に符号を生成する処理を行う。次に、図符号Fの<4bitの符号を生成するボタン>を図符号Dのマウスなどの入力デバイスを使用してクリックする事で処理を開始する。
次に、ステップ101の「変数代入処理工程」に進む。ステップ101は、分類用符号生成ソフトウェアとコンピューターによる自動処理工程である。
100byteのstring型で変数を作成して、この変数を元データー変数と呼ぶ事とする。この元データー変数に、図符号Eの<データーを入力するテキストボックス>に入力された分類対象文字列を全て取得して代入する。元データー変数に代入されたデーターをテキスト形式でファイルに1byteずつ順番に最後の文字までデーターを書き込んで保存する。この元データー変数に代入されたデーターを保存したファイルの事を元データーファイルと呼ぶ事とする。
100byteのstring型で変数を作成して、この変数を元データー変数と呼ぶ事とする。この元データー変数に、図符号Eの<データーを入力するテキストボックス>に入力された分類対象文字列を全て取得して代入する。元データー変数に代入されたデーターをテキスト形式でファイルに1byteずつ順番に最後の文字までデーターを書き込んで保存する。この元データー変数に代入されたデーターを保存したファイルの事を元データーファイルと呼ぶ事とする。
次に、ステップ102の「先頭の1byte取得処理工程」に進む。ステップ102は、分類用符号生成ソフトウェアとコンピューターによる自動処理工程である。
元データーファイルのデーターを1byteずつ全て読込めるサイズで8bitの配列を作成して、作成した配列を数値10配列と呼ぶ事にする。元データーファイルをバイナリー形式で開いてファイルに記録されている全てのデーターを1byteずつ最初から最後まで全て読み込んで、数値10配列の最初から最後の位置までに1byteずつ全てのデーターを代入する。
元データーファイルのデーターを1byteずつ全て読込めるサイズで8bitの配列を作成して、作成した配列を数値10配列と呼ぶ事にする。元データーファイルをバイナリー形式で開いてファイルに記録されている全てのデーターを1byteずつ最初から最後まで全て読み込んで、数値10配列の最初から最後の位置までに1byteずつ全てのデーターを代入する。
次に、ステップ103の「2進数変換処理工程」に進む。ステップ103は、分類用符号生成ソフトウェアとコンピューターによる自動処理工程である。
10進数の数値を2進数の数値に変換する処理と2進数の数値を10進数の数値に変換する処理の説明を行う。
実施例で10進数の数値を2進数の数値に変換する処理は、10進数の数値を2で除算して、除算した結果の余りが0の場合は、0を記録して、除算した結果の余りが1の場合は、1を記録すると言う計算を、2で除算して算出された数値の少数点以下を切り捨てた数値が、0よりも大きい数値である間は、繰り返し処理する方法で2進数に変換した。この方法で2進数に変換した場合、最初に2で除算した余りが1の位になり、2回目に除算した余りが10の位になり、3回目に除算した余りが100の位になり、4回目に除算した余りが1000の位になると言う処理で2進数に変換していく。この10進数の数値を2進数の数値に変換する処理は、常識的処理なので、実施例で処理工程を書いていない。また、この技術で10進数の数値を2進数に変換した場合は、変換した2進数が8桁に満たない場合でも、前方に相当する左側の位置に0が入力される事のない0と1で構成された2進数となる。必ず、一番左側に相当する、一番大きな位が1となる2進数の算出技術である。
実施例で2進数の数値を10進数の数値に変換する処理は、コンパイラと呼ばれるソフトウェアを作成する為のソフトウェアに添付された関数を使用している。2進数の数値を10進数の数値に変換する処理工程も、常識的処理なので実施例で処理工程を書いていない。
他の方法で2進数の数値を10進数に変換したり、他の方法で10進数の数値を2進数の数値に変換しても、簡単なレパートリーであるから、本発明の分類用符号生成ソフトウェアを記録した記録媒体であると明言する。
2進数の数値に変換する処理と2進数の数値を10進数変換する処理の説明を終了する。
8bitの変数を作成して、データー10変数と呼ぶ事とする。数値10配列の最初の位置に代入されている1byteのデーターを取得して、データー10変数に代入する。
数値10配列の最初の位置に代入されている1byteのデーターを取得して、データー10変数に代入する理由について説明する。
第三の技術を実施例で行っている。分類対象文字列の任意の位置の最低必要文字数分だけ取得して、取得した文字列を文字コードに変換して、文字コードに変換した数値を2進数に変換して、変換した2進数が、生成する符号の為に抽出する2進数の桁数に必要最低限の桁数である事が第三の技術の処理を行う条件である。実施例では、4桁の2進数を抽出して10進数に変換して符号を生成するのであるから、最低必要文字数は、一文字分と言う事になる。一文字分とは、1byte分であるから、2進数の桁数で言うと8bitとなる。分類対象文字列の先頭の位置の文字を抽出したのは、分類対象文字列の先頭の位置の文字を任意の位置として抽出して処理を行う事としたからである。
以上で、数値10配列の最初の位置に代入されている1byteのデーターを取得して、データー10変数に代入する理由について説明を終わる。
8byteのstring型の変数を作成する。作成した変数をデーター2変数と呼ぶ。
10進数の数値を2進数の数値に変換する処理と2進数の数値を10進数の数値に変換する処理の説明を行う。
実施例で10進数の数値を2進数の数値に変換する処理は、10進数の数値を2で除算して、除算した結果の余りが0の場合は、0を記録して、除算した結果の余りが1の場合は、1を記録すると言う計算を、2で除算して算出された数値の少数点以下を切り捨てた数値が、0よりも大きい数値である間は、繰り返し処理する方法で2進数に変換した。この方法で2進数に変換した場合、最初に2で除算した余りが1の位になり、2回目に除算した余りが10の位になり、3回目に除算した余りが100の位になり、4回目に除算した余りが1000の位になると言う処理で2進数に変換していく。この10進数の数値を2進数の数値に変換する処理は、常識的処理なので、実施例で処理工程を書いていない。また、この技術で10進数の数値を2進数に変換した場合は、変換した2進数が8桁に満たない場合でも、前方に相当する左側の位置に0が入力される事のない0と1で構成された2進数となる。必ず、一番左側に相当する、一番大きな位が1となる2進数の算出技術である。
実施例で2進数の数値を10進数の数値に変換する処理は、コンパイラと呼ばれるソフトウェアを作成する為のソフトウェアに添付された関数を使用している。2進数の数値を10進数の数値に変換する処理工程も、常識的処理なので実施例で処理工程を書いていない。
他の方法で2進数の数値を10進数に変換したり、他の方法で10進数の数値を2進数の数値に変換しても、簡単なレパートリーであるから、本発明の分類用符号生成ソフトウェアを記録した記録媒体であると明言する。
2進数の数値に変換する処理と2進数の数値を10進数変換する処理の説明を終了する。
8bitの変数を作成して、データー10変数と呼ぶ事とする。数値10配列の最初の位置に代入されている1byteのデーターを取得して、データー10変数に代入する。
数値10配列の最初の位置に代入されている1byteのデーターを取得して、データー10変数に代入する理由について説明する。
第三の技術を実施例で行っている。分類対象文字列の任意の位置の最低必要文字数分だけ取得して、取得した文字列を文字コードに変換して、文字コードに変換した数値を2進数に変換して、変換した2進数が、生成する符号の為に抽出する2進数の桁数に必要最低限の桁数である事が第三の技術の処理を行う条件である。実施例では、4桁の2進数を抽出して10進数に変換して符号を生成するのであるから、最低必要文字数は、一文字分と言う事になる。一文字分とは、1byte分であるから、2進数の桁数で言うと8bitとなる。分類対象文字列の先頭の位置の文字を抽出したのは、分類対象文字列の先頭の位置の文字を任意の位置として抽出して処理を行う事としたからである。
以上で、数値10配列の最初の位置に代入されている1byteのデーターを取得して、データー10変数に代入する理由について説明を終わる。
8byteのstring型の変数を作成する。作成した変数をデーター2変数と呼ぶ。
以下の処理を2進数作成処理と呼ぶ事とする。
データー10変数に代入された10進数の数値を2進数の数値に変換して、2進数に変換したデーターをデーター2変数に代入する。
2進数作成処理を終了する。
2進数作成処理で作成された2進数の説明を行う。
2進数作成処理でデーター2変数に代入されたデーターは、2進数となる。2進数作成処理を最後まで処理した結果、作成される2進数は、桁数が必ずしも8桁にならない問題がある。理由は、段落〔0052〕で説明した10進数の数値を2進数の数値に変換する処理技術で2進数に変換すると8桁に満たない2進数の前方方向に相当する左側に0が無い、必要最低限の0と1で表した2進数の数値に変換される為である。そこで、2進数に変換した数値が、8桁に満たない場合に数値の左側に0を連結して8桁の2進数に調整する必要が発生する。
2進数作成処理で作成された2進数の説明を終わる。
以下の処理を桁調整処理と呼ぶ。
データー2変数に代入された8byteのデーターを取得して、文字列操作関数を使用して取得したデーターの文字数を調べて、データーの文字数が8桁に満たない場合と8桁の場合の2つに分岐する。この分岐をバイト分岐と呼ぶ。
バイト分岐で、データー2変数のデーターの文字数が8桁に満たない場合は、データー2変数のデーターの前方に0を連結して合計で8桁になる様に0を連結した文字列を作成して、データー2変数に作成した文字列を上書きで代入する。
バイト分岐で、データー2変数のデーターの文字数が8桁の場合は、何も行わない。
バイト分岐を終了する。
これで、桁数調整処理を終了する。
データー10変数に代入された10進数の数値を2進数の数値に変換して、2進数に変換したデーターをデーター2変数に代入する。
2進数作成処理を終了する。
2進数作成処理で作成された2進数の説明を行う。
2進数作成処理でデーター2変数に代入されたデーターは、2進数となる。2進数作成処理を最後まで処理した結果、作成される2進数は、桁数が必ずしも8桁にならない問題がある。理由は、段落〔0052〕で説明した10進数の数値を2進数の数値に変換する処理技術で2進数に変換すると8桁に満たない2進数の前方方向に相当する左側に0が無い、必要最低限の0と1で表した2進数の数値に変換される為である。そこで、2進数に変換した数値が、8桁に満たない場合に数値の左側に0を連結して8桁の2進数に調整する必要が発生する。
2進数作成処理で作成された2進数の説明を終わる。
以下の処理を桁調整処理と呼ぶ。
データー2変数に代入された8byteのデーターを取得して、文字列操作関数を使用して取得したデーターの文字数を調べて、データーの文字数が8桁に満たない場合と8桁の場合の2つに分岐する。この分岐をバイト分岐と呼ぶ。
バイト分岐で、データー2変数のデーターの文字数が8桁に満たない場合は、データー2変数のデーターの前方に0を連結して合計で8桁になる様に0を連結した文字列を作成して、データー2変数に作成した文字列を上書きで代入する。
バイト分岐で、データー2変数のデーターの文字数が8桁の場合は、何も行わない。
バイト分岐を終了する。
これで、桁数調整処理を終了する。
次に、ステップ104の「32bit取得処理工程」に進む。ステップ104は、分類用符号生成ソフトウェアとコンピューターによる自動処理工程である。
32bitのstring型で変数を作成して、この変数を符号2変数と呼ぶ事とする。文字列操作関数を使用してデーター2変数に代入されたデーターの後方に相当する右側の0と1で構成された4桁分の2進数を抽出して、符号2変数に代入する。
32bitのstring型で変数を作成して、この変数を符号2変数と呼ぶ事とする。文字列操作関数を使用してデーター2変数に代入されたデーターの後方に相当する右側の0と1で構成された4桁分の2進数を抽出して、符号2変数に代入する。
次に、ステップ105の「生成した2進数の符号表示処理工程」に進む。ステップ105は、分類用符号生成ソフトウェアとコンピューターによる自動処理工程である。
図符号Hの<生成した符号を2進数で表示するテキストボックス>に符号2変数に代入された2進数の数値を表示する。
図符号Hの<生成した符号を2進数で表示するテキストボックス>に符号2変数に代入された2進数の数値を表示する。
次に、ステップ106の「10進数変換処理工程」に進む。ステップ106は、分類用符号生成ソフトウェアとコンピューターによる自動処理工程である。
8bitの符号10変数を作成して、符号10変数に、符号2変数に代入された2進数の数値を10進数に変換して代入する。2進数の数値を10進数の数値に変換する変換処理は、段落〔0052〕で説明した様に、コンパイラに添付された関数を使用して10進数の数値に変換処理した。
符号生成処理の説明を行う。
ステップ106の「10進数変換処理工程」の処理で、本発明の分類用符号生成ソフトウェアを記録した記録媒体によって生成された符号が、符号10変数に代入された事になる。本発明の分類用符号生成ソフトウェアを記録した記録媒体によって生成された符号が、符号10変数に代入された事になると言う事を言い換えると、符号10変数に代入された10進数の数値を符号とすると言う意味である。
符号生成処理の説明を終了する。
8bitの符号10変数を作成して、符号10変数に、符号2変数に代入された2進数の数値を10進数に変換して代入する。2進数の数値を10進数の数値に変換する変換処理は、段落〔0052〕で説明した様に、コンパイラに添付された関数を使用して10進数の数値に変換処理した。
符号生成処理の説明を行う。
ステップ106の「10進数変換処理工程」の処理で、本発明の分類用符号生成ソフトウェアを記録した記録媒体によって生成された符号が、符号10変数に代入された事になる。本発明の分類用符号生成ソフトウェアを記録した記録媒体によって生成された符号が、符号10変数に代入された事になると言う事を言い換えると、符号10変数に代入された10進数の数値を符号とすると言う意味である。
符号生成処理の説明を終了する。
次に、ステップ107の「生成した10進数符号表示処理工程」に進む。ステップ107は、分類用符号生成ソフトウェアとコンピューターによる自動処理工程である。
符号10変数に代入された10進数の符号を図符号Gの<生成した符号を10進数で表示するテキストボックス>に符号10変数に代入された10進数の符号を表示する。
符号10変数に代入された10進数の符号を図符号Gの<生成した符号を10進数で表示するテキストボックス>に符号10変数に代入された10進数の符号を表示する。
A:モニター
B:コンピューター本体
C:キーボード
D:マウス
E:データーを入力するテキストボックス
F:4bitの符号を生成するボタン
G:生成した符号を10進数で表示するテキストボックス
H:生成した符号を2進数で表示するテキストボックス
I:ソフトウェアの名称
J:人為的な手動による操作または入力処理工程
K:分類用符号生成ソフトウェアとコンピューターによる自動処理工程
B:コンピューター本体
C:キーボード
D:マウス
E:データーを入力するテキストボックス
F:4bitの符号を生成するボタン
G:生成した符号を10進数で表示するテキストボックス
H:生成した符号を2進数で表示するテキストボックス
I:ソフトウェアの名称
J:人為的な手動による操作または入力処理工程
K:分類用符号生成ソフトウェアとコンピューターによる自動処理工程
Claims (1)
- 以下に、「生成する」と「算出する」は、同じ意味として使用する事とし、以下に、変数や配列を作成すると記述しているが変数や配列が作成される場所は、コンピューター本体の内部にある本体メモリーに作成される事とし、また、コンピューターで普通に使われているテキスト文字(日本国では、文字コード二文字以上で一文字を表す文字と文字コード一文字で表す半角文字の事)を、文字と呼んだり、文字とリンクされている数値を文字コードと言う事があるとし、文字コードは、0〜255までの数値であるとする事とし、以下に、変数の型とは、人間が読む事が出来る文字列を代入する事ができる変数の型としてstring型と言う型と、string型の変数ではない数値を代入する事が出来る型とがあるが、変数を作成する場合に、string型の場合のみ「何bitのstring型で変数を作成する」または、「何byteのstring型で変数を作成する」と言う表現でstring型の変数を作成する事とし、string型の変数ではない数値を代入する事が出来る変数に数値を代入する場合は、「何bitの変数を作成する」または、「何byteの変数を作成する」と言う表現で変数を作成する事とし、ファイルを開いたり保存したりする形式には、テキスト形式という形式があり、テキスト形式と指定すると、文字列や文字を自動的に文字コードと言う数値から、人間が読む事ができる文字に変換される形式であり、テキスト形式で1byteずつデーターをファイルに記録して保存すると言う表現で説明する事とし、ファイルを開いたり保存したりする形式には、バイナリー形式と言う形式があり、バイナリー形式を指定すると、人間が読む事ができる文字から、自動的に文字コードと言う数値に変換される形式であり、バイナリー形式でファイルを開いて、1byteずつデーターを読み込むと言う表現で説明する事とし、100byteのstring型で変数を作成して、この変数を元データー変数と呼ぶ事とし、この元データー変数に、操作画面のデーターを入力するテキストボックスに任意に人為的に入力されたデーターを100byte取得して代入し、元データー変数に代入されたデーターを分類対象データーと呼ぶ事とし、元データー変数に代入されたデーターをテキスト形式でファイルに1byteずつ順番に最後の文字までデーターを書き込んで保存し、この元データー変数に代入されたデーターを保存したファイルの事を元データーファイルと呼ぶ事とし、元データーファイルのデーターを1byteずつ全て読込めるサイズで8bitの配列を作成して、数値10配列と呼ぶ事とし、元データーファイルをバイナリー形式で開いて、元データーファイルに記録されているデーターを1byteずつ最初から最後まで全て読み込んで、数値10配列の最初から最後の位置までに1byteずつ全てのデーターを代入し、8bitの変数を作成して、データー10変数と呼ぶ事とし、数値10配列の最初の位置に代入されている1byteのデーターを取得して、データー10変数に代入して、8byteのstring型の変数を作成して、作成した変数をデーター2変数と呼ぶ事とし、以下の処理を2進数作成処理と呼ぶ事とし、データー10変数に代入された10進数の数値を2進数の数値に変換して、2進数に変換したデーターをデーター2変数に代入し、2進数作成処理を終了する事とし、以下の処理を桁調整処理と呼ぶ事とし、データー2変数に代入された8byteのデーターを取得して、文字列操作関数を使用して取得したデーターの文字数を調べて、データーの文字数が8桁に満たない場合と8桁の場合の2つに分岐する事とし、この分岐をバイト分岐と呼ぶ事とし、バイト分岐で、データー2変数のデーターの文字数が8桁に満たない場合は、データー2変数のデーターの前方に0を連結して合計で8桁になる様に0を連結した文字列を作成して、データー2変数に作成した文字列を上書きで代入する事とし、バイト分岐で、データー2変数のデーターの文字数が8桁の場合は、何も行わない事とし、バイト分岐を終了する事とし、桁数調整処理を終了する事とし、32bitのstring型で変数を作成して、この変数を符号2変数と呼ぶ事とし、文字列操作関数を使用してデーター2変数に代入されたデーターの後方に相当する右側の0と1で構成された4桁分のデーターを切り出して、符号2変数に代入し、8bitの符号10変数を作成して、符号10変数に、符号2変数に代入された2進数の数値を10進数に変換して代入すると言う処理を行う事で符号10変数に代入された10進数の数値を元データー変数に代入されている分類対象データーを代表する符号として生成するソフトウェアを記録した記録媒体。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2017104663A JP6251437B1 (ja) | 2017-05-26 | 2017-05-26 | 分類用符号生成ソフトウェアを記録した記録媒体 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2017104663A JP6251437B1 (ja) | 2017-05-26 | 2017-05-26 | 分類用符号生成ソフトウェアを記録した記録媒体 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP6251437B1 true JP6251437B1 (ja) | 2017-12-20 |
JP2018200546A JP2018200546A (ja) | 2018-12-20 |
Family
ID=60685635
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2017104663A Active JP6251437B1 (ja) | 2017-05-26 | 2017-05-26 | 分類用符号生成ソフトウェアを記録した記録媒体 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP6251437B1 (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109871520A (zh) * | 2019-02-28 | 2019-06-11 | 魏勇 | 一种适用于http内容内嵌的二进制数据编解码方法 |
CN117978366A (zh) * | 2024-03-26 | 2024-05-03 | 杭州三一谦成科技有限公司 | 一种基于物联网的车辆信息查询系统 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0438026A (ja) * | 1990-06-02 | 1992-02-07 | Fujitsu Ltd | 受信データ同期回路 |
JPH09212523A (ja) * | 1996-01-30 | 1997-08-15 | Oki Electric Ind Co Ltd | 全文検索方法 |
US20040049493A1 (en) * | 2002-09-05 | 2004-03-11 | Andrew Davis | String matching process for ASCII strings using two arrays and hash table |
JP2013156822A (ja) * | 2012-01-30 | 2013-08-15 | Hitachi Ltd | 数列データ検索装置、数列データ検索方法及びプログラム |
JP2014085921A (ja) * | 2012-10-25 | 2014-05-12 | Sony Corp | 情報処理装置および方法、並びにプログラム |
JP2015135541A (ja) * | 2014-01-16 | 2015-07-27 | 株式会社日立ソリューションズ | 検索可能暗号処理システムおよび検索可能暗号処理方法 |
-
2017
- 2017-05-26 JP JP2017104663A patent/JP6251437B1/ja active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0438026A (ja) * | 1990-06-02 | 1992-02-07 | Fujitsu Ltd | 受信データ同期回路 |
JPH09212523A (ja) * | 1996-01-30 | 1997-08-15 | Oki Electric Ind Co Ltd | 全文検索方法 |
US20040049493A1 (en) * | 2002-09-05 | 2004-03-11 | Andrew Davis | String matching process for ASCII strings using two arrays and hash table |
JP2013156822A (ja) * | 2012-01-30 | 2013-08-15 | Hitachi Ltd | 数列データ検索装置、数列データ検索方法及びプログラム |
JP2014085921A (ja) * | 2012-10-25 | 2014-05-12 | Sony Corp | 情報処理装置および方法、並びにプログラム |
JP2015135541A (ja) * | 2014-01-16 | 2015-07-27 | 株式会社日立ソリューションズ | 検索可能暗号処理システムおよび検索可能暗号処理方法 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109871520A (zh) * | 2019-02-28 | 2019-06-11 | 魏勇 | 一种适用于http内容内嵌的二进制数据编解码方法 |
CN109871520B (zh) * | 2019-02-28 | 2023-05-26 | 魏勇 | 一种适用于http内容内嵌的二进制数据编解码方法 |
CN117978366A (zh) * | 2024-03-26 | 2024-05-03 | 杭州三一谦成科技有限公司 | 一种基于物联网的车辆信息查询系统 |
Also Published As
Publication number | Publication date |
---|---|
JP2018200546A (ja) | 2018-12-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8190613B2 (en) | System, method and program for creating index for database | |
US8131721B2 (en) | Information retrieval method, information retrieval apparatus, and computer product | |
US8712977B2 (en) | Computer product, information retrieval method, and information retrieval apparatus | |
Conti et al. | A visual study of primitive binary fragment types | |
JP6720664B2 (ja) | インデックス生成プログラム、インデックス生成装置、インデックス生成方法、検索プログラム、検索装置および検索方法 | |
US7548845B2 (en) | Apparatus, method, and program product for translation and method of providing translation support service | |
US20050219076A1 (en) | Information management system | |
JP6343081B1 (ja) | 符号符号分類検索ソフトウェアを記録した記録媒体 | |
JP6251437B1 (ja) | 分類用符号生成ソフトウェアを記録した記録媒体 | |
US10394763B2 (en) | Method and device for generating pileup file from compressed genomic data | |
US7382878B2 (en) | System and method for data encryption | |
WO2021139242A1 (zh) | 演示文稿生成方法、装置、设备及存储介质 | |
EP0450049A1 (en) | CODING OF CHARACTERS. | |
JP6728926B2 (ja) | 符号化処理プログラム、符号化処理装置、符号化処理方法、復号化処理プログラム、復号化処理装置および復号化処理方法 | |
JP6805720B2 (ja) | データ検索プログラム、データ検索装置およびデータ検索方法 | |
CN108334888B (zh) | 针对比特序列的压缩编码 | |
US7433880B2 (en) | Method and system for high speed encoding, processing and decoding of data | |
US20130144885A1 (en) | File search apparatus and method using attribute information | |
JP2993540B2 (ja) | 昇順整数列データの圧縮および復号システム | |
CN117910022B (zh) | 数据搜索方法、装置、计算机设备、存储介质和产品 | |
JP2009093405A (ja) | データ検索のためのシステム、方法及びコンピュータプログラム | |
Gougeon et al. | Memory carving can finally unveil your embedded personal data | |
JP2018180890A (ja) | インデックス生成プログラム、データ検索プログラム、インデックス生成装置、データ検索装置、インデックス生成方法、及びデータ検索方法 | |
JP2001092831A (ja) | 文書検索装置及び文書検索方法 | |
JP6096970B1 (ja) | マルメ圧縮ソフトウェアを記録した記録媒体 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20171017 |
|
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: 20171114 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6251437 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |