ホーム » it
「it」カテゴリーアーカイブ
Neo4jでグラフアルゴリズム
Qiitaでまとまった記事(全体はこちら)を書いてみようかと思っています。トピックは、
- Neo4jの概要(この辺はとりあえず他コンテンツを参照で)
- Neo4jのアーキテクチャとアプリケーション機能分担
- Neo4jのJava API
- Neo4jのプロシージャによる拡張
- 基本的なデータ構造:キュー、スタック、プライオリティキュー
- 幅優先探索
- 深さ優先探索
- 最短経路:ダイクストラ法
- 最短経路:A*法
- 最短経路:双方向ダイクストラ法
- 旅行計画問い合わせ(Trip planning query)
- 補足:Neo4jプロシージャの単体テストとCypherからの返却値の解説
- 補足:Spring Data Neo4jとSpring Bootを利用してWebアプリ化
というところが目標。ダイクストラ法までは記事にしてみました。時間を見つけてブラッシュアップしていきます。
Cytoscapeでオートマトンの図を書いてみる – Qiita
Qiitaにグラフ可視化に関連した軽い話題を書いてみました。背景としては、Cytoscape.jsをグラフ(ネットワーク)描画に利用してみたいということがある。
—
学生にオートマトンなどの計算理論を教える機会があったのですが、そのとき結構面倒だったのが、講義スライドや演習の例題のオートマトンの状態遷移図を書くことでした。結局、PowerPointで作図しましたが、書くときの柔軟性はあるし、それなりにきれいに書けるという点では良いのですが、遷移を表すエッジと状態を表すノードをつなぎ直したり、エッジをちょうどいい感じに書いたりする等が面倒で、かなりの時間を費やしました(徐々にノウハウがたまって速くかけるようにはなりましたが…
— 読み進める
Neo4jでグラフアルゴリズム:幅優先探索 – Qiita
技術的な記事を投稿しました
グラフデータベースNeo4jを用いた幅優先探索の実装例を紹介する。Neo4jは通常は、Cypherというグラフデータベース検索言語を利用してアクセスする。Cypherは、グラフに対するパターンマッチを容易にすることに特徴があるが、Neo4jにビルトインで組み込まれている探索アルゴリズムを呼び出すことも可能である。よって、Neo4jを利用して幅優先探索を行う場合、自前でアルゴリズムを実装する必要は基本的にはない。あえて、本稿で自前による探索アルゴリズムを実装する例を紹介す…
— 読み進める qiita.com/ggszk/items/f50a0705e45764f13107
グラフデータベースNeo4jをユーザ定義プロシージャで拡張しよう – Qiita
ひさびさに技術的な記事を書いて見ました。
グラフデータベースNeo4jは、主にCypherという独自のグラフデータベース検索言語を使って利用する。最短経路探索などのアルゴリズムはビルトインされている。しかし、せっかくグラフデータベースが使えるのであれば、自分で作ったアルゴリズムを利用したいだろう。直接グラフデータベースにアクセスする方法もあるが、Neo4jにはユーザ定義のプロシージャを組み込む機能が用意されている。その利用方法はNeo4j開発初期のころよりもかなり簡単になっており、Cypherと…
— 読み進める qiita.com/ggszk/items/c15e6e346aef5e19f8ed
なぜオートマトンや形式言語を学ぶのか?
これはqiitaに掲載した記事と同じ内容です。
はじめに
オートマトンや形式言語の理論は、コンピュータ・サイエンスを学ぶ学生にとっては、(必修ではないが)学ぶことが望ましいコースとしての立ち位置を確立してはいるものの、形式的にすぎるとか、実応用にかけるとか思われがちであるとも思う。しかし、最近のAIブームな世の中に、計算機ができることが何か?という問題は重要になっており、もう一度(古典を)学び直すことは有意義ではないかと思っている。実際に、川添愛さんが童話仕立てな物語にする試みがあったり、高岡詠子さんがブルーバックスを比較的最近(2014年)に出したりと、世の中から少し思い出されているのではないだろうか。
そこで
最近、どんな情報が世の中に出ているのか調べてみた。すると、この分野のバイブル的な書籍である、オートマトン言語理論 計算論の著者であるスタンフォード大学Jeff Ullman氏のホームページから、講義スライドや演習と解答等がダウンロードできるではないか(だいぶ前からではあるが)。素晴らしい時代になったものである。そこで、その講義スライドから、「なぜオートマトンを学習するのか」というさわりの部分が参考になりそうなので、抜粋し日本語にしてみた。
以下、「なぜオートマトンを学習するのか」の超訳
CS154(オートマトンと複雑さの理論入門)の授業にようこそ。なぜオートマトンを学習するのかについて説明しよう。スタンフォード大学の卒業後5年の卒業生に対して、どの授業が彼らの仕事に役に立ったかに関する調査がある。もちろん、CS106(Javaプログラミング入門)のような基礎的な授業は当然トップの座にくるものの、選択授業の中では、CS154は傑出して高くなっている。例えば、AIに比べても3倍のスコアである。
では、どうしてそうなったのだろう。まず、正規表現は多くのシステムで使われている。例えば、UNIX(a. *b等)や、XMLタグを記述するDTD (person (name, addr, child*)等) があげられる 。有限オートマトンはプロトコルや電子回路をモデル化することができ、その理論はモデルを検証することに利用されている。
文脈自由文法は、基本的に全てのプログラミング言語の構文を記述するのに利用されている(自然言語を記述する重要な役割があることを忘れてはいけないが)。DTDは全体として、実際に文脈自由文法そのものである。
現実の問題に対して、解決策を開発しようとすれば、我々はしばしばソフトウェアができることの限界に直面することになる。例えば、決定できない(Undecidable)ものごと – どんなプログラムによっても扱うことができないこと、手に負えない(Intractable)ものごと – プログラムは存在するが高速に処理することはできないこと、がある。CS154は、そのような場合にあなたの道具となる。
CS154を学ぶことによって、我々は離散システムを形式的に扱う方法を学ぶことができる。あなたは、あるプログラムが正しいと証明することはきっとないだろうが、なぜトリッキーなテクニックが本当に有効になっていることを考える必要はでてくるだろう。そして、我々は抽象的なモデルとそれを構築する経験を得ることができる。階層化されたソフトウェアのアーキテクチャをモデル化できる。
おわりに
思ったほど、新しい情報はなかったかもしれないが、ご参考まで…。ちなみに、オートマトン言語理論 計算論は、英語では第3版が出ていて、それで授業をやっているらしい。日本語化はまだだと思う。第1版は数学的なドライな記述の歯ごたえのあるものだったが、第2版はサンプルをプログラムで例示したり大分イメージが変わっていた。第3版はどうなっているのかは、これから確認してみたい。また、今回調べた中で丸岡先生の新しい本もコンパクトで良いと思った。
Spring Fest 2017 参加レポート~待望のSpring Framework 5.0の概要解説、大手企業によるデモや活用事例の紹介も (1/3):CodeZine(コードジン)
https://codezine.jp/article/detail/10590
先日参加したSpring Fest 2017についてのレポートが本日公開されました。私は少し(1セッション)書いてます。よろしくお願いします。
Spring Fest 2017
http://springfest2017.springframework.jp/
行ってきました。
- 若い人が多い!私は多分少し浮いてました。スーツ率低い。
- 参加人数も多い!昨年より広い会場でしたが、それでも満杯セッション多い。
- 関心が高そうなのは、リアクティブ、マイクロサービス。でもややバズワード感も。
Springもまだまだ盛り上がってるということでしょうか。若い人の学びたい意欲を感じました。
今回は、最近はやりなイベント開催中にtwittwerでリアルタイムでつぶやくに挑戦してみました。イベントの盛り上がりに少しでも貢献できれば…。セッションとしては、セキュリティ脆弱性やリアクティブの話がおもしろかったです。#jsug #spring #software #it #framework
テーマをtwitter風に変更してみました。投稿のハードルが下がるかな…
テーマをtwitter風に変更してみました。投稿のハードルが下がるかな…
Windows 8.1導入
さっそくインストールしてみた.VMware fusion上だと,速度向上が多少体感できる程度にはある.しかし,これはVMware fusion 6がえらいのか,Windows 8.1がえらいのかはよく分からない.操作性はどうなのかな・・・まだ良くわからない.スタートボタンの復活は別にどうでもいいし,スタート画面のカスタマイズの余地が大きくなったのはいいけど.細かいところ(PeopleとかStoreとか)が地味に良くなっているのかもしれないが,これが販売促進につながるとはイマイチ思えないかなぁ・・・.結局,アプリの充実にかかっているのかな.