(57)【特許請求の範囲】
【請求項１】
定められた複数種類の文字の種類の数をＮとし、当該種類のそれぞれの文字を一意であるＮ進数の値として、当該値に、配列の各要素にアクセスするためのインデックス値を一意に対応付けたコード体系が記憶されるコード体系記憶部と、
前記複数種類の文字のうちから選択される複数の文字が連結された文字列の桁数をＭとし、前記インデックス値に対応する文字列が生成されたか否かを示すＮＭ個のフラグ情報を要素とする前記配列であるチェック配列が記憶されるチェック配列記憶部と、
入力されるＭ文字の候補文字列によって示されるＮ進数の値を前記インデックス値に変換する基数変換部と、
前記基数変換部によって変換された前記インデックス値によってアクセスされる前記チェック配列の前記フラグ情報が、文字列が生成されたことを示す場合、前記候補文字列は一意でないと判定し、文字列が生成されていないことを示す場合、前記候補文字列は一意であると判定し、当該インデックス値によってアクセスされる前記フラグ情報を、文字列が生成されたことを示す値に変更する一意判定部と、
を備えることを特徴とする文字列判定装置。
【請求項２】
前記複数種類の文字の入力を受け付け、当該複数種類の文字に基づいて前記コード体系を生成し、生成した当該コード体系を前記コード体系記憶部に記憶させるコード体系生成部と、
を備えることを特徴とする請求項１に記載の文字列判定装置。
【請求項３】
前記Ｍの値と前記Ｎの値の入力を受け付け、前記チェック配列を生成して前記チェック配列記憶部に記憶させるチェック配列生成部と、
を備えることを特徴とする請求項１または請求項２のいずれかに記載の文字列判定装置。
【請求項４】
前記複数種類の文字には、数字と文字と記号とのいずれかまたは複数の文字が含まれる
ことを特徴とする請求項１から請求項３までのいずれか１項に記載の文字列判定装置。
【請求項５】
一意であると判定された文字列が記憶される文字列記憶部を備え、
前記一意判定部は、一意であると判定した前記候補文字列を、前記文字列記憶部に記憶させる
ことを特徴とする請求項１から請求項４までのいずれか１項に記載の文字列判定装置。
【請求項６】
定められた複数種類の文字の種類の数をＮとし、当該種類のそれぞれの文字を一意であるＮ進数の値として、当該値に、配列の各要素にアクセスするためのインデックス値を一意に対応付けたコード体系が記憶されるコード体系記憶部と、前記複数種類の文字のうちから選択される複数の文字が連結された文字列の桁数をＭとし、前記インデックス値に対応する文字列が生成されたか否かを示すＮＭ個のフラグ情報を要素とする前記配列であるチェック配列が記憶されるチェック配列記憶部とを備える文字列判定装置の文字列判定方法であって、
入力されるＭ文字の候補文字列によって示されるＮ進数の値を前記インデックス値に変換するステップと、
変換した前記インデックス値によってアクセスされる前記チェック配列の前記フラグ情報が、文字列が生成されたことを示す場合、前記候補文字列は一意でないと判定し、文字列が生成されていないことを示す場合、前記候補文字列は一意であると判定し、当該インデックス値によってアクセスされる前記フラグ情報を、文字列が生成されたことを示す値に変更するステップと、
を備えることを特徴とする文字列判定方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、文字列が一意であるか否かを判定する技術に関する。
【背景技術】
【０００２】
複数の情報を管理するために、その情報のそれぞれに一意な識別情報（ＩＤ:Identifier）を対応付けて管理する方法がある。ここで、例えば数字を０からシーケンシャルに加算した値をＩＤとして生成することもできるが、このように規則的な方法では、その規則に基づいて特定のＩＤから他のＩＤが推測される可能性がある。そこで、ＩＤの値自体にある程度の不規則性が求められる場合、例えば何らかのシードに基づいてランダムな値を生成し、その値をＩＤとして記憶しておく。そして、新たなＩＤを生成する場合には、同様にランダムな値をＩＤ候補値として生成し、生成したＩＤ候補値が既に生成したＩＤのそれぞれと一致するか否かを判定する。そして、一致するＩＤがなければその値をＩＤとして採用し、一致するＩＤがあればその値をＩＤとして採用しない。特許文献１には、ドキュメントの識別情報を生成することが記載されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００５−３３９１３４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、まずＩＤ候補値を生成し、既に生成したＩＤのそれぞれと一致しているか否かを判定する場合、既に生成したＩＤの数が多くなれば多くなるほど、一致するか否かを判定するための比較処理の処理回数が増える。図６は、このような処理回数の例を示す図である。図に示すように、２個目のＩＤ生成時には、生成済みの１個のＩＤと１回の比較処理を行えば済むが、Ｎ個目のＩＤを生成した場合、Ｎ−１回の比較処理を行う必要がある。そこで、このような比較処理の処理回数を低減し、ＩＤが一意であるか否かを効率良く判定することが望ましい。
【０００５】
本発明は、このような状況に鑑みてなされたもので、文字列が一意であるか否かを判定する文字列判定装置、文字列判定方法を提供する。
【課題を解決するための手段】
【０００６】
上述した課題を解決するために、本発明は、定められた複数種類の文字の種類の数をＮとし、種類のそれぞれの文字を一意であるＮ進数の値として、値に、配列の各要素にアクセスするためのインデックス値を一意に対応付けたコード体系が記憶されるコード体系記憶部と、複数種類の文字のうちから選択される複数の文字が連結された文字列の桁数をＭとし、インデックス値に対応する文字列が生成されたか否かを示すＮＭ個のフラグ情報を要素とする配列であるチェック配列が記憶されるチェック配列記憶部と、入力されるＭ文字の候補文字列によって示されるＮ進数の値をインデックス値に変換する基数変換部と、基数変換部によって変換されたインデックス値によってアクセスされるチェック配列のフラグ情報が、文字列が生成されたことを示す場合、候補文字列は一意でないと判定し、文字列が生成されていないことを示す場合、候補文字列は一意であると判定し、インデックス値によってアクセスされるフラグ情報を、文字列が生成されたことを示す値に変更する一意判定部と、を備えることを特徴とする文字列判定装置である。
【０００７】
また、本発明は、前記複数種類の文字の入力を受け付け、当該複数種類の文字に基づいて前記コード体系を生成し、生成した当該コード体系を前記コード体系記憶部に記憶させるコード体系生成部と、を備えることを特徴とする。
【０００８】
また、本発明は、前記Ｍの値と前記Ｎの値の入力を受け付け、前記チェック配列を生成して前記チェック配列記憶部に記憶させるチェック配列生成部と、を備えることを特徴とする。
【０００９】
また、本発明は、前記複数種類の文字には、数字と文字と記号とのいずれかまたは複数の文字が含まれることを特徴とする。
【００１０】
また、本発明は、一意であると判定された文字列が記憶される文字列記憶部を備え、前記一意判定部は、一意であると判定した前記候補文字列を、前記文字列記憶部に記憶させることを特徴とする。
【００１１】
また、本発明は、定められた複数種類の文字の種類の数をＮとし、種類のそれぞれの文字を一意であるＮ進数の値として、値に、配列の各要素にアクセスするためのインデックス値を一意に対応付けたコード体系が記憶されるコード体系記憶部と、複数種類の文字のうちから選択される複数の文字が連結された文字列の桁数をＭとし、インデックス値に対応する文字列が生成されたか否かを示すＮＭ個のフラグ情報を要素とする配列であるチェック配列が記憶されるチェック配列記憶部とを備える文字列判定装置の文字列判定方法であって、入力されるＭ文字の候補文字列によって示されるＮ進数の値をインデックス値に変換するステップと、変換したインデックス値によってアクセスされるチェック配列のフラグ情報が、文字列が生成されたことを示す場合、候補文字列は一意でないと判定し、文字列が生成されていないことを示す場合、候補文字列は一意であると判定し、インデックス値によってアクセスされるフラグ情報を、文字列が生成されたことを示す値に変更するステップと、を備えることを特徴とする。
【発明の効果】
【００１２】
以上説明したように、本発明によれば、複数種類の文字の種類の数をＮとし、それぞれの文字を一意であるＮ進数の値として配列の各要素にアクセスするためのインデックス値を一意に対応付けたコード体系を記憶し、複数種類の文字のうちから選択される複数の文字が連結された文字列の桁数をＭとし、インデックス値に対応する文字列が生成されたか否かを示すＮＭ個のフラグ情報を要素とする配列を記憶し、Ｍ文字の候補文字列によって示されるＮ進数の値をインデックス値に変換し、変換したインデックス値によってアクセスされるチェック配列のフラグ情報が、文字列が生成されたことを示す場合、候補文字列は一意でないと判定し、文字列が生成されていないことを示す場合、候補文字列は一意であると判定するようにしたので、文字列が一意であるか否かを判定することができる。
【図面の簡単な説明】
【００１３】
【図１】本発明の一実施形態による文字列判定装置の構成例を示すブロック図である。
【図２】本発明の一実施形態によるＩＤ判定処理の概要を示す図である。
【図３】本発明の一実施形態によるチェック配列の例を示す図である。
【図４】本発明の一実施形態による文字列判定装置の動作例を示すフローチャートである。
【図５】本発明の一実施形態による比較処理の処理回数を示す図である。
【図６】従来技術による比較処理の処理回数の例を示す図である。
【発明を実施するための形態】
【００１４】
以下、本発明の一実施形態について、図面を参照して説明する。
図１は、本実施形態による文字列判定装置１０の構成を示すブロック図である。文字列判定装置１０は、文字列が一意であるか否かを判定し、一意な文字列を出力するコンピュータ装置であり、入力部１１と、コード体系記憶部１２と、チェック配列記憶部１３と、ＩＤ記憶部１４と、コード体系生成部１５と、チェック配列生成部１６と、基数変換部１７と、一意判定部１８と、出力部１９とを備えている。
【００１５】
入力部１１は、キーボードやマウス等の入力デバイスを備えており、情報の入力を受け付ける。例えば、入力部１１は、ＩＤである文字列に使用する複数種類の文字（文字種）と、生成するＩＤの桁数との入力を受け付ける。図２は、本実施形態によるＩＤ判定処理の概要を示す図である。符号（ａ）に示すように、例えば、入力部１１は、０〜９の数字である１０種の文字種と、ａ〜ｆの英字（小文字）である６種の文字種と、「−」と「＊」との記号である２種の文字種との１８種の文字種を、ＩＤである文字列に使用する文字種として入力を受け付ける。また、ＩＤの桁数である「８」の入力を受け付ける。ここで、文字種の数をＮとし、Ｎ種の文字のうちから選択される複数の文字が連結された文字列であるＩＤの桁数をＭとする。これにより、入力部１１は、ＩＤである文字列に使用する文字種と、Ｍの値とＮの値の入力を受け付ける。
【００１６】
また、入力部１１は、出力するＩＤの候補値である候補ＩＤの入力を受け付ける。候補ＩＤは、ユーザから直接キーボード等に入力されてもよいが、例えば、複数の候補ＩＤが含まれるファイルを予め用意しておき、入力部１１がそのファイルを読み込むようにしてもよい。あるいは、定められた文字種と桁数に基づいて、入力部１１がＭ文字の候補ＩＤをランダムに生成してもよい。
【００１７】
図１に戻り、コード体系記憶部１２には、定められた複数種類の文字の種類の数をＮとし、その種類のそれぞれの文字を一意であるＮ進数の値として、その値に、配列の各要素にアクセスするためのインデックス値を一意に対応付けたコード体系が記憶される。定められた複数の文字種とは、入力部１１に入力された文字種である。文字種には、数字と文字と記号とのいずれかまたは複数の文字が含まれる。配列の各要素にアクセスするためのインデックス値とは、例えば、０以上の１０進数の整数である。ここで、コード体系は、入力部１１に入力された情報に基づいてコード体系生成部１５により生成され、コード体系記憶部１２に記憶される。例えば、図２の（ｂ）に示すように、ＩＤである文字列に使用する文字種として１８種の文字種が入力部１１に入力された場合、入力された文字種のそれぞれを一意である１８進数の値として、その値に対応する１０進数の値が対応付けられたコード体系が生成されて記憶される。この例では、１８進数の値「０」に１０進数の数値「０」が対応付けられ、１８進数の値「１」に１０進数の数値「１」が対応付けられ、以下同様に、１８進数の値「＊」に１０進数の数値「１７」が対応付けられている。ここで、定められた複数の文字種のそれぞれに、一意であるＮ進数の値を割り当てる際には、例えば定められた文字コード体系の順序に沿った順序により割り当ててもよい。
【００１８】
チェック配列記憶部１３には、インデックス値に対応する文字列が生成されたか否かを示すＮＭ個のフラグ情報を要素とする配列であるチェック配列が記憶される。本実施形態では、チェック配列は、０からＮＭ−１までの１０進数により表されるインデックスに、そのインデックスに対応するＩＤが生成されたか否かを示すフラグ情報を対応付けたＮＭ個の要素を持つ配列である。例えば、Ｎが１８であり、Ｍが８である場合、１８８＝１１０１９９６０５７６個の要素を持ち、０から１１０１９９６０５７５までの値をインデックスとするチェック配列が記憶される。この配列の要素数が、ＩＤ空間の広さである。図３は、チェック配列記憶部１３に記憶されるチェック配列の例を示す図である。符号（ａ）は、１００億１個の要素を持つ配列の例であり、０、１、２、３、・・・Ｋ−２、Ｋ−１、Ｋ、Ｋ＋１、Ｋ＋２、・・・１００億までのインデックスのそれぞれに、初期値０の要素であるフラグ情報が対応付けられる。フラグ情報の値が０であれば、そのインデックスに対応するＩＤが生成されていないことを示し、フラグ情報の値が１であれば、そのインデックスに対応するＩＤが生成されたことを示す。チェック配列は、入力部１１に入力された情報に基づいてチェック配列生成部１６により生成され、チェック配列記憶部１３に記憶される。
【００１９】
図１に戻り、ＩＤ記憶部１４には、後述する一意判定部１８によって一意であると判定された文字列であるＩＤが記憶される。
コード体系生成部１５は、入力部１１に入力された複数の文字種に基づいて、その文字種に基づいてコード体系を生成し、生成したコード体系をコード体系記憶部１２に記憶させる。
チェック配列生成部１６は、入力部１１に入力されたＭの値とＮの値に基づいて、チェック配列を生成してチェック配列記憶部１３に記憶させる。
【００２０】
基数変換部１７は、入力部１１に入力されるＭ文字の候補文字列によって示されるＮ進数の値を配列のインデックス値に変換する。本実施形態では、基数変換部１７は、入力部１１に入力されるＭ文字の候補ＩＤによって示されるＮ進数の値を、コード体系記憶部１２に記憶されているコード体系に基づいて１０進数の値に変換する。例えば、図２の符号（ｃ）に示すように、「０００００ｆ９−」が候補ＩＤとして入力された場合、Ｎ進数の値である「０００００ｆ９−」を１０進数の値に変換する。この場合、この図の符号（ｂ）に示すように、１８進数の値「ｆ」は１０進数において「１５」が対応付けられており、１８進数の値「９」は１０進数において「９」が対応付けられており、１８進数の値「−」は１０進数において「１７」が対応付けられているから、変換値は、１５×１８２＋９×１８１＋９×１８０＝５０３８が変換値となる。
【００２１】
図１に戻り、一意判定部１８は、基数変換部１７によって変換されたインデックス値によってアクセスされるチェック配列のフラグ情報が、文字列が生成されたことを示す場合、その候補ＩＤは一意でないと判定し、文字列が生成されていないことを示す場合、その候補ＩＤは一意であると判定する。例えば、図２の符号（ｄ）に示す例では、基数変換部１７によって算出された変換値「５０３８」をインデックスとして対応付けられたフラグ情報を読み出し、読み出したフラグ情報が０であれば、その候補ＩＤは一意であると判定し、フラグ情報が１であれば、その候補ＩＤは一意でないと判定する。図３の例では、符号（ｂ）に示すように、生成した候補ＩＤの変換値が１００億であれば、その値に対応付けられたフラグ情報を読み出し、符号（ｃ）に示すように、生成した候補ＩＤの変換値がＫであれば、その値に対応付けられたフラグ情報を読み出す。このように、変換値をインデックスとして対応付けられた値を即座に読み出すことができるので、そのＩＤ候補値がＩＤとして生成されたものであるかどうかを、効率良く判定できる。
【００２２】
また、一意判定部１８は、候補ＩＤが一意であると判定すると、そのインデックス値に対応付けられてチェック配列記憶部１３に記憶されているチェック配列のフラグ情報を、文字列が生成されたことを示す値（１）に変更して記憶させる。また、一意判定部１８は、一意であると判定した候補ＩＤを、ＩＤとしてＩＤ記憶部１４に記憶させる。
出力部１９は、情報を表示するディスプレイや印刷するプリンタ等を備えており、入力部１１に入力される情報や文字列判定装置１０による処理結果等の情報を出力する。
【００２３】
次に、図面を参照して、本実施形態による文字列判定装置１０の動作例を説明する。図４は、本実施形態による文字列判定装置１０の動作例を示すフローチャートである。
入力部１１は、ＩＤとして使用する文字種と桁数との入力を受け付ける（ステップＳ１）。コード体系生成部１５は、入力された文字種が数字以外の文字種を含むか否かを判定する（ステップＳ２）。コード体系生成部１５は、入力された文字種が数字以外の文字種を含まないと判定すると、ステップＳ４に進む。この場合、ＩＤに使用する文字種は数字のみであり、候補ＩＤの値を１０進数の値としてそのままインデックスにすることができる。このため、チェック配列生成部１６は、桁数に応じたチェック配列を生成してチェック配列記憶部１３に記憶させる。
【００２４】
一方、ステップＳ２において、コード体系生成部１５が、入力された文字種は数字以外の文字種を含むと判定すると、ステップＳ１において入力された文字種と桁数とに基づいてコード体系を生成し、コード体系記憶部１２に記憶させる（ステップＳ３）。また、チェック配列生成部１６は、ステップＳ１において入力された文字種と桁数とに基づいてチェック配列を生成し、チェック配列記憶部１３に記憶させる（ステップＳ４）。入力部１１に候補ＩＤが入力されると（ステップＳ５）、基数変換部１７が、入力されたＩＤの基数変換を行う。そして、一意判定部１８が、チェック配列記憶部１３に記憶されているチェック配列を読み出し、候補ＩＤの変換値に対応付けられたフラグ情報を読み出す。
【００２５】
一意判定部１８は、読み出したフラグ情報が、その候補ＩＤが生成されたことを示すか否かを判定する（ステップＳ６）。一意判定部１８は、読み出したフラグ情報が、候補ＩＤが生成されたことを示すと判定した場合（ステップＳ６：ＹＥＳ）、その候補ＩＤをＩＤとしてＩＤ記憶部１４に記憶させる（ステップＳ７）。また、一意判定部１８は、その候補ＩＤの変換値に対応付けられたチェック配列のフラグ情報を、その候補ＩＤが生成されたことを示す「１」に更新してチェック配列記憶部１３に記憶させる（ステップＳ８）。一方、ステップＳ６において、一意判定部１８が、読み出したフラグ情報は候補ＩＤが生成されていないことを示すと判定した場合（ステップＳ６：ＮＯ）、その候補ＩＤをＩＤとしてＩＤ記憶部１４に記憶させない。この場合、一意判定部１８は、その候補ＩＤは生成済みであることを示す情報を、出力部１９に出力してもよい。
【００２６】
なお、ステップＳ５において、複数の候補ＩＤが入力されている場合には、文字列判定装置１０は、その複数の候補ＩＤの全てについて、ステップＳ６からステップＳ９までの処理を繰り返して行う。あるいは、例えば目標件数を定めておき、目標件数のＩＤがＩＤ記憶部１４に記憶されるまで、入力部１１がランダムに候補ＩＤを生成し続け、ステップＳ６からステップＳ９までの処理を繰り返して行うこともできる。
【００２７】
以上説明したように、本実施形態によれば、図５に示すように、２個目の候補ＩＤが一であるか否かを判定する際に、その候補ＩＤの変換値をインデックスとして対応付けられたフラグ情報を参照すればよいため、１回の比較処理を行えばよい。また、Ｎ個目の候補ＩＤが一であるか否かを判定する際にも、その候補ＩＤの変換値をインデックスとして対応付けられたフラグ情報を参照すればよいため、１回の比較処理を行えばよい。すなわち、図６に示した従来の方法では、比較処理の回数はＯ（Ｎ）であり、生成したＩＤ数に応じて増加する。図５は、本実施形態による比較処理の処理回数を示す図である。本実施形態によれば、比較処理の回数はＯ（１）であり、生成したＩＤ数によらず一定である。さらに、従来の方法では、比較処理に必要なチェック配列のリソースは、ひとつのＩＤに必要な領域×ＩＤ数分確保する必要があるが、本実施形態によれば、チェック配列記憶部１３に記憶させるチェック配列のリソースは、ＩＤが表せるＩＤ空間の広さ×１ビットであり、リソースを大幅に削減できる。
【００２８】
このように、本実施形態によれば、数字と文字や記号が含まれるランダムなＩＤを生成する際に、そのＩＤが一意であるか（重複するか）否かを判定するための処理量、リソース量を低減することができ、効率良くＩＤを生成することができる。これにより、大量のＩＤを生成する場合にも、効率良く重複しないＩＤを生成することができる。
【００２９】
なお、本発明における処理部の機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することにより文字列の判定を行ってもよい。なお、ここでいう「コンピュータシステム」とは、ＯＳや周辺機器等のハードウェアを含むものとする。また、「コンピュータシステム」は、ホームページ提供環境（あるいは表示環境）を備えたＷＷＷシステムも含むものとする。また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ＲＯＭ、ＣＤ−ＲＯＭ等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムが送信された場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリ（ＲＡＭ）のように、一定時間プログラムを保持しているものも含むものとする。
【００３０】
また、上記プログラムは、このプログラムを記憶装置等に格納したコンピュータシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピュータシステムに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク（通信網）や電話回線等の通信回線（通信線）のように情報を伝送する機能を有する媒体のことをいう。また、上記プログラムは、前述した機能の一部を実現するためのものであっても良い。さらに、前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル（差分プログラム）であっても良い。
【符号の説明】
【００３１】
１０  文字列判定装置
１１  入力部
１２  コード体系記憶部
１３  チェック配列記憶部
１４  ＩＤ記憶部
１５  コード体系生成部
１６  チェック配列生成部
１７  基数変換部
１８  一意判定部
１９  出力部
【図１】
0005838100.tif 000002
【図２】
0005838100.tif 000003
【図３】
0005838100.tif 000004
【図４】
0005838100.tif 000005
【図５】
0005838100.tif 000006
【図６】
0005838100.tif 000007