タグ

algorithmに関するmas-higaのブックマーク (25)

  • 【実践】エンジニアの基礎教養-アルゴリズムを学べる本


       📗 📗 📗 
    【実践】エンジニアの基礎教養-アルゴリズムを学べる本
  • 徐々に高度になるリングバッファの話 - Software Transactional Memo

    リングバッファのイメージ図 1. リングバッファとは何か 機能的にはFirst In First Out (FIFO)とも呼ばれるキューの一種であるが、リング状にバッファを置いてそれの中でReadとWriteのインデックスがグルグルと回る構造をとる事によって容量に上限ができることと引き換えに高速な読み書き速度を得たものである。キューを単に実装するだけなら山ほど方法があって線形リストを使ってもいいしスタックを2つ使っても原理的には可能だ。その中でもリングバッファを用いた方法の利点はひとえに性能の高さでありメモリ確保などを行わないお陰でシステム系の様々な場所で使われている。 これの実装自体は情報系の大学生の演習レベルの難度であるが少し奥が深い。まずリングバッファのスタンダードなインタフェースと実装は以下のようなものである。 class RingBuffer { public: explicit

    徐々に高度になるリングバッファの話 - Software Transactional Memo
    mas-higa
    mas-higa 2023/07/31
    "リングバッファのイメージ図" [これはひどい]
  • DeepMind、AIで人間考案のものより優秀なソートアルゴリズムを発見 最大70%高速化

    Google傘下のAI企業Google DeepMindは6月7日(現地時間)、アルゴリズムを開発するAIAlphaDev」が、人間が考えたものより高速なソートアルゴリズムを発見したと発表した。 ソートアルゴリズムは、入力されたデータを一定のルールに基づいて並べ替えるもの。ネット検索結果の並べ替えやランキング制作などIT技術の根幹を担う技術の一つ。今回AlphaDevが考案したアルゴリズムは既存のものに比べて、少量のデータなら最大70%、数十万規模の大量のデータなら約1.7%速く処理できた。 DeepMindはAlphaDevに新しいアルゴリズムを発見させるため、ソートの作業を「組み立てゲーム」としてプレイさせた。「正確にソートできる」「既存のアルゴリズムより高速である」という2点を満たせばクリアとした。 関連記事 OpenAIやDeepMindのCEOやトップ研究者ら、「AIによる人

    DeepMind、AIで人間考案のものより優秀なソートアルゴリズムを発見 最大70%高速化
    mas-higa
    mas-higa 2023/06/09
    そのうち /* AI で書いたから触るな */ ってコメントが登場しそう。
  • AES-256 GCMに渡すkeyに、パスワードそのものではなく、鍵導出関数(PBKDF2など)で生成したハッシュ値を指定する理由は?


    URLAES-256 GCMChaCha20-Poly13051TypeScript     Git
    AES-256 GCMに渡すkeyに、パスワードそのものではなく、鍵導出関数(PBKDF2など)で生成したハッシュ値を指定する理由は?
  • メルセンヌツイスタはそんなに衝突しない - Qiita


    κeen10UUID - Speaker Deck    Rust [package] name = "genuuidv4" version = "0.1.0"edition = "2018" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] rand = "0.7.2" sfmt = "0.6.0" use
    メルセンヌツイスタはそんなに衝突しない - Qiita
    mas-higa
    mas-higa 2019/11/27
    “少し速度が必要になるので”
  • ハッシュ値の使い方について - クックパッド開発者ブログ


    (@vincentisambart)  Swift's stdlib moves to randomly seeded hashing: https://t.co/2T5oRYtD8B ericasadun (@ericasadun) 2018310 Swift 4.14.25.0 SwiftSwifthashValuehash  
    ハッシュ値の使い方について - クックパッド開発者ブログ
    mas-higa
    mas-higa 2018/03/27
    hashdos って 2011 年じゃなかったっけ?
  • 観察日記 2018-02-14 - なるせにっき


     mrkn  `ary.all? {|e| e == ary[0] }`  usa ary.uniq.size == 1 mrkn  > uniq usa all? ary mrkn `ary.all? {|e| e.foo == ary[0].foo }` map.uniq.size  usa all? mrkn  >  usa  map.uniq.sizemapEn
    観察日記 2018-02-14 - なるせにっき
    mas-higa
    mas-higa 2018/02/16
    コミッターをも唸らせる柔軟発想
  • 画像処理の数式を見て石になった時のための、金の針 - Qiita


     InstagramGooglePhoto SphereOpenCV 稿OpenCV使() ( 2)  
    画像処理の数式を見て石になった時のための、金の針 - Qiita
    mas-higa
    mas-higa 2017/09/29
    「難しいことはOpenCVがやってくれるわ。そうでしょ?」魅惑的すぎる
  • Knuth multiplicative hash が最小完全ハッシュ関数であることの証明 | メルカリエンジニアリング


     @metal_unk   Be Professional Day Be Professional Day  tech.mercari.com  Be Professional Day Knuth multiplicative hash   Be Professional Day  Knuth multiplicative hash
    Knuth multiplicative hash が最小完全ハッシュ関数であることの証明 | メルカリエンジニアリング
    mas-higa
    mas-higa 2017/09/14
    この数式を描画する仕組みはどうなっているのだろうか?
  • Amazonの推薦システムの20年


    IEEE Internet Computing201756 "Two Decades of Recommender Systems at Amazon.com"  2003 "Amazon.com Recommendations: Item-to-Item Collaborative Filtering"  Test of Time1 Amazon199820    調20
    Amazonの推薦システムの20年
    mas-higa
    mas-higa 2017/06/13
    歴史の話ではなかった。
  • rubyでdfsでメモ化再帰 - 会者定離で(ダイアリーから)以降

    いや、早くなるのは分かってたけどめちゃくちゃ早かった*1のでw− P.S. チーターの7章「動的計画法、メモ化」のサンプルのrubyでのベンチ結果です。 dfs $ ruby -v ruby 2.1.5p273 (2014-11-13) [arm-linux-gnueabihf] $ time ruby hello_dfs.rb 119759850 real 13m50.176s user 13m50.080s sys 0m0.050s hello_dfs.rb $h = 13 $w = 17 def dfs(nowh, noww) return 0 if nowh > $h || noww > $w return 1 if nowh == $h && noww == $w dfs(nowh+1, noww) + dfs(nowh, noww+1) end puts dfs(0, 0)

    rubyでdfsでメモ化再帰 - 会者定離で(ダイアリーから)以降
    mas-higa
    mas-higa 2017/03/10
    時間をメモリで買う話
  • 私たちはいかにして環状線で”悪さをする列車”を捕まえたか | プログラミング | POSTD


    Daniel Sim Lee ShangqianDaniel SimClarence Ng MRT 使115調 SMRTLTA調 8
    私たちはいかにして環状線で”悪さをする列車”を捕まえたか | プログラミング | POSTD
  • 珍しいSHA1ハッシュを追い求めて - プログラムモグモグ


    SHA1  SHA1 SHA1   50    SHA1 echo -n | openssl sha1 | awk '{print length}' 
    珍しいSHA1ハッシュを追い求めて - プログラムモグモグ
    mas-higa
    mas-higa 2017/01/06
    "これに何の意味があるんですかね"
  • PHP の壊れた mt_rand の品質を統計的に検証した - iwiwiの日記


     PHP  mt_rand PHP mt_rand 使 PHP  mt_rand  PHP   mt_rand  PHP  mt_rand PHP  mt_rand 
    PHP の壊れた mt_rand の品質を統計的に検証した - iwiwiの日記
  • JavaのTimSortがバグってる件について | さにあらず

    Python で実装され、その後 Java にも移植されたソートアルゴリズムである TimSort が盛大にバグっていることが発見されました。 このバグがどのようにして発生するのかについては、以下のドキュメントを精査して下さい。 TimSort fails with ArrayIndexOutOfBoundsException on worst case long arraysOpenJDK’s java.utils.Collection.sort() is broken: The good, the bad and the worst caseどんなことが起こるのか#通常の利用では想定しえない場所でArrayIndexOutOfBoundsExceptionが発生します。 例えば、以下のようなスタックトレースになります。 Exception in thread "main" java.l

    JavaのTimSortがバグってる件について | さにあらず
    mas-higa
    mas-higa 2015/02/27
    "この件が本当に面白いのは" kwsk
  • [KMP77] を読んでみた - d.y.d.

    17:53 14/12/22 ソートの逆流れ クイックソートってあるじゃないですか、クイックソート。 配列、たとえば [4,2,1,7,0,6,5,3] があったときに、 小さい方を左に、大きい方を右にまず適当に集める。 この「小さい方」と「大きい方」への二分割を、いわゆる再帰的に、 分かれたブロック両方で同じ事を繰り返していくと… なんと、小さい順に並んだ配列 [0,1,2,3,4,5,6,7] が出来上がるというアルゴリズムです。 逆向き! このデータの流れを「逆向きに」見てみたい。つまり、ソートが終わった最終状態から話が始まります。 しかも、さっきから説明なしで意味ありげにくっついていた、 「入力配列で元々どの位置にあったか」を表す値に注目していきます。 0の上に[4]がくっついているのは、最初は値0は配列のインデックス[4]の位置にあった、 ということを意味しています。(上のソート

    [KMP77] を読んでみた - d.y.d.
  • 書籍編集局ブログ|Ohmsha


    215()Developers Summit 2018()IT 2018    
    書籍編集局ブログ|Ohmsha
    mas-higa
    mas-higa 2014/11/06
    "都合により PDF 版の発売予定が当面ありません" epub でオナシャス
  • GNU grep 2.18リリース: 10倍速くなったと思ったら今度は200倍遅くなっていた | はむかず!


     grep10  2.182.172.18  grep -i in a multibyte, non-UTF8 locale could be up to 200 times slower than in 2.16. [bug introduced in grep-2.17] -iUTF82.1710200
  • 平方数かどうかを高速に判定する方法 - hnwの日記

    平方数とは、ある整数の平方(=二乗)であるような整数のことを言います。つまり、0,1,4,9,16,...が平方数ということになります。 ところで、与えられた整数が平方数かどうかを判定するにはどうすれば良いでしょうか。与えられた整数の平方根の小数点以下を切り捨て、それを二乗して元の数になるかどうか、というのがすぐ思いつく実装です。 <?php function is_square($n) { $sqrt = floor(sqrt($n)); return ($sqrt*$sqrt == $n); } しかし、平方根の計算は比較的重い処理です。もっと高速化する方法は無いのでしょうか。 多倍長整数演算ライブラリGNU MPには平方数かどうかを判定するmpz_perfect_square_p関数が存在します(PHPでもgmp_perfect_square関数として利用できます)。稿ではこの実装

    平方数かどうかを高速に判定する方法 - hnwの日記
    mas-higa
    mas-higa 2014/05/05
    "0を除外すると" のところでついて行けなくなった。
  • Adobeサイトから漏えいした暗号化パスワードはなぜ解読されたか

    Adobe社のサイトの不正アクセス(参照、参照)によって、少なくとも3800万人のIDと暗号化されたパスワードが漏えいしたと言われています。既に報告したように、私のアカウントも漏えいしていました。 その後、『Adobeの情報流出で判明した安易なパスワードの実態、190万人が「123456」使用』というニュースが流れてきました。安易なパスワードが使われている統計は今までもあり、「パスワードの実態」に関しては「そんなものだろうな」と思いましたが、問題は、どうやって「暗号化パスワード」を解読したかです。 別の報道では、Adobeサイトがパスワードの暗号化に用いていたアルゴリズムはトリプルDESだったということです。トリプルDESは電子政府推奨暗号リストの今年の改訂でもしぶとく生き残り広く使われている暗号化アルゴリズムです。そんなに簡単に解読されたのでは問題ですが、実際には、「トリプルDESが解読

    Adobeサイトから漏えいした暗号化パスワードはなぜ解読されたか