Tadachika Oki の日記

私の日々の雑感です。https://sites.google.com/site/tadachikaoki0/

Categorical Data IDE のビルド

和文で書かれたビルド方法について特に見当たらなかったので、書いておけばどなたかに有益だろうと思い書いた。 (ぼくは開発者とかでなくて、 functorial query language に興味をもっているだけのいちプログラマです。)

 

前提知識:

 

・git のインストール方法。

EclipseJava プロジェクトを インポートする方法。

 

Step 1. github からソースコードを取得。

 git clone https://github.com/CategoricalData/fql.git

Step 2. Eclipse JDT の最新版を下記から入手。 

 http://www.eclipse.org/jdt/

Step 3. Eclipse で Step 1. で取得したフォルダ fql を

 Java プロジェクトとしてインポート。

 

注意: maven でもビルドできるが環境による。 Eclipse によるビルドを推奨しているとのこと。

 

github.com

某ゲームについて

某ゲームに対してああだこうだ言ったり思うことはあるけど、某ゲームが人の動きも、よくわからんもやっとしたルールもさらっと越境させていく感じは痛快ではある。

どんな哲学も学問も凝った技術も、予測もできなかったろうし、成し得なかったことが起きているように思う。 (作った側はもちろん考えていたのだろうけど。)

娯楽は娯楽として家の中で細々やるものだと思っていた。それがこれだからね。

この否定も肯定もしたくない感じがなんとも言えない。

カレンダーにおける予定の圧縮表現 2

この記事の応用について書く。 

salmonsnare.hatenablog.com

 

目次

1. ある週に毎週予定があることの表現

2. 日程調整のための表現

 

1. ある週に毎週予定があることの表現

 

毎週月曜日に予定があることを 2 部グラフを用いて表現すると、以下のようになる。

f:id:salmonsnare:20160716162541j:plain

 

2. 日程調整のための表現

A さんと B さんとの間で素朴な日程調整を行うことを考える。まず、A さんと B さんともに今月の予定が決まっていて、既に予定のある日が重複しているかを確認した上で、どの日に予定を入れるかを決める。

 

A さんと B さんの今月の予定を 2 部グラフで表現したとき、この 2 個の 2 部グラフに共通する辺集合をもつような 2 部グラフで、既に予定のある日が重複していることを表現できる。

 

この例だと、A さんと B さんの予定が重複している日は、第 3 週の月曜日であることがわかる。

f:id:salmonsnare:20160716163312j:plain

カレンダーにおける予定の圧縮表現

ふと、カレンダーを眺めていると、

「これは表なので、 2 部グラフで表現できるのではないか。」

と思って書いてみた。

 

カレンダーを観察すると、列が曜日、行が第何週かを表すので、これをなるべく簡潔に表現したい。

 

2 部グラフの頂点集合の分割の一方を、第何週かを表す数の集合、もう一方を曜日の集合とすると、辺の存在で予定があることを表現できる。ここで、辺に日のラベルをつける。この表現により、第何週の何曜日、何日にどのような予定があるか圧縮して表現できる。

 

f:id:salmonsnare:20160715234118j:plain

上記の例の場合、予定 A が 第 2 週の 7 日にあり、予定 B が第 5 週の 25 日にあることがわかる。

 

min-cost connectivity problem のサーベイ

大学院生の頃、グラフ連結度周辺の研究をしていた時期があって、今でもたまに文献を読む。

 

Nutov というグラフ連結度に関するアルゴリズムが専門の研究者がいて、サーベイを自身のサイトに上げていたのだが、最近アップデートされていた。リンクを貼る。

 

Node-Connectivity Survivable Network Problems, 

http://www.openu.ac.il/home/nutov/SN.pdf

MEMO: 最小スパニング木問題、巡回セールスマン問題、及び最小スタイナー木問題等の共通の一般化として、サバイバルネットワーク問題とよばれるものがあるのだがそのサーベイ

 

The k-Connected Subgraph Problem

http://www.openu.ac.il/home/nutov/kCS.pdf

 MEMO: 辺重みつきのグラフ G が与えられたとき、k連結であるような G の部分グラフを算出する問題を k 連結部分グラフ問題とよび、そのサーベイ。辺重みのつけ方で問題を分類している。

Wiring Diagram について

Wiring Diagram は多入力と多出力ポートをもつ箱とその入れ子で表現できる図式で、hierarchical なシステムをモデリングする際に、大変重宝している。
その気になれば XML の入れ子も、プログラミングにおける関数の呼び出しの流れも、シームレスにこれで表現できるし、最近は、データフローを書く際には個人的に全部これでメモしている。
operad とよばれる数学的対象にもとづいているらしい。ここは深堀できていないが、圏の一般化であることはなんとなくわかった。
参考:
[Spivak 2016] Operads as a potential foundation for
systems of systems (slide),http://categoricaldata.net/operadics/OperadicSoS.pdf
MEMO: 導入的な資料。
[Yau 2015] Operads of Wiring Diagrams, http://arxiv.org/pdf/1512.01602v2.pdf
MEMO: 近年の Wiring Diagram に関するサーベイ。Wiring Diagram は有向グラフや無向グラフのようなものがあり、データフローを表現する場合は有向が適している。無向の場合は、入出力の区別の特にないポートをもつような箱を hierarchical に表現する。(SQL 文そのものを無向の Wiring Diagram で書けるらしい。)