このチュートリアルでは、SimpleGraphを使ってグラフを作成する方法について説明します。
目次
基礎知識
SimpleGraphはグラフ理論でいうところのグラフを扱います。いわゆる直線や放物線などのグラフとは異なり、グラフ理論のグラフとは頂点と辺で構成されるもののことです。下の図を見てください。
図中の丸(大文字A,B,C,Dのラベルが付いている)が頂点を表します。また、線(小文字a,b,cのラベルが付いている)が辺を表します。辺aは頂点Aと頂点Bを結び、辺bは頂点Aと頂点Cを結んでいます。なお、正確にはcは辺ではありません。辺は必ずその両端が頂点になっている必要があるためです。
頂点Dはどの辺とも結ばれていませんが、これは「正しい」頂点です。余談ですが、このような頂点を孤立点と言います。
SimpleGraphでグラフを描く場合、頂点と辺について知らなければなりませんが、必要なことは上の説明で十分です。それでは実際にグラフを作ってみましょう。
簡単なグラフを作る
SimpleGraphを使って下のような簡単なグラフを作ってみましょう。
このグラフはA,B,C,Dの4つの頂点と、それぞれを結ぶ7つの辺からできています。
SimpleGraphではいろいろな方法でグラフを作ることができますが、まずは基本的な方法について説明していきます。
頂点を置く
SimpleGraphを起動して(わからなければ「SimpleGraphの使い方」を参照してください)、グラフエリアをクリックすると下のようなメニューが現れます。
一番上のadd vertexを選んでください。そうするとマウスポインタのあった場所に頂点が一つ現れます。(vertexとは頂点のことです)
マウスで頂点をドラッグすると、好きな位置に頂点を置くことができます。それでは、例題のグラフのように4つの頂点を置いてみてください。
あなたが几帳面だったり、公式な文書を作成している場合には上のようなグラフでは満足できないかもしれません。そのような場合はグリッドが助けになるでしょう。グラフエリアの上部にあるgridというチェックボックスをオンにしてください。グラフエリアに格子が現れ、線の交差しているところにだけ頂点が配置されるようになります。
なお、頂点を配置した後はグリッドをオフにしても構いません。
辺で頂点を結ぶ
次は頂点を結ぶ辺を作成します。グラフエリア(かつ頂点のないところ)をクリックして現れるメニューの二番目にあるadd edgeを選んでください。すると、頂点と同じように辺が現れます。(edgeとは辺のことです)
辺を良く見ると、赤色の線になっていて、両端には赤色の小さな丸が、中央には黄色の丸がつけられていることがわかります。線の色は自由に変えることができますが、特に赤色は今、選択中の(selected)辺であることを示しています。単に辺に赤色を付けた場合と異なる点として、通常よりも線が太くなっています。
両端にある赤色の小さな丸は頂点への接続用ハンドルで、このハンドルを使って辺を頂点に結びつけることができます。ハンドルが赤いのは未接続の状態を表しており、このままではグラフのさまざまな性質を調べたり、アルゴリズムを適用することができません。いわば未完成のグラフとなってしまいます。
真ん中にある黄色のハンドルは、辺を直線から曲線に変える(またその逆)ためのものです。複数の辺が重なってしまう場合などに利用します。
辺の端のハンドルをマウスでドラッグし、頂点の上まで持ってきてください。するとハンドルの色が黄色に変わります。この状態でマウスボタンを離せば、辺がその頂点と接続されることになります。同様に反対側のハンドルもドラッグして以下のように2つの頂点を結んでください。
同様に4つの辺を追加し、それぞれを頂点と結んで以下のようなグラフを作ってください。
頂点や辺を削除する
最初のうちは誤って、不要な頂点や辺を作ってしまうことでしょう。頂点や辺を削除するには、頂点や辺で右クリックしてメニューを出し、deleteを選んでください。必要なものを誤って削除することもあるかもしれませんが、SimpleGraphは取り消し機能も確認メッセージもありません。気をつけるか苦にならない程度に操作に慣れてください。
多重辺を作る
1組の頂点が複数の辺を持つ場合、それらの辺のことを多重辺といいます。例題のグラフには2組(AとC, AとD)の頂点の間に多重辺があります。多重辺を作るには、先ほどと同様に辺を作り、その両端を互いの頂点と結びつけます。SimpleGraphが多重辺を検出すると自動的に辺が曲線に変わります。2つの多重辺を追加して以下のようにしてください。
線が赤色のままなのが気になりますか?グラフエリアのメニューでunselect all edgesを選べば選択状態が解除されます。
頂点ラベルを設定する
グラフの形は完成しましたが、4つの頂点にA,B,C,Dの名前を付けましょう。頂点や辺に付ける名前を「ラベル」と言います。頂点にラベルを付けるには、頂点を右クリックしてメニューを出してlabel…を選び、ダイアログボックスに文字を入力します。
左端の頂点にAというラベルを入力すると以下のようになるはずです。
他の3つの頂点にもラベルをつけ、例題のグラフを完成させましょう。
グラフを保存する
せっかく作成したグラフも、SimpleGraphの左上の×を押せば一瞬で消えます。後で眺めて楽しむためにも作成したグラフを保存しましょう。
グラフエリアで右クリックしてsaveを選ぶと、グラフの名前を尋ねるダイアログボックスが表示されます。適当な名前を入力してグラフを保存してください。例題のグラフは「ケーニヒスベルクの橋」とよばれるグラフ理論で有名なグラフですので、「koenigsberg」と入力して保存してください。綴りが正しいかは自信ありません。心配な方は自分で調べてください。
入力を誤ってしまった場合は、save as…で別の名前で保存しなおすことができます。誤った名前のグラフはグラフリストで右クリックし、deleteで削除することができます。(rename機能はありません)
なお、SimpleGraphでは(ラベルも含め)名前としてアルファベットや数字以外の文字を用いることはお勧めしません。同様に日本語(ひらがなや漢字など)を用いることもおすすめしません。ファラオから天誅が下る可能性もありますので注意してください。
本当の意味で保存する
前述の「グラフを保存する」は(実際には)作成したグラフをPharoのクラス定義に変換するだけです。(たとえば先ほどのkoenigsbergであれば、SGGkoenigsbergというクラス定義が生成されています)
そのため、PCの電源が落ちたり、Pharoが予期せぬ理由で終了すると作成したものは失われます。より長期的に作成したグラフを再利用したいならば、Pharoを終了する際に「Save and quit」を選ぶか、生成されたクラス定義をFileoutなどで保存する必要があります。前者を行うのが一般的でしょう。
以上でこのチュートリアルは終わりです。
次のチュートリアルに進みましょう。