jp.go.ipa.jgcl
クラス JgclEmbeddedGraph

java.lang.Object
  |
  +--jp.go.ipa.jgcl.JgclEmbeddedGraph
すべての実装インタフェース:
java.lang.Cloneable

public class JgclEmbeddedGraph
extends java.lang.Object
implements java.lang.Cloneable

(2次元の) 埋め込みグラフを表すクラス。

このクラスは、グラフに関する Euler の公式 (|V| - |E| + |F| = 2) を 満たすグラフを表現する。 ここで、V は頂点、E は辺、F は面を意味し、|X| は X の個数を意味する。

このクラスのインスタンスは Euler の公式を保存しながら グラフを操作する Euler Operator を備える。

グラフに含まれる頂点/辺/面は、このクラスの内部クラスとして表現されている。

それら頂点/辺/面を表現する内部クラスは、 互いの接続関係を保持するのみであり、 頂点の座標値等の幾何情報は直接には保持しない。 ただし、 各頂点/辺/面には、 任意のオブジェクト (java.lang.Object) を関連付けることができる。

なお、 このクラスのインスタンスは、 グラフ内での新たな頂点/辺/面の生成を担当するオブジェクト graphItemMaker (JgclEmbeddedGraph.GraphItemMaker) を保持する。 グラフを操作する Euler Operation の際には、 利用者が対象となる頂点/辺/面を直接生成するのではなく、 それぞれの Euler Operator が自身の内部で この graphItemMaker の当該機能を呼び出して 頂点/辺/面を生成する。

バージョン:
$Revision: 1.21 $, $Date: 2000/12/24 18:07:08 $
作成者:
$JGCL_Author$

内部クラスの概要
 class JgclEmbeddedGraph.Edge
          グラフの半辺 (辺の片割れ) を表す内部クラス。
 class JgclEmbeddedGraph.Face
          グラフの面を表す内部クラス。
protected  class JgclEmbeddedGraph.GraphItem
          グラフの構成物を表す内部クラス。
static interface JgclEmbeddedGraph.GraphItemMaker
          グラフ内での新たな頂点/辺/面の生成を担当するオブジェクトが実装すべきインターフェイス。
 class JgclEmbeddedGraph.Result
          JgclEmbeddedGraph が備える Euler Operator の各 make メソッドにおいて 新たに生成された頂点/辺/面を示す内部クラス。
 class JgclEmbeddedGraph.Vertex
          グラフの頂点を表す内部クラス。
 
コンストラクタの概要
JgclEmbeddedGraph()
          何も与えずに、空の埋め込みグラフとしてオブジェクトを構築する。
JgclEmbeddedGraph(JgclEmbeddedGraph.GraphItemMaker maker)
          graphItemMaker を与えて、空の埋め込みグラフとしてオブジェクトを構築する。
 
メソッドの概要
protected  java.lang.Object clone()
          このグラフの複製を返す。
 boolean contains(JgclEmbeddedGraph.Edge edge)
          このグラフが、与えられた辺を含むか否かを返す。
 boolean contains(JgclEmbeddedGraph.Face face)
          このグラフが、与えられた面を含むか否かを返す。
 boolean contains(JgclEmbeddedGraph.Vertex vrtx)
          このグラフが、与えられた頂点を含むか否かを返す。
 JgclEmbeddedGraph copy()
          このグラフの複製を返す。
 JgclEmbeddedGraph copy(JgclEmbeddedGraph seed)
          このグラフの複製を返す。
 JgclEmbeddedGraph dualCopy()
          このグラフの双対複製を返す。
 JgclEmbeddedGraph dualCopy(JgclEmbeddedGraph seed)
          このグラフの双対複製を返す。
 java.util.Enumeration edgeElements()
          このグラフが含む辺の Enumeration を返す。
 java.util.Enumeration faceElements()
          このグラフが含む面の Enumeration を返す。
 int getNumberOfEdges()
          このグラフが含む辺の数を返す。
 int getNumberOfFaces()
          このグラフが含む面の数を返す。
 int getNumberOfVertices()
          このグラフが含む頂点の数を返す。
 void killEdgeFace(JgclEmbeddedGraph.Edge edge, JgclEmbeddedGraph.Face face)
          このグラフから辺と面を削除する。
 void killEdgeVertex(JgclEmbeddedGraph.Edge edge)
          このグラフから辺と頂点を削除する。
 void killVertexEdge(JgclEmbeddedGraph.Vertex vrtx, JgclEmbeddedGraph.Edge edge)
          このグラフから頂点と辺を削除する。
 void killVertexFace()
          この (頂点を一つと面を一つだけ持つ) グラフから、その頂点と面を削除する。
 JgclEmbeddedGraph.Result makeEdgeFace(JgclEmbeddedGraph.Face face, JgclEmbeddedGraph.Vertex headVrtx, JgclEmbeddedGraph.Vertex tailVrtx)
          このグラフに辺と面を生成する。
 JgclEmbeddedGraph.Result makeEdgeFace(JgclEmbeddedGraph.Face face, JgclEmbeddedGraph.Vertex headVrtx, JgclEmbeddedGraph.Vertex tailVrtx, JgclEmbeddedGraph.Edge headEdge, JgclEmbeddedGraph.Edge tailEdge)
          このグラフに辺と面を生成する。
 JgclEmbeddedGraph.Result makeEdgeVertex(JgclEmbeddedGraph.Face face, JgclEmbeddedGraph.Vertex vrtx)
          このグラフに辺と頂点を生成する。
 JgclEmbeddedGraph.Result makeVertexEdge(JgclEmbeddedGraph.Edge edge)
          このグラフに頂点と辺を生成する。
 JgclEmbeddedGraph.Result makeVertexFace()
          この (空の) グラフに頂点と面を生成する。
protected  void setGraphItemMaker(JgclEmbeddedGraph.GraphItemMaker maker)
          与えられたオブジェクトを、 このグラフの新たな頂点/辺/面の生成を担当するオブジェクトとして 設定する。
 java.util.Enumeration vertexElements()
          このグラフが含む頂点の Enumeration を返す。
 
クラス java.lang.Object から継承したメソッド
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

コンストラクタの詳細

JgclEmbeddedGraph

public JgclEmbeddedGraph()
何も与えずに、空の埋め込みグラフとしてオブジェクトを構築する。

このコンストラクタでは、 構築するインスタンスの graphItemMaker として、単に JgclEmbeddedGraph.Vertex / JgclEmbeddedGraph.Face / JgclEmbeddedGraph.Edge のインスタンスを生成するオブジェクトを設定する。


JgclEmbeddedGraph

public JgclEmbeddedGraph(JgclEmbeddedGraph.GraphItemMaker maker)
graphItemMaker を与えて、空の埋め込みグラフとしてオブジェクトを構築する。
パラメータ:
maker - 新たな頂点/辺/面の生成を担当するオブジェクト
メソッドの詳細

setGraphItemMaker

protected void setGraphItemMaker(JgclEmbeddedGraph.GraphItemMaker maker)
与えられたオブジェクトを、 このグラフの新たな頂点/辺/面の生成を担当するオブジェクトとして 設定する。
パラメータ:
新たな頂点/辺/面の生成を担当するオブジェクト -  

getNumberOfVertices

public int getNumberOfVertices()
このグラフが含む頂点の数を返す。
戻り値:
頂点の数

getNumberOfEdges

public int getNumberOfEdges()
このグラフが含む辺の数を返す。
戻り値:
辺の数

getNumberOfFaces

public int getNumberOfFaces()
このグラフが含む面の数を返す。
戻り値:
面の数

vertexElements

public java.util.Enumeration vertexElements()
このグラフが含む頂点の Enumeration を返す。
戻り値:
頂点の Enumeration

edgeElements

public java.util.Enumeration edgeElements()
このグラフが含む辺の Enumeration を返す。
戻り値:
辺の Enumeration

faceElements

public java.util.Enumeration faceElements()
このグラフが含む面の Enumeration を返す。
戻り値:
面の Enumeration

contains

public boolean contains(JgclEmbeddedGraph.Vertex vrtx)
このグラフが、与えられた頂点を含むか否かを返す。
パラメータ:
vrtx - 検査する頂点
vrtx - がグラフに含まれていれば true、そうでなければ false

contains

public boolean contains(JgclEmbeddedGraph.Face face)
このグラフが、与えられた面を含むか否かを返す。
パラメータ:
face - 検査する面
face - がグラフに含まれていれば true、そうでなければ false

contains

public boolean contains(JgclEmbeddedGraph.Edge edge)
このグラフが、与えられた辺を含むか否かを返す。
パラメータ:
edge - 検査する辺
edge - がグラフに含まれていれば true、そうでなければ false

makeVertexFace

public JgclEmbeddedGraph.Result makeVertexFace()
この (空の) グラフに頂点と面を生成する。

このグラフが空でない場合には、 JgclFatal の例外を発生する。

戻り値:
新たに生成された頂点と面
関連項目:
JgclFatal, killVertexFace()

killVertexFace

public void killVertexFace()
この (頂点を一つと面を一つだけ持つ) グラフから、その頂点と面を削除する。

このグラフが頂点を一つと面を一つだけ持つものでない場合には、 JgclFatal の例外を発生する。

関連項目:
JgclFatal, makeVertexFace()

makeEdgeVertex

public JgclEmbeddedGraph.Result makeEdgeVertex(JgclEmbeddedGraph.Face face,
                                               JgclEmbeddedGraph.Vertex vrtx)
このグラフに辺と頂点を生成する。

頂点から新たな辺を伸ばす。

face あるいは vrtx が、このグラフに含まれていない場合には JgclInvalidArgumentValue の例外を発生する。

vrtx が face の頂点サイクルに含まれていない場合には JgclInvalidArgumentValue の例外を発生する。

パラメータ:
face - その内部に新たな辺を伸ばす面
vrtx - 新たな辺の始点となる頂点
戻り値:
新たに生成された辺と頂点
関連項目:
JgclInvalidArgumentValue, killEdgeVertex(JgclEmbeddedGraph.Edge)

killEdgeVertex

public void killEdgeVertex(JgclEmbeddedGraph.Edge edge)
このグラフから辺と頂点を削除する。

ぶら下がった辺を削除する。

edge が、このグラフに含まれていない場合には JgclInvalidArgumentValue の例外を発生する。

edge がぶら下がった辺でない場合には JgclInvalidArgumentValue の例外を発生する。 なお、いくつかの辺が繋がってぶら下がっているような状況においては、 その最先端以外の辺は「ぶら下がっている」とはみなさない。

パラメータ:
edge - 削除する辺
関連項目:
JgclInvalidArgumentValue, makeEdgeVertex(JgclEmbeddedGraph.Face, JgclEmbeddedGraph.Vertex)

makeVertexEdge

public JgclEmbeddedGraph.Result makeVertexEdge(JgclEmbeddedGraph.Edge edge)
このグラフに頂点と辺を生成する。

辺を二つに分割する。

edge が、このグラフに含まれていない場合には JgclInvalidArgumentValue の例外を発生する。

パラメータ:
edge - 分割する辺
戻り値:
新たに生成された頂点と辺
関連項目:
JgclInvalidArgumentValue, killVertexEdge(JgclEmbeddedGraph.Vertex, JgclEmbeddedGraph.Edge)

killVertexEdge

public void killVertexEdge(JgclEmbeddedGraph.Vertex vrtx,
                           JgclEmbeddedGraph.Edge edge)
このグラフから頂点と辺を削除する。

二つの辺を結ぶ頂点を削除する。

vrtx あるいは edge が、このグラフに含まれていない場合には JgclInvalidArgumentValue の例外を発生する。

edge が vrtx に繋がっていない場合には JgclInvalidArgumentValue の例外を発生する。

vrtx に繋がっている辺の数が 2 以外の場合には JgclInvalidArgumentValue の例外を発生する。

パラメータ:
vrtx - 削除する頂点
edge - 削除する辺
関連項目:
JgclInvalidArgumentValue, makeVertexEdge(JgclEmbeddedGraph.Edge)

makeEdgeFace

public JgclEmbeddedGraph.Result makeEdgeFace(JgclEmbeddedGraph.Face face,
                                             JgclEmbeddedGraph.Vertex headVrtx,
                                             JgclEmbeddedGraph.Vertex tailVrtx)
このグラフに辺と面を生成する。

面を二つに分割する。

指定した face は常に新たに生成される辺の左面として残る。

このメソッドは、その内部にぶら下がった辺を持たない面を分割する場合を想定している。 ぶら下がった辺を持たない面を、そのぶら下がった辺の根本の頂点で分割する場合には、 makeEdgeFace(Face, Vertex, Vertex, Edge, Edge) を利用しなければならない。

face あるいは headVrtx, tailVrtx が、このグラフに含まれていない場合には JgclInvalidArgumentValue の例外を発生する。

headVrtx, tailVrtx が face の頂点サイクルに含まれていない場合には JgclInvalidArgumentValue の例外を発生する。

headVrtx と tailVrtx が同一の頂点である場合には JgclInvalidArgumentValue の例外を発生する。

パラメータ:
face - 分割する面
headVrtx - 新たに生成される辺の始点となる頂点
tailVrtx - 新たに生成される辺の終点となる頂点
戻り値:
新たに生成された辺と面
関連項目:
JgclInvalidArgumentValue, killEdgeFace(JgclEmbeddedGraph.Edge, JgclEmbeddedGraph.Face)

makeEdgeFace

public JgclEmbeddedGraph.Result makeEdgeFace(JgclEmbeddedGraph.Face face,
                                             JgclEmbeddedGraph.Vertex headVrtx,
                                             JgclEmbeddedGraph.Vertex tailVrtx,
                                             JgclEmbeddedGraph.Edge headEdge,
                                             JgclEmbeddedGraph.Edge tailEdge)
このグラフに辺と面を生成する。

面を二つに分割する。

指定した face は常に新たに生成される辺の左面として残る。

このメソッドは、その内部にぶら下がった辺を持つような面を そのぶら下がった辺の根本の頂点で分割するような場合を想定している。 ぶら下がった辺を持たない面を分割する場合には、 わざわざ辺を指定する必要の無いメソッド makeEdgeFace(Face, Vertex, Vertex) を利用する方が簡単である。

与えられた面/頂点/辺のいずれかが、このグラフに含まれていない場合には JgclInvalidArgumentValue の例外を発生する。

headVrtx, tailVrtx が face の頂点サイクルに含まれていない場合には JgclInvalidArgumentValue の例外を発生する。

headVrtx と tailVrtx が同一の頂点である場合には JgclInvalidArgumentValue の例外を発生する。

headVrtx が headEdge の端点でない場合には JgclInvalidArgumentValue の例外を発生する。

tailVrtx が tailEdge の端点でない場合には JgclInvalidArgumentValue の例外を発生する。

パラメータ:
face - 分割する面
headVrtx - 新たに生成される辺の始点となる頂点
tailVrtx - 新たに生成される辺の終点となる頂点
headEdge - 新たに生成される辺の右面の次になる辺
tailEdge - 新たに生成される辺の左面の次になる辺
戻り値:
新たに生成された辺と面
関連項目:
JgclInvalidArgumentValue, killEdgeFace(JgclEmbeddedGraph.Edge, JgclEmbeddedGraph.Face)

killEdgeFace

public void killEdgeFace(JgclEmbeddedGraph.Edge edge,
                         JgclEmbeddedGraph.Face face)
このグラフから辺と面を削除する。

二つの面を分けている辺を削除する。

edge あるいは face が、このグラフに含まれていない場合には JgclInvalidArgumentValue の例外を発生する。

edge が face の辺サイクルに含まれていない場合には JgclInvalidArgumentValue の例外を発生する。

edge がぶら下がった辺である場合には JgclInvalidArgumentValue の例外を発生する。 なお、いくつかの辺が繋がってぶら下がっているような状況においては、 そのすべての辺を「ぶら下がっている」とみなす。

パラメータ:
edge - 削除する辺
face - 削除する面
関連項目:
JgclInvalidArgumentValue, makeEdgeFace(JgclEmbeddedGraph.Face, JgclEmbeddedGraph.Vertex, JgclEmbeddedGraph.Vertex), makeEdgeFace(JgclEmbeddedGraph.Face, JgclEmbeddedGraph.Vertex, JgclEmbeddedGraph.Vertex, JgclEmbeddedGraph.Edge, JgclEmbeddedGraph.Edge)

clone

protected java.lang.Object clone()
このグラフの複製を返す。
オーバーライド:
クラス java.lang.Object 内の clone
戻り値:
複製されたグラフ
関連項目:
copy(), copy(JgclEmbeddedGraph)

copy

public JgclEmbeddedGraph copy()
このグラフの複製を返す。

このメソッドの処理は以下の通り。


		return copy(new JgclEmbeddedGraph());

 

戻り値:
複製されたグラフ
関連項目:
clone(), copy(JgclEmbeddedGraph), JgclEmbeddedGraph()

copy

public JgclEmbeddedGraph copy(JgclEmbeddedGraph seed)
このグラフの複製を返す。

seed には、構築したばかりの空のグラフを与える。

パラメータ:
seed - 複製された位相情報を保持するためのグラフ
戻り値:
複製されたグラフ
関連項目:
clone(), copy()

dualCopy

public JgclEmbeddedGraph dualCopy()
このグラフの双対複製を返す。

このメソッドの処理は以下の通り。


		return dualCopy(new JgclEmbeddedGraph());

 

戻り値:
双対複製されたグラフ
関連項目:
dualCopy(JgclEmbeddedGraph), JgclEmbeddedGraph()

dualCopy

public JgclEmbeddedGraph dualCopy(JgclEmbeddedGraph seed)
このグラフの双対複製を返す。

seed には、構築したばかりの空のグラフを与える。

パラメータ:
seed - 双対複製された位相情報を保持するためのグラフ
戻り値:
双対複製されたグラフ
関連項目:
dualCopy()