タグ

algorithmとgolangに関するyukimori_726のブックマーク (4)

  • Golang でダイクストラ法を書いてみる - CUBE SUGAR CONTAINER

    今回は Golang の勉強がてらダイクストラ法を実装してみる。 ダイクストラ法はグラフ理論の最短経路問題を解くためのアルゴリズムのひとつ。 DirectedGraph#Add() のところを編集するとグラフを書き換えることができる。 package main import ( "errors" "fmt" ) // ノード type Node struct { name string // ノード名 edges []*Edge // 次に移動できるエッジ done bool // 処理済みかを表すフラグ cost int // このノードにたどり着くのに必要だったコスト prev *Node // このノードにたどりつくのに使われたノード } func NewNode(name string) *Node { node := &Node{name, []*Edge{}, false, -

    Golang でダイクストラ法を書いてみる - CUBE SUGAR CONTAINER
  • Go言語による高速な接尾辞配列の実装(SA-ISの実装) - Qiita

    Go言語でSA-IS(Suffix Array - Induced Sorting)を実装しました。SA-ISは接尾辞配列(Suffix Array)の構築アルゴリズムです。記事の内容は次の3になります。 Go言語で実装したSA-IS(go-sais)について紹介します SA-ISのアルゴリズムについて解説します Go言語の入門書を執筆しました Go言語のSA-IS実装 Go言語の標準パッケージには、既に接尾辞配列の実装(index/suffixarray)が存在します。標準パッケージのソースコードを見たところLarsson-Sadakane法(qsufsort)であったため、より高速と言われているSA-ISを実装しました。 実装内容 SA-ISは接尾辞配列の構築部分のアルゴリズムです。そのため、構築部分の実装のみ標準パッケージから置き換えています。接尾辞配列を使用した検索部分やテスト

    Go言語による高速な接尾辞配列の実装(SA-ISの実装) - Qiita
  • GolangのGCを追う

    Go1.5とGo1.6でGoのGCのレイテンシが大きく改善された.この変更について「ちゃんと」理解するため,アルゴリズムレベルでGoのGCについて追ってみた. まずGoのGCの現状をパフォーマンス(レイテンシ)の観点からまとめる.次に具体的なアルゴリズムについて,そして最後に実際の現場でのチューニングはどうすれば良いのかについて解説する. GoのGCの今 最初にGoのGCの最近の流れ(2016年5月まで)をまとめる. Go1.4までは単純なStop The World(STW)GCが実装されていたがGo1.5からは新たなGCアルゴリズムが導入された.導入の際に設定された数値目標は大きなヒープサイズにおいてもレイテンシを10ms以下に抑えることであった.Go1.5で新たなアルゴリムが実装されGo1.6で最適化が行われた. 以下は公開されているベンチマーク.まずはGo1.5を見る. Gophe

  • 端末の上で動かして遊べる!迷路コマンドをGo言語で書きました! - プログラムモグモグ

    迷路で遊びたくなったので作りました。Goで書いています。 github.com Homebrewをお使いの方は、次のコマンドでインストールしてください。 brew install itchyny/tap/maze そうでない方は、次のコマンドでビルドしてインストールするか、 go get github.com/itchyny/maze/cmd/maze あるいは https://github.com/itchyny/maze/releases よりバイナリーを落としてご利用ください。 mazeコマンドは、ランダムな迷路を出力します。 maze --interactive引数を渡すと、カーソルを動かして迷路を遊ぶことができます。 maze --interactive --format colorを渡すと迷路が綺麗に表示されます。--widthや--heightなどで迷路のサイズを制御すること

    端末の上で動かして遊べる!迷路コマンドをGo言語で書きました! - プログラムモグモグ
  • 1