IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 富士通株式会社の特許一覧

特開2024-77759情報処理プログラム、情報処理方法、および情報処理装置
<>
  • 特開-情報処理プログラム、情報処理方法、および情報処理装置 図1
  • 特開-情報処理プログラム、情報処理方法、および情報処理装置 図2
  • 特開-情報処理プログラム、情報処理方法、および情報処理装置 図3
  • 特開-情報処理プログラム、情報処理方法、および情報処理装置 図4
  • 特開-情報処理プログラム、情報処理方法、および情報処理装置 図5
  • 特開-情報処理プログラム、情報処理方法、および情報処理装置 図6
  • 特開-情報処理プログラム、情報処理方法、および情報処理装置 図7
  • 特開-情報処理プログラム、情報処理方法、および情報処理装置 図8
  • 特開-情報処理プログラム、情報処理方法、および情報処理装置 図9
  • 特開-情報処理プログラム、情報処理方法、および情報処理装置 図10
  • 特開-情報処理プログラム、情報処理方法、および情報処理装置 図11
  • 特開-情報処理プログラム、情報処理方法、および情報処理装置 図12
  • 特開-情報処理プログラム、情報処理方法、および情報処理装置 図13
  • 特開-情報処理プログラム、情報処理方法、および情報処理装置 図14
  • 特開-情報処理プログラム、情報処理方法、および情報処理装置 図15
  • 特開-情報処理プログラム、情報処理方法、および情報処理装置 図16
  • 特開-情報処理プログラム、情報処理方法、および情報処理装置 図17
  • 特開-情報処理プログラム、情報処理方法、および情報処理装置 図18
  • 特開-情報処理プログラム、情報処理方法、および情報処理装置 図19
  • 特開-情報処理プログラム、情報処理方法、および情報処理装置 図20
  • 特開-情報処理プログラム、情報処理方法、および情報処理装置 図21
  • 特開-情報処理プログラム、情報処理方法、および情報処理装置 図22
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024077759
(43)【公開日】2024-06-10
(54)【発明の名称】情報処理プログラム、情報処理方法、および情報処理装置
(51)【国際特許分類】
   G06F 16/22 20190101AFI20240603BHJP
   G06F 7/24 20060101ALI20240603BHJP
【FI】
G06F16/22
G06F7/24 D
【審査請求】未請求
【請求項の数】5
【出願形態】OL
(21)【出願番号】P 2022189894
(22)【出願日】2022-11-29
(71)【出願人】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】100104190
【弁理士】
【氏名又は名称】酒井 昭徳
(72)【発明者】
【氏名】河東 孝
【テーマコード(参考)】
5B175
【Fターム(参考)】
5B175CA07
5B175KA10
(57)【要約】
【課題】データ間の順序関係を管理し易くすること。
【解決手段】フラグ情報fは、値が0であれば、上位レンジに、第1の範囲を設定し、中間レンジ1に、第2の範囲を設定し、中間レンジ2に、第3の範囲を設定し、下位レンジに、第4の範囲を設定することを示す。フラグ情報fは、値が1であれば、上位レンジに、第2の範囲を設定し、中間レンジ1に、第1の範囲を設定し、中間レンジ2に、第4の範囲を設定し、下位レンジに、第3の範囲を設定することを示す。情報処理装置100は、フラグ情報によって、第1の範囲と、第2の範囲と、第3の範囲と、第4の範囲との順序を切り替えることにより、データの順序を管理するための整数値として設定可能な値の範囲を使いまわす。情報処理装置100は、整数値として設定可能な値が枯渇することを防止する。
【選択図】図6
【特許請求の範囲】
【請求項1】
データ群に含まれるデータの数の定数倍を表現可能な桁数の値を示す、前記データ群に含まれるそれぞれ異なるデータに対応付けられた複数の値データを、順序付けて記憶し、
前記桁数の値に対して設定された、少なくとも前記データの数をそれぞれ表現可能な複数の範囲のうち、第1の範囲と第2の範囲との上下関係を規定するフラグ情報を記憶し、
前記フラグ情報を参照して、前記複数の値データのそれぞれの値データに、前記第1の範囲と前記第2の範囲とのうち、下位の範囲に属する値を設定し、
前記フラグ情報を参照して、前記複数の値データのうち、順序を先頭に移動する第1の値データの指定を受け付ける都度、前記第1の値データが、他の値データより前の順序になるよう、前記第1の値データに、前記第1の範囲と前記第2の範囲とのうち、上位の範囲に属する値を設定し、
前記複数の値データのうち、前記下位の範囲に属する値を設定した値データが存在しなくなると、前記第1の範囲と前記第2の範囲との上下関係を入れ替えるよう、前記フラグ情報を更新する、
処理をコンピュータに実行させることを特徴とする情報処理プログラム。
【請求項2】
前記フラグ情報は、前記複数の範囲のうち、前記第1の範囲と前記第2の範囲との上下関係と、前記第1の範囲と前記第2の範囲との下位に存在する第3の範囲と第4の範囲との上下関係を規定し、
前記フラグ情報を参照して、前記複数の値データのそれぞれの値データに、前記第1の範囲と前記第2の範囲とのうち、下位の範囲に属する値、または、前記第3の範囲と前記第4の範囲とのうち、上位の範囲に属する値を設定し、
前記フラグ情報を参照して、前記第1の値データの指定を受け付ける都度、前記第1の値データが、他の値データより前の順序になるよう、前記第1の値データに、前記第1の範囲と前記第2の範囲とのうち、上位の範囲に属する値を設定し、
前記フラグ情報を参照して、前記複数の値データのうち、順序を末尾に移動する第2の値データの指定を受け付ける都度、前記第2の値データが、他の値データより後の順序になるよう、前記第2の値データに、前記第3の範囲と前記第4の範囲とのうち、下位の範囲に属する値を設定し、
前記フラグ情報を参照して、前記第1の範囲と前記第2の範囲とのうち、下位の範囲に属する値、および、前記第3の範囲と前記第4の範囲とのうち、上位の範囲に属する値を設定した値データが存在しなくなると、前記第1の範囲と前記第2の範囲との上下関係を入れ替えるよう、かつ、前記第3の範囲と前記第4の範囲との上下関係を入れ替えるよう、前記フラグ情報を更新する、
処理を前記コンピュータに実行させることを特徴とする請求項1に記載の情報処理プログラム。
【請求項3】
前記フラグ情報を参照して、前記第1の値データの指定を受け付け、前記第1の値データに、前記第1の範囲と前記第2の範囲とのうち、上位の範囲に属する値を設定する際、前記第1の範囲と前記第2の範囲とのうち、下位の範囲に属する値を設定した値データ、および、前記第3の範囲と前記第4の範囲とのうち、上位の範囲に属する値を設定した値データのうち、最後の順序である第3の値データに、前記第3の範囲と前記第4の範囲とのうち、下位の範囲に属する値を設定し、
前記フラグ情報を参照して、前記第2の値データの指定を受け付け、前記第2の値データに、前記第3の範囲と前記第4の範囲とのうち、下位の範囲に属する値を設定する際、前記第1の範囲と前記第2の範囲とのうち、下位の範囲に属する値を設定した値データ、および、前記第3の範囲と前記第4の範囲とのうち、上位の範囲に属する値を設定した値データのうち、最初の順序である第4の値データに、前記第1の範囲と前記第2の範囲とのうち、上位の範囲に属する値を設定する、
処理を前記コンピュータに実行させることを特徴とする請求項2に記載の情報処理プログラム。
【請求項4】
データ群に含まれるデータの数の定数倍を表現可能な桁数の値を示す、前記データ群に含まれるそれぞれ異なるデータに対応付けられた複数の値データを、順序付けて記憶し、
前記桁数の値に対して設定された、少なくとも前記データの数をそれぞれ表現可能な複数の範囲のうち、第1の範囲と第2の範囲との上下関係を規定するフラグ情報を記憶し、
前記フラグ情報を参照して、前記複数の値データのそれぞれの値データに、前記第1の範囲と前記第2の範囲とのうち、下位の範囲に属する値を設定し、
前記フラグ情報を参照して、前記複数の値データのうち、順序を先頭に移動する第1の値データの指定を受け付ける都度、前記第1の値データが、他の値データより前の順序になるよう、前記第1の値データに、前記第1の範囲と前記第2の範囲とのうち、上位の範囲に属する値を設定し、
前記複数の値データのうち、前記下位の範囲に属する値を設定した値データが存在しなくなると、前記第1の範囲と前記第2の範囲との上下関係を入れ替えるよう、前記フラグ情報を更新する、
処理をコンピュータが実行することを特徴とする情報処理方法。
【請求項5】
データ群に含まれるデータの数の定数倍を表現可能な桁数の値を示す、前記データ群に含まれるそれぞれ異なるデータに対応付けられた複数の値データを、順序付けて記憶し、
前記桁数の値に対して設定された、少なくとも前記データの数をそれぞれ表現可能な複数の範囲のうち、第1の範囲と第2の範囲との上下関係を規定するフラグ情報を記憶し、
前記フラグ情報を参照して、前記複数の値データのそれぞれの値データに、前記第1の範囲と前記第2の範囲とのうち、下位の範囲に属する値を設定し、
前記フラグ情報を参照して、前記複数の値データのうち、順序を先頭に移動する第1の値データの指定を受け付ける都度、前記第1の値データが、他の値データより前の順序になるよう、前記第1の値データに、前記第1の範囲と前記第2の範囲とのうち、上位の範囲に属する値を設定し、
前記複数の値データのうち、前記下位の範囲に属する値を設定した値データが存在しなくなると、前記第1の範囲と前記第2の範囲との上下関係を入れ替えるよう、前記フラグ情報を更新する、
制御部を有することを特徴とする情報処理装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理プログラム、情報処理方法、および情報処理装置に関する。
【背景技術】
【0002】
従来、複数のデータに含まれるデータ間の順序関係を管理することが望まれる。例えば、複数のデータに含まれるデータ間の順序関係を変更可能にしたり、複数のデータに含まれるデータ間の順序関係を参照可能にしたりすることが望まれる。例えば、カウンタ値を用意し、複数のデータに含まれるいずれかのデータを更新する都度、カウンタ値を当該いずれかのデータに付与しつつ、カウントアップすることにより、更新にかかる、複数のデータに含まれるデータ間の順序関係を管理することが考えられる。
【0003】
先行技術としては、例えば、被制御体を駆動する駆動軸の回転数のカウンタのカウントデータを、当該カウントデータから被制御体の所定点が一巡回または複数巡回におけるカウント数を差し引いた値に書き換えるものがある。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開平4-215011号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、従来技術では、データ間の順序関係を管理することが難しい場合がある。例えば、カウントアップしたカウンタ値の桁数が、予め想定した上限の桁数を超えると、データ間の順序関係を適切に管理することができなくなってしまうことがある。
【0006】
1つの側面では、本発明は、データ間の順序関係を管理し易くすることを目的とする。
【課題を解決するための手段】
【0007】
1つの実施態様によれば、データ群に含まれるデータの数の定数倍を表現可能な桁数の値を示す、前記データ群に含まれるそれぞれ異なるデータに対応付けられた複数の値データを、順序付けて記憶し、前記桁数の値に対して設定された、少なくとも前記データの数をそれぞれ表現可能な複数の範囲のうち、第1の範囲と第2の範囲との上下関係を規定するフラグ情報を記憶し、前記フラグ情報を参照して、前記複数の値データのそれぞれの値データに、前記第1の範囲と前記第2の範囲とのうち、下位の範囲に属する値を設定し、前記フラグ情報を参照して、前記複数の値データのうち、順序を先頭に移動する第1の値データの指定を受け付ける都度、前記第1の値データが、他の値データより前の順序になるよう、前記第1の値データに、前記第1の範囲と前記第2の範囲とのうち、上位の範囲に属する値を設定し、前記複数の値データのうち、前記下位の範囲に属する値を設定した値データが存在しなくなると、前記第1の範囲と前記第2の範囲との上下関係を入れ替えるよう、前記フラグ情報を更新する情報処理プログラム、情報処理方法、および情報処理装置が提案される。
【発明の効果】
【0008】
一態様によれば、データ間の順序関係を管理し易くすることが可能になる。
【図面の簡単な説明】
【0009】
図1図1は、実施の形態にかかる情報処理方法の一実施例を示す説明図である。
図2図2は、情報処理システム200の一例を示す説明図である。
図3図3は、情報処理装置100のハードウェア構成例を示すブロック図である。
図4図4は、情報処理装置100の機能的構成例を示すブロック図である。
図5図5は、配列情報500を記憶する一例を示す説明図である。
図6図6は、フラグ情報と各種レンジとの関係性の一例を示す説明図である。
図7図7は、配列の要素の順序を管理する一例を示す説明図(その1)である。
図8図8は、配列の要素の順序を管理する一例を示す説明図(その2)である。
図9図9は、配列の要素の順序を管理する一例を示す説明図(その3)である。
図10図10は、配列の要素の順序を管理する一例を示す説明図(その4)である。
図11図11は、配列の要素の順序を管理する一例を示す説明図(その5)である。
図12図12は、配列の要素の順序を管理する一例を示す説明図(その6)である。
図13図13は、配列の要素の順序を管理する一例を示す説明図(その7)である。
図14図14は、配列の要素の順序を管理する一例を示す説明図(その8)である。
図15図15は、ファイルを管理する具体例を示す説明図である。
図16図16は、情報処理装置100による効果の一例を示す説明図である。
図17図17は、初期化処理手順の一例を示すフローチャートである。
図18図18は、モード変更処理手順の一例を示すフローチャートである。
図19図19は、ならし移動処理手順の一例を示すフローチャートである。
図20図20は、先頭移動処理手順の一例を示すフローチャートである。
図21図21は、末尾移動処理手順の一例を示すフローチャートである。
図22図22は、比較処理手順の一例を示すフローチャートである。
【発明を実施するための形態】
【0010】
以下に、図面を参照して、本発明にかかる情報処理プログラム、情報処理方法、および情報処理装置の実施の形態を詳細に説明する。
【0011】
(実施の形態にかかる情報処理方法の一実施例)
図1は、実施の形態にかかる情報処理方法の一実施例を示す説明図である。情報処理装置100は、複数のデータに含まれるデータ間の順序関係を管理するためのコンピュータである。情報処理装置100は、例えば、サーバ、または、PC(Personal Computer)などである。
【0012】
複数のデータに含まれるデータ間の順序関係を管理することが望まれる場合がある。例えば、複数のデータに含まれるデータ間の順序関係を変更可能にすることが望まれる。具体的には、複数のデータに含まれるいずれかのデータの順序を、最初の順序、または、最後の順序に変更するといった「移動の処理」を実施可能にすることが望まれる。
【0013】
例えば、複数のデータに含まれるデータ間の順序関係を参照可能にすることが望まれる。具体的には、複数のデータに含まれる異なる2つのデータのそれぞれのデータの順序を比較し、2つのデータのいずれのデータの順序が、他方のデータの順序より前の順序であるかを判断するといった「比較の処理」を実施可能にすることが望まれる。
【0014】
また、複数のデータを活用する観点から、複数のデータに含まれるデータ間の順序関係を管理する際にかかる処理負担および処理時間の低減化を図ることが望まれる。複数のデータは、例えば、リアルタイム取引、オンラインゲーム、自動運転、または、セキュリティ対策などに活用されるデータであることが考えられる。
【0015】
しかしながら、従来では、複数のデータに含まれるデータ間の順序関係を管理することが難しい場合がある。複数のデータに含まれるデータ間の順序関係を管理する際にかかる処理負担および処理時間の増大化を招くことがある。
【0016】
例えば、複数のデータのそれぞれのデータを、配列の成分として設定することにより、複数のデータに含まれるデータ間の順序関係を管理する手法1が考えられる。具体的には、それぞれのデータを設定した成分のインデックスを、当該データの順序を示す値として利用する。具体的には、第1データを設定した成分のインデックスが、第2データを設定した成分のインデックスより小さければ、当該第1データの順序が、当該第2データの順序より前の順序であると判断することにより、上述した「比較の処理」を実施する。具体的には、複数のデータに含まれるいずれかのデータの順序を、最初の順序、または、最後の順序に変更する際、複数のデータのそれぞれのデータを、配列の成分として設定し直すことにより、上述した「移動の処理」を実施する。
【0017】
この手法1では、後述する手法2および手法3などに比べて、上述した「移動の処理」にかかる処理負担および処理時間が大きくなるという問題がある。具体的には、複数のデータのそれぞれのデータを、配列の成分として設定し直すことになるため、上述した「移動の処理」にかかる処理負担および処理時間が、O(N)の大きさになってしまう。O(・)は、オーダである。Nは、データの数である。
【0018】
例えば、複数のデータのそれぞれのデータを、ポインタによって接続されるリストの成分として設定することにより、複数のデータに含まれるデータ間の順序関係を管理する手法2が考えられる。具体的には、ポインタに従って、リストの成分を、先頭から末尾まで順に辿ることにより、異なる2つのデータのいずれのデータを設定した成分の方が、他方のデータを設定した成分よりも前に存在するのかを判断し、上述した「比較の処理」を実施する。具体的には、ポインタによるリストの成分間の接続関係を変更し、複数のデータのいずれかのデータを設定した成分を、リストの先頭または末尾に移動することにより、上述した「移動の処理」を実施する。
【0019】
この手法2では、上述した手法1および後述する手法3などに比べて、上述した「比較の処理」にかかる処理負担および処理時間が大きくなるという問題がある。具体的には、ポインタに従って、リストの成分を、先頭から末尾まで順に辿ることになるため、上述した「比較の処理」にかかる処理負担および処理時間が、O(N)の大きさになってしまう。O(・)は、オーダである。Nは、データの数である。
【0020】
例えば、複数のデータのそれぞれのデータを、ツリー構造のノードとして設定することにより、複数のデータに含まれるデータ間の順序関係を管理する手法3が考えられる。
【0021】
この手法3では、上述した手法1などに比べて、上述した「比較の処理」にかかる処理負担および処理時間が大きくなるという問題がある。具体的には、上述した「比較の処理」にかかる処理負担および処理時間が、O(logN)の大きさになってしまう。O(・)は、オーダである。Nは、データの数である。
【0022】
また、この手法3では、上述した手法2などに比べて、上述した「移動の処理」にかかる処理負担および処理時間が大きくなるという問題がある。具体的には、上述した「移動の処理」にかかる処理負担および処理時間が、O(logN)の大きさになってしまう。O(・)は、オーダである。Nは、データの数である。
【0023】
このように、上述した「比較の処理」にかかる処理負担および処理時間と、上述した「移動の処理」にかかる処理負担および処理時間とを、両方とも効率よく低減することが難しく、複数のデータに含まれるデータ間の順序関係を管理することが難しい。
【0024】
これに対し、例えば、カウンタ値を用意し、カウンタ値を利用することにより、複数のデータに含まれるデータ間の順序関係を管理する手法4が考えられる。例えば、複数のデータに含まれるいずれかのデータの順序を、最初の順序に変更する都度、用意したカウンタ値を当該いずれかのデータに付与しつつ、カウンタ値をカウントアップしておくことにより、上述した「移動の処理」を実施する。具体的には、それぞれのデータに付与したカウンタ値を比較することにより、上述した「比較の処理」を実施する。また、カウンタ値に代わり、タイムスタンプを利用することも考えられる。
【0025】
この手法4では、カウントアップしたカウンタ値の桁数が、予め想定した上限の桁数を超えると、データ間の順序関係を適切に管理することができなくなってしまうという問題がある。例えば、2つのデータのそれぞれのデータに付与したカウンタ値を比較した結果、2つのデータの一方のデータの順序が、他方のデータの順序より前の順序であるか否かを誤って判断してしまうことがある。
【0026】
これらのことから、上述した「比較の処理」にかかる処理負担および処理時間と、上述した「移動の処理」にかかる処理負担および処理時間とを、両方ともを効率よく低減しつつ、データ間の順序関係を適切に管理することが望まれる。
【0027】
そこで、本実施の形態では、データ間の順序関係を管理し易くすることができる情報処理方法について説明する。
【0028】
図1において、情報処理装置100は、データ群を記憶する。情報処理装置100は、データ群に含まれるそれぞれ異なるデータに対応付けられた複数の値データ101を、順序付けて記憶する。値データ101は、例えば、所定の桁数の値を示す。所定の桁数は、例えば、データ群に含まれるデータの数の定数倍を表現可能な桁数である。
【0029】
情報処理装置100は、例えば、(logN+x)の桁数の値を示す、データ群に含まれるそれぞれ異なるデータに対応付けられた複数の値データ101を、順序付けて記憶する。Nは、データ群に含まれるデータの数である。xは、例えば、2である。所定の桁数の値は、例えば、「000…0」~「111…1」の値である。所定の桁数の値に対して、少なくともデータの数をそれぞれ表現可能な複数の範囲が設定される。例えば、所定の桁数の値に対して、「000…0」~「011…1」の範囲と、「100…0」~「111…1」の範囲とが設定される。
【0030】
情報処理装置100は、所定の桁数の値に対して設定された複数の範囲のうち、第1の範囲110と第2の範囲120との上下関係(順序の前後関係)を規定するフラグ情報を記憶する。第1の範囲110は、例えば、「000…0」~「011…1」の範囲である。第2の範囲120は、例えば、「100…0」~「111…1」の範囲である。初期状態では、例えば、第1の範囲110が、第2の範囲120の上位であるとする。ここで、第1の範囲110が、第2の範囲120の上位であるということは、データの順序関係において、第1の範囲110に含まれる値が第2の範囲120に含まれる値よりも前であることを意味する。
【0031】
フラグ情報は、例えば、値が0である場合、第1の範囲110が、第2の範囲120の上位であることを示す。フラグ情報は、例えば、値が1である場合、第2の範囲120が、第1の範囲110の上位であることを示す。情報処理装置100は、例えば、初期状態では、第1の範囲110が、第2の範囲120の上位であることを示すフラグ情報=0を記憶する。
【0032】
(1-1)情報処理装置100は、フラグ情報を参照して、第1の範囲110と第2の範囲120とのうち、下位の範囲を特定する。情報処理装置100は、例えば、フラグ情報=0であるため、第1の範囲110と第2の範囲120とのうち、下位の範囲として第2の範囲120を特定する。
【0033】
情報処理装置100は、複数の値データ101のそれぞれの値データ101に、特定した下位の範囲に属する値を設定する。情報処理装置100は、例えば、複数の値データ101のそれぞれの値データ101に、下位の範囲として特定した第2の範囲120に属する値を設定する。情報処理装置100は、具体的には、複数の値データ101のそれぞれの値データ101に、下位の範囲として特定した第2の範囲120に属する同一の値を設定する。
【0034】
(1-2)情報処理装置100は、複数の値データ101のうち、順序を先頭に移動する第1の値データ101の指定を受け付ける。情報処理装置100は、例えば、利用者の操作入力に基づき、順序を先頭に移動する第1の値データ101の指定を受け付ける。図1の例では、情報処理装置100は、具体的には、順序を先頭に移動する第1の値データ101aの指定を受け付ける。
【0035】
情報処理装置100は、第1の値データ101の指定を受け付ける都度、フラグ情報を参照して、第1の範囲110と第2の範囲120とのうち、上位の範囲を特定する。図1の例では、情報処理装置100は、具体的には、フラグ情報=0であるため、第1の範囲110と第2の範囲120とのうち、上位の範囲として第1の範囲110を特定する。
【0036】
情報処理装置100は、第1の値データ101の指定を受け付ける都度、指定の第1の値データ101が、他の値データ101より前の順序になるよう、指定の第1の値データ101に、特定した上位の範囲に属する値を設定する。情報処理装置100は、例えば、指定の第1の値データ101に、特定した上位の範囲に属する値のうち、他の値データ101に設定済みのいずれの値よりも小さい値を設定する。図1の例では、情報処理装置100は、具体的には、指定の第1の値データ101aに、上位の範囲として特定した第1の範囲110に属する値「010…0」を設定する。
【0037】
これにより、情報処理装置100は、上位の範囲に属する値を、2以上の値データ101に設定済みであれば、上位の範囲に属する値の中で、2以上の値データ101のそれぞれの値データ101に設定済みの値同士を比較することができる。情報処理装置100は、比較した結果に基づいて、2以上の値データ101のそれぞれの値データ101の順序関係を判断可能にすることができる。情報処理装置100は、上位の範囲に属する値を設定済みの値データ101が、下位の範囲に属する値を設定済みの値データ101よりも前の順序であることを判断可能にすることができる。
【0038】
(1-3)情報処理装置100は、複数の値データ101のうち、下位の範囲に属する値を設定した値データ101が存在しなくなると、第1の範囲110と第2の範囲120との上下関係を入れ替えるよう、フラグ情報を更新する。図1の例では、情報処理装置100は、具体的には、下位の範囲として特定した第2の範囲120に属する値を設定した値データ101が存在しなくなると、フラグ情報=1に更新する。
【0039】
これにより、情報処理装置100は、再び、複数の値データ101に、下位の範囲に属する値を設定した状態に戻すことができる。そして、情報処理装置100は、(1-2)と同様に、下位の範囲に属する値を設定済みの値データ101に、上位の範囲に属する値を設定可能にすることができる。このため、情報処理装置100は、値データ101に設定する値が枯渇してしまうことを防止し、データ群に含まれる、それぞれ異なる値データ101に対応付けられた2以上のデータの順序関係を適切に管理可能にすることができる。
【0040】
また、情報処理装置100は、値データ101に設定した値を単純に比較すれば、データ群に含まれる、それぞれ異なる値データ101に対応付けられた2以上のデータの順序関係を判断することができる。このため、情報処理装置100は、データ群に含まれる、それぞれ異なる値データ101に対応付けられた2以上のデータの順序関係を判断する際にかかる処理負担および処理時間の低減化を図ることができる。情報処理装置100は、例えば、データ群に含まれる、それぞれ異なる値データ101に対応付けられた2以上のデータの順序関係を判断する際にかかる処理負担および処理時間を、O(1)に抑制することができる。
【0041】
また、情報処理装置100は、指定の第1の値データ101に、上位の範囲に属する値を設定すれば、データ群のうち、指定の第1の値データ101に対応付けられたデータの順序を、最初の順序に変更することができる。このため、情報処理装置100は、データ群のうち、指定の第1の値データ101に対応付けられたデータの順序を、最初の順序に変更する際にかかる処理負担および処理時間の低減化を図ることができる。情報処理装置100は、例えば、データ群のうち、指定の第1の値データ101に対応付けられたデータの順序を、最初の順序に変更する際にかかる処理負担および処理時間を、O(1)に抑制することができる。
【0042】
ここでは、情報処理装置100が、指定の第1の値データ101が、他の値データ101より前の順序になるよう、指定の第1の値データ101に、上位の範囲に属する値を設定可能である場合について説明したが、これに限らない。例えば、情報処理装置100が、指定の第2の値データ101が、他の値データ101より後の順序になるよう、指定の第2の値データ101に、下位の範囲に属する値を設定可能である場合があってもよい。
【0043】
例えば、情報処理装置100が、指定の第1の値データ101に、上位の範囲に属する値を設定可能であり、かつ、指定の第2の値データ101に、下位の範囲に属する値を設定可能である場合があってもよい。この場合、所定の桁数の値に対して、それぞれ異なる4つの範囲が設定されることが考えられる。
【0044】
ここでは、情報処理装置100が、単独で動作する場合について説明したが、これに限らない。例えば、情報処理装置100が、他のコンピュータと協働する場合があってもよい。例えば、情報処理装置100が、順序を先頭に移動する第1の値データ101の指定を、他のコンピュータから受信することにより受け付ける場合があってもよい。例えば、情報処理装置100が、複数の値データ101を記憶せず、複数の値データ101を記憶する他のコンピュータを制御する場合があってもよい。
【0045】
また、例えば、複数のコンピュータが、協働して情報処理装置100としての機能を実現する場合があってもよい。具体的には、クラウド上に、情報処理装置100としての機能が実現される場合があってもよい。例えば、情報処理装置100が、単独で動作せず、他のコンピュータと協働する場合の一例については、図2を用いて後述する。
【0046】
(情報処理システム200の一例)
次に、図2を用いて、図1に示した情報処理装置100を適用した、情報処理システム200の一例について説明する。
【0047】
図2は、情報処理システム200の一例を示す説明図である。図2において、情報処理システム200は、情報処理装置100と、情報蓄積装置201と、クライアント装置202とを含む。
【0048】
情報処理システム200において、情報処理装置100とクライアント装置202とは、有線または無線のネットワーク210を介して接続される。ネットワーク210は、例えば、LAN(Local Area Network)、WAN(Wide Area Network)、インターネットなどである。
【0049】
情報蓄積装置201は、例えば、データ群を記憶するコンピュータである。情報蓄積装置201は、例えば、データ群に含まれるそれぞれ異なるデータに対応付けられた複数の値データを、順序付けて記憶する。情報蓄積装置201は、具体的には、(logN+3)の桁数の値を示す、データ群に含まれるそれぞれ異なるデータに対応付けられた複数の値データを、順序付けて記憶する。Nは、データ群に含まれるデータの数である。
【0050】
情報処理装置100は、例えば、所定の桁数の値に対して設定された複数の範囲のうち、少なくともいずれかの範囲同士の上限関係を規定するフラグ情報を記憶する。情報蓄積装置201は、例えば、所定の桁数の値に対して設定された複数の範囲のうち、第1の範囲と第2の範囲との上限関係、および、第3の範囲と第4の範囲との上下関係を規定するフラグ情報を記憶する。第3の範囲と第4の範囲とは、例えば、第1の範囲と第2の範囲との下位である。フラグ情報は、例えば、値が0である場合、第1の範囲が、第2の範囲の上位であり、かつ、第3の範囲が、第4の範囲の上位であることを示す。フラグ情報は、例えば、値が1である場合、第2の範囲が、第1の範囲の上位であり、かつ、第4の範囲が、第3の範囲の上位であることを示す。
【0051】
情報蓄積装置201は、例えば、情報処理装置100の制御に従い、データ群に含まれるデータを更新する。情報蓄積装置201は、例えば、情報処理装置100の制御に従い、複数の値データの全体、または、いずれかの値データを更新する。情報蓄積装置201は、例えば、情報処理装置100の制御に従い、フラグ情報を更新する。情報蓄積装置201は、例えば、サーバ、PC、または、ストレージ装置などである。
【0052】
情報処理装置100は、情報蓄積装置201を制御するコンピュータである。情報処理装置100は、例えば、複数の値データのそれぞれの値データに、第1の範囲と第2の範囲とのうち下位の範囲に属する値を設定するよう、情報蓄積装置201を制御する。情報処理装置100は、具体的には、複数の値データのそれぞれの値データに、第1の範囲と第2の範囲とのうち下位の範囲に属する同一の値を設定するよう、情報蓄積装置201を制御する。これにより、情報処理装置100は、複数の値データを初期化することができる。
【0053】
情報処理装置100は、複数の値データのうち、順序を先頭に移動する第1の値データの指定を受け付ける。情報処理装置100は、例えば、順序を先頭に移動する第1の値データの指定を含む通知を、クライアント装置202から受信することにより、順序を先頭に移動する第1の値データの指定を受け付ける。通知は、具体的には、データ群のいずれかのデータの指定を含むことにより、指定のデータに対応付けられた第1の値データを間接的に指定していてもよい。
【0054】
情報処理装置100は、第1の値データの指定を受け付ける都度、フラグ情報を参照して、指定の第1の値データに、第1の範囲と第2の範囲とのうち、上位の範囲に属する値を設定するよう、情報蓄積装置201を制御する。情報処理装置100は、例えば、指定の第1の値データが、他の値データより前の順序になるよう、指定の第1の値データに、第1の範囲と第2の範囲とのうち、上位の範囲に属する値を設定するよう、情報蓄積装置201を制御する。これにより、情報処理装置100は、指定の第1の値データの順序を、他の値データの順序より前の順序に設定することができ、データ群のうち、指定の第1の値データに対応付けられたデータの順序を適切に管理することができる。
【0055】
情報処理装置100は、複数の値データのうち、順序を末尾に移動する第2の値データの指定を受け付ける。情報処理装置100は、例えば、順序を末尾に移動する第2の値データの指定を含む通知を、クライアント装置202から受信することにより、順序を先頭に移動する第2の値データの指定を受け付ける。通知は、具体的には、データ群のいずれかのデータの指定を含むことにより、指定のデータに対応付けられた第2の値データを間接的に指定していてもよい。
【0056】
情報処理装置100は、第2の値データの指定を受け付ける都度、フラグ情報を参照して、指定の第2の値データに、第3の範囲と第4の範囲とのうち、下位の範囲に属する値を設定するよう、情報蓄積装置201を制御する。情報処理装置100は、例えば、指定の第2の値データが、他の値データより後の順序になるよう、指定の第2の値データに、第3の範囲と第4の範囲とのうち、下位の範囲に属する値を設定するよう、情報蓄積装置201を制御する。これにより、情報処理装置100は、指定の第2の値データの順序を、他の値データの順序より後の順序に設定することができ、データ群のうち、指定の第2の値データに対応付けられたデータの順序を適切に管理することができる。
【0057】
情報処理装置100は、複数の値データのうち、第1の範囲と第2の範囲とのうち、下位の範囲に属する値を設定した値データと、第3の範囲と第4の範囲とのうち、上位の範囲に属する値を設定した値データとが存在しなくなったことを検出する。情報処理装置100は、検出に応じて、第1の範囲と第2の範囲との上下関係を入れ替え、かつ、第3の範囲と第4の範囲との上下関係を入れ替えるよう、フラグ情報を更新するよう、情報蓄積装置201を制御する。これにより、情報処理装置100は、再び、第1の値データの指定、および、第2の値データの指定を受け付け、複数の値データを更新可能にすることができる。情報処理装置100は、例えば、サーバ、または、PCなどである。
【0058】
クライアント装置202は、データ群に含まれるデータを利用しようとするシステム利用者によって用いられるコンピュータである。クライアント装置202は、システム利用者の操作入力に基づき、複数の値データのうち、順序を先頭に移動する第1の値データの指定を含む通知を生成し、情報処理装置100に送信する。クライアント装置202は、システム利用者の操作入力に基づき、複数の値データのうち、順序を末尾に移動する第2の値データの指定を含む通知を生成し、情報処理装置100に送信する。クライアント装置202は、例えば、PC、タブレット端末、または、スマートフォンなどである。
【0059】
ここでは、情報処理装置100が、情報蓄積装置201とは異なる装置である場合について説明したが、これに限らない。例えば、情報処理装置100が、情報蓄積装置201としての機能を有し、情報蓄積装置201としても動作する場合があってもよい。ここでは、情報処理装置100が、クライアント装置202とは異なる装置である場合について説明したが、これに限らない。例えば、情報処理装置100が、クライアント装置202としての機能を有し、クライアント装置202としても動作する場合があってもよい。
【0060】
(情報処理装置100の適用例)
次に、情報処理装置100の適用例について説明する。情報処理装置100は、例えば、複数のファイルの新旧管理の用途に適用することができる。情報処理装置100は、例えば、複数のファイルのうち、いずれのファイルが新しく、いずれのファイルが古いのかを管理する用途に適用することができる。情報処理装置100は、例えば、ファイルが作成または更新されたことに応じて、複数のファイルの順序関係を適切に更新することができる。情報処理装置100は、例えば、複数のファイルの順序関係を更新する際にかかる処理負担および処理時間の低減化を図ることができる。情報処理装置100は、例えば、異なる2つのファイルのうち、いずれのファイルが新しいファイルであるのかを判断する際にかかる処理負担および処理時間の低減化を図ることができる。
【0061】
(情報処理装置100のハードウェア構成例)
次に、図3を用いて、情報処理装置100のハードウェア構成例について説明する。
【0062】
図3は、情報処理装置100のハードウェア構成例を示すブロック図である。図3において、情報処理装置100は、CPU(Central Processing Unit)301と、メモリ302と、ネットワークI/F(Interface)303と、記録媒体I/F304と、記録媒体305とを有する。また、各構成部は、バス300によってそれぞれ接続される。
【0063】
ここで、CPU301は、情報処理装置100の全体の制御を司る。メモリ302は、例えば、ROM(Read Only Memory)、RAM(Random Access Memory)およびフラッシュROMなどを有する。具体的には、例えば、フラッシュROMやROMが各種プログラムを記憶し、RAMがCPU301のワークエリアとして使用される。メモリ302に記憶されるプログラムは、CPU301にロードされることにより、コーディングされている処理をCPU301に実行させる。
【0064】
ネットワークI/F303は、通信回線を通じてネットワーク210に接続され、ネットワーク210を介して他のコンピュータに接続される。そして、ネットワークI/F303は、ネットワーク210と内部のインターフェースを司り、他のコンピュータからのデータの入出力を制御する。ネットワークI/F303は、例えば、モデムやLANアダプタなどである。
【0065】
記録媒体I/F304は、CPU301の制御に従って記録媒体305に対するデータのリード/ライトを制御する。記録媒体I/F304は、例えば、ディスクドライブ、SSD(Solid State Drive)、USB(Universal Serial Bus)ポートなどである。記録媒体305は、記録媒体I/F304の制御で書き込まれたデータを記憶する不揮発メモリである。記録媒体305は、例えば、ディスク、半導体メモリ、USBメモリなどである。記録媒体305は、情報処理装置100から着脱可能であってもよい。
【0066】
情報処理装置100は、上述した構成部の他、例えば、キーボード、マウス、ディスプレイ、プリンタ、スキャナ、マイク、スピーカーなどを有してもよい。また、情報処理装置100は、記録媒体I/F304や記録媒体305を複数有していてもよい。また、情報処理装置100は、記録媒体I/F304や記録媒体305を有していなくてもよい。
【0067】
(情報蓄積装置201のハードウェア構成例)
情報蓄積装置201のハードウェア構成例は、具体的には、図3に示した情報処理装置100のハードウェア構成例と同様であるため、説明を省略する。
【0068】
(クライアント装置202のハードウェア構成例)
クライアント装置202のハードウェア構成例は、具体的には、図3に示した情報処理装置100のハードウェア構成例と同様であるため、説明を省略する。
【0069】
(情報処理装置100の機能的構成例)
次に、図4を用いて、情報処理装置100の機能的構成例について説明する。
【0070】
図4は、情報処理装置100の機能的構成例を示すブロック図である。情報処理装置100は、記憶部400と、取得部401と、設定部402と、変更部403と、更新部404と、比較部405と、出力部406とを含む。
【0071】
記憶部400は、例えば、図3に示したメモリ302や記録媒体305などの記憶領域によって実現される。以下では、記憶部400が、情報処理装置100に含まれる場合について説明するが、これに限らない。例えば、記憶部400が、情報処理装置100とは異なる装置に含まれ、記憶部400の記憶内容が情報処理装置100から参照可能である場合があってもよい。
【0072】
取得部401~出力部406は、制御部の一例として機能する。取得部401~出力部406は、具体的には、例えば、図3に示したメモリ302や記録媒体305などの記憶領域に記憶されたプログラムをCPU301に実行させることにより、または、ネットワークI/F303により、その機能を実現する。各機能部の処理結果は、例えば、図3に示したメモリ302や記録媒体305などの記憶領域に記憶される。
【0073】
記憶部400は、各機能部の処理において参照され、または更新される各種情報を記憶する。記憶部400は、例えば、データ群を記憶する。データ群は、例えば、予め利用者によって設定される。データ群は、例えば、取得部401によって取得されてもよい。
【0074】
記憶部400は、例えば、データ群に含まれるそれぞれ異なるデータに対応付けられた複数の値データを、順序付けて記憶する。値データは、例えば、データ群に含まれるデータの数の定数倍を表現可能な所定の桁数の値を示す。所定の桁数は、例えば、(logN+x)である。Nは、データ群に含まれるデータの数である。xは、例えば、3である。
【0075】
所定の桁数の値は、例えば、「0000…0」~「1111…1」のいずれかの値である。例えば、所定の桁数の値のうち、下位logNビットの値は、データ群に含まれるデータの数を表現可能である。例えば、所定の桁数の値のうち、上位3ビットの値は、8通りの値を取り得る。従って、所定の桁数の値は、データ群に含まれるデータの数の8倍を表現可能である。記憶部400は、具体的には、複数の値データのそれぞれの値データを、成分同士をポインタにより接続可能な配列の成分として記憶する。
【0076】
記憶部400は、より具体的には、図5に後述する配列情報500を記憶する。値データは、例えば、予め利用者によって設定される。値データは、例えば、データ群に含まれるデータの数に基づいて、取得部401によって生成されてもよい。例えば、複数の範囲のうち、ある範囲に属する値を設定した値データの順序は、当該範囲の下位の範囲に属する値を設定した値データの順序より前の順序であると扱われる。例えば、ある範囲に属するある第1の値を設定した値データの順序は、当該範囲に属する第1の値より小さい第2の値を設定した値データの順序より前の順序であると扱われる。
【0077】
記憶部400は、所定の桁数の値に対して設定された、少なくともデータの数をそれぞれ表現可能な複数の範囲を記憶する。複数の範囲は、例えば、予め設定される。複数の範囲は、例えば、第1の範囲と第2の範囲とを含む。複数の範囲は、例えば、第3の範囲と第4の範囲とを含んでいてもよい。第3の範囲と第4の範囲とは、例えば、第1の範囲と第2の範囲との下位である。第1の範囲は、例えば、「1100…0」~「1111…1」の範囲である。第2の範囲は、例えば、「1000…0」~「1011…1」の範囲である。第3の範囲は、例えば、「0100…0」~「0111…1」の範囲である。第4の範囲は、例えば、「0000…0」~「0011…1」の範囲である。
【0078】
記憶部400は、フラグ情報を記憶する。フラグ情報は、例えば、複数の範囲のうち、第1の範囲と第2の範囲との上下関係を規定する。フラグ情報は、例えば、複数の範囲のうち、第3の範囲と第4の範囲との上下関係を規定する。フラグ情報は、具体的には、複数の範囲のうち、第1の範囲と第2の範囲との上下関係、および、第3の範囲と第4の範囲との上下関係を規定する。フラグ情報は、例えば、値が0である場合、第1の範囲を、第2の範囲の上位として扱い、かつ、第3の範囲を、第4の範囲の上位として扱うことを示す。フラグ情報は、例えば、値が1である場合、第2の範囲を、第1の範囲の上位として扱い、かつ、第4の範囲を、第3の範囲の上位として扱うことを示す。フラグ情報は、例えば、初期状態で0に設定される。
【0079】
取得部401は、各機能部の処理に用いられる各種情報を取得する。取得部401は、取得した各種情報を、記憶部400に記憶し、または、各機能部に出力する。また、取得部401は、記憶部400に記憶しておいた各種情報を、各機能部に出力してもよい。取得部401は、例えば、利用者の操作入力に基づき、各種情報を取得する。取得部401は、例えば、情報処理装置100とは異なる装置から、各種情報を受信してもよい。
【0080】
取得部401は、データ群を取得する。取得部401は、例えば、利用者の操作入力に基づき、データ群の入力を受け付けることにより、データ群を取得する。取得部401は、例えば、データ群を、他のコンピュータから受信することにより取得してもよい。
【0081】
取得部401は、複数の値データを取得する。取得部401は、例えば、データ群に含まれるデータの数に基づいて、複数の値データを生成することにより取得する。
【0082】
取得部401は、複数の値データのうち、順序を先頭に移動する第1の値データの指定を受け付ける。取得部401は、例えば、利用者の操作入力に基づき、順序を先頭に移動する第1の値データの指定を受け付ける。取得部401は、例えば、順序を先頭に移動する第1の値データの指定を含む通知を、他のコンピュータから受信することにより、順序を先頭に移動する第1の値データの指定を受け付けてもよい。
【0083】
取得部401は、複数の値データのうち、順序を末尾に移動する第2の値データの指定を受け付ける。取得部401は、例えば、利用者の操作入力に基づき、順序を末尾に移動する第2の値データの指定を受け付ける。取得部401は、例えば、順序を末尾に移動する第2の値データの指定を含む通知を、他のコンピュータから受信することにより、順序を末尾に移動する第2の値データの指定を受け付けてもよい。
【0084】
取得部401は、データ群のうち、2つのデータの順序関係の判定要求を取得する。判定要求は、例えば、データ群のうち、2つのデータの指定を含む。判定要求は、データ群のうち、2つのデータのそれぞれのデータに対応付けられた値データの指定を含んでいてもよい。取得部401は、例えば、利用者の操作入力に基づき、判定要求の入力を受け付けることにより、判定要求を取得する。取得部401は、例えば、判定要求を、他のコンピュータから受信することにより取得してもよい。
【0085】
取得部401は、いずれかの機能部の処理を開始する開始トリガーを受け付けてもよい。開始トリガーは、例えば、利用者による所定の操作入力があったことである。開始トリガーは、例えば、他のコンピュータから、所定の情報を受信したことであってもよい。開始トリガーは、例えば、いずれかの機能部が所定の情報を出力したことであってもよい。
【0086】
取得部401は、例えば、複数の値データを取得したことを、設定部402の処理を開始する開始トリガーとして受け付けてもよい。取得部401は、例えば、第1の値データの指定を受け付けたことを、変更部403と、更新部404との処理を開始する開始トリガーとして受け付けてもよい。取得部401は、例えば、第2の値データの指定を受け付けたことを、変更部403と、更新部404との処理を開始する開始トリガーとして受け付けてもよい。取得部401は、判定要求を取得したことを、比較部405の処理を開始する開始トリガーとして受け付けてもよい。
【0087】
設定部402は、フラグ情報を参照して、複数の値データのそれぞれの値データに、第1の範囲と第2の範囲とのうち、下位の範囲に属する値を設定する。設定部402は、例えば、フラグ情報を参照して、第1の範囲と第2の範囲とのうち、下位の範囲を特定する。設定部402は、例えば、複数の値データのそれぞれの値データに、特定した下位の範囲に属する同一の値を設定する。これにより、設定部402は、複数の値データを初期化することができ、複数の値データを、データ群に含まれるデータ間の順序関係を管理する用途に利用可能にすることができる。
【0088】
設定部402は、フラグ情報を参照して、複数の値データのそれぞれの値データに、第1の範囲と第2の範囲とのうち、下位の範囲に属する値、または、第3の範囲と第4の範囲とのうち、上位の範囲に属する値を設定する。設定部402は、例えば、フラグ情報を参照して、第1の範囲と第2の範囲とのうち、下位の範囲、または、第3の範囲と第4の範囲とのうち、上位の範囲を特定する。設定部402は、例えば、複数の値データのそれぞれの値データに、第1の範囲と第2の範囲とのうち、特定した下位の範囲に属する同一の値、または、第3の範囲と第4の範囲とのうち、特定した上位の範囲に属する同一の値を設定する。これにより、設定部402は、複数の値データを初期化することができ、複数の値データを、データ群に含まれるデータ間の順序関係を管理する用途に利用可能にすることができる。
【0089】
設定部402は、フラグ情報を参照して、第1の範囲と第2の範囲とのうち、下位の範囲に属する値を設定した値データ、および、第3の範囲と第4の範囲とのうち、上位の範囲に属する値を設定した値データのうち、最初の順序である第5の値データを特定する。設定部402は、特定した第5の値データに、第1の範囲と第2の範囲とのうち、上位の範囲に属する値を設定してもよい。設定部402は、例えば、更新部404でフラグ情報を更新した後、最初の順序である第5の値データを特定し、第1の範囲と第2の範囲とのうち、上位の範囲に属する値を設定する。これにより、設定部402は、第1の範囲と第2の範囲とのうち、上位の範囲に属する値を設定した値データを確保することができる。
【0090】
設定部402は、フラグ情報を参照して、第1の範囲と第2の範囲とのうち、下位の範囲に属する値を設定した値データ、および、第3の範囲と第4の範囲とのうち、上位の範囲に属する値を設定した値データのうち、最後の順序である第6の値データを特定する。設定部402は、特定した第6の値データに、第3の範囲と第4の範囲とのうち、下位の範囲に属する値を設定してもよい。設定部402は、例えば、更新部404でフラグ情報を更新した後、最後の順序である第6の値データを特定し、第3の範囲と第4の範囲とのうち、下位の範囲に属する値を設定する。これにより、設定部402は、第3の範囲と第4の範囲とのうち、下位の範囲に属する値を設定した値データを確保することができる。
【0091】
変更部403は、順序を先頭に移動する第1の値データの指定を受け付ける都度、フラグ情報を参照して、第1の範囲と第2の範囲とのうち、上位の範囲と下位の範囲とを特定する。変更部403は、第1の値データの指定を受け付ける都度、第1の値データが、他の値データより前の順序になるよう、第1の値データに、第1の範囲と第2の範囲とのうち、特定した上位の範囲に属する値を設定する。これにより、変更部403は、データ群のうち、第1の値データに対応付けられたデータの順序を、第1の値データの順序で示すことができ、データ群に含まれるデータ間の順序関係を適切に表現可能にすることができる。
【0092】
この際、変更部403は、フラグ情報を参照して、第3の範囲と第4の範囲とのうち、上位の範囲と下位の範囲とを特定してもよい。変更部403は、第1の範囲と第2の範囲とのうち、下位の範囲に属する値を設定した値データ、および、第3の範囲と第4の範囲とのうち、上位の範囲に属する値を設定した値データのうち、最後の順序である第3の値データを特定してもよい。変更部403は、特定した第3の値データに、第3の範囲と第4の範囲とのうち、下位の範囲に属する値を設定してもよい。これにより、変更部403は、第1の範囲と第2の範囲とのうち、下位の範囲に属する値を設定した値データ、および、第3の範囲と第4の範囲とのうち、上位の範囲に属する値を設定した値データに含まれる値データの数を減らすことができる。
【0093】
変更部403は、順序を末尾に移動する第2の値データの指定を受け付ける都度、フラグ情報を参照して、第3の範囲と第4の範囲とのうち、上位の範囲と下位の範囲とを特定する。変更部403は、第2の値データの指定を受け付ける都度、第2の値データが、他の値データより後の順序になるよう、第2の値データに、第3の範囲と第4の範囲とのうち、特定した下位の範囲に属する値を設定する。これにより、変更部403は、データ群のうち、第2の値データに対応付けられたデータの順序を、第2の値データの順序で示すことができ、データ群に含まれるデータ間の順序関係を適切に表現可能にすることができる。
【0094】
この際、変更部403は、フラグ情報を参照して、第1の範囲と第2の範囲とのうち、上位の範囲と下位の範囲とを特定してもよい。変更部403は、第1の範囲と第2の範囲とのうち、下位の範囲に属する値を設定した値データ、および、第3の範囲と第4の範囲とのうち、上位の範囲に属する値を設定した値データのうち、最初の順序である第4の値データを特定してもよい。変更部403は、特定した第4の値データに、第1の範囲と第2の範囲とのうち、上位の範囲に属する値を設定する。これにより、変更部403は、第1の範囲と第2の範囲とのうち、下位の範囲に属する値を設定した値データ、および、第3の範囲と第4の範囲とのうち、上位の範囲に属する値を設定した値データに含まれる値データの数を減らすことができる。
【0095】
更新部404は、複数の値データのうち、下位の範囲に属する値を設定した値データが存在しなくなったことを検出する。更新部404は、検出に応じて、第1の範囲と第2の範囲との上下関係を入れ替えるよう、フラグ情報を更新する。これにより、更新部404は、第1の範囲と第2の範囲とのうち、上位の範囲に属する値を設定した値データがなくなるよう、フラグ情報を更新することができる。更新部404は、再び、第1の値データの指定を受け付け、複数の値データを更新可能にすることができる。
【0096】
更新部404は、フラグ情報を参照して、第1の範囲と第2の範囲とのうち、下位の範囲に属する値を設定した値データ、および、第3の範囲と第4の範囲とのうち、上位の範囲に属する値を設定した値データが存在しなくなったことを検出する。更新部404は、検出に応じて、第1の範囲と第2の範囲との上下関係を入れ替えるよう、かつ、第3の範囲と第4の範囲との上下関係を入れ替えるよう、フラグ情報を更新する。これにより、更新部404は、第3の範囲と第4の範囲とのうち、下位の範囲に属する値を設定した値データがなくなるよう、フラグ情報を更新することができる。更新部404は、再び、第2の値データの指定を受け付け、複数の値データを更新可能にすることができる。
【0097】
比較部405は、判定要求を受け付けたことに応じて、データ群のうち、2つのデータの順序関係を判定する。比較部405は、例えば、2つのデータのそれぞれのデータに対応付けられた値データに設定した値を比較する。比較部405は、例えば、2つのデータのうち、比較的大きい値を設定した値データに対応付けられた一方のデータの順序を、他方のデータの順序よりも前の順序であると判定する。これにより、比較部405は、2つのデータの順序関係を適切に判定することができる。比較部405は、2つのデータの順序関係を判定する際にかかる処理負担および処理時間の低減化を図ることができる。
【0098】
出力部406は、少なくともいずれかの機能部の処理結果を出力する。出力形式は、例えば、ディスプレイへの表示、プリンタへの印刷出力、ネットワークI/F303による外部装置への送信、または、メモリ302や記録媒体305などの記憶領域への記憶である。これにより、出力部406は、少なくともいずれかの機能部の処理結果を利用者に通知可能にし、情報処理装置100の利便性の向上を図ることができる。
【0099】
出力部406は、例えば、複数の値データを出力する。出力部406は、具体的には、複数の値データを、利用者が参照可能に出力する。これにより、出力部406は、利用者が、複数の値データを利用可能にすることができる。
【0100】
出力部406は、例えば、データ群のうち、2つのデータの順序関係を判定した結果を出力する。出力部406は、具体的には、データ群のうち、2つのデータの順序関係を判定した結果を、利用者が参照可能に出力する。これにより、出力部406は、利用者が、2つのデータの順序関係を把握可能にすることができる。
【0101】
(情報処理装置100の動作例)
次に、図5図16を用いて、情報処理装置100の動作例について説明する。まず、図5を用いて、情報処理装置100が、配列情報500を記憶する一例について説明する。
【0102】
図5は、配列情報500を記憶する一例を示す説明図である。図5において、情報処理装置100は、配列情報500を記憶する。配列情報500は、例えば、図3に示した情報処理装置100のメモリ302や記録媒体305などの記憶領域により実現される。
【0103】
配列情報500は、配列と、前方ポインタと、後方ポインタと、整数値とのフィールドを有する。配列情報500は、配列の要素ごとに各フィールドに情報を設定することにより、N個の要素情報がそれぞれレコードとして記憶される。
【0104】
配列のフィールドには、配列の要素が設定される。配列の要素は、N個存在する。前方ポインタのフィールドには、上記配列の要素の1つ前方に存在する他の要素のインデックスが設定される。後方ポインタのフィールドには、上記配列の要素の1つ後方に存在する他の要素のインデックスが設定される。整数値のフィールドには、上記配列の要素に対応付けられたカウンタとなる整数値が設定される。整数値は、上記配列の要素の順序を管理するための情報である。整数値は、(logN+3)の桁数の値である。
【0105】
整数値に対して、例えば、上位レンジと、中間レンジ1と、中間レンジ2と、下位レンジとが設定される。上位レンジは、例えば、初期状態では、「1111…1」~「1100…0」の第1の範囲が設定される。中間レンジ1は、例えば、初期状態では、「1011…1」~「1000…0」の第2の範囲が設定される。上位レンジと、中間レンジ1とに設定する範囲が入れ替えられ、上位レンジに、例えば、「1011…1」~「1000…0」の第2の範囲が設定される場合がある。
【0106】
中間レンジ2は、例えば、初期状態では、「0111…1」~「0100…0」の第3の範囲が設定される。下位レンジは、例えば、初期状態では、「0011…1」~「0000…0」の第4の範囲が設定される。中間レンジ2と、下位レンジとに設定する範囲が入れ替えられ、下位レンジに、例えば、「0011…1」~「0000…0」の第4の範囲が設定される場合がある。
【0107】
上位レンジに属する整数値に対応する要素の順序は、中間レンジ1に属する整数値に対応する要素の順序より前の順序であると扱われる。中間レンジ1に属する整数値に対応する要素の順序は、中間レンジ2に属する整数値に対応する要素の順序より前の順序であると扱われる。中間レンジ2に属する整数値に対応する要素の順序は、下位レンジに属する整数値に対応する要素の順序より前の順序であると扱われる。
【0108】
上位レンジに属する第1の整数値に対応する要素の順序は、同一の上位レンジに属する、第1の整数値よりも小さい第2の整数値に対応する要素の順序より前の順序であると扱われる。中間レンジ1に属する第1の整数値に対応する要素の順序は、同一の中間レンジ1に属する、第1の整数値よりも小さい第2の整数値に対応する要素の順序より前の順序であると扱われる。
【0109】
中間レンジ2に属する第1の整数値に対応する要素の順序は、同一の中間レンジ2に属する、第1の整数値よりも小さい第2の整数値に対応する要素の順序より前の順序であると扱われる。下位レンジに属する第1の整数値に対応する要素の順序は、同一の下位レンジに属する、第1の整数値よりも小さい第2の整数値に対応する要素の順序より前の順序であると扱われる。
【0110】
情報処理装置100は、レンジポインタ510を記憶する。レンジポインタは、puhと、putと、plhと、pltとである。puhは、上位レンジに属する整数値に対応する要素のうち、先頭の要素を識別可能にするポインタである。puhは、上位レンジに属する整数値に対応する要素のうち、先頭の要素に対応する整数値を示す。putは、上位レンジに属する整数値に対応する要素のうち、末尾の要素を識別可能にするポインタである。putは、上位レンジに属する整数値に対応する要素のうち、末尾の要素に対応する整数値を示す。
【0111】
plhは、下位レンジに属する整数値に対応する要素のうち、先頭の要素を識別可能にするポインタである。plhは、下位レンジに属する整数値に対応する要素のうち、先頭の要素に対応する整数値を示す。pltは、下位レンジに属する整数値に対応する要素のうち、末尾の要素を識別可能にするポインタである。pltは、下位レンジに属する整数値に対応する要素のうち、末尾の要素に対応する整数値を示す。
【0112】
情報処理装置100は、フラグ情報fを記憶する。フラグ情報fは、上位レンジと、中間レンジ1とに、いずれの範囲を設定するのか、中間レンジ2と、下位レンジとに、いずれの範囲を設定するのかを管理する情報である。
【0113】
次に、図6を用いて、フラグ情報と、各種レンジとの関係性の一例について説明する。各種レンジは、例えば、上位レンジと、中間レンジ1と、中間レンジ2と、下位レンジとである。
【0114】
図6は、フラグ情報と各種レンジとの関係性の一例を示す説明図である。図6の符号610に示すように、フラグ情報fは、具体的には、値が0であれば、上位レンジに、第1の範囲を設定し、中間レンジ1に、第2の範囲を設定し、中間レンジ2に、第3の範囲を設定し、下位レンジに、第4の範囲を設定することを示す。
【0115】
図6の符号620に示すように、フラグ情報fは、具体的には、値が1であれば、上位レンジに、第2の範囲を設定し、中間レンジ1に、第1の範囲を設定し、中間レンジ2に、第4の範囲を設定し、下位レンジに、第3の範囲を設定することを示す。このように、情報処理装置100は、フラグ情報によって、第1の範囲と、第2の範囲と、第3の範囲と、第4の範囲との順序を切り替えることができる。
【0116】
次に、図7図14を用いて、情報処理装置100が、配列の要素の順序を管理する一例について説明する。
【0117】
図7図14は、配列の要素の順序を管理する一例を示す説明図である。図7において、情報処理装置100は、符号700に示すように、配列の全要素に対応するカウンタとなる整数値を「000 00…00」に初期化する。図7の符号700は、初期化の際における、要素間の接続関係、および、各要素に対応する整数値を示す。
【0118】
情報処理装置100は、符号700に示すように、フラグ情報f=0に設定する。これにより、情報処理装置100は、配列情報500を初期化することができ、配列の要素間の順序関係を管理開始することができる。次に、図8の説明に移行する。
【0119】
図8において、情報処理装置100は、符号800に示すように、配列の全要素のうち、先頭の要素に対応する整数値を更新する。図8の符号800は、更新後における、要素間の接続関係、および、各要素に対応する整数値を示す。
【0120】
情報処理装置100は、例えば、表810に従って、フラグ情報f=0であれば、先頭の要素に対応する整数値に「101 00…00」を設定する。情報処理装置100は、例えば、表810に従って、フラグ情報f=1であれば、先頭の要素に対応する整数値に「111 00…00」を設定する。図8の例では、情報処理装置100は、具体的には、先頭の要素に対応する整数値に「101 00…00」を設定する。
【0121】
情報処理装置100は、符号800に示すように、配列の全要素のうち、末尾の要素に対応する整数値を更新する。情報処理装置100は、例えば、表810に従って、フラグ情報f=0であれば、末尾の要素に対応する整数値に「001 00…00」を設定する。情報処理装置100は、例えば、表810に従って、フラグ情報f=1であれば、末尾の要素に対応する整数値に「011 00…00」を設定する。図8の例では、情報処理装置100は、具体的には、末尾の要素に対応する整数値に「101 00…00」を設定する。
【0122】
情報処理装置100は、フラグ情報fを反転する。図8の例では、情報処理装置100は、例えば、フラグ情報f=1に設定する。情報処理装置100は、puhとputとに、先頭の要素に対応する整数値「101 00…00」を設定する。情報処理装置100は、plhとpltとに、末尾の要素に対応する整数値「101 00…00」を設定する。
【0123】
これにより、情報処理装置100は、先頭の要素を上位レンジに属させることができる。情報処理装置100は、上位レンジ内で、先頭の要素に対応する整数値の前後それぞれに、N個の要素分の未使用の整数値を確保することができる。このため、情報処理装置100は、先頭の要素以外に、N個までの他の要素については、先頭の要素の順序より前の順序である要素として管理可能にすることができる。同様に、情報処理装置100は、先頭の要素以外に、N個までの他の要素については、先頭の要素の順序より後の順序である要素として管理可能にすることができる。従って、情報処理装置100は、未使用の整数値を確保することができ、配列の全要素の順序関係を適切に管理可能にすることができる。
【0124】
同様に、情報処理装置100は、末尾の要素を下位レンジに属させることができる。情報処理装置100は、下位レンジ内で、末尾の要素に対応する整数値の前後それぞれに、N個の要素分の未使用の整数値を確保することができる。このため、情報処理装置100は、末尾の要素以外に、N個までの他の要素については、末尾の要素の順序より前の順序である要素として管理可能にすることができる。同様に、情報処理装置100は、末尾の要素以外に、N個までの他の要素については、末尾の要素の順序より後の順序である要素として管理可能にすることができる。従って、情報処理装置100は、未使用の整数値を確保することができ、配列の全要素の順序関係を適切に管理可能にすることができる。
【0125】
ここでは、情報処理装置100が、先頭の要素に対応する整数値を更新し、末尾の要素に対応する整数値を更新した後、フラグ情報を反転する場合について説明したが、これに限らない。例えば、情報処理装置100が、フラグ情報を反転した後、先頭の要素に対応する整数値を更新し、末尾の要素に対応する整数値を更新する場合があってもよい。
【0126】
次に、図9図14を用いて、情報処理装置100が、いずれかの要素の順序を先頭または末尾に移動することを要求する移動クエリを受け付けた際に実施する各種処理について説明する。各種処理は、例えば、図9および図10を用いて後述するならし移動の処理を含む。各種処理は、例えば、図11図14を用いて後述する順序移動の処理を含む。まず、図9および図10の説明に移行する。
【0127】
図9において、情報処理装置100は、いずれかの要素の順序を先頭または末尾に移動することを要求する移動クエリを受け付けた際、ならし移動を実施する。ならし移動は、中間レンジ1または中間レンジ2に属するいずれかの要素を、上位レンジに属するよう移動し、中間レンジ1または中間レンジ2に属するいずれかの要素を、下位レンジに属するよう移動することである。
【0128】
図9の符号900は、あるタイミングにおける、要素間の接続関係、および、各要素に対応する整数値を示す。情報処理装置100は、符号900に示すように、中間レンジ1に属する要素および中間レンジ2に属する要素のうち、先頭の要素901を特定し、先頭の要素901に対応する整数値を特定する。また、情報処理装置100は、符号900に示すように、中間レンジ1に属する要素および中間レンジ2に属する要素のうち、末尾の要素902を特定し、末尾の要素902に対応する整数値を特定する。次に、図10の説明に移行する。
【0129】
図10において、情報処理装置100は、中間レンジ1に属する要素および中間レンジ2に属する要素のうち、特定した先頭の要素901を、上位レンジに属するよう移動する。情報処理装置100は、例えば、符号1000に示すように、中間レンジ1に属する要素および中間レンジ2に属する要素のうち、特定した先頭の要素901に対応する整数値に、puh-1を設定し、設定した当該整数値を、putに設定する。図10の符号1000は、ならし移動の処理を実施した後における、要素間の接続関係、および、各要素に対応する整数値を示す。
【0130】
また、情報処理装置100は、中間レンジ1に属する要素および中間レンジ2に属する要素のうち、特定した末尾の要素902を、下位レンジに属するよう移動する。情報処理装置100は、例えば、符号1000に示すように、中間レンジ1に属する要素および中間レンジ2に属する要素のうち、特定した末尾の要素902に対応する整数値に、plt+1を設定し、設定した当該整数値を、plhに設定する。
【0131】
これにより、情報処理装置100は、移動クエリごとに、中間レンジ1に属する要素および中間レンジ2に属する要素が、少なくとも1つ減ることを保証することができる。情報処理装置100は、移動クエリの前後で、上位クエリに少なくとも1以上の要素が存在すること、および、下位クエリに少なくとも1以上の要素が存在することを保証することができる。このため、情報処理装置100は、処理エラーを防止することができる。次に、図11の説明に移行する。
【0132】
図11において、情報処理装置100は、符号1100に示すように、要素1101の順序を先頭に移動することを要求する移動クエリを受け付け、ならし移動の処理を実施した後であるとする。図11の符号1100は、あるタイミングにおける、要素間の接続関係、および、各要素に対応する整数値を示す。次に、図12の説明に移行する。
【0133】
図12において、情報処理装置100は、符号1200に示すように、移動クエリを受け付けた要素1101の整数値を、puh+1に設定し、設定した当該整数値を、puhに設定することにより、移動クエリに応じた順序移動の処理を実施する。図12の符号1200は、順序移動の処理を実施した後における、要素間の接続関係、および、各要素に対応する整数値を示す。これにより、情報処理装置100は、要素1101に対応する整数値を更新し、要素1101の順序を先頭に移動することができる。次に、図13の説明に移行する。
【0134】
図13において、情報処理装置100は、符号1300に示すように、要素1301の順序を末尾に移動することを要求する移動クエリを受け付け、ならし移動の処理を実施した後であるとする。図13の符号1300は、あるタイミングにおける、要素間の接続関係、および、各要素に対応する整数値を示す。次に、図14の説明に移行する。
【0135】
図14において、情報処理装置100は、符号1400に示すように、移動クエリを受け付けた要素1301の整数値を、plt-1に設定し、設定した当該整数値を、pltに設定することにより、移動クエリに応じた順序移動の処理を実施する。図14の符号1400は、順序移動の処理を実施した後における、要素間の接続関係、および、各要素に対応する整数値を示す。これにより、情報処理装置100は、要素1301に対応する整数値を更新し、要素1301の順序を末尾に移動することができる。このように、情報処理装置100は、要素の順序を当該要素に対応する整数値で表現することができる。
【0136】
情報処理装置100は、ならし移動の処理、または、順序移動の処理により、中間レンジ1に属する要素および中間レンジ2に属する要素が存在しなくなった場合、図8に示した処理を実施する。情報処理装置100は、例えば、図8と同様に、先頭の要素に対応する整数値を更新し、末尾の要素に対応する整数値を更新した後、フラグ情報を反転する。
【0137】
これにより、情報処理装置100は、整数値として設定可能な値の範囲を使いまわすことができる。情報処理装置100は、再び、図9および図10に示したならし移動の処理、および、図11図14に示した順序移動の処理を実施可能にすることができる。このため、情報処理装置100は、整数値として設定可能な値が枯渇することを防止することができ、要素間の順序関係を適切に管理し続けることができる。
【0138】
次に、図15を用いて、情報処理装置100が、ファイルを管理する具体例について説明する。
【0139】
図15は、ファイルを管理する具体例を示す説明図である。図15において、情報処理装置100は、ファイル管理テーブル1500を記憶する。ファイル管理テーブル1500は、例えば、図3に示した情報処理装置100のメモリ302や記録媒体305などの記憶領域により実現される。
【0140】
ファイル管理テーブル1500は、IDと、ファイル名と、更新日と、整数値とのフィールドを有する。ファイル管理テーブル1500は、ファイルごとに各フィールドに情報を設定することにより、ファイル管理情報がそれぞれレコードとして記憶される。
【0141】
IDのフィールドには、ファイルを識別するIDが設定される。ファイル名のフィールドには、上記ファイルの名称が設定される。更新日のフィールドには、上記ファイルの更新日が設定される。整数値のフィールドには、上記ファイルを配列の要素として、上述した動作例のように管理する場合における、当該要素に対応する整数値が設定される。
【0142】
これにより、情報処理装置100は、ファイルの順序を管理する用途に利用することができる。情報処理装置100は、更新日の値のオーバーフローが発生する状況であっても、ファイルの順序を適切に管理し続けることができる。
【0143】
次に、図16を用いて、情報処理装置100による効果の一例について説明する。
【0144】
図16は、情報処理装置100による効果の一例を示す説明図である。図16において、上述した手法1と、上述した手法4と、動作例に示した情報処理装置100による手法とを比較する。手法1は、複数のデータのそれぞれのデータを、配列の成分として設定することにより、複数のデータに含まれるデータ間の順序関係を管理する手法である。手法4は、カウンタ値を用意し、カウンタ値を利用することにより、複数のデータに含まれるデータ間の順序関係を管理する手法である。
【0145】
手法1では、「移動の処理(mtf/mtt)」にかかる処理負担および処理時間が、O(N)の大きさになってしまう。これに対し、情報処理装置100による手法では、「移動の処理(mtf/mtt)」にかかる処理負担および処理時間を、O(1)の大きさに抑制することができる。
【0146】
手法4では、カウンタのオーバーフローを防止するため、O(Nlogk)bitのカウンタを用意することになる。kは、移動クエリの発行回数である。従って、手法4では、移動クエリの発行回数が不明であると、何bitのカウンタを用意すればよいかを判断することができない。手法4では、移動クエリが発行され続けると、カウンタのオーバーフローが発生するため、データ間の順序関係を適切に管理することができない。
【0147】
これに対し、情報処理装置100による手法では、O(NlogN)bitのカウンタとなる整数値を用意すればよい。このため、情報処理装置100による手法では、移動クエリが発行され続けても、カウンタのオーバーフローを防止することができ、データ間の順序関係を適切に管理することができる。
【0148】
情報処理装置100による手法では、「比較の処理(comp)」にかかる処理負担および処理時間を、O(1)の大きさに抑制することができる。従って、情報処理装置100は、手法1および手法4に比べて、「比較の処理(comp)」にかかる処理負担および処理時間が大きくなるような不都合を生じることを回避することができる。
【0149】
(初期化処理手順)
次に、図17を用いて、情報処理装置100が実行する、初期化処理手順の一例について説明する。初期化処理は、例えば、図3に示したCPU301と、メモリ302や記録媒体305などの記憶領域と、ネットワークI/F303とによって実現される。
【0150】
図17は、初期化処理手順の一例を示すフローチャートである。図17において、情報処理装置100は、全要素のカウンタを0に初期化する(ステップS1701)。次に、情報処理装置100は、フラグ情報を0に設定する(ステップS1702)。そして、情報処理装置100は、モード変更処理を実行する(ステップS1703)。その後、情報処理装置100は、初期化処理を終了する。
【0151】
(モード変更処理手順)
次に、図18を用いて、情報処理装置100が実行する、モード変更処理手順の一例について説明する。モード変更処理は、例えば、図3に示したCPU301と、メモリ302や記録媒体305などの記憶領域と、ネットワークI/F303とによって実現される。
【0152】
図18は、モード変更処理手順の一例を示すフローチャートである。図18において、情報処理装置100は、フラグ情報を反転し、モードを変更する(ステップS1801)。次に、情報処理装置100は、全要素が中間レンジに属するよう、全要素のカウンタを中間レンジの値に更新し、レンジポインタを設定する(ステップS1802)。
【0153】
次に、情報処理装置100は、先頭の要素のカウンタを、上位レンジの中間値に更新する(ステップS1803)。そして、情報処理装置100は、末尾の要素のカウンタを、下位レンジの中間値に更新する(ステップS1804)。その後、情報処理装置100は、レンジポインタを更新する(ステップS1805)。そして、情報処理装置100は、モード変更処理を終了する。
【0154】
(ならし移動処理手順)
次に、図19を用いて、情報処理装置100が実行する、ならし移動処理手順の一例について説明する。ならし移動処理は、例えば、図3に示したCPU301と、メモリ302や記録媒体305などの記憶領域と、ネットワークI/F303とによって実現される。
【0155】
図19は、ならし移動処理手順の一例を示すフローチャートである。図19において、情報処理装置100は、中間レンジが空であるか否かを判定する(ステップS1901)。ここで、空である場合(ステップS1901:Yes)、情報処理装置100は、ステップS1906の処理に移行する。一方で、空ではない場合(ステップS1901:No)、情報処理装置100は、ステップS1902の処理に移行する。
【0156】
ステップS1902では、情報処理装置100は、中間レンジの先頭の要素のカウンタを、put-1に設定する(ステップS1902)。次に、情報処理装置100は、中間レンジが空であるか否かを判定する(ステップS1903)。ここで、空である場合(ステップS1903:Yes)、情報処理装置100は、ステップS1906の処理に移行する。一方で、空ではない場合(ステップS1903:No)、情報処理装置100は、ステップS1904の処理に移行する。
【0157】
ステップS1904では、情報処理装置100は、中間レンジの末尾の要素のカウンタを、plh+1に設定する(ステップS1904)。次に、情報処理装置100は、中間レンジが空であるか否かを判定する(ステップS1905)。ここで、空である場合(ステップS1905:Yes)、情報処理装置100は、ステップS1906の処理に移行する。一方で、空ではない場合(ステップS1905:No)、情報処理装置100は、ならし移動処理を終了する。
【0158】
ステップS1906では、情報処理装置100は、フラグ情報を反転し、モードを変更する(ステップS1906)。そして、情報処理装置100は、ならし移動処理を終了する。
【0159】
(先頭移動処理手順)
次に、図20を用いて、情報処理装置100が実行する、先頭移動処理手順の一例について説明する。先頭移動処理は、例えば、図3に示したCPU301と、メモリ302や記録媒体305などの記憶領域と、ネットワークI/F303とによって実現される。
【0160】
図20は、先頭移動処理手順の一例を示すフローチャートである。図20において、情報処理装置100は、先頭に移動する要素の指定を受け付ける(ステップS2001)。
【0161】
次に、情報処理装置100は、指定の要素のカウンタを、puh+1に設定する(ステップS2002)。そして、情報処理装置100は、puhを、指定の要素のカウンタに更新する(ステップS2003)。その後、情報処理装置100は、先頭移動処理を終了する。
【0162】
(末尾移動処理手順)
次に、図21を用いて、情報処理装置100が実行する、末尾移動処理手順の一例について説明する。末尾移動処理は、例えば、図3に示したCPU301と、メモリ302や記録媒体305などの記憶領域と、ネットワークI/F303とによって実現される。
【0163】
図21は、末尾移動処理手順の一例を示すフローチャートである。図21において、情報処理装置100は、末尾に移動する要素の指定を受け付ける(ステップS2101)。
【0164】
次に、情報処理装置100は、指定の要素のカウンタを、plt-1に設定する(ステップS2102)。そして、情報処理装置100は、pltを、指定の要素のカウンタに更新する(ステップS2103)。その後、情報処理装置100は、末尾移動処理を終了する。
【0165】
(比較処理手順)
次に、図22を用いて、情報処理装置100が実行する、比較処理手順の一例について説明する。比較処理は、例えば、図3に示したCPU301と、メモリ302や記録媒体305などの記憶領域と、ネットワークI/F303とによって実現される。
【0166】
図22は、比較処理手順の一例を示すフローチャートである。図22において、情報処理装置100は、順序関係を判定する2つの要素の指定を受け付ける(ステップS2201)。次に、情報処理装置100は、指定の2つの要素のそれぞれの要素のカウンタの大小関係を比較する(ステップS2202)。
【0167】
そして、情報処理装置100は、比較の結果、2つの要素のうち、カウンタが大きい方の要素の順序を、他方の要素の順序より前の順序であると判定する(ステップS2203)。その後、情報処理装置100は、比較処理を終了する。
【0168】
ここで、情報処理装置100は、図17図22の各フローチャートの一部ステップの処理の順序を入れ替えて実行してもよい。また、情報処理装置100は、図17図22の各フローチャートの一部ステップの処理を省略してもよい。
【0169】
以上説明したように、情報処理装置100によれば、データ群に含まれるデータの数の定数倍を表現可能な桁数の値を示す、データ群に含まれるそれぞれ異なるデータに対応付けられた複数の値データを、順序付けて記憶することができる。情報処理装置100によれば、桁数の値に対して設定された、少なくともデータの数をそれぞれ表現可能な複数の範囲のうち、第1の範囲と第2の範囲との上下関係を規定するフラグ情報を記憶することができる。情報処理装置100によれば、フラグ情報を参照して、複数の値データのそれぞれの値データに、第1の範囲と第2の範囲とのうち、下位の範囲に属する値を設定することができる。情報処理装置100によれば、フラグ情報を参照して、複数の値データのうち、順序を先頭に移動する第1の値データの指定を受け付ける都度、第1の値データに、第1の範囲と第2の範囲とのうち、上位の範囲に属する値を設定することができる。情報処理装置100によれば、複数の値データのうち、下位の範囲に属する値を設定した値データが存在しなくなると、第1の範囲と第2の範囲との上下関係を入れ替えるよう、フラグ情報を更新することができる。これにより、情報処理装置100は、データの順序を先頭に移動することを適切に実施することができ、データ間の順序関係を適切に管理することができる。
【0170】
情報処理装置100によれば、複数の範囲のうち、第1の範囲と第2の範囲との上下関係と、第1の範囲と第2の範囲との下位に存在する第3の範囲と第4の範囲との上下関係を規定するフラグ情報を記憶することができる。情報処理装置100によれば、フラグ情報を参照して、複数の値データのそれぞれの値データに、第1の範囲と第2の範囲とのうち、下位の範囲に属する値、または、第3の範囲と第4の範囲とのうち、上位の範囲に属する値を設定することができる。情報処理装置100によれば、フラグ情報を参照して、第1の値データの指定を受け付ける都度、第1の値データに、第1の範囲と第2の範囲とのうち、上位の範囲に属する値を設定することができる。情報処理装置100によれば、フラグ情報を参照して、複数の値データのうち、順序を末尾に移動する第2の値データの指定を受け付ける都度、第2の値データに、第3の範囲と第4の範囲とのうち、下位の範囲に属する値を設定することができる。情報処理装置100によれば、フラグ情報を参照して、第1の範囲と第2の範囲とのうち、下位の範囲に属する値、および、第3の範囲と第4の範囲とのうち、上位の範囲に属する値を設定した値データが存在しなくなったことを検出することができる。情報処理装置100によれば、検出に応じて、第1の範囲と第2の範囲との上下関係を入れ替えるよう、かつ、第3の範囲と第4の範囲との上下関係を入れ替えるよう、フラグ情報を更新することができる。これにより、情報処理装置100は、データの順序を末尾に移動することを適切に実施することができ、データ間の順序関係を適切に管理することができる。
【0171】
情報処理装置100によれば、第1の範囲と第2の範囲とのうち、下位の範囲に属する値、または、第3の範囲と第4の範囲とのうち、上位の範囲に属する値を設定した値データのうち、最後の順序である第3の値データを特定することができる。情報処理装置100によれば、第3の値データに、第3の範囲と第4の範囲とのうち、下位の範囲に属する値を設定することができる。情報処理装置100によれば、第1の範囲と第2の範囲とのうち、下位の範囲に属する値、または、第3の範囲と第4の範囲とのうち、上位の範囲に属する値を設定した値データのうち、最初の順序である第4の値データを特定することができる。情報処理装置100によれば、第4の値データに、第1の範囲と第2の範囲とのうち、上位の範囲に属する値を設定することができる。これにより、情報処理装置100は、第3の範囲と第4の範囲とのうち、下位の範囲に属する値を設定した値データを用意し、第1の範囲と第2の範囲とのうち、上位の範囲に属する値を設定した値データを用意することができる。このため、情報処理装置100は、処理の安定性の向上を図ることができる。
【0172】
情報処理装置100によれば、第1の範囲と第2の範囲とのうち、下位の範囲に属する値、および、第3の範囲と第4の範囲とのうち、上位の範囲に属する値を設定した値データのうち、最初の順序である第5の値データを特定することができる。情報処理装置100によれば、第5の値データに、第1の範囲と第2の範囲とのうち、上位の範囲に属する値を設定することができる。情報処理装置100によれば、第1の範囲と第2の範囲とのうち、下位の範囲に属する値、および、第3の範囲と第4の範囲とのうち、上位の範囲に属する値を設定した値データのうち、最後の順序である第6の値データを特定することができる。情報処理装置100によれば、第6の値データに、第3の範囲と第4の範囲とのうち、下位の範囲に属する値を設定することができる。これにより、情報処理装置100は、フラグ情報を更新した後、第3の範囲と第4の範囲とのうち、下位の範囲に属する値を設定した値データを用意し、第1の範囲と第2の範囲とのうち、上位の範囲に属する値を設定した値データを用意することができる。このため、情報処理装置100は、処理の安定性の向上を図ることができる。
【0173】
なお、本実施の形態で説明した情報処理方法は、予め用意されたプログラムをPCやワークステーションなどのコンピュータで実行することにより実現することができる。本実施の形態で説明した情報処理プログラムは、コンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。記録媒体は、ハードディスク、フレキシブルディスク、CD(Compact Disc)-ROM、MO(Magneto Optical disc)、DVD(Digital Versatile Disc)などである。また、本実施の形態で説明した情報処理プログラムは、インターネットなどのネットワークを介して配布してもよい。
【0174】
上述した実施の形態に関し、さらに以下の付記を開示する。
【0175】
(付記1)データ群に含まれるデータの数の定数倍を表現可能な桁数の値を示す、前記データ群に含まれるそれぞれ異なるデータに対応付けられた複数の値データを、順序付けて記憶し、
前記桁数の値に対して設定された、少なくとも前記データの数をそれぞれ表現可能な複数の範囲のうち、第1の範囲と第2の範囲との上下関係を規定するフラグ情報を記憶し、
前記フラグ情報を参照して、前記複数の値データのそれぞれの値データに、前記第1の範囲と前記第2の範囲とのうち、下位の範囲に属する値を設定し、
前記フラグ情報を参照して、前記複数の値データのうち、順序を先頭に移動する第1の値データの指定を受け付ける都度、前記第1の値データが、他の値データより前の順序になるよう、前記第1の値データに、前記第1の範囲と前記第2の範囲とのうち、上位の範囲に属する値を設定し、
前記複数の値データのうち、前記下位の範囲に属する値を設定した値データが存在しなくなると、前記第1の範囲と前記第2の範囲との上下関係を入れ替えるよう、前記フラグ情報を更新する、
処理をコンピュータに実行させることを特徴とする情報処理プログラム。
【0176】
(付記2)前記フラグ情報は、前記複数の範囲のうち、前記第1の範囲と前記第2の範囲との上下関係と、前記第1の範囲と前記第2の範囲との下位に存在する第3の範囲と第4の範囲との上下関係を規定し、
前記フラグ情報を参照して、前記複数の値データのそれぞれの値データに、前記第1の範囲と前記第2の範囲とのうち、下位の範囲に属する値、または、前記第3の範囲と前記第4の範囲とのうち、上位の範囲に属する値を設定し、
前記フラグ情報を参照して、前記第1の値データの指定を受け付ける都度、前記第1の値データが、他の値データより前の順序になるよう、前記第1の値データに、前記第1の範囲と前記第2の範囲とのうち、上位の範囲に属する値を設定し、
前記フラグ情報を参照して、前記複数の値データのうち、順序を末尾に移動する第2の値データの指定を受け付ける都度、前記第2の値データが、他の値データより後の順序になるよう、前記第2の値データに、前記第3の範囲と前記第4の範囲とのうち、下位の範囲に属する値を設定し、
前記フラグ情報を参照して、前記第1の範囲と前記第2の範囲とのうち、下位の範囲に属する値、および、前記第3の範囲と前記第4の範囲とのうち、上位の範囲に属する値を設定した値データが存在しなくなると、前記第1の範囲と前記第2の範囲との上下関係を入れ替えるよう、かつ、前記第3の範囲と前記第4の範囲との上下関係を入れ替えるよう、前記フラグ情報を更新する、
処理を前記コンピュータに実行させることを特徴とする付記1に記載の情報処理プログラム。
【0177】
(付記3)前記フラグ情報を参照して、前記第1の値データの指定を受け付け、前記第1の値データに、前記第1の範囲と前記第2の範囲とのうち、上位の範囲に属する値を設定する際、前記第1の範囲と前記第2の範囲とのうち、下位の範囲に属する値を設定した値データ、および、前記第3の範囲と前記第4の範囲とのうち、上位の範囲に属する値を設定した値データのうち、最後の順序である第3の値データに、前記第3の範囲と前記第4の範囲とのうち、下位の範囲に属する値を設定し、
前記フラグ情報を参照して、前記第2の値データの指定を受け付け、前記第2の値データに、前記第3の範囲と前記第4の範囲とのうち、下位の範囲に属する値を設定する際、前記第1の範囲と前記第2の範囲とのうち、下位の範囲に属する値を設定した値データ、および、前記第3の範囲と前記第4の範囲とのうち、上位の範囲に属する値を設定した値データのうち、最初の順序である第4の値データに、前記第1の範囲と前記第2の範囲とのうち、上位の範囲に属する値を設定する、
処理を前記コンピュータに実行させることを特徴とする付記2に記載の情報処理プログラム。
【0178】
(付記4)前記フラグ情報を更新した後、前記フラグ情報を参照して、前記第1の範囲と前記第2の範囲とのうち、下位の範囲に属する値を設定した値データ、および、前記第3の範囲と前記第4の範囲とのうち、上位の範囲に属する値を設定した値データのうち、最初の順序である第5の値データに、前記第1の範囲と前記第2の範囲とのうち、上位の範囲に属する値を設定し、最後の順序である第6の値データに、前記第3の範囲と前記第4の範囲とのうち、下位の範囲に属する値を設定する、
処理を前記コンピュータに実行させることを特徴とする付記2または3に記載の情報処理プログラム。
【0179】
(付記5)データ群に含まれるデータの数の定数倍を表現可能な桁数の値を示す、前記データ群に含まれるそれぞれ異なるデータに対応付けられた複数の値データを、順序付けて記憶し、
前記桁数の値に対して設定された、少なくとも前記データの数をそれぞれ表現可能な複数の範囲のうち、第1の範囲と第2の範囲との上下関係を規定するフラグ情報を記憶し、
前記フラグ情報を参照して、前記複数の値データのそれぞれの値データに、前記第1の範囲と前記第2の範囲とのうち、下位の範囲に属する値を設定し、
前記フラグ情報を参照して、前記複数の値データのうち、順序を先頭に移動する第1の値データの指定を受け付ける都度、前記第1の値データが、他の値データより前の順序になるよう、前記第1の値データに、前記第1の範囲と前記第2の範囲とのうち、上位の範囲に属する値を設定し、
前記複数の値データのうち、前記下位の範囲に属する値を設定した値データが存在しなくなると、前記第1の範囲と前記第2の範囲との上下関係を入れ替えるよう、前記フラグ情報を更新する、
処理をコンピュータが実行することを特徴とする情報処理方法。
【0180】
(付記6)データ群に含まれるデータの数の定数倍を表現可能な桁数の値を示す、前記データ群に含まれるそれぞれ異なるデータに対応付けられた複数の値データを、順序付けて記憶し、
前記桁数の値に対して設定された、少なくとも前記データの数をそれぞれ表現可能な複数の範囲のうち、第1の範囲と第2の範囲との上下関係を規定するフラグ情報を記憶し、
前記フラグ情報を参照して、前記複数の値データのそれぞれの値データに、前記第1の範囲と前記第2の範囲とのうち、下位の範囲に属する値を設定し、
前記フラグ情報を参照して、前記複数の値データのうち、順序を先頭に移動する第1の値データの指定を受け付ける都度、前記第1の値データが、他の値データより前の順序になるよう、前記第1の値データに、前記第1の範囲と前記第2の範囲とのうち、上位の範囲に属する値を設定し、
前記複数の値データのうち、前記下位の範囲に属する値を設定した値データが存在しなくなると、前記第1の範囲と前記第2の範囲との上下関係を入れ替えるよう、前記フラグ情報を更新する、
制御部を有することを特徴とする情報処理装置。
【符号の説明】
【0181】
100 情報処理装置
101 値データ
110 第1の範囲
120 第2の範囲
200 情報処理システム
201 情報蓄積装置
202 クライアント装置
210 ネットワーク
300 バス
301 CPU
302 メモリ
303 ネットワークI/F
304 記録媒体I/F
305 記録媒体
400 記憶部
401 取得部
402 設定部
403 変更部
404 更新部
405 比較部
406 出力部
500 配列情報
510 レンジポインタ
700,800,900,1000,1100,1200,1300,1400 符号
810 表
901,902,1101,1301 要素
1500 ファイル管理テーブル
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19
図20
図21
図22