(57)【特許請求の範囲】
【請求項１】
局面の系列からなる複数の棋譜のデータを、局面又は部分局面の構成、並びにその局面又は部分局面を持つ棋譜の全てについて、その棋譜のインデックス、その棋譜における局面の番号、及びその棋譜における局面又は部分局面の位置を含む棋譜情報を集めてできるリストを頂点の情報として含む有向グラフの形態で記憶してなる棋譜データベースであって、前記有向グラフは、異なる棋譜データのうち同形の局面又は部分局面が複数存在する場合には、そのうち一つだけを代表させて頂点となすものである棋譜データベースと、
前記棋譜データベースにデータが格納された棋譜のデータのうち閲覧すべき棋譜のインデックスと前記有向グラフの現在の頂点からの移動方向とを指示する入力手段と、
この入力手段で指示された棋譜のインデックス及び移動方向に基づいて前記有向グラフの現在の頂点を更新する棋譜検索手段と、
この棋譜検索手段で更新された現在の頂点の情報に基づいて局面及び棋譜リストを表示する表示手段と
を備えてなることを特徴とする棋譜閲覧システム。
【請求項２】
前記入力手段は、前記表示手段に表示された棋譜リストを介して閲覧すべき棋譜の切り替えを指示するものであることを特徴とする請求項１記載の棋譜閲覧システム。
【請求項３】
前記棋譜データベースは、前記複数の棋譜の部分局面の種類毎に有向グラフを構成したものであり、
前記入力手段は、閲覧すべき部分局面の種類を指示するものであり、
前記棋譜検索手段は、前記入力手段で指示された部分局面の種類と棋譜のインデックスとによって当該部分局面の種類に対応した有向グラフを検索するものであることを特徴とする請求項１又は２記載の棋譜閲覧システム。
【請求項４】
前記局面は対称性を有するものであり、
前記棋譜データベースは、局面又は部分局面と、これを対称変換した局面又は部分局面とを同一の局面又は部分局面として同一の頂点に含ませるものであることを特徴とする請求項１〜３のいずれか１項記載の棋譜閲覧システム。
【請求項５】
前記表示手段は、前記対称変換によって局面が回転及び／又は鏡映変換された場合でも局面の表示は固定し、対局者の位置の表示を変動させるものであることを特徴とする請求項４記載の棋譜閲覧システム。
【請求項６】
局面又は部分局面の構成、並びにその局面又は部分局面を持つ棋譜の全てについて、その棋譜のインデックス、その棋譜における局面の番号、及びその棋譜における局面又は部分局面の位置を含む棋譜情報を集めてできるリストを頂点の情報として含む有向グラフで表現された棋譜データベースであって、前記有向グラフは、異なる棋譜データのうち同形の局面又は部分局面が複数存在する場合には、そのうち一つだけを代表させて頂点となすものである棋譜データベースに格納された局面の系列からなる棋譜のデータうち閲覧すべき棋譜のインデックスと前記有向グラフの現在の頂点からの移動方向とを指示するステップと、
このステップで指示された棋譜のインデックス及び移動方向に基づいて前記有向グラフの現在の頂点を更新するステップと、
このステップで更新された現在の頂点の情報に基づいて局面及び棋譜リストを表示するステップと
をコンピュータに実行させるように構成された棋譜閲覧プログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、囲碁、将棋、チェス等の２人で交互に着手するゲームの記録である「棋譜」の情報を収集して一括管理し、ユーザに閲覧させる棋譜閲覧システムおよびプログラムに関する。
【０００２】
【従来の技術】
従来より、囲碁、将棋等の過去の対局記録をデータベース化して、指定された局面を含む棋譜の検索結果を閲覧に供するようにした棋譜閲覧プログラムは知られている。この種の棋譜閲覧プログラムは、一つ一つの棋譜を独立に閲覧するものであり、ある局面と同一の局面を持った棋譜を検索する場合でも、その度、検索のための指示入力を行う必要があった。
【０００３】
【発明が解決しようとする課題】
しかしながら、プロの棋士、解説者、雑誌記者、アマチュア研究家等には、過去の複数の棋譜を体系的に関連付けて閲覧したいという要求があり、従来の棋譜閲覧システムでは、そのような体系的な閲覧が不可能であった。
【０００４】
本発明は、このような点に鑑みなされたもので、棋譜の集合を有機的に結合し、体系的な閲覧を可能にした棋譜閲覧システムおよびプログラムを提供することを目的とする。
【０００５】
【課題を解決するための手段】
本発明に係る棋譜閲覧システムは、局面の系列からなる複数の棋譜のデータを、局面又は部分局面の構成、並びにその局面又は部分局面を持つ棋譜の全てについて、その棋譜のインデックス、その棋譜における局面の番号、及びその棋譜における局面又は部分局面の位置を含む棋譜情報を集めてできるリストを頂点の情報として含む有向グラフの形態で記憶してなる棋譜データベースであって、前記有向グラフは、異なる棋譜データのうち同形の局面又は部分局面が複数存在する場合には、そのうち一つだけを代表させて頂点となすものである棋譜データベースと、前記棋譜データベースにデータが格納された棋譜のデータのうち閲覧すべき棋譜のインデックスと前記有向グラフの現在の頂点からの移動方向とを指示する入力手段と、この入力手段で指示された棋譜のインデックス及び移動方向に基づいて前記有向グラフの現在の頂点を更新する棋譜検索手段と、この棋譜検索手段で更新された現在の頂点の情報に基づいて局面及び棋譜リストを表示する表示手段とを備えてなることを特徴とする。
【０００６】
本発明に係る棋譜閲覧プログラムは、局面又は部分局面の構成、並びにその局面又は部分局面を持つ棋譜の全てについて、その棋譜のインデックス、その棋譜における局面の番号、及びその棋譜における局面又は部分局面の位置を含む棋譜情報を集めてできるリストを頂点の情報として含む有向グラフで表現された棋譜データベースであって、前記有向グラフは、異なる棋譜データのうち同形の局面又は部分局面が複数存在する場合には、そのうち一つだけを代表させて頂点となすものである棋譜データベースに格納された局面の系列からなる棋譜のデータうち閲覧すべき棋譜のインデックスと前記有向グラフの現在の頂点からの移動方向とを指示するステップと、このステップで指示された棋譜のインデックス及び移動方向に基づいて前記有向グラフの現在の頂点を更新するステップと、このステップで更新された現在の頂点の情報に基づいて局面及び棋譜リストを表示するステップとを備えたことを特徴とする。
【０００７】
本発明によれば、着目している棋譜の局面が切り替わる毎に、注目している局面と同一の局面あるいは同一の部分局面を持った他の棋譜が棋譜データベースから検索され、検索結果である棋譜の一覧が表示されるので、閲覧者は現在の局面または部分局面を持った棋譜の一覧を常時見ることができ、そのリストの中から選択することによって、瞬時に閲覧棋譜を切り替えることができる。このため、棋譜の集まりを有機的に結合して、体系的な閲覧が可能になる。
【０００８】
なお、本発明の一つの実施形態において、前記入力手段は、前記閲覧すべき棋譜において局面の移動を指示するものであり、前記棋譜検索手段は、前記入力手段で局面の移動が指示される度に移動先の局面と同一の局面を持った棋譜を前記棋譜データベースから検索するものである。
【０００９】
本発明の他の実施形態において、前記入力手段は、前記表示手段に表示された棋譜の一覧を介して閲覧すべき棋譜の切り替えを指示するものである。
【００１０】
本発明の更に他の実施形態において、前記入力手段は、閲覧すべき部分局面を指示するものであり、前記棋譜検索手段は、前記入力手段で指示された部分局面と同一の部分局面を持った棋譜を前記入力手段で部分局面が指示される度に前記棋譜データベースから検索するものである。
【００１１】
本発明の更に他の実施形態において、前記局面は対称性を有するものであり、前記棋譜検索手段は、前記入力手段で指示された局面又は部分局面を対称変換したものと同一の局面又は部分局面を持った棋譜についても検索するものである。
【００１２】
本発明の更に他の実施形態において、前記表示手段は、前記対称変換によって局面が回転および／または鏡映変換された場合でも局面の表示は固定し、対局者の位置の表示を変動させるものである。
【００１４】
【発明の実施の形態】
以下、図面を参照しながら、本発明の一実施形態を詳細に説明する。
図１は、本実施形態に係る棋譜閲覧システムの構成を示す図である。
この棋譜閲覧システムは、マンマシンインタフェース１を構成するマウス、キーボード等の入力部２及び棋譜の閲覧画面を表示する液晶表示装置等の表示部３と、棋譜のデータを格納する棋譜データベース４と、入力部２を介して指示された棋譜および局面に基づいて棋譜データベース４から棋譜情報を検索する棋譜データ検索部５と、検索された棋譜情報に基づいて閲覧画面を生成する閲覧画面生成部６と、棋譜データベース４に新たな棋譜のデータを追加するための棋譜データ構築部７とを備えて構成されている。これらの各部の機能は、入力装置、表示装置、記憶装置、ＣＰＵ等のハードウェアと、ＣＰＵによって実行される棋譜閲覧プログラムおよび棋譜データのファイルなどのソフトウェアにより実現することができる。
【００１５】
次に、このように構成された棋譜閲覧システムの動作について説明する。
＜基本概念＞
本システムでは、棋譜データベース４が有向グラフを基本として構築されている。一般に、有向グラフは頂点の集合Ｖと有向辺の集合Ｅとからなる。有向辺は頂点の順序対であり、有向辺（ｕ，ｖ）は頂点ｕから頂点ｖへと向かう矢線によって表される。有向辺はまた単に辺とも呼ばれる。有向グラフにおける有向路は、辺をその矢印の向きに次々とつないで出来る路である。有向路は始点と終点を持つ。始点と終点とが一致するような有向路を有向閉路と呼ぶ。有向グラフＧにおいて、ある頂点に向かう辺がひとつもないとき、その頂点をＧの根と呼ぶ。根を丁度一つ持つ有向グラフを単一根有向グラフと呼ぶ。この発明では、棋譜集合を複数の単一根有向グラフによって表現する。単一根有向グラフを以下、ＳＲＤＧ（Single Root Directed Graph）と略記する。
【００１６】
ゲームのある時点での状態の完全な記述を局面と呼ぶ。囲碁では、盤上の石の配置、手番、白黒双方アゲハマの個数、及び劫（コウ）取り番等の情報からなる。ゲームの開始時点の局面を開始局面と呼ぶ。着手は、ルールによって規定された局面から局面への変換である。囲碁の場合には、着手は、石を置く点の座標によって規定される（どちらの石かは、局面の持つ手番情報によって規定されている。）棋譜とは、ゲームの記録であり、開始局面から始まる着手の系列のことを言う。着手の系列によって、局面の系列が決定される。棋譜の閲覧においては、ユーザに対し、この局面の系列を逐一表示することが基本である。
【００１７】
二つの異なる局面が、見方によって同一に見なせる場合がある。例えば、囲碁においては、盤面の回転や鏡映変換、また、それらの組み合わせなどの変換を通じて同じになる局面は同一と見なせる。このような変換を対称変換と呼ぶ。以下では、囲碁の場合を例として次の８通りの対称変換τ0，τ1，τ2，τ3，μ0，μ1，μ3を考える。図２は、この８通りの対称変換を示す図である。ここで、τiは反時計回りの９０×ｉ度の回転を表し、μiは、水平線に関する鏡映変換の後τiを施す変換を表す。なお、実用上はさらに白黒の反転を組み合わせた１６通りの対称変換を採用するが、ここでは説明を簡単にするため省略する。
【００１８】
局面のうちのある着目する一部分を部分局面と呼ぶ。以下、囲碁を例として、次の４種類の部分局面を考えるが、これ以外の部分局面を使用しても勿論構わない。
▲１▼全盤  盤面全体からなる部分局面。盤上の石の配置にのみ着目し、その他の情報は無視する。
▲２▼半盤  盤面を垂直線または水平線で半分に切った片側における石の配置からなる部分局面。分割線上の点は含める。
▲３▼四半盤  盤面を垂直線と水平線とでそれぞれ半分に切ったときにできる４分の１の盤面における石の配置からなる部分局面。分割線上の点は含める。
▲４▼斜半盤  盤面を対角線で半分に切った片側における石の配置からなる部分局面。分割線上の点は含める。
【００１９】
ここで、部分局面の種類の集合をκで表す。上記の場合には、
κ＝｛全盤、半盤、四半盤、斜半盤｝
である。
【００２０】
部分局面は種類と位置とによって指定する。種類Ｋに対して可能な位置の集合をρ（Ｋ）で表す。この例では、
ρ（半盤）＝｛右、左、上、下｝
ρ（四半盤）＝ρ（斜半盤）＝｛右上、左上、右下、左下｝
ρ（全盤）＝｛全体｝
【００２１】
それぞれの種類において、ひとつの位置を基本位置と定める。種類Ｋの基本位置をＰ（Ｋ）で表す。この例では、
Ｐ（半盤）＝右
Ｐ（四半盤）＝Ｐ（斜半盤）＝右上
Ｐ（全盤）＝全体
と定める。
【００２２】
ここで、部分局面の種類と位置の対、例えば（半盤、右）、（全盤、全体）などを部分局面の型と呼ぶ。具体的な部分局面は局面と部分局面の型の対によって指定される。例えばｂを局面とするとき、部分局面(ｂ,(半盤、上)）は、局面ｂの上半分だけからなる石の配置を表す。型の中の位置が基本位置にあるような部分局面を部分局面の基本形と呼ぶ。例えば、ｂを局面とするとき、部分局面(ｂ,(半盤、右)）は、「右」が、種類「半盤」の基本位置であるので、基本形である。
【００２３】
対称変換τを、部分局面の位置Ｐに施した結果の位置をτ（Ｐ）で表す。例えば、τ1（右上）＝左上であり、μ3（上）＝左である。部分局面ｐ＝(ｂ,(Ｋ,Ｐ))に対称変換を施したとき、(τ(ｂ),(Ｋ,τ(Ｐ)))をｐにτを施した結果と呼び、τ(ｐ)で表す。同一種類の二つの部分局面ｐ1＝(ｂ1,(Ｋ,Ｐ1))とｐ2＝(ｂ2,(Ｋ,Ｐ2))は、ｐ1＝τ(ｐ2)であるような対称変換τがあるとき、これらは同型であるという。また、τをｐ2からｐ1への同型変換と呼ぶ。ある部分局面から他の部分局面への同型変換は、一つとは限らない。
【００２４】
部分局面ｐに対して、それと同型な、基本位置の部分局面をｐの基本形と呼ぶ。ｐの種類が全盤であるならば、ｐの基本形は対称変換の個数だけ、すなわち８個ある。それ以外の場合は、ｐの基本形は、鏡映を含まない同型変換によるものと、鏡映を含む同型変換によるものの計２個である。ｐ1とｐ2とが共にある同一の部分局面の基本形であるとき、ｐ1とｐ2は互いに同型である。
【００２５】
＜棋譜データベース４＞
次に、棋譜データベース４の内容について説明する。棋譜の集まりの表現方式は、次のように定義される。Ｒを棋譜の集合とする。Ｒに属する棋譜には通し番号がついているものとし、ｎ番目の棋譜をＲ（ｎ）で表す。また、棋譜Ｒ（ｎ）のｉ番目の局面をＲ（ｎ，ｉ）で表す。図３には、一例として、５×５の囲碁における棋譜集合の例（棋譜Ｒ（１），Ｒ（２），Ｒ（３））が示されている。また、添字ｎとｉの対（ｎ，ｉ）でＲ（ｎ）がＲの棋譜であり、Ｒ（ｎ，ｉ）がＲ（ｎ，ｉ）の局面であるようなもの全てからなる集合をＩRで表す。局面ｂは、Ｒの中のある棋譜の中に現れるとき（すなわち、ある（ｎ，ｉ）∈ＩR に対してＲ（ｎ，ｉ）＝ｂであるとき）、棋譜集合Ｒに現れると言う。
【００２６】
この発明の方式では、部分局面の種類Ｋ∈κ毎に一つのＳＲＤＧ ＧK（Ｒ）を構成する。ＧK（Ｒ）は、次のように定義される。
・頂点集合  ＧK（Ｒ）の頂点集合ＶK（Ｒ）は、Ｒの中に現れる全ての局面の、種類Ｋの部分局面全ての基本形からなる。但し、互いに同型な基本形からは、一つだけが代表として頂点となる。
・有向辺集合  ｕとｖとをＶK（Ｒ）の頂点とすると、次の有向辺の条件を満たす場合に、また次の有向辺の条件を満たす場合に限り、ＧK（Ｒ）は有向辺（ｕ，ｖ）を持つ。
有向辺の条件：ある（ｎ，ｉ）∈ＩRとある位置Ｐがあり、ｕは部分局面(Ｒ(ｎ,ｉ),(Ｋ,Ｐ))の基本形であり、ｖは部分局面(Ｒ(ｎ,ｉ＋１),(Ｋ,Ｐ))の基本形である。
この条件から、それぞれのＧK（Ｒ）は、ちょうど一つの根を持つことが分かる。この根は、空の、つまり石が一つもない状態の部分局面に対応する。
【００２７】
ＧK（Ｒ）の各頂点ｖは、次の情報を保持する。
・棋譜情報  三つ組(ｎ,ｉ,Ｐ)で、部分局面(Ｒ(ｎ,ｉ),(Ｋ,Ｐ))の基本形がｖであるようなもの全て。
・後続頂点  上の各三つ組(ｎ,ｉ,Ｐ)に対して、Ｒ(ｎ)の長さがｉ＋１以上のとき、部分局面(Ｒ(ｎ,ｉ＋１),(Ｋ,Ｐ))の基本形であるような頂点。
・先行頂点  ｉ＞０のとき、上の各三つ組(ｎ,ｉ,Ｐ)に対して、部分局面(Ｒ(ｎ,ｉ−１),(Ｋ,Ｐ))の基本形であるような頂点。
・着手情報  各三つ組(ｎ,ｉ,Ｐ)に対して、対応する後続頂点に部分局面ｖから移るための着手。
【００２８】
頂点ｖが保持する三つ組(ｎ,ｉ,Ｐ)の全てに対して棋譜Ｒ(ｎ)を集めてできるリストをその頂点の棋譜リストと呼ぶ。
各頂点が、局面や部分局面の表現は持たないことに注意する。もし持ったとすると、持たない場合に比べてはるかに大量のメモリを必要とする。そのような表現は、閲覧時や検索時に着手情報をもとにして棋譜を辿りながら構成される。
【００２９】
図４は、図３に示した５×５の囲碁における棋譜集合の全盤に対するＳＲＤＧの構造を示す。盤面の横に示したのは、その頂点の棋譜情報の三つ組(ｎ,ｉ,Ｐ)のリストである。三つ組（１，０，Ａ）は、１番目の棋譜（Ｒ（１））の０手目の局面（Ｒ（１，０））で、部分局面の位置はＡ（＝全体）であることを示している。この例では、１手目の局面Ｒ（１，１），Ｒ（２，１），Ｒ（３，１）は、全て同一局面であるが、２手目でそれぞれ異なる局面に分かれ、３手目でＲ（１），Ｒ（２）が同一局面となり、４手目でＲ（２），Ｒ（３）が同一局面となっている。なお、実際には、このほかに図５で示すように、対称変換の情報（τi，μi）も付加される。
【００３０】
図６は、図３に示した５×５の囲碁における半盤に対するＳＲＤＧを示す図である。盤面の横に示したのは、その頂点の棋譜情報の三つ組(ｎ,ｉ,Ｐ)のリストである。なお、説明を簡単にするため除いているが、実際には対称変換の情報も付加される。ここで、部分局面の位置を表す全体、右、上、左、下は、それぞれＡ，Ｒ，Ｔ，Ｌ，Ｂで表されている。また、位置を＊で表したところは、Ｒ，Ｔ，Ｌ，Ｂの全ての位置を入れた三つ組がそこにあることを示している。全盤に対するものよりも、同一部分局面の棋譜の数が多くなっていることが理解できる。
【００３１】
＜棋譜データ検索部５＞
次に、このように棋譜データベース４にＳＲＤＧ構造化された棋譜集合をユーザの操作に基づいて棋譜データ検索部５が検索処理する方式について説明する。
棋譜閲覧プログラムは、閲覧状態を表す次の変数を持つ。これらの変数の値は、入力部２からのユーザの指示により、局面を進めるとき、戻すとき、閲覧棋譜を切り替えるときなどに更新される。
【００３２】
・ｎcurr：現在注目している棋譜の番号
・ｉcurr：現在の局面までの手数
・ｖTcurr：部分局面の各型Ｔ＝（Ｋ，Ｐ）に対して、ＳＲＤＧ ＧK（Ｒ）の中の現在頂点
・τTcurr：部分局面の各型Ｔ＝（Ｋ，Ｐ）に対して、ＳＲＤＧ ＧK（Ｒ）の中の対称変換
・configuration：現在の局面の表現
・Ｔcurr：現在選択されている部分局面の型
【００３３】
閲覧開始時には、ｉcurr＝０、configurationは空の局面を表現し、各型Ｔ＝(Ｋ，Ｐ)に対して、ｖTcurrはＧK（Ｒ）の根となっている。ｎcurrは、ＳＲＤＧ化された棋譜集合Ｒの中の任意の棋譜の番号になっている（例えば１、または前回の閲覧で最後に見られた棋譜の番号など）。また、Ｔcurr＝（全盤,全体）となっている。
【００３４】
閲覧の各時点で、閲覧状態を表す変数の間には次の関係が保持される。
▲１▼configurationは、局面Ｒ(ｎcurr,ｉcurr)を表現している。
▲２▼部分局面の各型Ｔ＝(Ｋ,Ｐ)に対して、ｖTcurrは、部分局面(Ｒ(ｎcurr,ｉcurr),Ｔ)の基本形であり、τTcurrは、部分局面(Ｒ(ｎcurr,ｉcurr),Ｔ)からこの基本形への同型変換の一つである。
【００３５】
図７は、表示部３での閲覧画面を示す図である。ユーザに対しては、configurationに基づいて局面１１が表示される。更に、ｖTcurrの棋譜リスト１２が、各棋譜のタイトルによって表示される。上で述べた変数間の関係から、この棋譜リスト１２には必ずＲ(ｎcurr)が含まれている。そのタイトル１２ａは強調表示される。
【００３６】
また、現在の型Ｔcurrが何であるかも、型を表すアイコン１３の横に表示されたポインタ１４によって表示される。ユーザは入力部２を用いた基本操作として次の三つを指示することができる。
【００３７】
▲１▼局面の移動。現在の棋譜Ｒ(ｎ)において、一手先または一手前の局面に移る。
▲２▼棋譜の切り替え。タイトルが表示された棋譜の中から任意の一つを選び、現在の棋譜とする。
▲３▼部分局面の型の切り替え。現在の型Ｔcurr以外の型を選んでそれに切り替える。
これらの操作に対応して、閲覧の状態を表す変数が更新される。また、表示が更新される。
【００３８】
▲１▼局面の移動
全盤の現在頂点ｖT1curr（但し、Ｔ１は（全盤,全体））にある情報をもとに、configurationを更新する。一手後の局面に移るときには、進むアイコン１５をクリックし、この頂点の棋譜情報にある三つ組（ｎcurr,ｉcurr,全体）に対応する着手を現在の局面configurationに施した結果を新たなconfigurationとする。一手前の局面に移るときは、戻るアイコン１６をクリックし、この頂点の棋譜情報にある三つ組（ｎcurr,ｉcurr,全体）に対応する先行頂点を調べ、その先行頂点からこの頂点に移るための着手を求めて、その着手を現在の局面configurationから取り消した結果を新たなconfigurationとする。ユーザに対する局面の表示を、新しいconfigurationを表すように更新する。
【００３９】
次に各型Ｔ＝(Ｋ,Ｐ)に対して頂点ｖTcurrを更新する。一手後の局面に移るときには、頂点ｖTcurrの棋譜情報の中にある三つ組（ｎcurr,ｉcurr,Ｐ）に対応する後続頂点を新たなｖTcurrとし、ｉcurrを１つ増やす。この変更の結果、τcurrが部分局面(Ｒ(ｎcurr,ｉcurr),Ｔ)からｖTcurrへの同型変換でなくなった場合には、新たに同型変換を求め直して、それをτcurrの値とする。一手前の局面に移るときには、この逆が行われる。
【００４０】
▲２▼棋譜の切り替え
表示された棋譜リスト１２から新たな棋譜Ｒ(ｎ)が選ばれたとき、状態変数ｎcurrの値をｎに更新する。次の二つの場合がある。
（ａ）Ｔcurr＝（全盤,全体）であったときには、局面は変化しないので、それ以上状態の更新はない。
（ｂ）Ｔcurr＝（Ｋ,Ｐ）≠（全盤,全体）であったときには、局面が変化するので、閲覧状態を根本的に更新する必要が生じる。そのために、各型ＴのＳＲＤＧの根から、棋譜Ｒ(ｎ)の手順を辿ることにより、局面Ｒ(ｎ,ｉ)に対応する現在頂点ｖTcurrを求める。全盤の現在頂点ｖT1curr（但し、Ｔ１は（全盤,全体))を求める作業では、同時にconfigurationを構成し直す。局面の表示を更新する。
【００４１】
▲３▼型の切り替え
ポインタ１４の移動操作により、Ｔcurrの値を選ばれた型Ｔに変更する。棋譜リストの表示を更新する。すなわち新しいＴcurrに対する現在頂点ｖT1currの棋譜リストを表示する。新しいＴcurrが選ばれていることを表示する。
以上のように、ユーザは共通の部分局面を通じて、棋譜を切り替えながら閲覧することができる。
【００４２】
＜部分局面の検索＞
部分局面を与えたとき、その部分局面を含む局面を、その局面を含む棋譜の番号と共に検索する機能は、ユーザに提供する機能として必要であるし、また、後述するＳＲＤＧ構成アルゴリズムの中でも使用される。部分局面の検索は、基本的にはその部分局面の種類に対応するＳＲＤＧにおいて、根から出発する深さ優先探索によって行われる。したがって、この深さ優先探察では、頂点へのマークの標準的な使用によって、探索のループを回避する。また、不必要な探索を回避するために、次に定義する部分局間の関係（「→」で示す）を用いる。
【００４３】
ｐとｐ´を同一型の部分局面とするとき、ｐを含む局面から出発してゲームを続けたいときにｐ´を含む局面から出発してゲームを続けたいときにｐ´を含む部分局面に到達することが可能であれば、関係ｐ→ｐ´が成り立つとする。囲碁においては、ｐ→ｐ´の条件は、ほぼ、「ｐにおいて置かれた石がｐ´にも存在する。」である。石が取り上げられる可能性についての考慮が必要であるが、正確な定義は可能である。さて、部分局面ｐを探索中に、ｖ→ｐが成り立たないようなＳＲＤＧ頂点ｖに到達したときには、ｖの先の探索を続ける必要がないので後戻りをする。実際の棋譜集合においては、検索したい部分局面と全く関係のない局面がほとんどであるので、ＳＲＤＧのごく一部を探索するだけで検索が可能である。
【００４４】
なお、前述したように、閲覧中の局面移動においては、この検索アルゴリズムを起動する必要がないことに注意する。必要になるのは、ユーザが現在の局面と無関係な部分局面の検索を要求したとき、および、後述するように新しい棋譜をＳＲＤＧに付け加えるときである。
【００４５】
＜棋譜データ構築部７＞
次に棋譜データ構築部７におけるＳＲＤＧ構成アルゴリズムについて説明する。棋譜集合Ｒが与えられたときのＳＲＤＧの構成は、Ｒの棋譜を一つずつＳＲＤＧに付け加えていくことによって行われる。型の種類Ｋを一つ固定して説明する。
【００４６】
初期状態では、棋譜の空集合に対するＳＲＤＧは根だけからなる。棋譜集合Ｒに対するＳＲＤＧ ＧK(Ｒ)が構成済みとして、次の棋譜ｒを付け加えて、ＧK(Ｒ∪[ｒ])を次のように構成する。ここでは、Ｒの大きさがｎ−１であり、ｒの番号はｎになると仮定する。この構成アルゴリズムでは、変数ｉおよびｖP（種類Ｋの各位置Ｐ∈ρKに対して）を用いる。
【００４７】
▲１▼種類Ｋに対する全ての位置Ｐ∈ρKに対して次のことを実行する。
根の棋譜情報に、三つ組(ｎ,０,Ｐ)を付け加え、各Ｐ∈ρKに対してｖPの値を根とする。また、ｉ＝０と置く。
▲２▼ｉが棋譜ｒ＝Ｒ(ｎ)の長さに等しくなるまで、以下を繰り返す。
【００４８】
▲３▼各位置Ｐ∈ρKに対して以下の処理を行う。
（ａ）局面Ｒ(ｎ,ｉ)から局面Ｒ(ｎ,ｉ＋１)への推移によって型（Ｋ，Ｐ）の部分局面が変化しないならば、何もしない。変化するならば、次のことを行う。
（ｂ）ｖPの棋譜情報の中にある、(ｎ,ｉ,Ｐ)の形をした三つ組に対して、以下の処理を行う。
（ｃ）部分局面(Ｒ(ｎ,ｉ＋１),(Ｋ,Ｐ))の基本形が現在構築中のＳＲＤＧの中にあるかを検索し、あればその頂点をｖとする。なければ、その部分局面の基本形を新たにＳＲＤＧの頂点として付け加え、それをｖと呼ぶ。
（ｄ）ｖを三つ組み(ｎ,ｉ,Ｐ)に対応する後続頂点としてｖPに登録し、また、棋譜Ｒ(ｎ)の第ｉ手をこの三つ組みに対応する着手として登録する。
（ｅ）ｖの棋譜情報に、(ｎ,ｉ＋１,Ｐ)を付け加え、それに対応する先行頂点としてｖPを登録する。
（ｆ）変数ｖPの値をｖに変更する。
▲４▼ｉを１つ増やす。
【００４９】
＜閲覧画面生成部６＞
この管理・閲覧方式を有効にするためには、ユーザインタフェース１も重要である。囲碁の例で、図７に、閲覧画面のイメージ図を示す。局面１１の表示の他に、現在の局面と同一の部分局面を持つ棋譜のタイトル一覧１２が右の表示領域に表示されている。このなかで、白黒反転表示されたタイトル１２ａが、現在棋譜のものである。この領域の左に並んだアイコン１３は、部分局面の型を表しており、このアイコン１３をクリックすることにより、着目する部分を切り替えることができる。この切り替えによって、タイトル一覧も瞬時に切り替わる。図では、選択されたアイコンが三角形のポインタ１４で示されている。この例では、盤面の下半分の部分局面に注目している。前述した例で言えば、この型は、Ｔcurr＝(半盤、下)である。
【００５０】
また、局面の左上、および右下の矢印１７と対局者の名前１８は、その対局者の右手の辺に沿って、自分に近い方に表示される。図の状態では、矢印１７の向きから、黒番の対局者が右側に座り、白番の対局者が左側に座って対局していることを示している。更に、黒番が座る右側から見て、黒番の名前の表示が左手になっているので、鏡映変換が行われており、下辺が実際の対局では黒番から見て右辺であることが分かる。
【００５１】
もし、常に標準的な、すなわち黒番が図の下側に座っているとした表示をすると、棋譜の切り替え時に盤面の対称変換が起こり、ユーザを混乱させることになる。上記の表示方法を使用することにより、このような事態を避けると同時に、実際の棋譜の方向の情報も示すことができる。
【００５２】
なお、上記実施形態では、ＳＲＤＧ構造を用いて棋譜の管理・閲覧処理を行ったが、その他の手法を用いることもできる。
そのような手法の一つとして、例えばハッシュ表に局面を格納し、着手毎にハッシュ表の検索を行う方法がある。しかし、この方法は、ハッシュ表のエントリに局面の情報を含めるとすれば、必要メモリ量が著しく増大し、また含めないとすれば、ハッシュ表の検索毎に局面の再構築が必要になるため、処理時間が増大するという難点がある。従って、ＳＲＤＧを陽に用いる上記実施形態の方法が有利であると考えられる。また、棋譜集合をデータベースとして見る場合、ハッシュ法による方法は、ハッシュ表の大きさによって全体の表現が決まるため、集合の大きさが限度を超えたときに、全体の構造を作り直さなければならない。ＳＲＤＧによる方法は、新たに棋譜を加えるときには、既存の構造に付け加えるだけで、既存の構造を作り直す必要がないという利点がある。従って、棋譜の大規模データベースの構築という観点においても、ＳＲＤＧ方式が有利である。
【００５３】
【発明の効果】
以上述べたように本発明によれば、着目している棋譜の局面が切り替わる毎に、注目している局面と同一の局面あるいは同一の部分局面を持った他の棋譜が棋譜データベースから検索され、検索結果である棋譜の一覧が表示されるので、閲覧者は現在の局面または部分局面を持った棋譜の一覧を常時見ることができ、そのリストの中から選択することによって、瞬時に閲覧棋譜を切り替えることができる。このため、棋譜の集まりを有機的に結合して、体系的な閲覧が可能になる。
【図面の簡単な説明】
【図１】  本発明の一実施形態に係る棋譜閲覧システムの構成を示すブロック図である。
【図２】  同システムにおける対称局面の対称変換を説明するための図である。
【図３】  同システムで扱う棋譜集合の例を示す図である。
【図４】  同棋譜集合の全盤に対するＳＲＤＧを示す図である。
【図５】  同棋譜集合の全盤に対するＳＲＤＧの他の例を示す図である。
【図６】  同棋譜集合の半盤に対するＳＲＤＧを示す図である。
【図７】  同システムにおける閲覧画面を示す図である。
【符号の説明】
１…マンマシンインタフェース
２…入力部
３…表示部
４…棋譜データベース
５…棋譜データ検索部
６…閲覧画面生成部
７…棋譜データ構築部
【図１】
0004119147.tif 000002
【図２】
0004119147.tif 000003
【図３】
0004119147.tif 000004
【図４】
0004119147.tif 000005
【図５】
0004119147.tif 000006
【図６】
0004119147.tif 000007
【図７】
0004119147.tif 000008