タグ

algorithmに関するurza358のブックマーク (103)

  • AIだけで新アルゴリズムによる正規表現ライブラリを作ってみた - エムスリーテックブログ

    こんにちは。今回は、GeminiとClaude 4という2つのAIアシスタントだけを使って、正規表現ライブラリを一から作成した体験をお話しします。 きっかけ:古い理論への興味 驚異的な開発速度:正味数時間で完成 AIアシスタントによる開発プロセス 役割分担の自然な発生 AIによるコード生成の質 学術論文レベルの理論整備 Abstract(概要)の自動生成 先行研究との詳細比較 理論的基盤の文献調査 完成したライブラリの機能 基機能 高度な機能 AIアシストの革新的側面 1. 理論の現代的解釈 2. 包括的なテスト設計 3. ドキュメント作成の自動化 4. 段階的な機能拡張 開発体験から見えたAIの可能性 驚いたこと 課題として見えたこと 将来への示唆 研究開発の加速 教育への応用 産業応用の可能性 まとめ We are hiring! きっかけ:古い理論への興味 事の始まりは、1964年

    AIだけで新アルゴリズムによる正規表現ライブラリを作ってみた - エムスリーテックブログ
  • B-treeインデックス入門 - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? B-treeがMySQLで使用されている背景から、B-treeインデックスの構造、そしてそれに基づいたインデックスの使用方法の入門編です。以下の流れに沿ってまとめていきます。 インデックスってなに? B-treeってなんでインデックスに使われているの? B-treeインデックスの構造 インデックスの使用方法 ※ 勉強をかねてまとめていることもあり、間違っている箇所がございましたら教えていただけると嬉しいです。 インデックスってなに? 全体の内容の中から特定部分を探すために使用する、の索引のような概念のことです。これを用いることで、検索

    B-treeインデックス入門 - Qiita
  • 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
  • ハッシュテーブルのスロット数が素数がよい理由と誕生日のパラドックス

    最近、プログラマーがハッシュテーブルを実装する機会は少ない。 現代のプログラミング言語では、ハッシュテーブルはライブラリーに完備されているためだ。 C言語でも、オープンソースを探せば、良いライブラリーが見つかる。 C言語をよく使う自分は、趣味でハッシュテーブルを自作して来た。 最近またハッシュテーブルを自作して、質を深く理解できたので、メモしておく。 C言語を学び、ハッシュテーブル、リストなどのデータ格納アルゴリズムを一度は実装して確認することで、コンピューターで大量のデータを取り扱う基を学ぶことができる。 ハッシュテーブルは、データをキーと値の組で保管するものだ。 キーは、数字ではなく、名前のような文字列や、複数の数値の組み合わせである。 値も複雑なデータの組み合わせとなる。 キーはデータを一意に区別できるものである。 複雑なキー情報に一致する値を素早く探し出すために、ハッシュという

  • 素数ゼミとハッシュテーブル - @IT

    「素数ゼミ」と呼ばれる一風変わったセミをご存じだろうか。記者は2005年に出版された『素数ゼミの謎』(吉村仁、文芸春秋)で知ったのだが、北米には13年または17年周期で大量発生するセミがいるという。素数ゼミたちは、きっちり決まった年数を地中で過ごしてから、成虫となって地表に出てくる。6種ほど知られている素数ゼミたちは、それぞれ決まった年に一斉に地表に出てきて、わずか数週間という短い夏を生殖活動に捧げて、一斉に死んでしまう。次に彼らの子どもたちが地表に出てくるのは13年とか17年後だ。この2008年の夏にも、アメリカの中南部で大量発生が予想されている。 1度に60億匹とか70億匹という単位で、限られた地域で発生するために、アメリカでは迷惑な存在としてしか見られていないようだが、素数ゼミは生物学者たちにとっては、非常に好奇心をくすぐられる研究対象のようだ。 吉村氏によれば、素数ゼミが素数年周期

  • 「量子」と組合せ最適化に関する怪しい言説 ―とある研究者の小言― - むしゃくしゃしてやった,今は反省している日記

    最近,量子コンピュータの話題をニュースや新聞で見かけることが増えてきました. その中で気になってきたのが,組合せ最適化と量子コンピュータ(特に量子アニーリング)に関する怪しい言説.私自身は(古典コンピュータでの)組合せ最適化の研究をやってきて,量子コンピュータを研究しているわけではないのですが,さすがにこれはちょっと・・・と思う言説を何回か見かけてきました. 最近の「量子」に対する過熱ぶりは凄まじいので,こういう怪しい言説が広まるのは困りものです.すでにTwitter上には,“組合せ最適化は今のコンピュータでは解けない”とか“でも量子なら一瞬で解ける”という勘違いをしてしまっている人が多数見られます*1. さすがに危機感を覚えてきたので,この場できちんと指摘しておくことにしました. 今北産業(TL;DR) “古典コンピュータは組合せ最適化を解けない” → 古典コンピュータで組合せ最適化を解

    「量子」と組合せ最適化に関する怪しい言説 ―とある研究者の小言― - むしゃくしゃしてやった,今は反省している日記
  • GitHub - jwasham/coding-interview-university: A complete computer science study plan to become a software engineer.

    You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

    GitHub - jwasham/coding-interview-university: A complete computer science study plan to become a software engineer.
  • 俺氏、将棋が二人零和有限確定完全情報ゲームでないことに気づいてしまうwww | やねうら王 公式サイト

    このブログをご覧の方は将棋が二人零和有限確定完全情報ゲームであることはご存知でしょう。これは、ゲーム理論や探索アルゴリズムの教科書にでも載っています。「二人零和有限確定完全情報ゲームって何?」って方は、Wikipediaでも見ていただくことにして話を先に進めます。 零和とは? この「零和」というのは、和が零。英語で言うとゼロサムです。 零和(「ゼロ和」と読むのが一般的だが「レイワ」とも読む):プレイヤー間の利害が完全に対立し、一方のプレイヤーが利得を得ると、それと同量の損害が他方のプレイヤーに降りかかる https://ja.wikipedia.org/wiki/二人零和有限確定完全情報ゲーム つまり、自分が勝ちなら、相手は負け。相手が勝ちなら自分は負け。勝ちを+1点、負けを-1点、引き分けを0のように定めるなら、(ゲーム終局後に)自分と相手の点数を足すと0になる。なので、ゼロサムゲーム

  • 一週間で身につくアルゴリズムとデータ構造|第6日目:ソートアルゴリズム②バケットソート・基数ソート

  • 一週間で身につくアルゴリズムとデータ構造|第6日目:ソートアルゴリズム②バケットソート・基数ソート

  • k 番目の値を高速に取り出せるデータ構造のまとめ - BIT上二分探索や平衡二分探索木など - Qiita

    はじめに ビックデータという言葉が流行ってから数年の歳月が経ち、耳にする機会が大分減ってしまいましたが、現在も大規模データを高速に処理していくことは様々な現場で重要な課題となっています。 今回はその一端として、以下の操作を高速に実現するデータ構造について特集します: 集合に要素 $v$ を挿入する 集合から要素 $v$ を削除する 集合に含まれる $k$ 番目に小さな値を取得する 「挿入」や「削除」を行えるデータ構造というと**リストが真っ先に思い浮かびますが、「$k$ 番目に小さな値を求めよ」と言われると一気に難易度が上がります。ついつい平衡二分探索木を使いたくなるのですが、BIT** や priority_queue で対応できるケースも多いです。BIT や平衡二分探索木の詳細についてはとてもよい資料が多数あるので以下に示します。 BIT BIT については hos さんの資料 Bin

    k 番目の値を高速に取り出せるデータ構造のまとめ - BIT上二分探索や平衡二分探索木など - Qiita
  • ソートアルゴリズムを極める! 〜 なぜソートを学ぶのか 〜 - Qiita

    NTT データ数理システムでリサーチャーをしている大槻 (通称、けんちょん) です。 今回はソートについて記します。 0. はじめに データ構造とアルゴリズムを学ぶと一番最初に「線形探索」や「ソート」が出て来ます。これらのテーマは応用情報技術者試験などでも頻出のテーマであり、アルゴリズムの Hello World とも呼ぶべきものです。 特にソートは、 計算量の改善 ($O(n^2)$ から $O(n\log{n})$ へ) 分割統治法 ヒープ、バケットなどのデータ構造 乱択アルゴリズムの思想 といった様々なアルゴリズム技法を学ぶことができるため、大学の授業でも、アルゴリズム関連の入門書籍でも、何種類ものソートアルゴリズムが詳細に解説される傾向にあります。記事でも、様々なソートアルゴリズムを一通り解説してみました。 しかしながら様々な種類のソートを勉強するのもよいが、「ソートの使い方」や

    ソートアルゴリズムを極める! 〜 なぜソートを学ぶのか 〜 - Qiita
  • アルゴリズムの勉強のしかた - きしだのHatena

    この記事で、アルゴリズムの勉強はアルゴリズムカタログを覚えることじゃないよということを書きました。 プログラムの理論とはなにか アルゴリズムの勉強というのは、スポーツで言えば腕立て伏せや走り込みみたいな基礎体力を養うようなもので、「ソートなんか実際に自分で書くことないだろう」とかいうのは「サッカーは腕つかわないのに腕立ていらないだろう」とか「野球で1kmも走ることなんかないのに長距離の走り込みいらないだろう」とか言うようなものです。 Twitterでアルゴリズムの勉強とはなにかと尋ねられて、「アルゴリズムの基的なパターンを知って、それらの性質の分析のしかたをしって、いろいろなアルゴリズムでどのように応用されているか知って、自分が組むアルゴリズムの性質を判断できるようになることだと思います。 」と答えたのですが、じゃあ実際どういうで勉強すればいいか、ぼくの知ってるからまとめてみました。

    アルゴリズムの勉強のしかた - きしだのHatena
  • 競技プログラミングで使う有名グラフアルゴリズムまとめ

    0. はじめに AtCoderなどでは、グラフを扱った問題が多く出るが、その度に一から実装していると時間が掛かりすぎてしまうため、有名なものをあらかじめ持っておく必要がありそう。そこで、Pythonを用いて、ダイクストラ法、ベルマンフォード法、プリム法、クラスカル法、ワーシャルフロイド法を実装した。 コメント、意見等ある方は是非! お待ちしてます! 1. ダイクストラ法 1.1. ダイクストラ法(defaultdictで実装) defaultdictで実装すると、リストで実装するよりも、ノード数$N$が大きい際には高速に動作する。ただし、経路復元の関数は、うまく書けなかった......。 (2019/7/6 追記)結局できました。1.1.1. を参照してください。 import collections import heapq class Dijkstra: def __init__(se

    競技プログラミングで使う有名グラフアルゴリズムまとめ
  • プログラマの採用面接で聞かれる、データ構造とアルゴリズムに関する50以上の質問 | POSTD

    情報科学科の卒業生やプログラマの中には、UberやNetflixのような新興企業や、 AmazonMicrosoftGoogle のような大企業や、InfosysやLuxsoftのようなサービスを基とする企業で、プログラミング、コーディング、ソフトウェア開発の仕事に就きたいと考える人が大勢います。しかし、実際にそういった企業で面接を受ける場合、大半の人が プログラミングに関してどのような質問をされるか 見当もつきません。 この記事では、 新卒生からプログラマになって1〜2年までの 経験値が異なる人たち向けに、それぞれの プログラミングの面接でよく聞かれる質問 をいくつか紹介していきます。 コーディングの面接では、主に データ構造とアルゴリズムに基づいた質問 がされますが、 一時変数を使わずにどのように2つの整数をスワップするのか 、というような論理的な質問もされるでしょう。

    プログラマの採用面接で聞かれる、データ構造とアルゴリズムに関する50以上の質問 | POSTD
  • いい結婚相手を見つける最適な方法を検証してみた - Qiita

    現在の日の生涯未婚率によると、男性の4人に1人、女性の7人に1人は50歳まで一度も結婚したことがなく、そうした人たちの割合は今後も増えていくそうです(出典: ハフィントンポスト)。原因は様々あるようですが、やはり**「適当な相手にめぐり合わない」**という理由は上位に来るようです。 ですが、適当な相手とは、一体全体どういう相手なのでしょうか? 年収、容姿、性格、家、などなど人によって様々相手に求める条件があるものですが、「人の出会いは一期一会」ともいうように、いい相手とめぐり合えたとしても「もしかしたら今後もっといい人と会えるかも……」などとうじうじしているうちに、機会を逃すことも多いかもしれません(涙 この問題は、結婚相手を探しているA君がいるとすると、 A君は、これから結婚相手の候補となるN人と女性と出会う 候補となる相手は、1人ずつ次々に現れる 候補となる相手は、それぞれ違うスコア

    いい結婚相手を見つける最適な方法を検証してみた - Qiita
  • 数独の例題生成

    ネットワークシステム研究室 指導教員:坂 直志 07EC099 中嶋 勇気 目次 1. はじめに 2. 研究準備 2.1. 数独の基ルール 2.2. 基的な問題の解き方 2.3. 問題の解き方(応用編) 3. 問題の生成 3.1. プログラムによる解法 3.2. 問題生成 3.3. 難問作成 3.4. 抽出方法 4. 出力結果の評価 5. まとめ 6. 参考文献 7. ソース 1.はじめに 数独(別名:ナンバープレイス、ナンプレ、etc…)とはペンシルパズルと呼ばれるパズルゲームの一種である。この数独はパズル制作会社「ニコリ」が商標登録したもので、海外でもsudokuなどと呼ばれ、広く親しまれている。もともとの由来は「数字は独身に限る」。というところから来ている。 数独の原型は18世紀にスイスの数学者レオンハルト・オイラーが考案した、ラテン方陣あるいはオイラー方陣と呼ばれるものである

    数独の例題生成
  • プログラマが解くのに1時間かかる問題を機械学習に放り込む話 | ぱろすけのメモ帳

    プログラマが解くのに1時間かかる問題を機械学習に放り込む話 By ぱろすけ on 4月 11th, 2012 皆様、 Twitter やら facebook で数カ月前に爆発的に拡散された以下の問題をご存知でしょうか。 ご存知の方が多いでしょうね。単に、イコールの左側の4つの数字の丸の数の合計がイコールの右側に等しい、それだけですね。とても簡単な問題です。ちなみに僕は解けませんでした。 これについて、昨日このようなエントリが投稿され、話題になっています。 プログラマが解くのに1時間かかるという問題が普通にプログラマな方法で5分で解ける話 http://d.hatena.ne.jp/nowokay/20120410 こりゃあ炎上するでしょうねえ。だって、プログラマも何も関係なく、ふつうに問題を解いているのですから。 先ほどのエントリでは、イコールの左側の数値は変数であり、それを足しあわ

  • 大規模グラフアルゴリズムの最先端 - iwiwiの日記

    昨日,PFI セミナーにて「大規模グラフアルゴリズムの最先端」というタイトルで発表をさせてもらいました.スライドは以下になります. 大規模グラフアルゴリズムの最先端 View more presentations from iwiwi 当日は Ustream もされており,録画された発表もご覧になれます. http://www.ustream.tv/recorded/19713623 内容の流れとしては,以下のようになっています. 導入 アルゴリズム界隈での話題 最新の研究動向 道路ネットワークでの最短路クエリ処理 基礎的な手法:双方向 Dijkstra,A*, ALT 最新の手法:Highway Dimension + Hub-Labeling Algorithm DB 界隈での話題 最新の研究動向 複雑ネットワークでの最短路クエリ処理 基礎的な手法:ランドマークを用いた最短距離推定 最

    大規模グラフアルゴリズムの最先端 - iwiwiの日記
  • 浮動小数点数型と誤差

    有限桁 C言語で扱える実数値は,2進数の有限小数で表された数値である.例えば次のようなものである. 1.5(10) = 1.1(2) 3.25(10) = 11.01(2) 理論的には小数が無限に続く値でも,そのうちの有限個の桁数でその値を表すしかない. 例えば,0.1 を2進数の小数で表すと 0.1(10) = 0.000110011001100110011...(2) と無限に続くが,コンピュータの内部では有限桁で丸められている. このような場合には,当の値ではなく,近似値でしか表すことができない. 指数表記(浮動小数点表記) 科学計算では非常に大きな実数値や非常に小さな実数値も扱うことがある. そのようなときには,通常の10進数の表記ではなくて,次のような指数表記で表すれば 無駄な 000...000 という桁を表記しなくてもよくなる. 1234567890000000000000

    浮動小数点数型と誤差