(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023161775
(43)【公開日】2023-11-08
(54)【発明の名称】約定プログラム、約定方法および情報処理装置
(51)【国際特許分類】
G06Q 40/04 20120101AFI20231031BHJP
【FI】
G06Q40/04
【審査請求】未請求
【請求項の数】6
【出願形態】OL
(21)【出願番号】P 2022072322
(22)【出願日】2022-04-26
(71)【出願人】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】110002147
【氏名又は名称】弁理士法人酒井国際特許事務所
(72)【発明者】
【氏名】清水 俊宏
【テーマコード(参考)】
5L055
【Fターム(参考)】
5L055BB52
(57)【要約】
【課題】メモリ使用量および計算量を削減すること。
【解決手段】情報処理装置は、一株当たりの単価、下限制約に対応する最小約定数、上限制約に対応する最大約定数が設定された注文情報を基にして、複数のノードを有する第1グラフであって、各ノードを繋ぐ辺に下限制約および上限制約を設定した第1グラフを生成する。情報処理装置は、第1グラフの辺に設定された下限制約および上限制約を、上限制約のみの辺に帰着させることで、第2グラフを生成する。情報処理装置は、第2グラフの最大フロー問題を解くことで、第2グラフの各辺に流量を設定する。情報処理装置は、第2グラフの各辺に設定された流量を、第1グラフの各辺の流量に変換する。情報処理装置は、第1グラフの各辺に設定された流量を基にして、約定価格を特定する。
【選択図】
図3
【特許請求の範囲】
【請求項1】
一株当たりの単価、下限制約に対応する最小約定数、上限制約に対応する最大約定数が設定された注文情報を基にして、複数のノードを有する第1グラフであって、各ノードを繋ぐ辺に前記下限制約および前記上限制約を設定した前記第1グラフを生成し、
前記第1グラフの辺に設定された前記下限制約および前記上限制約を、前記上限制約のみの辺に帰着させることで、第2グラフを生成し、
前記第2グラフの最大フロー問題を解くことで、前記第2グラフの各辺に流量を設定し、
前記第2グラフの各辺に設定された流量を、前記第1グラフの各辺の流量に変換し、
前記第1グラフの各辺に設定された流量を基にして、約定価格を特定する
処理をコンピュータに実行させることを特徴とする約定プログラム。
【請求項2】
前記注文情報は、売り注文の情報と、買い注文の情報とを含み、前記第1グラフを生成する処理は、ソース、シンク、前記売り注文、前記買い注文、前記単価にそれぞれ対応する複数のノードを有し、各ノード間の辺に、前記下限制約と、前記上限制約とを設定した前記第1グラフを生成することを特徴とする請求項1に記載の約定プログラム。
【請求項3】
前記第2グラフを生成する処理は、前記第1グラフの第1ノードと第2ノードとを結ぶ対象の辺の上限制約から下限制約を減算した値を、前記対象の辺の新たな上限制約に設定し、前記対象の辺の下限制約を除去することで、前記下限制約および前記上限制約を、前記上限制約のみの辺に帰着させることを特徴とする請求項2に記載の約定プログラム。
【請求項4】
前記第2グラフを生成する処理は、前記第1グラフには第3ノードと第4ノードとが含まれ、前記第3ノードと前記第1ノードとを結ぶ辺に、前記対象の辺から除去された下限制約に対応する値を設定し、前記第4ノードと前記第2ノードとを結ぶ辺に、前記対象の辺から除去された下限制約に対応する値を設定する処理を更に実行することを特徴とする請求項3に記載の約定プログラム。
【請求項5】
一株当たりの単価、下限制約に対応する最小約定数、上限制約に対応する最大約定数が設定された注文情報を基にして、複数のノードを有する第1グラフであって、各ノードを繋ぐ辺に前記下限制約および前記上限制約を設定した前記第1グラフを生成し、
前記第1グラフの辺に設定された前記下限制約および前記上限制約を、前記上限制約のみの辺に帰着させることで、第2グラフを生成し、
前記第2グラフの最大フロー問題を解くことで、前記第2グラフの各辺に流量を設定し、
前記第2グラフの各辺に設定された流量を、前記第1グラフの各辺の流量に変換し、
前記第1グラフの各辺に設定された流量を基にして、約定価格を特定する
処理をコンピュータが実行することを特徴とする約定方法。
【請求項6】
一株当たりの単価、下限制約に対応する最小約定数、上限制約に対応する最大約定数が設定された注文情報を基にして、複数のノードを有する第1グラフであって、各ノードを繋ぐ辺に前記下限制約および前記上限制約を設定した前記第1グラフを生成し、
前記第1グラフの辺に設定された前記下限制約および前記上限制約を、前記上限制約のみの辺に帰着させることで、第2グラフを生成し、
前記第2グラフの最大フロー問題を解くことで、前記第2グラフの各辺に流量を設定し、
前記第2グラフの各辺に設定された流量を、前記第1グラフの各辺の流量に変換し、
前記第1グラフの各辺に設定された流量を基にして、約定価格を特定する
処理を実行する制御部を有する情報処理装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、約定プログラム等に関する。
【背景技術】
【0002】
証券市場において、株式取引などの売買が成立することを「約定」と呼ぶ。たとえば、売り注文を行ったユーザと、買い注文を行ったユーザとの条件が合致して、取引が成立した状態を約定という。ユーザは、注文(売りの注文または買いの注文)を行う場合に、全量約定、または、一定数の注文数を条件にして、注文を行う場合がある。
【0003】
ここでは、証券市場において金額を指定した全量約定注文を出す市場を想定して説明を行う。たとえば、下記の条件(1)~(3)を満たし、また、約定数を最大化するように、売り注文と買い注文とのマッチングを行う。
【0004】
条件(1):指定の株数を必ず約定させる(全量約定)。
条件(2):売り注文であれば指定金額以上を渡す。
条件(3):買い注文であれば指定金額以下をもらう。
【0005】
図10は、売り注文と買い注文とのマッチングを説明するための図である。
図10に示す例では、売り注文として、注文Or1、Or2、Or3、Or4、Or5が存在する。注文Or1は、注文数「3」、指定金額「6」となる注文である。注文Or2は、注文数「2」、指定金額「5」となる注文である。注文Or3は、注文数「5」、指定金額「12」となる注文である。注文Or4は、注文数「3」、指定金額「7」となる注文である。注文Or5は、注文数「4」、指定金額「13」となる注文である。
【0006】
一方、買い注文として、注文Or6、Or7、Or8が存在する。注文Or6は、注文数「4」、指定金額「8」となる注文である。注文Or7は、注文数「2」、指定金額「5」となる注文である。注文Or8は、注文数「6」、指定金額「17」となる注文である。
【0007】
たとえば、条件(1)~(3)を満たし、約定数を最大化するように、注文Or1~Or5と、注文Or6、Or8とのマッチングを行うと、注文Or1~Or3と、注文Or6、Or8とが約定する。注文Or1~Or3の注文数の合計が「10」、注文Or6、Or8の注文数の合計が「10」となる。また、注文Or1~Or3の指定金額の合計が「23」となり、注文Or6、Or8の指定金額の合計が「25」となる。
【0008】
なお、全量約定の場合、ナップサック問題となるため、ある程度の条件をつけなければ、解くことは難しい。
【0009】
ここで、売り注文と買い注文とのマッチングを行う従来技術として、動的計画法による解決法がある。
図11~
図16は、従来技術を説明するための図である。以下の説明では、従来技術を実行する装置を便宜的に「従来装置」と表記する。従来装置は、配列aを設定し、a[i]<∞で、注文数x、金額pの注文が来た場合、a[i+x]>a[i]+pであれば、a[i+x]=a[i]+pとする(要素の値が小さくなるなら更新)。
【0010】
図11、
図12では、従来装置が「売り注文」を受け付けた場合の配列aの更新を示す。
図11について説明する。配列aの初期状態を、ステップS50に示すものとする。配列aの初期状態では、a[0]0となり、他の要素は全て「∞」となる。
【0011】
注文数3、金額6(万円、以下省略)の売り注文を受け付けた場合、配列aの状態は、ステップS51に示すものとなる。配列a[0+3]=∞となり、a[0]+p=6となるため、配列a[0+3]>a[0]+pとなる。このため、従来装置は、配列a[0+3]=6に設定する。
【0012】
注文数2、金額5の売り注文を受け付けた場合、配列aの状態は、ステップS52に示すものとなる。配列a[0+2]=∞となり、a[0]+p=5となるため、配列a[0+2]>a[0]+pとなる。このため、従来装置は、配列a[0+2]=5に設定する。配列a[3+2]=∞となり、a[3]+p=11となるため、配列a[3+2]>a[3]+pとなる。このため、従来装置は、配列a[3+2]=11に設定する。
【0013】
図12の説明に移行する。注文数5、金額12の売り注文を受け付けた場合、配列aの状態は、ステップS53に示すものとなる。配列a[0+5]=11となり、a[0]+p=12となるため、配列a[0+5]<a[0]+pとなる。このため、従来装置は、配列a[0+5]=11のままとする(更新しない)。
【0014】
配列a[2+5]=∞となり、a[2]+p=17となるため、配列a[2+5]>a[2]+pとなる。このため、従来装置は、配列a[2+5]=17に設定する。配列a[3+5]=∞となり、a[3]+p=18となるため、配列a[3+5]>a[3]+pとなる。このため、従来装置は、配列a[3+5]=18に設定する。
【0015】
配列a[5+5]=∞となり、a[5]+p=13となるため、配列a[5+5]>a[5]+pとなる。このため、従来装置は、配列a[5+5]=23に設定する。
【0016】
注文数3、金額7の売り注文を受け付けた場合、配列aの状態は、ステップS54に示すものとなる。配列a[0+3]=6となり、a[0]+p=7となるため、配列a[0+3]<a[0]+pとなる。このため、従来装置は、配列a[0+3]=6のままとする(更新しない)。配列a[2+3]=11となり、a[2]+p=12となるため、配列a[2+3]<a[2]+pとなる。このため、従来装置は、配列a[2+3]=11のままとする(更新しない)。
【0017】
配列a[3+3]=∞となり、a[3]+p=13となるため、配列a[3+3]>a[3]+pとなる。このため、従来装置は、配列a[3+3]=13に設定する。配列a[3+5]=18となり、a[5]+p=18となるため、配列a[3+5]=a[5]+pとなる。このため、従来装置は、配列a[3+5]=18のままとする。
【0018】
配列a[7+3]=23となり、a[7]+p=24となるため、配列a[7+3]<a[7]+pとなる。このため、従来装置は、配列a[7+3]=13のままとする(更新しない)。配列a[8+3]=∞となり、a[8]+p=25となるため、配列a[8+3]>a[8]+pとなる。このため、従来装置は、配列a[8+3]=25に設定する。
【0019】
注文数4、金額13の売り注文を受け付けた場合、配列aの状態は、ステップS55に示すものとなる。配列a[0+4]=∞となり、a[0]+p=13となるため、配列a[0+4]>a[0]+pとなる。このため、従来装置は、配列a[0+4]=13に設定する。配列a[2+4]=13となり、a[2]+p=18となるため、配列a[2+4]<a[2]+pとなる。このため、従来装置は、配列a[2+4]=13のままとする(更新しない)。
【0020】
配列a[3+4]=17となり、a[3]+p=19となるため、配列a[3+4]<a[3]+pとなる。このため、従来装置は、配列a[3+4]=17のままとする(更新しない)。配列a[5+4]=∞となり、a[5]+p=24となるため、配列a[5+6]>a[5]+pとなる。このため、従来装置は、配列a[5+4]=24に設定する。
【0021】
配列a[6+4]=23となり、a[6]+p=24となるため、配列a[6+4]<a[6]+pとなる。このため、従来装置は、配列a[6+4]=23のままとする(更新しない)。配列a[7+4]=25となり、a[7]+p=28となるため、配列a[7+4]<a[7]+pとなる。このため、従来装置は、配列a[7+4]=25のままとする(更新しない)。
【0022】
配列a[8+4]=∞となり、a[8]+p=31となるため、配列a[8+4]>a[8]+pとなる。このため、従来装置は、配列a[8+4]=31に設定する。配列a[10+4]=∞となり、a[10]+p=36となるため、配列a[10+4]>a[10]+pとなる。このため、従来装置は、配列a[10+4]=36に設定する。配列a[11+4]=∞となり、a[11]+p=38となるため、配列a[11+4]>a[11]+pとなる。このため、従来装置は、配列a[11+4]=38に設定する。
【0023】
続いて、
図13の説明に移行する。
図13では、従来装置が、買い注文を受け付けた場合の配列bに対する更新を示す。従来装置は、配列bを設定し、b[i]>-∞で、注文数x、金額pの注文が来た場合、b[i+x]<b[i]+pであれば、b[i+x]=b[i]+pとする(要素の値が大きくなるなら更新)。
【0024】
配列bの初期状態を、ステップS60に示すものとする。配列bの初期状態では、b[0]0となり、他の要素は全て「-∞」となる。
【0025】
注文数4、金額8(万円、以下省略)の買い注文を受け付けた場合、配列bの状態は、ステップS61に示すものとなる。配列b[0+4]=-∞となり、b[0]+p=8となるため、配列b[0+4]<b[0]+pとなる。このため、従来装置は、配列b[0+4]=8に設定する。
【0026】
注文数2、金額5の買い注文を受け付けた場合、配列bの状態は、ステップS62に示すものとなる。配列b[0+2]=-∞となり、b[0]+p=5となるため、配列b[0+2]<b[0]+pとなる。このため、従来装置は、配列b[0+2]=5に設定する。配列b[4+2]=-∞となり、b[4]+p=13となるため、配列b[4+2]<b[4]+pとなる。このため、従来装置は、配列b[4+2]=13に設定する。
【0027】
注文数6、金額17の買い注文を受け付けた場合、配列bの状態は、ステップS63に示すものとなる。配列b[0+6]=-∞となり、b[0]+p=17となるため、配列b[0+6]<b[0]+pとなる。このため、従来装置は、配列b[0+6]=17に設定する。
【0028】
配列b[2+6]=-∞となり、b[2]+p=22となるため、配列b[2+6]<b[2]+pとなる。このため、従来装置は、配列b[2+6]=22に設定する。配列b[4+6]=-∞となり、b[4]+p=25となるため、配列b[4+6]<b[4]+pとなる。このため、従来装置は、配列b[4+6]=25に設定する。
【0029】
配列b[6+6]=-∞となり、b[6]+p=30となるため、配列b[6+6]<b[6]+pとなる。このため、従来装置は、配列b[6+6]=30に設定する。
【0030】
ここで、従来装置は、
図11、
図12で説明した配列aと、
図13で説明した配列bとを比較して、マッチング可能な最大の約定数量を特定する。
【0031】
図14の説明に移行する。従来装置は、売り注文の配列aと、買い注文の配列bをインデックスごとに走査し、a[i]≦b[i]となる最大のインデックスiを、最大の約定量として算出する。
図14に示す例では、a[i]≦b[i]となるインデックスのうち、最大のインデックスは、インデックスi=10となるため、従来装置は、最大の約定数を「10」とする。
【0032】
ところで、従来装置は、注文順受付順(注文順)および数量(注文数)を示す補助情報を、インデックス毎に登録することで、約定対象となる注文を特定することが可能となる。
図15、
図16を用いて、従来技術による係る処理(インデックスを用いた処理)を説明する。
【0033】
図15について説明する。配列aの初期状態を、ステップS70に示すものとする。配列aの初期状態では、a[0]0となり、他の要素は全て「∞」となる。
【0034】
初め(注文受付順=1)に、注文数3、金額6の売り注文を受け付けた場合、配列aの状態は、ステップS71に示すものとなる。従来装置は、
図11のステップS51と同様にして、a[0+3]=6を設定する。また、従来装置は、インデックスi=3に、補助情報sub1-3を登録する。補助情報sub1-3には、順番「1」、数量「3(金額6)」が設定される。
【0035】
続いて(注文受付順=2)、注文数2、金額5の売り注文を受け付けた場合、配列aの状態は、ステップS72に示すものとなる。従来装置は、
図11のステップS52と同様にして、a[0+2]=5を設定する。従来装置は、インデックスi=2に、補助情報sub1-2を登録する。補助情報sub1-2には、順番「2」、数量「2(金額5)」が設定される。
【0036】
従来装置は、
図11のステップS52と同様にして、a[3+2]=11を設定する。従来装置は、インデックスi=5に、補助情報sub1-5を登録する。補助情報sub1-5には、順番「2」、数量「2(金額5)」が設定される。
【0037】
情報処理装置は、売り注文を受け付ける度に、上記処理を繰り返し実行する。
【0038】
図示を省略するが、従来装置は、買い注文を受け付けた場合も、配列bの要素に金額を設定すると共に、
図15と同様にして、インデックスに補助情報を登録する。従来装置が、配列bの要素に金額を設定する処理は、
図13と同様である。
【0039】
図16を用いて、従来装置が、約定対象となる注文を特定する処理を説明する。従来装置は、約定数を算出した後に、配列aに設定された補助情報を基にして、約定対象となる注文を特定する。情報処理装置は、約定数i
0で約定する場合、インデックスの初期値i=i
0として、以下の処理をi=0となるまで繰り返し実行する。
【0040】
従来装置が繰り返す処理は次に示す処理となる。従来装置は、インデックスiに対応するa[i]の注文を約定対象とする。次に、従来装置は、a[i]に設定された補助情報に含まれる数量αを特定し、i=i-αによって、インデックスiを更新する。
【0041】
図16の配列aを基にして、従来装置が、約定する売り注文を特定する処理について説明する。また、i
0=5とする。従来装置は、約定数「5」に対応するインデックスi=5に設定された補助情報sub1-5に対応する注文を約定対象とする。従来装置は、補助情報sub1-5に含まれる数量α=2を取得し、インデックスi=5-2=3に更新する。
【0042】
従来装置は、インデックスi=3に設定された補助情報sub1-3に対応する注文を約定対象とする。従来装置は、補助情報sub1-3に含まれる数量α=3を取得し、インデックスi=3-3=0に更新する。従来装置は、インデックスi=0となるため、処理を終了する。
【0043】
上記処理によって、従来装置は、
図15で説明した「注文数3、金額6の売り注文」と、「注文数2、金額5の売り注文」とを約定対象として特定する。図示を省略するが、情報処理装置は、配列bに対しても、
図16に対応する処理を実行し、約定対象となる買い注文を特定する。
【先行技術文献】
【特許文献】
【0044】
【特許文献1】国際公開第2020/179070号
【特許文献2】国際公開第2020/179072号
【発明の概要】
【発明が解決しようとする課題】
【0045】
しかしながら、上述した従来技術では、注文数の合計毎にメモリ領域を利用し、注文到達時にも全メモリ領域を一度走査する処理が発生するため、メモリ使用量および計算量が多くなるという問題がある。
【0046】
1つの側面では、本発明は、メモリ使用量および計算量を削減することができる約定プログラム、約定方法および情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【0047】
第1の案では、コンピュータに次の処理を実行させる。コンピュータは、一株当たりの単価、下限制約に対応する最小約定数、上限制約に対応する最大約定数が設定された注文情報を基にして、複数のノードを有する第1グラフであって、各ノードを繋ぐ辺に下限制約および上限制約を設定した第1グラフを生成する。コンピュータは、第1グラフの辺に設定された下限制約および上限制約を、上限制約のみの辺に帰着させることで、第2グラフを生成する。コンピュータは、第2グラフの最大フロー問題を解くことで、第2グラフの各辺に流量を設定する。コンピュータは、第2グラフの各辺に設定された流量を、第1グラフの各辺の流量に変換する。コンピュータは、第1グラフの各辺に設定された流量を基にして、約定価格を特定する。
【発明の効果】
【0048】
メモリ使用量および計算量を削減することができる。
【図面の簡単な説明】
【0049】
【
図1】
図1は、ネットワークフローアルゴリズムを説明するための図である。
【
図2】
図2は、上限制約および下限制約が設定されたグラフの問題を上限制約のみの問題に帰着させる方法を説明するための図である。
【
図3】
図3は、本実施例に係る情報処理装置の処理を説明するための図である。
【
図4】
図4は、本実施例に係る情報処理装置の構成を示す機能ブロック図である。
【
図5】
図5は、売り注文テーブルのデータ構造の一例を示す図である。
【
図6】
図6は、買い注文テーブルのデータ構造の一例を示す図である。
【
図7】
図7は、本実施例に係る情報処理装置の処理手順を示すフローチャートである。
【
図8】
図8は、グラフG生成処理の処理手順を示すフローチャートである。
【
図9】
図9は、実施例の情報処理装置と同様の機能を実現するコンピュータのハードウェア構成の一例を示す図である。
【
図10】
図10は、売り注文と買い注文とのマッチングを説明するための図である。
【
図11】
図11は、従来技術を説明するための図(1)である。
【
図12】
図12は、従来技術を説明するための図(2)である。
【
図13】
図13は、従来技術を説明するための図(3)である。
【
図14】
図14は、従来技術を説明するための図(4)である。
【
図15】
図15は、従来技術を説明するための図(5)である。
【
図16】
図16は、従来技術を説明するための図(6)である。
【発明を実施するための形態】
【0050】
以下に、本願の開示する約定プログラム、約定方法および情報処理装置の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
【実施例0051】
本実施例の情報処理装置の説明を行う前に、ネットワークフローのアルゴリズムの一例について説明する。
図1は、ネットワークフローのアルゴリズムを説明するための図である。たとえば、下記のような問題を、ネットワークフローの最大フロー問題(最大流量問題)と呼ぶ。以下の説明では、ネットワークフローを「グラフ」と表記する。
【0052】
問題:グラフの辺に沿って頂点ノードs(ソース)から頂点ノードt(シンク)までできるだけ多くの水を流したい。ただし各辺には水を流せる最大容量が設定されている。どの辺にどのくらいの量の水を流すようにすれば、頂点ノードsから頂点ノードtまで最も多くの水を流せるかを求めよ。
【0053】
たとえば、
図1のグラフG1には、頂点ノードs、頂点ノードt、ノードn1、n2、n3、n4が含まれる。頂点ノードsと、ノードn1との辺e
s-1には、最大容量「9」が設定されている。頂点ノードsと、ノードn3との辺e
s-3には、最大容量「9」が設定されている。ノードn1と、ノードn3との辺e
1-3には、最大容量「1」が設定されている。
【0054】
ノードn1と、ノードn2との辺e1-2には、最大容量「3」が設定されている。ノードn1と、ノードn4との辺e1-4には、最大容量「7」が設定されている。ノードn3と、ノードn4との辺e3-4には、最大容量「8」が設定されている。ノードn4と、ノードn2との辺e4-2には、最大容量「5」が設定されている。
【0055】
ノードn2と、頂点ノードtとの辺e2-tには、最大容量「9」が設定されている。ノードn4と、頂点ノードtとの辺e4-tには、最大容量「9」が設定されている。
【0056】
たとえば、頂点ノードsから湧き出る水の量を「10」とし、グラフG1を解くと、各辺の流量は、グラフG2に示すものとなる。辺es-1の流量は「6」となる。辺es-3の流量は「4」となる。辺e1-3の流量は「1」となる。辺e1-2の流量は「3」となる。辺e1-4の流量は「2」となる。辺e3-4の流量は「5」となる。辺e4-2の流量は「1」となる。辺e2-tの流量は「4」となる。辺e4-tの流量は「6」となる。
【0057】
ところで、
図1に示したグラフG1では、各辺に上限制約に対応する最大容量のみが設定されていたが、最小容量等の下限制約が設定される場合もあり得る。上限制約および下限制約が設定されたグラフの問題は、下記のように処理することで上限制約のみの問題に帰着させることができる。
【0058】
図2は、上限制約および下限制約が設定されたグラフの問題を上限制約のみの問題に帰着させる方法を説明するための図である。
図2では、頂点ノードs、頂点ノードt、ノードz、ノードvを用いて説明を行う。ノードzと、ノードvとの辺e
z-vには、上限制約「u」、下限制約「l」が設定されている。
【0059】
たとえば、次のステップS1~S3を実行することで、上限制約および下限制約が設定されたグラフの問題を上限制約のみの問題に帰着させる。
【0060】
S1:辺ez-vについて、上限制約「u-l」、下限制約「0」の辺に設定する。
S2:ノードzから頂点ノードtへの辺ez-vを張る。また、頂点ノードsからノードvへの辺es-vを張る。また、辺ez-vおよび辺es-vに上限制約「l」を設定する。
S3:最大フローを流したときに、下限制約で追加した辺(たとえば、辺ez-vおよび辺es-v)に最大流量分流れていれば、下限制約を満たすフローが存在するといえる。一方、下限制約で追加した辺(たとえば、辺ez-vおよび辺es-v)に最大流量分流れていなければ、下限制約を満たすフローが存在しない。
【0061】
続いて、本実施例に係る情報処理装置の処理について説明する。情報処理装置は、証券取引における買い注文および売り注文を基にした第1グラフであって、上限制約および下限制約を設定した第1グラフを生成する。情報処理装置は、上限制約および下限制約が設定された第1グラフの問題を基にして、上限制約のみの問題に帰着させた第2グラフを生成する。情報処理装置は、第2グラフの最大フロー問題を解いた後に、第2グラフで得られた解(各辺の流量)を第1グラフに置き換え、第1グラフの各辺の流量から、約定価格を決定する。
【0062】
これによって、従来技術で説明した動的計算法による解決法と比較して、計算量およびメモリ量を削減することができる。たとえば、従来技術では、合計の株数分の配列に相当するメモリ領域を用意し、1注文を処理するごとにメモリの配列を走査する必要がある。一方、本実施例の情報処理装置では、注文数と価格数分のノードを用意するだけで、約定価格を決定することができる。
【0063】
図3は、本実施例に係る情報処理装置の処理を説明するための図である。本実施例では、注文および指定価格を、売り注文、買い注文に分けた以下のようなグラフを想定する。グラフの頂点には、ソース(s)に対応するノード、シンク(t)に対応するノードが含まれる。頂点には、売り注文それぞれに対応する頂点が含まれる。頂点には、買い注文それぞれに対応する頂点が含まれる。頂点には、価格の値毎に対応する頂点が含まれる。
【0064】
以下の説明では、ソース(s)に対応するノードを、「頂点ノードs」と表記する。シンク(t)に対応するノードを「頂点ノードt」と表記する。売り注文それぞれに対応する頂点を「売り注文ノード」と表記する。買い注文それぞれに対応する頂点を「買い注文ノード」と表記する。価格の値毎に対応する頂点を「価格ノード」と表記する。なお、頂点ノードs、頂点ノードt、売り注文ノード、買い注文ノード、価格ノードをまとめて、適宜、「ノード」と表記する。
【0065】
図3に示す例では、売り注文として、注文Or1-1、Or1-2、Or1-3が存在する。注文Or1-1は、価格(1株当たりの単価、以下同様)「11」、価格の最小約定数「2」、価格の最大約定数「5」となる注文である。注文Or1-2は、価格「10」、価格の最小約定数「1」、価格の最大約定数「4」となる注文である。注文Or1-3は、価格「13」、価格の最小約定数「4」、価格の最大約定数「4」となる注文である。
【0066】
買い注文として、注文OrA、OrBが存在する。注文OrAは、価格「11」、価格の最小約定数「3」、価格の最大約定数「6」となる注文である。注文OrBは、価格「12」、価格の最小約定数「3」、価格の最大約定数「8」となる注文である。
【0067】
たとえば、情報処理装置は、上記の注文について、下記のように各ノード(頂点)を設定する。情報処理装置は、グラフG3に、頂点ノードs、頂点ノードtを設定する。情報処理装置は、グラフG3に、注文Or1-1に対応する売り注文ノードn1-1を設定する。情報処理装置は、グラフG3に、注文Or1-2に対応する売り注文ノードn1-2を設定する。情報処理装置は、グラフG3に、注文Or1-3に対応する売り注文ノードn1-3を設定する。
【0068】
情報処理装置は、グラフG3に、注文Or1-3の価格「13」に対応する価格ノードn1-13を設定する。情報処理装置は、グラフG3に、注文OrBの価格「12」に対応する価格ノードn1-12を設定する。情報処理装置は、グラフG3に、注文Or1-1、注文OrAの価格「11」に対応する価格ノードn1-11を設定する。情報処理装置は、グラフG3に、注文Or1-2の価格「10」に対応する価格ノードn1-10を設定する。
【0069】
情報処理装置は、グラフG3に、注文OrAに対応する買い注文ノードn1-Aを設定する。情報処理装置は、グラフG3に、注文OrBに対応する買い注文ノードn1-Bを設定する。
【0070】
情報処理装置は、上記のように各ノードを設定した後、下記のような処理を実行して辺を張る。各辺をすべて有向辺とする。情報処理装置は、頂点ノードsから各各売り注文ノードに、その注文の最小約定数を下限、最大約定数を上限とする辺を張る。
【0071】
図3のグラフにおいて、情報処理装置は、頂点ノードsから、売り注文ノードn1-1に、辺e
s-1を張る。情報処理装置は、注文Or1-1を基にして、辺e
s-1の下限制約に「2」を設定し、上限制約に「5」を設定する。
【0072】
情報処理装置は、頂点ノードsから、売り注文ノードn1-2に、辺es-2を張る。情報処理装置は、注文Or1-2を基にして、辺es-2の下限制約に「1」を設定し、上限制約に「4」を設定する。
【0073】
情報処理装置は、頂点ノードsから、売り注文ノードn1-3に、辺es-3を張る。情報処理装置は、注文Or1-3を基にして、辺es-3の下限制約に「4」を設定し、上限制約に「4」を設定する。
【0074】
続いて、情報処理装置は、各売り注文ノードから価格ノードに、その価格での約定が可能であれば、辺を張る。すなわち、情報処理装置は、ある売り注文ノードに対応する指定価格以上の価格に対応する価格ノードを特定し、ある売り注文ノードと、特定した価格ノードとの辺を張る。
【0075】
たとえば、売り注文ノードn1-1に対応する注文Or1-1の価格は「11」である。このため、情報処理装置は、売り注文ノードn1-1と辺を張る対象の価格ノードとして、価格「11」以上の価格に対応する価格ノードn1-13、n1-12、n1-11を特定する。
【0076】
情報処理装置は、売り注文ノードn1-1から、価格ノードn1-13に辺e1-13を張る。情報処理装置は、売り注文ノードn1-1から、価格ノードn1-12に辺e1-12を張る。情報処理装置は、売り注文ノードn1-1から、価格ノードn1-11に辺e1-11を張る。情報処理装置は、辺e1-11~辺e1-13に容量制限がないため、辺e1-11~辺e1-13の上限制約を無限大に設定する。
【0077】
売り注文ノードn1-2に対応する注文Or1-2の価格は「10」である。このため、情報処理装置は、売り注文ノードn1-2と辺を張る対象の価格ノードとして、価格「10」以上の価格に対応する価格ノードn1-13、n1-12、n1-11、n1-10を特定する。
【0078】
情報処理装置は、売り注文ノードn1-2から、価格ノードn1-13に辺e2-13を張る。情報処理装置は、売り注文ノードn1-2から、価格ノードn1-12に辺e2-12を張る。情報処理装置は、売り注文ノードn1-2から、価格ノードn1-11に辺e2-11を張る。情報処理装置は、売り注文ノードn1-2から、価格ノードn1-10に辺e2-10を張る。情報処理装置は、辺e2-10~辺e2-13に容量制限がないため、辺e2-10~辺e2-13の上限制約を無限大に設定する。
【0079】
売り注文ノードn1-3に対応する注文Or1-3の価格は「13」である。このため、情報処理装置は、売り注文ノードn1-3と辺を張る対象の価格ノードとして、価格「13」以上の価格に対応する価格ノードn1-13を特定する。
【0080】
情報処理装置は、売り注文ノードn1-3から、価格ノードn1-13に辺e3-13を張る。
【0081】
続いて、情報処理装置は、価格ノードから各買い注文ノードに、その価格での約定が可能であれば、辺を張る。すなわち、情報処理装置は、ある買い注文ノードに対応する指定価格以下の価格に対応する価格ノードを特定し、ある買い注文ノードと、特定した価格ノードとの辺を張る。
【0082】
たとえば、買い注文ノードn1-Aに対応する注文OrAの価格は「11」である。このため、情報処理装置は、買い注文ノードn1-Aと辺を張る対象の価格ノードとして、価格「11」以下の価格に対応する価格ノードn1-11、n1-10を特定する。
【0083】
情報処理装置は、価格ノードn1-11から、買い注文ノードn1-Aに辺e11-Aを張る。情報処理装置は、価格ノードn1-10から、買い注文ノードn1-Aに辺e10-Aを張る。情報処理装置は、辺e10-A~辺e11-Aに容量制限はないため、辺e10-A~辺e11-Aの上限制約を無限大に設定する。
【0084】
たとえば、買い注文ノードn1-Bに対応する注文OrBの価格は「12」である。このため、情報処理装置は、買い注文ノードn1-Bと辺を張る対象の価格ノードとして、価格「12」以下の価格に対応する価格ノードn1-12、n1-11、n1-10を特定する。
【0085】
情報処理装置は、価格ノードn1-12から、買い注文ノードn1-Bに辺e12-Bを張る。情報処理装置は、価格ノードn1-11から、買い注文ノードn1-Bに辺e11-Bを張る。情報処理装置は、価格ノードn1-10から、買い注文ノードn1-Bに辺e10-Bを張る。情報処理装置は、辺e10-B~辺e12-Bに容量制限がないため、辺e10-B~辺e12-Bの上限制約を無限大に設定する。
【0086】
続いて、情報処理装置は、売り注文ノードn1-Aから、頂点ノードtに、辺eA-tを張る。情報処理装置は、注文OrAを基にして、辺eA-tの下限制約に「3」を設定し、上限制約に「6」を設定する。
【0087】
情報処理装置は、売り注文ノードn1-Bから、頂点ノードtに、辺eB-tを張る。情報処理装置は、注文OrBを基にして、辺eB-tの下限制約に「3」を設定し、上限制約に「8」を設定する。
【0088】
情報処理装置が、売り注文および買い注文を基にして、上記の処理を実行することで、グラフG3が生成される。グラフG3は、通常のグラフの上限制約に加えて、下限制約が含まれている。
【0089】
情報処理装置は、グラフG3に対して、
図2で説明した処理を実行することで、グラフG3の下限制約を除去したグラフG3’を生成する。グラフG3’の図示を省略するが、グラフG3’は、上限制約および下限制約が設定されたグラフG3の問題を上限制約のみの問題に帰着させたグラフとなる。
【0090】
情報処理装置は、グラフG3’の最大フロー問題を解いた後に、グラフG3’で得られた解(各辺の流量)をグラフG3に置き換え、グラフG3の各辺の流量から、約定価格を決定する。情報処理装置は、グラフG3’の最大フロー問題を解く場合、どのような従来技術を用いてもよい。
【0091】
たとえば、上述した情報処理装置の処理の結果、グラフG3の頂点ノードsと、売り注文ノードn1-1とを結ぶ辺es-1の流量として「3」が設定され、売り注文ノードn1-1と、価格ノードn1-13とを結ぶ辺e1-13の流量として「3」が設定されているものとする。この場合、情報処理装置は、売り注文Or1-1の単価を「13」、約定数「3」を特定する。
【0092】
次に、本実施例に係る情報処理装置の構成例について説明する。
図4は、本実施例に係る情報処理装置の構成を示す機能ブロック図である。
図4に示すように、情報処理装置100は、通信部110、入力部120、表示部130、記憶部140、制御部150を有する。
【0093】
通信部110は、図示しない外部装置等とデータ通信を実行する。たとえば、通信部110は、NIC(Network Interface Card)等によって実現される。
【0094】
入力部120は、キーボードやマウス等の入力デバイスを用いて実現され、ユーザによる入力操作に対応して、制御部150に対して各種の情報を入力する。
【0095】
表示部130は、液晶ディスプレイなどの表示装置等によって実現される。表示部130は、制御部150によって生成される表示画面を表示する。
【0096】
記憶部140は、記憶部140は、たとえば、フラッシュメモリ(Flash Memory)等の半導体メモリ素子、または、ハードディスク、光ディスク等の記憶装置によって実現される。記憶部140は、売り注文テーブル141、買い注文テーブル142、グラフ情報143を有する。
【0097】
売り注文テーブル141は、売り注文に関する情報を保持するテーブルである。
図5は、売り注文テーブルのデータ構造の一例を示す図である。
図5に示すように、この売り注文テーブル141は、識別情報、価格(1株当たりの単価)、最小約定数、最大約定数を対応付ける。
図5の識別情報は、売り注文を識別する情報である。最小約定数、最大約定数に関する説明は、上記の説明と同様である。
【0098】
買い注文テーブル142は、売り注文に関する情報を保持するテーブルである。
図6は、買い注文テーブルのデータ構造の一例を示す図である。
図6に示すように、この買い注文テーブル142は、識別情報、価格(1株当たりの単価)、最小約定数、最大約定数を対応付ける。
図6の識別情報は、買い注文を識別する情報である。最小約定数、最大約定数に関する説明は、上記の説明と同様である。
【0099】
グラフ情報143は、
図3で説明した複数のノードを有向辺で接続したグラフの情報である。
【0100】
図4の説明に戻る。制御部150は、取得部151、生成部152、特定部153を有する。制御部150は、CPU(Central Processing Unit)やMPU(Micro Processing Unit)により実現される。また、制御部150は、たとえば、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)等の集積回路により実行されてもよい。
【0101】
取得部151は、外部装置等から売り注文テーブル141のデータを取得し、取得した売り注文テーブル141を、記憶部140に登録する。取得部151は、外部装置等から買い注文テーブル142のデータを取得し、取得した買い注文テーブル142を、記憶部140に登録する。
【0102】
生成部152は、売り注文テーブル141に登録された売り注文のデータと、買い注文テーブル142に登録された買い注文のデータを基にして、グラフ情報143を生成する。グラフ情報143は、
図3で説明したグラフG3に対応する。生成部152は、
図3で説明したように、ノードを設定し、ノード間を有向辺によって接続する。グラフ3には、通常のグラフの上限制約に加えて、下限制約が含まれている。生成部152が実行するその他の処理は、
図3で説明した処理と同様である。
【0103】
特定部153は、グラフ情報143を基にして、各注文の約定価格を特定する。たとえば、特定部153は、グラフG3に対して、
図2で説明した処理を実行することで、グラフG3の下限制約を除去したグラフG3’を生成する。グラフG3’は、上限制約および下限制約が設定されたグラフG3の問題を上限制約のみの問題に帰着させたグラフとなる。
【0104】
たとえば、特定部153は、グラフGの第1ノードと第2ノードとを結ぶ対象の辺の上限制約から下限制約を減算した値を、対象の辺の新たな上限制約に設定し、対象の辺の下限制約を除去することで、下限制約および上限制約を、上限制約のみの辺に帰着させる。
図3において、第1ノードを頂点ノードs、第2ノードを売り注文ノードn1-1とする。この場合、特定部153は、辺e
s-1の上限制約「5」から、下限制約「2」を減算した値「3」を、辺e
s-1の上限制約「3」として設定し、下限制約を「0」とする。
【0105】
特定部153は、グラフGの第3ノードと第1ノードとを結ぶ辺に、対象の辺から除去された下限制約に対応する値を設定し、グラフGに含まれる第4ノードと第2ノードとを結ぶ辺に、対象の辺から除去された下限制約に対応する値を設定する。
図2を用いて説明すると、特定部153は、頂点ノードsと、ノードvとの結ぶ辺e
s-vの上限制約の値として、上記の処理で減算された下限制約「2」の値を設定する。特定部153は、と、頂点ノードtとの結ぶ辺e
z-tの上限制約の値として、上記の処理で減算された下限制約「2」の値を設定する。
【0106】
特定部153は、上限制約および下限制約が設定された各辺について、上記処理を繰り返し実行することで、グラフG3の下限制約を除去したグラフG3’を生成する。
【0107】
続いて、特定部153は、グラフG3’の最大フロー問題を解くことで、グラフG3’の各辺の流量を特定する。特定部153は、グラフG3’で得られた解(各辺の流量)をグラフG3に置き換え、グラフG3の各辺の流量から、約定価格を決定する。たとえば、特定部153は、グラフG3’の各辺に設定された流量に、グラフG3からグラフG’に変換する際に減算した下限制約の値をそれぞれ加算することで、グラフG3の各辺の流量を特定する。
【0108】
たとえば、特定部153は、上述した処理の結果、グラフG3の頂点ノードsと、売り注文ノードn1-1とを結ぶ辺es-1の流量として「3」が設定され、売り注文ノードn1-1と、ノードn1-13とを結ぶ辺e1-13の流量として「3」が設定されているものとする。この場合、特定部153は、売り注文Or1-1の価格を「13」、約定数を「3」として特定する。
【0109】
特定部153は、各売り注文、各買い注文に対する価格および約定数の特定結果を、表示部130に出力して表示させる。特定部153は、特定部153を外部装置等に通知してもよい。
【0110】
次に、本実施例に係る情報処理装置100の処理手順の一例について説明する。
図7は、本実施例に係る情報処理装置の処理手順を示すフローチャートである。
図7に示すように、情報処理装置100の取得部151は、売り注文テーブル141および買い注文テーブル142を取得し、記憶部140に登録する(ステップS101)。
【0111】
情報処理装置100の生成部152は、グラフ生成処理を実行する(ステップS102)。情報処理装置100の特定部153は、グラフGの下限制約を除去したグラフG’を生成する(ステップS103)。
【0112】
特定部153は、グラフG’の最大フロー問題を解く(ステップS104)。特定部153は、グラフG’で得られた解をグラフGの流量に置き換える(ステップS105)。特定部153は、置き換えたグラフGの各辺の流量を基にして、約定価格を特定する(ステップS106)。
【0113】
特定部153は、約定価格を出力する(ステップS107)。
【0114】
次に、ステップS102に示したグラフG生成処理の処理手順について説明する。
図8は、グラフG生成処理の処理手順を示すフローチャートである。
図8に示すように、情報処理装置100の生成部152は、頂点ノードs(ソース)および頂点ノードt(シンク)を有するグラフGを生成する(ステップS201)。
【0115】
生成部152は、グラフGに価格ノードを追加する(ステップS202)。生成部152は、未選択の売り注文xi(価格p、最小約定数m、最大約定数M)を選択する(ステップS203)。生成部152は、グラフGに売り注文ノードxiを追加する(ステップS204)。生成部152は、頂点ノードsから売り注文ノードxiに下限制約m、上限制約Mの辺を張る(ステップS205)。生成部152は、p≦p’となる全ての価格ノードp’について、売り注文ノードxiに辺(容量制限なし)を張る(ステップS206)。
【0116】
生成部152は、全ての売り注文xiを選択していない場合(ステップS207,No)、ステップS203に移行する。一方、生成部152は、全ての売り注文xiを選択した場合(ステップS207,Yes)、ステップS208に移行する。
【0117】
生成部152は、未選択の買い注文yi(価格p、最小約定数m、最大約定数M)を選択する(ステップS208)。生成部152は、グラフGに買い注文ノードyiを追加する(ステップS209)。生成部152は、買い注文ノードyiから頂点ノードtに下限制約m、上限制約Mの辺を張る(ステップS210)。生成部152は、p>p’となる全ての価格ノードp’について、買い注文ノードxiに辺(容量制限なし)を張る(ステップS211)。
【0118】
生成部152は、全ての買い注文yiを選択していない場合(ステップS212,No)、ステップS208に移行する。一方、生成部152は、全ての買い注文yiを選択した場合(ステップS212,Yes)、グラフG生成処理を終了する。
【0119】
次に、本実施例に係る情報処理装置100の効果について説明する。情報処理装置100は、証券取引における買い注文および売り注文を基にした第1グラフであって、上限制約および下限制約を設定した第1グラフを生成する。情報処理装置100は、上限制約および下限制約が設定された第1グラフの問題を基にして、上限制約のみの問題に帰着させた第2グラフを生成する。情報処理装置100は、第2グラフの最大フロー問題を解いた後に、第2グラフで得られた解(各辺の流量)を第1グラフに置き換え、第1グラフの各辺の流量から、約定価格を決定する。
【0120】
これによって、従来技術で説明した動的計算法による解決法と比較して、計算量およびメモリ量を削減することができる。たとえば、従来技術では、合計の株数分の配列に相当するメモリ領域を用意し、1注文を処理するごとにメモリの配列を走査する必要がある。一方、情報処理装置100では、注文数と価格数分のノードを用意するだけで、約定価格を決定することができる。
【0121】
情報処理装置100は、第1グラフの第1ノードと第2ノードとを結ぶ対象の辺の上限制約から下限制約を減算した値を、対象の辺の新たな上限制約に設定し、対象の辺の下限制約を除去することで、下限制約および上限制約を、上限制約のみの辺に帰着させる。また、情報処理装置100は、第1グラフには第3ノードと第4ノードとが含まれ、第3ノードと第1ノードとを結ぶ辺に、対象の辺から除去された下限制約に対応する値を設定し、第4ノードと第2ノードとを結ぶ辺に、対象の辺から除去された下限制約に対応する値を設定する。これによって、上限制約のみの問題に帰着させた第2グラフを生成することができ、最大フロー問題の解法を適用可能となる。
【0122】
次に、上記実施例に示した情報処理装置100と同様の機能を実現するコンピュータのハードウェア構成の一例について説明する。
図9は、実施例の情報処理装置と同様の機能を実現するコンピュータのハードウェア構成の一例を示す図である。
【0123】
図9に示すように、コンピュータ200は、各種演算処理を実行するCPU201と、ユーザからのデータの入力を受け付ける入力装置202と、ディスプレイ203とを有する。また、コンピュータ200は、有線または無線ネットワークを介して、外部装置等との間でデータの授受を行う通信装置204と、インタフェース装置205とを有する。また、コンピュータ200は、各種情報を一時記憶するRAM206と、ハードディスク装置207とを有する。そして、各装置201~207は、バス208に接続される。
【0124】
ハードディスク装置207は、取得プログラム207a、生成プログラム207b、特定プログラム207cを有する。また、CPU201は、各プログラム207a~207cを読み出してRAM206に展開する。
【0125】
取得プログラム207aは、取得プロセス206aとして機能する。生成プログラム207bは、生成プロセス206bとして機能する。特定プログラム207cは、特定プロセス206cとして機能する。
【0126】
取得プロセス206aの処理は、取得部151の処理に対応する。生成プロセス206bの処理は、生成部152の処理に対応する。特定プロセス206cの処理は、特定部153の処理に対応する。
【0127】
なお、各プログラム207a~207cについては、必ずしも最初からハードディスク装置207に記憶させておかなくても良い。例えば、コンピュータ200に挿入されるフレキシブルディスク(FD)、CD-ROM、DVD、光磁気ディスク、ICカードなどの「可搬用の物理媒体」に各プログラムを記憶させておく。そして、コンピュータ200が各プログラム207a~207cを読み出して実行するようにしてもよい。
【0128】
以上の各実施例を含む実施形態に関し、さらに以下の付記を開示する。
【0129】
(付記1)一株当たりの単価、下限制約に対応する最小約定数、上限制約に対応する最大約定数が設定された注文情報を基にして、複数のノードを有する第1グラフであって、各ノードを繋ぐ辺に前記下限制約および前記上限制約を設定した前記第1グラフを生成し、
前記第1グラフの辺に設定された前記下限制約および前記上限制約を、前記上限制約のみの辺に帰着させることで、第2グラフを生成し、
前記第2グラフの最大フロー問題を解くことで、前記第2グラフの各辺に流量を設定し、
前記第2グラフの各辺に設定された流量を、前記第1グラフの各辺の流量に変換し、
前記第1グラフの各辺に設定された流量を基にして、約定価格を特定する
処理をコンピュータに実行させることを特徴とする約定プログラム。
【0130】
(付記2)前記注文情報は、売り注文の情報と、買い注文の情報とを含み、前記第1グラフを生成する処理は、ソース、シンク、前記売り注文、前記買い注文、前記単価にそれぞれ対応する複数のノードを有し、各ノード間の辺に、前記下限制約と、前記上限制約とを設定した前記第1グラフを生成することを特徴とする付記1に記載の約定プログラム。
【0131】
(付記3)前記第2グラフを生成する処理は、前記第1グラフの第1ノードと第2ノードとを結ぶ対象の辺の上限制約から下限制約を減算した値を、前記対象の辺の新たな上限制約に設定し、前記対象の辺の下限制約を除去することで、前記下限制約および前記上限制約を、前記上限制約のみの辺に帰着させることを特徴とする付記2に記載の約定プログラム。
【0132】
(付記4)前記第2グラフを生成する処理は、前記第1グラフには第3ノードと第4ノードとが含まれ、前記第3ノードと前記第1ノードとを結ぶ辺に、前記対象の辺から除去された下限制約に対応する値を設定し、前記第4ノードと前記第2ノードとを結ぶ辺に、前記対象の辺から除去された下限制約に対応する値を設定する処理を更に実行することを特徴とする付記3に記載の約定プログラム。
【0133】
(付記5)一株当たりの単価、下限制約に対応する最小約定数、上限制約に対応する最大約定数が設定された注文情報を基にして、複数のノードを有する第1グラフであって、各ノードを繋ぐ辺に前記下限制約および前記上限制約を設定した前記第1グラフを生成し、
前記第1グラフの辺に設定された前記下限制約および前記上限制約を、前記上限制約のみの辺に帰着させることで、第2グラフを生成し、
前記第2グラフの最大フロー問題を解くことで、前記第2グラフの各辺に流量を設定し、
前記第2グラフの各辺に設定された流量を、前記第1グラフの各辺の流量に変換し、
前記第1グラフの各辺に設定された流量を基にして、約定価格を特定する
処理をコンピュータが実行することを特徴とする約定方法。
【0134】
(付記6)前記注文情報は、売り注文の情報と、買い注文の情報とを含み、前記第1グラフを生成する処理は、ソース、シンク、前記売り注文、前記買い注文、前記単価にそれぞれ対応する複数のノードを有し、各ノード間の辺に、前記下限制約と、前記上限制約とを設定した前記第1グラフを生成することを特徴とする付記5に記載の約定方法。
【0135】
(付記7)前記第2グラフを生成する処理は、前記第1グラフの第1ノードと第2ノードとを結ぶ対象の辺の上限制約から下限制約を減算した値を、前記対象の辺の新たな上限制約に設定し、前記対象の辺の下限制約を除去することで、前記下限制約および前記上限制約を、前記上限制約のみの辺に帰着させることを特徴とする付記6に記載の約定方法。
【0136】
(付記8)前記第2グラフを生成する処理は、前記第1グラフには第3ノードと第4ノードとが含まれ、前記第3ノードと前記第1ノードとを結ぶ辺に、前記対象の辺から除去された下限制約に対応する値を設定し、前記第4ノードと前記第2ノードとを結ぶ辺に、前記対象の辺から除去された下限制約に対応する値を設定する処理を更に実行することを特徴とする付記7に記載の約定方法。
【0137】
(付記9)一株当たりの単価、下限制約に対応する最小約定数、上限制約に対応する最大約定数が設定された注文情報を基にして、複数のノードを有する第1グラフであって、各ノードを繋ぐ辺に前記下限制約および前記上限制約を設定した前記第1グラフを生成し、
前記第1グラフの辺に設定された前記下限制約および前記上限制約を、前記上限制約のみの辺に帰着させることで、第2グラフを生成し、
前記第2グラフの最大フロー問題を解くことで、前記第2グラフの各辺に流量を設定し、
前記第2グラフの各辺に設定された流量を、前記第1グラフの各辺の流量に変換し、
前記第1グラフの各辺に設定された流量を基にして、約定価格を特定する
処理を実行する制御部を有する情報処理装置。
【0138】
(付記10)前記注文情報は、売り注文の情報と、買い注文の情報とを含み、前記制御部は、ソース、シンク、前記売り注文、前記買い注文、前記単価にそれぞれ対応する複数のノードを有し、各ノード間の辺に、前記下限制約と、前記上限制約とを設定した前記第1グラフを生成することを特徴とする付記9に記載の情報処理装置。
【0139】
(付記11)前記制御部は、前記第1グラフの第1ノードと第2ノードとを結ぶ対象の辺の上限制約から下限制約を減算した値を、前記対象の辺の新たな上限制約に設定し、前記対象の辺の下限制約を除去することで、前記下限制約および前記上限制約を、前記上限制約のみの辺に帰着させることを特徴とする付記10に記載の情報処理装置。
【0140】
(付記12)前記制御部は、前記第1グラフには第3ノードと第4ノードとが含まれ、前記第3ノードと前記第1ノードとを結ぶ辺に、前記対象の辺から除去された下限制約に対応する値を設定し、前記第4ノードと前記第2ノードとを結ぶ辺に、前記対象の辺から除去された下限制約に対応する値を設定する処理を更に実行することを特徴とする付記11に記載の情報処理装置。