タグ

アルゴリズムに関するsakefのブックマーク (52)

  • RSAに対するフェルマー攻撃 - Qiita

    はじめに(Introduction) RSAの鍵ペアの生成方法にミスがあり脆弱性となってしまった実装例があったようです。 元の文献を機械翻訳(ちょっと修正)してみます。 原文のデモをやってみたところ、案外動いたので先にデモを記します。 デモ(Demo) まずは、素数$p$と$q$を生成して$N$を求めるところです。 ※:鍵長が2048bitなので多少時間がかかります。 問題となったライブラリがこのようなロジックであったかは不明ですが、翻訳した資料を参考に作成しています。 import random as rnd import sympy key_length = 2048 distance = 10000 p = 0 q = 0 # 乱数Xを生成する。 X = rnd.randrange(2, pow(2, key_length)) for i in range(distance): #

    RSAに対するフェルマー攻撃 - Qiita
  • LOG関数で2を底とする対数(二進対数)とO(logN)の意味を知ることは情報処理の基本である【Excel】 - わえなび ワード&エクセル問題集 waenavi

    対数のlogを勉強するときにまず最初に習得するのは常用対数です。 【LOGLOG10関数】Excelで10の累乗と常用対数が使えたら数値の桁数が計算できます 常用対数を習得したら次に習得するのが2の累乗と2を底とする対数です。学生の時に、2,4,8,16,32・・・と2の累乗を覚えた人もいるのではないでしょうか? 大人であれば、2を10回かけたら1024(=約1000)になることを知っておいても損はないでしょう。携帯電話の「ギガ」はもともと2を30回かけると約10億=1ギガの情報量になるところからきています。2の累乗と2を底とする対数を理解することは情報処理を理解する第一歩と言っても過言ではありません。 そこで、今回は、Excelで2の累乗と2を底とする対数を求める方法とその応用について解説します(2進数については深入りしません)。 目次 1.まずはExcelで2の累乗の性質を考えてみよ

    LOG関数で2を底とする対数(二進対数)とO(logN)の意味を知ることは情報処理の基本である【Excel】 - わえなび ワード&エクセル問題集 waenavi
  • できるだけ嘘を書かずに計算量やオーダーの説明をしようとした記事 - えびちゃんの日記

    計算量についてのお話です。対象は、プログラミング経験はあるが計算量のことを知らない初心者から、計算量のことを知っているつもりになっている中級者くらいです。 数式を見たくない人にとっては読むのが大変かもですが、深呼吸しつつ落ちついて読んでくれるとうれしいです。 それから、この記事が自分には合わないな〜と思ったときは、(別の記事を Qiita とかで検索するよりも)この記事の一番下の 参考文献 にあるを読むことをおすすめします。Amazon の試し読みで無料で読めます*1。 TL; DR 関数の増加度合いのことをオーダーと呼ぶよ 計算量は、入力サイズ(など)を受け取ってアルゴリズムの計算回数(など)を返す関数だよ その関数のオーダーについての議論がよく行われるよ オーダーを上から抑えるときは \(O\)、下から抑えるときは \(\Omega\) を使うよ オーダーを上下両方から抑えたいときは

    できるだけ嘘を書かずに計算量やオーダーの説明をしようとした記事 - えびちゃんの日記
  • 50分で学ぶアルゴリズム / Algorithms in 50 minutes

    スライドでは、有名なアルゴリズムを概観し、アルゴリズムに興味を持っていただくことを目標にします。 第 1 部:アルゴリズムとは 第 2 部:学年を当ててみよう 第 3 部:代表的なアルゴリズム問題 第 4 部:コンピュータとアルゴリズム

    50分で学ぶアルゴリズム / Algorithms in 50 minutes
  • AtCoder Library (ACL) - AtCoder

    AtCoder Library (ACL) を公開します。 様々なアルゴリズムを AtCoder 側で実装したもので、多くの AtCoder 上のコンテストでも使用可能となります。 [github](https://github.com/atcoder/ac-library) [zip](https://img.atcoder.jp/practice2/ac-library.zip) 詳しくは、zip ファイル内のドキュメントをお読みください。 また、practice contest でぜひ使用をお試しください。 https://atcoder.jp/contests/practice2 また、9/20 と 9/26 には、このライブラリの公開を記念したコンテストが開催される予定です。 - https://atcoder.jp/contests/acl1 - https://atcoder

    AtCoder Library (ACL) - AtCoder
  • 競技プログラミングで解法を思いつくための典型的な考え方 | アルゴリズムロジック

    競技プログラミングの問題を解くためには2つのステップがあります。 問題で要求されていることを言い換える知っているアルゴリズムやデータ構造を組み合わせて解く 必要な(知っておくべき)アルゴリズムやデータ構造は色々なところで学ぶことができます。 しかし、「問題の言い換え」や「アルゴリズムを思いつく」というのは、非常に様々なバリエーションがあり、問題をたくさん解かないとなかなか身につきません。 そこで、この記事は以下のことを言語化し、練習のための例題を提示することを目標とします。 問われていることを、計算しやすい同値なことに置き換える方法アルゴリズムを思いつくための考え方競技プログラミングで「典型的」と思われる考え方 ※一部問題のネタバレを含むので注意 ※良く用いられるアルゴリズムやデータ構造については競技プログラミングでの典型アルゴリズムとデータ構造 を参考にして下さい。 入力の大きさ(制約)

    競技プログラミングで解法を思いつくための典型的な考え方 | アルゴリズムロジック
  • 「ループ・再帰・gotoを使わず1から100までの数値を印字する」Conner Davis 氏の回答の考察 - Qiita

    2019年6月に以下の記事が投稿されました。 ループ、再帰、gotoを使わずに1から100までを印字するC++プログラムは書けますか?に対するIchi Kanayaさんの回答 - Quora 英語版の記事「How to print 1 to 100 in C++ without a loop, goto or recursion - Quora」から興味深い回答を抜き出して、それにランク付けをしながら和訳してくださっている記事です。 初級や中級は「まぁあるよね(C++知らないけれど……)」という感じですが、 上級とされた「マイクロソフト社のデータサイエンティスト Conner Davis 氏」の回答が面白かった ので、ご紹介を兼ねてその発想の源泉を推測してみることにしました。 以下に Conner Davis 氏の回答の和訳を引用します。 マイクロソフト社のデータサイエンティスト Conn

    「ループ・再帰・gotoを使わず1から100までの数値を印字する」Conner Davis 氏の回答の考察 - Qiita
  • Closures · Crafting Interpreters

    As the man said, for every complex problem there’s a simple solution, and it’s wrong. Umberto Eco, Foucault’s Pendulum Thanks to our diligent labor in the last chapter, we have a virtual machine with working functions. What it lacks is closures. Aside from global variables, which are their own breed of animal, a function has no way to reference a variable declared outside of its own body. var x =

  • 知っておくと便利な Bloom Filter - kakakakakku blog

    社内勉強会で「知っておくと便利な Bloom Filter 」という発表をした. Bloom Filter は Coursera の講義で学んで,今回は自分の理解の整理も兼ねてまとめてみた. 特徴 メリット デメリット ミドルウェア/サービスでの活用例 社内の評判も良くて「勉強になった!」と言ってもらえたー!良かったー! 発表資料 関連記事(非常に参考になりました!) pixivBloomFilterを使うためにやったこと - pixiv inside [archive] Bloomフィルターについて調べた – Siguniang's Blog ブルームフィルタを試してみた - wataメモ

    知っておくと便利な Bloom Filter - kakakakakku blog
  • Algorithm Visualizer

    Algorithm Visualizer is an interactive online platform that visualizes algorithms from code.

    Algorithm Visualizer
  • 中学生にもわかるウェーブレット行列 - アスペ日記

    id:echizen_tm さんの記事「ウェーブレット木の効率的で簡単な実装 "The Wavelet Matrix"」から始まったウェーブレット行列ブームから半年以上が過ぎ、すでに枯れた技術として確立されつつある感があります。 …嘘です。 日以外ではあんまり来ていません。 理由としては、やはりアルファベット圏では単語境界が明確であるため、こちらの記事で書かれているような「キーワード分割の難易度」といったことがあまり問題にならないということがあるかもしれません。 まあ、そういうわけで局所的に来ているウェーブレット行列ですが、日語をはじめとする単語境界のない言語圏にとっては重要なネタであると思うため、解説記事を書き直して*1みようと思います。 ウェーブレット行列でできること 主となる操作は、文字列に対する 定数時間の rank() と select()*2 です。 rank() は、「文

  • 数学はアートを創るか?―Processingによる実践

    Моделювання на ЕОМ. Теоретичні питання моделювання.

    数学はアートを創るか?―Processingによる実践
  • A*アルゴリズムについて整理 - yasuhisa's blog

    辞書を参考にしながら。NAISTのI期辺りでやったはずなんだが、かなりすっ飛んでいる。 デジタル人工知能学事典 [CD-ROM付] 作者: 人工知能学会出版社/メーカー: 共立出版発売日: 2008/05/16メディア: 単行購入: 1人 クリック: 6回この商品を含むブログ (6件) を見る A*アルゴリズムとは?グラフ探索アルゴリズムの一つ。「開始ノードから現在位置に至るまでのコスト」と「現在位置からゴールまでの推定コスト」の2つのコストを用いてadmissibleな条件(後述)の元でコストが最小であるような経路を効率的に見つけることができるアルゴリズムである。1960年代に開発されたアルゴリズムであるが、50年経った今でもばしばし使われている。 現在いるノードをp、開始ノードからpまでの最小コストをg(p)、pからゴールまでの最小コストをh(p)と書くとすればpを経由して開始ノード

    A*アルゴリズムについて整理 - yasuhisa's blog
  • 動的計画法入門(数え上げ) - ペケンペイのブログ

    数え上げ系の DP について説明する。 この記事は DP 初心者を対象にしている。DP やるだけみたいなことを一度でも考えたことがある人は対象にしていない。 例題 次の問題を考えてみよう。 N 桁以下の 3 の倍数はいくつあるか。 N が小さければ全列挙できる。i 桁の数がすべて列挙できていれば、その後ろに 0~9 を付け足せば i+1 桁の数をすべて列挙できることを使う。 dp[i] := leading zero を含めて i 桁のすべての非負整数の集合 #include <iostream> #include <string> #include <vector> using namespace std; int modulo(string s, int mod) { int ret = 0; for (char c : s) ret = (ret * 10 + (c - '0'))

    動的計画法入門(数え上げ) - ペケンペイのブログ
  • ウェーブレット行列とFM-indexで全文検索を書いてみた - くじらにっき++

    www.youtube.com 去年のはじめに高速文字列を買ったのですが、アルゴリズムを眺めるだけで実装はしていませんでした。特にウェーブレット行列は実装が大変そうにしか見えなくて敬遠していたのですが、ICPCの夏合宿で @hirokazu1020 さんに「あれはアイデアさえ理解していれば実装するのは簡単だよ」という旨のことを言われたので、学校のプログラミングの演習の自由課題としてウェーブレット行列とFM-indexを実装してみました。 制作物はブラウザ上で動く青空文庫のインクリメンタル検索です。C++で書いたFM-indexをboost-pythonを使ってPythonから呼び出せるようにし、Flaskを使ってブラウザからのリクエストに応答するような仕組みにしてみました。アルゴリズムの質的なところは全て自分で書こう!というモチベーションで始めたのですが、SA-ISが難しくてsais.

    ウェーブレット行列とFM-indexで全文検索を書いてみた - くじらにっき++
  • パーリンノイズを理解する | POSTD

    この記事の目的はKen Perlinの改良パーリンノイズを分かりやすく分析し、お伝えすることです。記事内のコードはC#で書かれており、自由にご利用いただけます。最終形のみを見たい方は、こちらから最終的なソースをご確認ください。 パーリンノイズは手続き的なコンテンツ生成によく使われる、非常に強力なアルゴリズムです。ゲームや、映画などの視覚媒体に特に有用です。パーリンノイズの開発者であるKen Perlinは、この最初の実装でアカデミー賞を受賞しました。彼が2002年に発表した改良パーリンノイズについて、私はこの記事で掘り下げていきます。パーリンノイズは、ゲーム開発においては、波形の類や、起伏のある素材、テクスチャなどに有用です。例えば手続き型の地形(Minecraftのような地形はパーリンノイズで生成できます)、炎のエフェクト、水、雲などにも使えます。これらのエフェクトのほとんどが2次元、3

    パーリンノイズを理解する | POSTD
  • 画像解析を用いて巨大迷路を解いてみる : DragonFlare Trail

    先日、hirax.netさんのサイトにA1版の世界一広い迷路を作成したとの記事が出ていました。この迷路を最初見たとき、その大きさに唖然としてしまいました。Fig.1にその迷路画像を引用しましたので、皆さんも画像をクリックして拡大し、この迷路の大きさを確認してみてください。ちなみに、この迷路は縦323×横464ユニットもあります。 リンク:A全判 = A1判( 約60センチメートル × 約84センチメートル )の世界一広い!?迷路(PDF) Fig.1 A1版の超巨大迷路。このままだと単なる砂嵐にしか見えませんが、画像を拡大すると立派な迷路になっていることが確認できます。特に、右上にスタート地点があり左下にゴール地点があります(画像はhirax.netさんより引用) 記事ではこの超巨大迷路を解いてみることにします。ただ、もちろん人力で解くのは面倒ですし(というか気力が持たない…)、何よ

    画像解析を用いて巨大迷路を解いてみる : DragonFlare Trail
  • 1行のコードからアルゴリズム交響曲 - どのように、そしてなぜ? - 閉村観光

    この文章はTarkastele kokoさんのブログを訳したものです。精度の高い訳ではありませんので原文などと一緒に読まれることを勧めます。内容はate bitさんが作ったC64のデモにインスパイアされたTarkastele kokoさんがC言語1行で音楽を作り始めた。チャットで数人にこの成果を発表したところGoogle+とか広がって、Javascriptのソフトができてノン・プログラマも参加してきて大きな塊が形成されてハックしあう感じでノウハウが溜まってきた。もしかしたら将来、僕らがやっていることを数学的に説明してくれたら嬉しいな。 >>>それでは文 1行のコードからアルゴリズム交響曲 - どのように、そしてなぜ? Tarkastele koko 原文 http://bit.ly/rmkvno このごろ、音楽のような何かを音響合成するとても短いプログラムでいろいろな実験をしていた。私は

    1行のコードからアルゴリズム交響曲 - どのように、そしてなぜ? - 閉村観光
  • 数独を解く(画像解析) - cuspy diary

    画像として与えられた数独を解きます。 新聞に掲載されていたこの問題をOpenCVを使って画像解析する。(画像が斜めなのはワザとです) グレースケール変換画像解析の前処理として、まずグレースケールに変換し、ガウシアンフィルタをかけてぼかします。ガウシアンフィルタをかける事で、安定した二値化画像が得られます。 二値化次に二値化を行います。 二値化には、普通の方法、大津さんの手法、適応的二値化、などさまざまな手法が在ります。いろいろ試した所、適応的二値化(Adaptive Threshold)が最も数独の認識に適していることが解りました。 適応的二値化(Adaptive Threshold)であれば、影になってしまった部分も上手く処理できます。 膨張処理次に、数独の盤面の外枠を認識を行います。 二値化の影響で枠線が途切れてしまう可能性がありますので、膨張処理(dilate)を行います。 (膨張処

  • HLAC: 高次局所自己相関特徴 – Rest Term

    今回は画像特徴量の1つである高次局所自己相関特徴 (HLAC: Higher-order Local AutoCorrelation)について。 HLACは画像認識に対する基的な要望としての位置不変性および加法性を満たすものであり、一次にとどまらない高次の相関に基づく統計的特徴量になっています。現在では様々なHLACの発展系が生まれていますが、今回はその基となるアルゴリズムについて整理したいと思います。 基アルゴリズム 自己相関関数を高次に拡張したN次の自己相関関数は、対象となる画像領域内の位置 r=(x, y) における画素値を f(r) とすると、その周りのN個の変位 a1, a2, …, aN に対して次式で定義されます。 基的なHLAC特徴はこの関数に基づいた画像特徴で、実際には相関の次数を二次まで(3点相関)、変位も局所領域(3×3など)に限定して利用します。そのため変位