忍者ブログ
Yaleで、遊んで学ぶ日々。

Yaleで、遊んで学ぶ日々。

囲碁、ときどきプログラミング、ところにより経済。
[2]  [3]  [4]  [5]  [6]  [7]  [8]  [9]  [10]  [11]  [12
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。


第50期十段戦予選 高梨聖健 対 淡路修三


第37期棋聖戦予選決勝 鶴山淳志 対 淡路修三





PR
組み合わせ(n C k )を計算する時間は、nが大きくなるにつれて大きくなる。一番時間がかかるのはkがちょうどnの半分のところ(階乗の計算が大変)。逆にk=1またはk=nの時は、n C k = 1 なので簡単。

pythonでn C k を計算する関数としては、gmpy.comb() とscipy.misc.comb() の2つが有名どころらしい(参考URL)。このうち、gmpy.comb()は正確に組み合わせの数を計算するのに対して、scipy.misc.comb()のほうは、対数ガンマ関数を利用して近似値を返すらしい。そのため、後者のほうがスピードが速いとか。

実験してみたところ、次のような結果になった。
n = 10000を固定して、k の値を1から10000まで、色々変えて、それぞれの関数でn C k の計算にかかる時間を記録した。グラフのy軸は経過時間(ミリ秒)で。対数にしてある。

予想通り、gmpyのほうは階乗の計算が難しくなる中間のkについて、計算時間は長くなり、真ん中(k=5000)のあたりで最大になる。一方、近似値を計算するscipyの方は、そういった問題が起こらないらしく、一定の速度で計算できるらしい。そもそも計算の簡単な範囲(kが1に近いかnに近いか)では、gmpyで計算したほうが速いということもグラフから分かる。

使用したファイル:comb_test.py, comb-graph.R
comb-log.png
























 
文書はほぼ全てlatexで書く。構造が論理的なところが好き。

共著をする時には大きな障害になりそうな気がするが、そこは追々考えるとして、当面は、ライティングの先生に添削を依頼する時にワードに変換する必要が生じた。

文章だけが必要なので、方程式や図表は綺麗に表示出来なくても差し支えない。この目的なら、tth (HTMLへ変換)とlatex2rtf (RTFへ変換。ワードで読める)が良い。どちらもUbuntuの公式リポジトリに入っている。

特に、tthは知らないパッケージが出てきても、その部分を無視してとにかく変換を成し遂げてくれる、小粋なソフトウェアだ。つまりクラッシュしない(何も吐き出さないということはない)ので、ストレスが少ない。tthでHTMLに変換→ワードにコピペという方法もなかなか有効。

スタイルを忠実に再現したり、様々なパッケージに対応できるコンバーターもあるようだけど、今はとにかくクラッシュしないtthがベスト。

使い方:
tth <tex file>
latex2rtf <tex file>

【追記】
tthは日本語でもいける(Nice!)。アウトプットはオリジナルのファイルと同じエンコーディングになるようだ。


どうやらこれがフルバージョンみたい。ずいぶん焦らすんだなー。


Calender
04 2024/05 06
S M T W T F S
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Search in This Blog
Latest Comments
[03/30 川内のばば山田]
[03/30 川内のばば山田]
[08/06 Aterarie]
[07/05 Agazoger]
[07/01 Thomaskina]
Oldest Posts
Latest Trackbacks
フリーエリア

Barcode
Access Analysis
Powerd by NINJAブログ / Designed by SUSH
Copyright © Yaleで、遊んで学ぶ日々。 All Rights Reserved.
忍者ブログ [PR]