並列プログラミングの概念、理屈、各種問題について。 並カン( http://atnd.org/events/2092 )にて発表

並列プログラミングの概念、理屈、各種問題について。 並カン( http://atnd.org/events/2092 )にて発表
この記事は、インテル® ソフトウェア・ネットワークに掲載されている「How to sound like a Parallel Programming Expert Part 1: Introducing concurrency and parallelism」(http://software.intel.com/en-us/articles/how-to-sound-like-a-parallel-programming-expert-part-1-introducing-concurrency-and-parallelism/) の日本語参考訳です。 並列プログラミングのエキスパートのようになるには パート1 パート2 パート3 パート4 並列コンピューティングの時代がやってきました。現に、これを書いているのはデュアルコアのラップトップです。先日、息子が買ったゲーム機には 9 コアが、そ
alias -s txt='cat' alias -s html='google-chrome' alias -s rb='ruby' alias -s py='python' alias -s hs='runhaskell' alias -s php='php -f' alias -s {gz,tar,zip,rar,7z}='unarchive' # preztoのarchiveモジュールのコマンド(https://github.com/sorin-ionescu/prezto/tree/master/modules) alias -s {gif,jpg,jpeg,png,bmp}='display' function runcpp () { g++ -O2 $1 shift ./a.out $@ } alias -s {c,cpp}='runcpp' function runjava
2007年09月16日04:30 カテゴリArt LiveCodingに学ぶプログラミングの三原則 Mozilla24のLiveCodingの解説をやってきました。参加された方、お疲れさまでした。ほんと楽しかった。 言語もC++ありJavaありJavaScriptありActionScriptありPerlありとまちまちで、Editorもemacsありvimあり秀丸ありとまちまちでしたが、それでも全LiveCoderの共通項がはっきり見えたので、それを書き留めておきます。これらの共通項には私も含まれます。 コピペを恐れるな(don't be afraid to be a copycat) 参加者の一人として、100%フルスクラッチで書いていた人はいませんでした。たいていは関数単位でコピーし、それを適宜書き換えるというやり方をしていました。学校のテストでは反則もいいところですが、大人の世界ではこ
今回は選択アルゴリズムの紹介です。 これは、配列からk番目に小さい数を線形時間で 探しだすクイックセレクト(Quick Select)という クイックソートの派生アルゴリズムです。 問題 ソートされていないa1からanまでの数字がn個あり、 その中からk番目に小さい数字を探せ。 例: サイズが9の配列、[2, 5, 3, 7, 1, 8, 6, 0, 4]において、 3番目に小さい数は2です。 解1:ソートする。 ソートしてk番目の数字を取る方法です。 ソートにθ(nlogn)と見つけるのにθ(n)なので、T(n) ∈ θ(nlogn) 解2:選択ソート的解 リストから一番小さい数字を見つけ、取り出します。 これをk回繰り返します。 リストから最小値を見つけるのにO(n)なので T(n) ∈ O(kn)です。 解3:ヒープソートの利用 ヒープソートの構成にO(n)、取り出しにO(logn)
基本というか、簡単に考えられるのは、 - ソートしたのち、真ん中の要素を選択する という方法だが、全ての要素をソートしないと答えが得られないというのは少し計算量が大きすぎる。 いろいろ調べてみると、クイックソートのアルゴリズムの発展型で、クイックセレクトなるアルゴリズムがあるらしい。 http://d.hatena.ne.jp/agw/20090505/1241602074 http://d.hatena.ne.jp/agw/20090513/1242290109 要するに、中央値が求まるくらいまでクイックソートを計算し、省略できる計算はしないということのようである。 このときに、クイックソートを計算するにあたり、最初に選択するパーティションの値をできるだけ中央値に近い値を選択するのが、アルゴリズムを高速化するコツであるということが書いてある。 http://d.hatena.ne.jp/
C言語のアルゴリズムの参考書を読んで今勉強してるんですが。 中央値を求めるアルゴリズムについて頭を悩ませています。 三個の数字を比較して中央値を求めるif文なんですが コード: #include <stdio.h> int med3(int a, int b, int c) { if (a >= b) if (b >= c) return b; else if (a <= c) return a; else return c; else if (a > c) return a; else if (b > c) return c; else return b; } int main(void) { int a, b, c; printf("三つの整数の中央値を求めます /n"); printf("aの値:"); scanf("%d", &a); printf("bの値:"); scanf("
技術評論社から近々刊行される「詳解Apache Spark」をご恵贈いただきました.ありがとうございます! 詳解 Apache Spark 作者: 下田倫大,師岡一成,今井雄太,石川有,田中裕一,小宮篤史,加嵜長門出版社/メーカー: 技術評論社発売日: 2016/04/29メディア: 大型本この商品を含むブログ (5件) を見る Amazonの発送は4月29日からのようですが,都内のジュンク堂や紀伊國屋,書泉ブックタワーなどの大型書店では既に先行販売されているようです.是非手に取ってみてください. 総評 本書は,大規模並列分散基盤のApache Sparkについて,豊富な実践例を交えながら基本的なコンセプトや使用方法が解説された書籍です.この分野の第一線で実際に業務で使用している方々が,わかりやすく執筆されています.Sparkを使う必要があったりどんなものか知ってみたいと思ったりしているエ
これは,R Advent Calendar 2013の8日目の記事です. 2013年を振り返ってみると,Tokyo.Rの"シリーズ前処理"をたったの2回で途絶えさせてしまったことは大いに反省すべき点の一つです(^^; シリーズ前処理を途絶えさせたことは,2013年における痛恨の極みの一つ.2014年に復活させるかな?— sfchaos (@sfchaos) 2013, 11月 30 そんなわけで,残り少なくなった2013年,シリーズ前処理の続きを書いてみたいと思います. 今回のテーマは「連続値データの離散化」です.データ分析を行っていると,連続値のデータを離散化して,いくつかのグループに分けたい場面がしばしば発生します.例えば,健康診断の項目に対して「高・中・低」の3段階に分けたい場合などです. 高次元のデータに対する離散化の手法もいくつか提案されていますが,ここでは1次元のデータの離散化
Python勉強し始めて一ヶ月くらいたったんで一度復習を兼ねてまとめてみようと思います。僕が今までPHPとかPerlとかJavaScriptを使っていて、Pythonはこうやるのかーとか、これは便利だなーと思ったところ、開発していてはまったところなどピックアップしてみました。 初めてのPythonを読んで初心者向け勉強会に参加した程度の知識です。とりあえず初めてのPythonがかなりいいのでこれ読むだけで大体基礎は習得できた気がします。基本的な文法の説明だけでなく、大事なことは何回も繰り返し書いてあったり、Pythonの思想などにも触れているのでなぜこういう実装になっているかということも理解できます。これオススメ。 尚、このエントリーではPythonのバージョンは2.5をベースにしてます(主にGoogleAppEngineで使ってるので)。間違えなどあったらツッコミお待ちしてます。 文法、
この記事には独自研究が含まれているおそれがあります。 問題箇所を検証し出典を追加して、記事の改善にご協力ください。議論はノートを参照してください。(2020年10月) この記事で示されている出典について、該当する記述が具体的にその文献の何ページあるいはどの章節にあるのか、特定が求められています。 ご存知の方は加筆をお願いします。(2014年4月) リファクタリング (refactoring) とは、コンピュータプログラミングにおいて、プログラムの外部から見た動作を変えずにソースコードの内部構造を整理することである。また、いくつかのリファクタリング手法の総称としても使われる。ただし、十分に確立された技術とはいえず、また「リファクタリング」という言葉に厳密な定義があるわけではない。 リファクタリングが登場する以前は、一度正常な動作をしたプログラムは二度と手を触れるべきではないと言われていた。な
プログラミングの難しさと奥の深さに辟易しているどうも僕です。 今回はプログラミングを覚えたくてXcodeをインストールしつつ、開いても意味不明でそっと閉じてしまう方向けに、自分がどうやってちょっとだけ書けるようになったかを書いていきます。 前提スキル いくら初心者だといえども、これだけはやれるようになっとけという必要スキルを列挙。 とは言っても、ブログ主の主観だけど。 ブラインドタッチ キーボードを見ないでキーを打てるくらいじゃないと話にならない。 PCに対する慣れがそれくらい必要。 Excelの関数がある程度使える Excelのセルの中にIF文やROUNDUP文とかを書き込む事が出来て、正しく使用できる理解力が必要。 プログラミングは基本文字列を書き込むことに終始することになる。 なのでExcelでIF文などをどう使うか理解出来る程度の下地が無いと相当きつい。 Google先生で調べる力
セットアップしたMacPortsを実際に使用してみる。ついでに、Xcodeでの使用方法もメモしとく。 とりあえず、Boostライブラリを例にする。 ターミナルから sudo port install boost とうつとインストールが始まるので、しばらく待つ。buildに時間がかかる。 これで、ライブラリのインストールは終了。 で、Xcodeでインストールしたライブラリを使用するには、インストール先である/opt/loaclまでのパスを設定してやればいい。 boostのヘッダーは/opt/local/include/に格納されているので、Xcodeのプロジェクト>プロジェクト設定の編集>ヘッダ検索パスに/opt/loacl/include/と追加する。 これで、Xcodeのプロジェクト上でboostが使用可能になる。 ついでに、Xcodeのグローバルパスの設定方法を調べてみた。 ~/.Ma
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く